My name is Stevie Vu and I'm focused on Virtual Reality. Follow this blog if you want updates on how my projects are going as well as what I'm learning.
Friday, December 31, 2021
Quest 2 - Application Space Warp and Optimization Test
Thursday, December 2, 2021
December 2nd - Spatial Partitioning and Custom Playables with Timeline
My goal this week was to to improve the performance of my flock simulation by improving the main update loop.
Spatial Partitioning
Currently, the main bottle neck is how I implemented the Separation method for the flock controller which needs to do a distance check against all of flocks in the scene. This quickly becomes really expensive because each additional flock added increases the number of calculations needed in update for everyone.
In order to improve this I wanted to try and implement Spatial Partitioning. How it would work would be to split the map into grids where the distance check for each flock would only be against the other flocks in the same cell and ignoring the ones outside of it.
Thursday, November 25, 2021
Nov 25th - Procedural Animation and Basic Shaders
I did some animation rigging during my last project with the Dune worm and I decided that I wanted to do a really deep dive into it. So far I've been having a lot of fun and feel like the animation rigging package could really help me create some great boss battles and more easily creating cinematic/scripted events. Here are some clips from what I've been experimenting with.
Walker-Bot
My first mini project was to try and create a walking 2-legged robot where the legs automatically move themselves after they exceed a set distance from the main body. It was amazing when I got it work and I could see the legs automatically animating themselves while manually moving the Walker-Bot around. Here is a GIF where you can see me manually moving the body with the legs procedurally animating themselves.
Saturday, November 20, 2021
November 13th - My Team's VR Mario Showcase Project
During the PXR2021 Conference there was a goal of creating some sort of collaborative virtual reality project throughout the week. I wanted to participate because I thought this could be a fun short-term creative VR project opportunity.
My team had students across multiple disciplines and background. Not everyone could meet at the same day/time and as a result it was only towards the last 2-3 days of the conference that we really got going with sort of VR project.
For my team we had a few students who really wanted us to help them create a Mario inspired VR experience. Using that as our creative theme and direction we made a Nintendo Mario themed Altspace world.
Poster art by Dylan Coakes |
Friday, November 19, 2021
Nov 14 - Performance and XR 2021 Virtual Reality Conference
I got an opportunity to attend the Performance and XR 2021 Virtual Reality Conference through a director at the Centre for Entertainment and Arts. The whole conference was centered around using Altspace as the VR venue.
When I first tried VR Chat I remember getting motion sickness after a while of using it. Similarly I'm finding a bit of motion sickness in Altspace when using continuous loco-motion but I think I'm starting to build more resistance to it now. Either way, I do prefer using the teleport locomotion since I get far less motion sickness with it. At the moment I find both VR chat and Altspace to be pretty similar to one another.
I also built my first Altspace world as well.
Experiencing and Building worlds in Altspace
For my first Altspace world I decided to try and create a scene inspired from the big sci-fi movie Dune with a world that has a giant Desert Worm hopping around.
This is footage from the Unity Editor where I first created the VR experience. However, I found that you can't just directly import the Unity scene into Altspace. There is a huge limitation where you can't use be uploading a scene that utilizes any custom C# monobehavior scripts.
After experimenting for an afternoon, I decided to use Unity's Timeline sequencing to create this scene and trigger the sound and particle effects at the right time. Kinda sucks that you can't use scripting at all. Especially since I had spent the time rigging the worm using Unity's Animation Rigging which allowed for real-time animation. Regardless I was still able to pretty much deliver the full VR experience I intended for VR.
For the modeling I used Probuilder to create the Dune Worm.
If you want to check out this Altspace world you can using the world code : PKI578.
Monday, November 1, 2021
November 1st 2021 - Autonomous Agents, Basic Flocking and Vector Math
Wednesday, October 27, 2021
October 27th - Programming & Game Design
October has been a mixed month where I've been spending quite a lot of time on learning Game design. I haven't stopped working on improving my programming though and been continuing to work my way through The Nature of Code, which is a free e-book if you are interested.
The biggest benefit so far in learning from The Nature of Code is that it's helping me get a much better foundational understanding of how to use vectors linear algebra and applying forces to create both better movement.
Here is a quick GIF of a flying-type creature where the wings are moved using a looping rotation script based on cosine and the body utilizes a vertical force to push itself up and is affected by gravity and whether the wings are flapping or not.
Since I have access to the Advanced Game Design curriculum as a part of the teaching staff at the CEA, I figured I should use this opportunity to learn as much as I can and round out my understanding of creating games. Two primary areas of interest that I've been focusing on is Level Design and Storytelling.
Friday, September 17, 2021
September 17th , 2021 - My One-button Game
This is my first 2D project. You can download and play my one-button game here : https://stevie57.itch.io/test
One of my classes that I'm helping in as a teacher assistant is Rapid Prototyping. Over the last week students in this class needed to create a working game revolving around the concept of one-button input only. I figured I could participate as well through creating my own one-button game which I have now completed.
==
My concept was a reaction/timing focused game where you need to catch the correct fruit using spacebar as the only input button. The correct fruit is randomly selected by the customer.
Here were some of my key personal goals for the one week project:
- Playable build
- Utilize Unity's new input system
- Scene Manager using Unity Scene Assets/Scriptable objects
- Implement Factory method for fruit creation
I wanted to take an iterative approach where I would make a build as early as possible with extremely basic gameplay and then slowly add features and functionality in new builds. The goal here was to ensure that there was always a playable build that I could submit at any point even if it doesn't fully realize the project vision yet.
Version 1 - Prototype |
I'm pretty happy with this approach and it worked well for this project. One immediate benefit was that it allowed me to identify and fix an error really early on with my scripts that was preventing me from building a playable game. The issue was with an editor script. The game plays and works perfectly fine while in Editor but fails when you try to build it. Trying to create an earlier playable build allowed me to troubleshoot this without the pressure of needing to submit it during the last day.
From a programming difficulty perspective it hasn't been too hard. I've been able to implement the designs and use my previous experience to quickly build this prototype.
However, the project is heavily dependent on events to communicate between systems. Towards the end this did become a bit of a mess and I'm going to try and better manage the complexity through better re-naming in the future.
Saturday, September 11, 2021
September 11th, 2021 - I've got a job now
I've been hired on as a teacher assistant for the Centre of Entertainment Arts in the Advanced Game Design program and I am now no longer job-less.
Woo !
Just finished my first week as a teachers assistant(TA) and it hasn't been too bad. I'm helping out in mostly beginner programming classes. So far I'm enjoying it since I do find some enjoyment in teaching and I get to talk about programming which most people don't really want to hear the details about or understand.
However, the part that most excites me about my job as a teachers assistant is that I gain access to the programs library of different game design and programming courses and a chance to interact with experts and veterans who have created/shipped games. The game design courses should be pretty interesting to check out since I've only focused on programming so far. Hopefully, overtime this will make me a more versatile game developer and allow me to make better games.
I've seen some of the portfolio pieces for graduates from the advanced game design program and have been pretty impressed with some of them.
I don't have any game projects to showcase today but here's a short experimental clip of a VR experience inspired from Inception. Inception is one of my favorite movies and I remember one of the most visually stunning scenes was when they manipulate the world physics in the dream world so that the city bends in on itself. My goal in this VR project was to recreate that effect and for me to see what it might feel like myself.
Monday, August 16, 2021
August 16th - Field of view with gizmos combined with Linear algebra
Here's a short video on a NPC character changing their head direction to face the VR player when they enter their field of view.
One of my main focus for the last week and a half has been on gaining a better understanding of linear algebra and learning how to use Unity's Gizmos/Handles for visualization. This was a short little exercise to put it all together.
Linear Algebra
The best resource I've found that has been the most helpful is a math series for game developers by Freya Holmer. The video series provides a great breakdown of math concepts such as vectors, vector normalization, dot-product/cross-product, local vs world space, trigonometry and more. I've also been supplementing what I learned during this series with the free linear algebra online courses at khan academy.
I've been no means mastered the math but I now have a basic understanding of the concepts and most importantly know what to look up if I need it.
Design Patterns
I've also been learning/reviewing design patterns. The best resource for this has been Refactoring Guru. It's explanations are very clear with great examples in a variety of different programming languages. I can see myself revisiting this website again in the future for when I need a refresher on a specific pattern or looking for information.
Animation Rigging
Tuesday, August 3, 2021
August 3rd 2021 - VR Game Jam 2021
This was my first game jam and it was an intense 3 days of programming. It was announced by two prominent VR YouTube channels, VR with Andrew and Valem, so I scheduled time specifically to be able to participate. I joined their discord channels to see if there were any people open to collaborating as a part of a team but ultimately ended up doing this jam solo.
This blog post is going to be about my strategy for the game jam, the challenges I faced and what I learned from the experience.
My Strategy - Scope Restriction and MVG
My strategy for tackling this game jam was that I would keep the scope restricted by trying to utilize what I've done in the past and interactive elements I'm familiar with. Basically, it was to make sure that my project scope didn't include too many new things I would have to learn for the first time.
I didn't jump into coding right away and spent a good half to full hour just brainstorming and trying to get a project concept before starting.
My final idea was a VR game where you created small worlds like a cook in a kitchen. You sprinkle the right elements in a specific order to create the completed worlds.
Here's some pics from the brainstorming. I never really meant for others to see it so its a bit of a mess.
Tuesday, July 20, 2021
Mobile Game July 20th - Input Manager touch screen and keyboard controls
Decided to not create a VR focused game and instead prototyped an endless runner mobile game for Android. Also took the opportunity to further test out Unity's new input system.
I was able to put everything together over three days which I'm pretty happy with. Most of the time was spent watching different video tutorials on the input system and how to configure it. It isn't too difficult to use when setting up the controls for one player. However, I haven't been able to get the local multiplayer to work using the same keyboard. For now I think I'll take a break from it and try a different project before re-visiting.
Thursday, July 15, 2021
VR Food Truck Prototype Game - July 15th
This is an overview of the VR Food Truck Prototype game which was built for Oculus Quest using Unity 2021. Recently we had to deal with a killer heat wave in Vancouver. During that time it was so hot I couldn't stand cooking in the kitchen and dealing with more heat so food was all about take-out and delivery. Thus the concept of VR food delivery game using a cannon to send you the food.
VR Food Truck Gameplay Trailer
VR Card Battle Game - July 15th
This is a overview of the VR Card Battle Game System prototype which was built for Oculus Quest using Unity 2019. This was a project inspired from a friend who is a fan of card games. I thought it'd be pretty cool to make a real-time VR battling card battle game with deck building.
The Gameplay Loop |
In terms of similar games I think of it as a combination of the projectile slashing from Beat Saber mixed with card games like Slay the Spire.
Example Card Scriptable Object |
Monday, June 14, 2021
Furniture VR Design Prototype - June 14th
Here is a prototype I made using VR to design a space.
Inspired from the Global VR/AR summit I attended last week. It was mentioned how 3D models will be used more in online shopping because it gives you a better sense of what you are buying than a 2d image.
If providing 3d models becomes the standard and widely available it would make it easy to use Augmented Reality or Virtual Reality to help consumers decide whether they want it or not.
VR Interactions and Save/Load System
Created the prototype using Microsoft MRTK for the VR interactions in Unity. The scrolling menu specifically was a very cool tool that's available through MRTK.
The save/load system was something I implemented for the first time. It was implemented through storing the furniture rotation, position and scale information in a game save data class. Using the JSON utility you can then transform the save data class into a JSON file as long as all the data information is serializable.
Thursday, June 3, 2021
2021 VR/AR Global Summit Notes - Raising funds for your VR/AR Initiative
This is a collection of take-aways, thoughts, and notes from attending the 2021 VR/AR Global Summit panel on fundraising for your VR/AR initiative.
XR Job Series - Raising money for your project or company tips
- Don't forget to look into government and corporate financing programs. This isn't a comprehensive list but I did some research and here are programs that I think local VR/AR businesses might be interested in.
- For BC, Canada this would be looking into Creative BC Interactive Fund.
- Research and Development Tax credits. For example SR&ED.
- Innovate has programs that can be beneficial
- For this fall you might want to pay attention to The Canada Foundation for Innovation. They will be hosting a competition in fall 2021 for the 2023 Innovation Fund .
- If your AR/VR project has a community focus or social benefit you should also consider corporate grants
- For example Rogers Wireless provides grants to organizations who have a focus on helping youth.
- Reach out to organizations who are aligned with your vision and could be strategic partners.
- They might not have funding they can provide at the moment but there may be other benefits that you could leverage. Establishing these relationships before going to angel investors or VC would also be advantageous.
- Have a 6-12 month plan for what you would do with funding. A panelist mentioned that he expects the businesses that he invest in to have a commercially viable product within 9 months. It's important to get gauge and get an initial reaction to the VR/AR product or service.
- What makes your VR/AR initiative unique?
- Your chances of receiving funding will be low if a quick google search of your idea brings up competitors who are similar and you don't have a differentiation factor.
- Founder Dynamics. If you are not a solo-founder, you should be aware that they will try to evaluate your relationship and dynamics with your co-founders. This was stressed as an important aspect for several panelist.
- A "No" might not always be a "No". One of the panelist who has raised a lot of money mentioned that for a lot of their deals the reason why they got it was because they didn't give up. Situations change and new developments for your VR/AR initiative may change investors mind and convince them to invest with you.
- How COVID has impacted the way they look at investing in VR/AR
- There is now a lot less resistance to investing in teams who are distributed.
- If you were operating prior to COVID they will be expecting to hear how you utilize the increased interest in VR/AR.
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 systemsTuesday, 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.
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
- 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.
Wednesday, January 27, 2021
January 27th 2021 - Working on Quest 2 Projects
Last month I got a Oculus Quest 2 and I've been working on VR projects since. This is a quick summary of those projects.
VR Flower Explainer
Updated and recreated the Flower Explainer Project to work with the Quest 2 Input system. I used Unity's XR Input system to make game objects interactable.
VR Gun Mechanics
I wanted to create a VR Fire Extinguisher Training experience and thought that the mechanics for using a VR Gun could translate over pretty well. There are a ton of tutorials for how to create VR guns so these tutorials were easy to find.
VR Fire Extinguisher Training