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
Diving Into Unity
People pitched their ideas, then the rest grouped according to which idea they wanted to join in on, unless they already had a team. There were about 30 people and about 5 compelling ideas to choose from. The problem was most ideas didn't require much art or modeling work, and the room was about 2/3rds artists with little to no Unity experience. The unused 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 was that you don't really need to know code; you can drag and drop individual scripts, download ready to go characters that respond to input, 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 and textured the cave tubing in Maya, created the graphical UI in Photoshop, edited existing texture on the character, and created a much broader level design than time allowed for.
Game Programmer and Collider Coach: Pete Moss at Unity
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.
Having been to many game jams since, this was the only one with such a high artist ratio coupled with low artistic need. I should point out this was due to VR being brand new for most involved, there was little to no VR code or tutorials on the net, and everyone was intrigued to find out how basic head-steering and such would feel in the headset. There was also one artist who developed solo and did a great job!
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? The company lets you trade up to the commercial version for free. Anyway, here it is, for nostalgia.