Sunday, February 14, 2021

Desert Climbing VR Project and VR Archery

Recently completed two VR projects since the last update. One was the Desert Climbing VR project. Here is a video along with my key learnings:

Desert Climbing VR Project

Key Learnings

Faster Prototyping - Use free assets

I made the 3D models myself and realized that it took up a lot more time then I thought it would in the end. Ultimately this slowed down the time it took to make a prototype of some of the features. It made me realize that it would be better to use free assets in the Unity store or other websites to add some basic visuals and move through the building process faster.

Dialogue system

I made the dialogue system myself and its triggered through listening to button inputs on the Quest 2 controller. The Dialogue uses scriptable objects which store or reference the text and images needed which are inserted into a basic UI Canvas. It was only after making it that I realized that the system I built makes it difficult to do things like display multiple images and etc. If I were to try it a second time I would try and use Unity's timeline instead which might provided a lot more flexibility and faster implementation. I enjoyed using Scriptable Objects and can see how they are a great tool for any game developer.

Biggest Challenge

It was my first time implementing a VR climbing mechanic and there were challenges dealing with character body collisions with rock protrusions as well as the hand poses themselves when grabbing the rock. Perhaps I'll find a solution in the future but I realized that automated hand poses for grabbing objects would be pretty useful in increasing realism. Turning off the hand doesn't really help since seeing your hands is a big part of climbing.

Adding Story

Adding story was a fun creative challenge. It made me think more deeply about the mechanics of the game and helped with setting up scenes. 


VR Archery - Chinese New Year Inspired


I was thinking about what I should do for my next project and my wife gave me some inspiration. I decided to do a VR Archery game inspired by Chinese New Years. I'm pretty happy with it since I applied what I learned previously and it allowed me to gain more time on the game design itself. There's a lot more I could do to improve it as well.

Key Learnings

Decoupling systems 
I used scriptable objects to connect systems and components but even now as I look back I realized I could have done a better job of that. This was the first time I set up a spawn system with enemies and used coroutines to do it. An unexpected challenge would be overlapping spawns which I could solve by having the spawn points have their own spawn manager instead of using just one. 

I was excited that I was able to load levels using scriptable objects. This made making new levels with different parameters really easy.

XR Interaction Toolkit
I feel that I learned a lot about the XR interaction toolkit with this project when it comes to extending the features through overriding the base functions. Really useful and I can see how I could have avoided some spaghetti code in previous projects through using this.

Challenges
The stumbling blocks were challenges that I didn't realize would be there during the initial planning process. One for example was destroying game objects with XR grab interactables. Turns out that the current XR Toolkit throws errors when you do this and I found a solution on a forum post to clear the colliders which helped. Unique specifically to XR toolkit.

I tried Object pooling as well but because I used coroutines, when you turn the enemy inactive they ended up being respawned. I solved this through removing the enemy from the list after they spawn so that they don't return to the list as an inactive object.

Tuesday, February 2, 2021

How I approach VR projects - Desert Grandma

This is to showcase my current process for approaching VR projects. Currently I want to create a simple short story driven VR experience while implementing a few new systems that I haven't done before in the past. 

My first step is to decide on a project concept and then create a VR project scope. 

Project Concept 

For this project my concept is focused on a small adventure experience about a child who wants to help their grandma who is sick. I've developed a small storyboard about how I want the player to experience the story.

I do want to establish limits for the project which is that I want to finish it in 1-1.5 weeks. I try to keep that in mind as I work on the storyboard.

Concept/Story


The setting only has the child and the grandma. It'll be a lonely house in the desert. The grandma is the only family for the child.

I'm choosing a Desert because it removes they are naturally empty and reduce the number of art assets I'll need to make. It also puts visual emphasis on loneliness and hopefully strengthens the focus on family in the story. 


A simple character design inspiration for the grandma character.



The grandma is sick and that is the motivation for the story. There is a magic necklace that the grandma owns which is supposed to help those who are lost. Reveals that there is a cure high up in the desert mountains.


Child climbs the mountain to get into a cave. The cave has a plot twist for the child.

Gaming Systems Needed

As a part of the project scope I then try to think of all the systems I need to facilitate the experience. I try to divide this into two parts after I make the list with a rough time estimate. *Usually wrong since I don't have a lot of experience lol*

The first half is core systems to create a minimum viable VR experience that can be completed in the shortest time period and then the additional nice to haves if there is time.

Core System 

  • Scene Loading System(1 day)
  • Dialogue/Story Sequence/ Input system(2 days)
    • primary button A to quit game
    • primary button B to progress to next dialogue and story section
    • Story tracker
  • Climbing System (2 days)
  • Basic Art(1 day)
    • Sick Grandma in bed
    • Necklace
    • Mountain
    • Reward
Total Time : 6 days

Additional
  • Better Art Assets 
    • Skybox - (2 hours)
    • Hand models
    • House in the Dessert Scene - Main Menu (2 hours )
  • Haptic feedback - (2 hours)
  • Sandstorm / Wind Effects (3 hours)
  • Medicine Interaction ( 2 hours)
  • Background music & Voice over (3 hours)

  • Action Scene
    • I really want to try creating a VR action scene. Might try this if I can complete everything else quickly. Doesn't add a ton to the story other then making it cool.
Total Additional Time : 2 days

Total Project Time : 8 days