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.

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.

No comments:

Post a Comment