An Oculus Rift virtual reality platformer using the Unity game engine.
Upwards is a platforming video game demo designed for use with the Oculus Rift. It was created for my Interaction Design senior capstone project during the final quarter of school. I had ten weeks to learn Unity, C#, and any other necessary programs/techniques before presenting the demo at the University of Washington's Design Show.
Upwards is focused on using parkour-like movement mechanics to explore the world in first-person. The game enabled me to explore different methods of interaction and design within VR. The lessons that I've been able to take away from this project might be applicable to other future VR experiences or even crossover to AR when the technology is ready.
Some of the more interesting concepts in VR are scale, interface, and player interactions. 3D audio helps improve an experience's immersion, but it's really the believability of the world and a player's influence in it that can make the experience feel real.
Interaction Design Capstone
Programming | Level Design |Everything Except for Some Borrowed Models, Animations, and Scripts
Unity | Maya | Zbrush | Photoshop | Illustrator
Downloads (Oculus Rift Only):
Creating Upwards was very demanding. Everything was learnt on the spot, there was no outside help beyond the internet, and I had another capstone project in animation at the same time. Thankfully I had previous programming experience, so the transition into C# for Unity wasn't too difficult. With two hours of sleep a night and help from Unity’s online community and asset store, I was able to pull together a fairly enjoyable demo.
Creating a game requires constant play testing, programming, pre-production, 3D modeling, texturing, level design, rigging, animations, effects, lighting, interface, sound, story, and a consistent and immersive experience built for players. Games, like films, normally require enormous amounts of time and iteration from a skilled team of professionals. It's one thing to try to make a game demo by yourself, and another to create an entire product that can be sold for profit. What I created is a fraction of a game, and while I was constantly under pressure and self-doubt, it was a very fun project to work on.
Research & Development
Making Upwards was an explorative process; for everything beyond sketching and reference gathering, new things had to be learnt and fiddled with. The first week was spent going through Unity tutorials, understanding how the Rift could be used, and ideating interesting and plausible ideas for the demo. I was cautious not be too ambitious. My original ideas centered around translating the typical 2d menu into 3d space and creating an exploration based game. As a huge fan of classic platforming and adventure games, I wanted to incorporate the feeling that those games gave me with something that had not really been explored yet amongst Oculus Rift demos. Instead of creating a very polished environment that players could walk around in, I became curious about how I could make exploring more exciting than just walking around at 3mph.
The second week was spent gathering Unity packages and concept art. I tried to determine what look I could achieve within the given time constraints and how well I could get parkour mechanics to work (similar to games like Mirror's Edge). Thankfully, after hours of browsing and testing scripts, I came across Stopsecrets Peerer's Ledge parkour script, which gave me the core mechanics needed to jump start the rest of my game.
Based on feedback from my class, people wanted more interaction in the game beyond collecting objects. Going off of that feedback, I developed a story to give the game direction, modified the movement controls, added animations (used Mixamo animations) and sound effects, and implementing extra abilities like the double jump. I also made physics based interactions like object pick up and drop, push and pull, and platform building. Before I knew it, I was spending more time on fixing mechanics, animations and bugs than anything else.
The most exciting part of development was level design and building the environment. I originally tried creating my own assets, but bringing them up to the fidelity that I wanted would've been too time consuming, so I opted for blocking things out using Unity packages like the Fantasy Megapack. By combining those models with built-in Unity primitives and textures from GameTextures, I was able to quickly build several spaces. Most of the areas went through multiple stages, constantly being rearranged or scrapped based on how they felt while wearing the Oculus Rift. I learnt that verticality and scale are critical elements in VR, as players have a much easier time looking at their surroundings. After lots of play testing and iteration, I arrived at the game demo's current state.
Found Reference Art
Early Mechanics Testing
Early Level Layout
Work in Unity and Maya
The demo of Upwards that's available for download is just the first step. I have plans, as part of learning and getting involved in the game industry, to use the demo as a conceptual model and start the game over from scratch. There's an opportunity to create a new type of game, and to take it even further with the Oculus Rift. This time around, everything will be custom made and centered around a more interesting story and game mechanics, with the hope that if things work out I'll eventually be able to raise funds for it and bring in new team members. There's still an absurd amount of things to learn, but Upwards has been a key launching point for me in a new potential career path. For anyone interested, I have plans to update my blog with lessons that I've learnt about VR during this process and where I see it going in the future.