Game Jam Rules
Have fun creating VR mini-games over the weekend with the Oculus DK1 headset using the Unity game engine! Not a competition. No experience needed – Unity employees are there to help out.
Date: July 2014
Prison Break VR Dev Blog
People pitched some ideas, then the rest grouped according to which idea they wanted to join in on. There were about 30 people and about 5 compelling ideas. The problem was most ideas didn't require much art (if any) and the room was supersaturated with artists who had no Unity experience. The extra artists grouped up to just enjoy the day working alongside other artists and tutoring one another and enjoyed watching the production. At first, I was one of them.
The big Unity sales pitch is that you don't really need to know code; you can drag and drop scripts, animate in the engine, and import all the art. The Unity employee was kind and attentive. Why not try it out? Surely, if it's that easy, I can make a small game solo, with only a bit of help, if I could design a game around the lack of code.
The theme of the Jam revolved around fear. Fear within VR... emphasis on immersion... claustrophobia could be fun! I sketched out a basic maze, and decided the farther the player goes in one direction, the more the walls cave in. The trick would be to navigate the maze efficiently and find the exit before that happens. Therefore, I probably just need one line of code, some algebra that drives the scale of the maze based on Z distance from origin, and not allow the player to walk the other way. Just one minute of a good coder's time and I'll spend the rest of the weekend building an elaborate maze!
Then if I have more time, especially with extra artists around, I could make a full cinematic. You're in prison, but you see a hole in the floor, dug out by many who had come before you. You jump in, and fall into this elaborate earth cave. Fire burns behind you, lighting your way. You can hear echos of the people above you shouting, so you'd better get going. The voices dull and you begin to hear muffled rain. The further you go, the less reinforced the walls are, and chunks of earth start to sag and drop as the rain is about to cause a cave-in. Better hurry. You hit a shrinking dead-end, so you back track, but now you hear them coming. Unarmed, you have no choice but to solve the maze. I'll call it... Prison Break VR!
I build a short test section of tubing in Maya, drag and drop in a full animated character provided by Unity, and drop in a wall of fire to keep the player from even thinking of going the other direction. I click Play. The character falls through the floor to infinity. Ah right, colliders... click collider. Done. Does not fall through floor, responds to keyboard input, and walks around in the tube. Ready for some code!
I recruit the Unity employee, and he's happy to help. Sure enough, he whips up some code from the top of his head and it's done. Click Play. The character falls through the floor. The tiny motion of the player falling from its start position onto the flooring was enough to shrink the tube past where it would catch. Exclude y motion... done. Character lands solidly on the tubing. Move forward, and, fall through the floor. Maybe it was shrinking too fast? Edit. Retry, same result.
Ah, he begins to explain, there's a known problem with fast-moving collisions, like bullets, where the bullet kind of teleports frame-by-frame and it can miss the moment where it penetrates the wall or collider. There's a setting for that. Retry, same result.
Maybe it's the character controls, they aren't the best, he says. He goes to copy over a newer, better version. It helped, but, same result.
Now it's down to mesh colliders vs box colliders, or something to do with how scaling a physics collider works in the first place. We hit the too-deep end, and it was time for patches and workarounds. He added a floor, so when the character falls, it can at least walk backwards and get back in the tunnel. He added an Invisible Ceiling of Death that would lower, rather than shrink, as the character progressed, and trigger Death when it touched the player's head. Oh right, death... more code.
Now, I do have a playable game, where the tunnel looks like it's shrinking, you can walk up the sides a bit at first, fire lets you know there's only one way to go, and death strikes at the far end of the tunnel. Not bad. Now for the presentation, it'd be nice to have a simple start menu. What – that needs code?! My amazing Unity dev was busy. I find a free template, but the button doesn't work as it needs to be customized (I didn't know about the build settings yet either). I recruit help, and a kind programmer spends a minute and makes it so. Excellent. Now I just need to spend all day making a clever maze system by hand that looks like a muddy cave, complete with spawn points for enemies. Sound would be good – stressful music, strained breathing... But, time was up, and some hadn't gotten spectacularly far either. Good enough!
Speaking of sound, this dev log wouldn't be complete without acknowledging Jeff McMillen. As the only audio guy, he joined not one, not two, but five teams. He worked hard over the weekend and really pulled it off, not just sfx but composing original music. Everyone was impressed!
Time's up and I present a working game, and my play-tester agreed the claustrophobia concept was sufficiently creepy. I'd learned many new things at once, tried the Oculus for the first time, was exposed to game programming and the difficulties thereof, and truly created something from scratch in a room full of brilliant people. It was an adventure!
I 3D modeled the cave tubing in Maya, created the static title screen in Photoshop, edited existing texture on the character, created concept art and level design.
Game Programmer and Collider Coach: Pete Moss
Button/UI Programmer: Neal Nellans
Other assets provided by Oculus and Unity
Game Jam organized by VR Austin Meetup Group
Scope - When you think you've reduced your vision, reduce it again, and maybe again for good measure!
Colliders - 'Everybody knows' not to use Mesh colliders for anything important in Unity. Now I do too.
Code - Required.
VR - Amazing!
Game Jams - Others are more willing to help and teach than I'd ever imagined.
Does not require Oculus, but you can't turn without it. PC only. Unity Web Player is depreciated, may need zip version. Removed death sequence. If you still have the Oculus DK1, ...why? You can trade up to the commercial version for free. Anyway, here it is, for nostalgia.