Project Overview – Ragnarok


Ragnarok started as my senior design project (all engineers at Rice do one of these projects their senior year) in January.  At the time Unity was the only free game engine with a VR integration so I decided to try it out for the project.  I had prototyped a couple designs using a controller initially but I soon decided it would be cool to switch to using the Leap Motion.  Pretty much everybody’s second reaction to VR after looking around with their mouth open is to reach out and try to touch something.  I thought I could score some cool points with the Leap and explore a control scheme that will play a major role in VR in the future (whether that is optical tracking of your hands or using a tracked controller.)

One of the demos that made use of the Leap that I tried was called Elementl: Ghost Story.  Here’s a gif to give you a feel for it:

Elementl was really simple to figure out, had fun core gameplay, and didn’t involve any movement (which at the time I thought would be impossible to pull off with the Leap.)  I wanted to create something with a similar feel to Elementl that had more depth to it.  I had really enjoyed playing the action tower defense (if that is even a genre?) Orcs Must Die years earlier.

Orcs Must Die served as the inspiration to combine defending an area by using your character’s skills alongside a traditional tower defense setup.

Offensive Abilities

I wish I had taken more screenshots over the course of development, but here you can see a hand faced away from the camera performing a fireball attack at a zombie in the tutorial level.

And here’s one of our first levels where you can see a zombie approaching the player and being fired upon by a turret:


The bottom bar of the UI that you can see here showed you the different attacks you have equipped for each gesture we recognized.  We put the UI in world space (which lead to some immersion-breaking occlusion at times) and progressed from having it follow all of your head movement to just yawing alongside the player (so if the player looked up or down the UI wouldn’t follow them.)  I had wanted to place the UI in the world in a more natural way (i.e. having the player’s hands change based on what attacks were equipped) but without any modeling skills my options were limited.  I had tried attaching particles to the hands but in the naive ways I tried it just cluttered the screen without adding any more information for people (though eventually I would have the hands catch fire when you got enough headshots to use a special ability.)

At the beginning of each round the user had an option to change the attacks attached to each gesture:

This is one of the earlier versions of this menu where the user would pick an attack from the list at the top and then choose a corresponding gesture from the bottom row.

Placing Defenses

Placing defenses initially happened in an overview mode that you can see here in one of the test maps I made:

Eventually I switched the defensive placement to happen in its own phase before combat.  Here you can see the old turret placement system (where they were only allowed to be placed in specific slots) alongside the player choosing where to place his next oil slick by making a fist (releasing it places the object):

Player Movement

Although I don’t have any screenshots to show it (or video, unfortunately) I came up with a movement scheme that allowed the player to move by leaning or stepping in the direction they wanted to go.  I chose a “center position” for the player that would be locked in when they started the first round, and after that point if they moved outside of a deadzone (in real life) they would move based on the direction they were facing (I projected the vector from the center position onto the camera’s forward and right vectors.)  This system surprisingly didn’t induce nausea in the vast majority of the people that used it.  I took care not to accelerate the player (leaning farther didn’t make you go faster etc…) and I guess the physical action of leaning helps your brain deal with locomotion in VR.  If you were willing to play along (and not just step backwards and stay upright), the feature also heightened the tension of being chased by zombies because you would be leaning away from them as they came towards you.  I would love to see a fully-fledged implementation of this movement scheme (the UI to let the player know when they were in the deadzone etc… never made it past the concept phase) in the future, although I haven’t seen it in any of the demos I’ve played so far.

And here’s how the castle level looked for our final presentation in May:

Vive Jam

About two weeks after the final presentation for the class I went to Austin to participate in a game jam using the HTC Vive.  At the Jam I partnered up with Ivan Blaustein who came up with the idea of making the player a giant to take advantage of the Vive’s tracking system.  I created a new square castle and scaled the player so that they could walk around the entire level before Valve’s tracking broke.

As you can see I also moved the UI to the side of the level instead of locking it to the player’s head.  Unfortunately I wasn’t able to get any screenshots of the Vive version but the player had a total overview of the level and placed defenses and shot enemies using the motion tracked controllers.  One of my favorite things was getting down on the ground and looking at the enemies up close as if they were action figures.  This version of the game was the only one that I could say for certain I enjoyed beyond it being my own project.  Here is a guy crouching down while playing:

And here I am with another guy demoing the game (thankfully the Vive controllers will be wireless when it ships to the public):

Current State

Working with the Vive controllers further solidified to me that the Leap Motion just wasn’t going to work out in its current state.  The tracking is limited both in the gestures it recognizes and the area in which it tracks your hands.  It was also really difficult to teach people to keep their hands in front of their face at all times.  So when my Leap stopped working I decided that was a sign and converted the game to use an Xbox controller.  I kept most of the features from the Vive Jam but allowed the player to swap between being a giant and going down on the ground for a more traditional FPS experience.  You can check out some gameplay here:

And that’s where things are now.  If you want to download the game you can go here and the source code is on my Github.