Halloween is a big mood. So is virtual reality. As a young student trying to navigate myself in the world of games, I thought that now would be a wonderful time to make a Halloween themed game in virtual reality (I ended up finishing the game on Oct 31st!).
So much of virtual reality’s appeal consists of movement and immersion, and I think that’s why first person shooters are currently the dominant genre in VR games. There’s a lot of pleasure in scanning the room for enemies, aiming, pulling a trigger, and shooting. I’ve been wanting to make a shooter game for a while, and as a Knight Lab fellow, I already had some art assets with which I could build my game.
Google Blocks is an VR environment where you can build 3D models. It makes for good mock-ups, but it’s also really cool to just make cute things (Check out the gallery). The simplicity of the models lend well to virtual reality: low-poly models with limited color palettes means that the game engine can render scenes quickly and maintain the high frame rate that’s necessary for immersion in VR. I made a couple of assets: a haunted house as a focal scenery, a ghost and jack-o-lantern as enemy models, and trees to navigate around the scene.
After that, I imported the models into my game engine of choice: Unity. There are a ton of helpful tutorials and useful SDKs that allow games built in Unity to be integrated to virtual reality. I used SteamVR and VRTK: both incredibly useful resources with a ton of video tutorials that helped me figure this out (shout-out to MIT; you’re doing wonderful things!). To get started with VRTK, I would highly recommend their Youtube channel- this was the first video I watched to integrate the camera with the player headset.
I especially leaned on their survival shooter video, which takes Unity’s survival shooter tutorial and changes it into a VR format. This game was made for the Vive. I maintained the format of the right controller trigger being used for shooting and the right trackpad being used for teleportation (sorry, left-handed people). The finished* product is here. A couple of changes that I made: instead of using raycasts, the gun instantiates bullet objects that collide with the enemies. It seemed like enemies needed a shootable mesh in order to be affected by the raycasts, and I didn’t want to alter the models’ meshes from Google Blocks. Additionally, the player has no health, and you cannot lose in my game.
Some improvements that could be made: the player can teleport outside of the play area, so I need to restrict their possible teleportation locations. There should be an instruction canvas when you first start. There should be a counter for shooting enemies. Right now, I like having enemies float about after they’re shot, but I might have them be destroyed instead.
Overall, this process took me about 5 weeks. If I make another shooter game, part of me thinks I could finish it in 3 days. I’m really enjoying learning more about virtual reality and game development, and I’m glad that my work study job pays me to make things like this.
(Also, big shout-out to my manager who built my game and was the one who uploaded it to itch).
*I realize now that coding projects, just like art projects, are never really “finished.” You just get to a point where you’re satisfied enough with the results (and too tired to continue working on it) that you stop working.