Game Jam Rules
Have fun creating VR mini-games over the weekend with any VR headset using the Unity or Unreal game engine! May start on something new or refine something old; may form a team or come with an established team. Not strictly a competition. Remote workers OK. 10AM to 10PM on Saturday and Sunday, November 12-13. Hosted by the great people at VR Austin Meetup. Jam Details #vraustinjam
Date: November 2016
The Artist Role
We formed a team after signing up, before the jam began. One team lead and programmer, one game musician trying out programming, one music trying out game sfx, and myself as the artist. We met in Altspace VR to discuss what we wanted to create. Our team lead had a good core idea, gathered ours, placed them on an Excel chart for us all to vote on, and together we fleshed it out. With two audio team members, we'd make a music-focused game where winning creates harmony.
We'll have three planets, each with their own native life-form and their own tune. You, the VR player, will be a UFO who abducts and immigrates species one at a time, imposing your will as you see fit. As you force integration in the optimum way, the music becomes harmonious and a win state is achieved, marked by musical note confetti!
However, things are never so simple. One species is more territorial than the others, and among each species, each has a different tolerance level. It's up to you to guess and check, listening for hints from disharmony, watching for subtle color changes, and undoing your deeds when needed.
Paul and I love the concept of Flatland, a book about a geometric reality learning of a higher dimension. One of the concepts is to use the number of angles on a shape to represent the number of perceptions, or angles on any given topic, or how open-minded they may be. I agreed to model the creatures accordingly - triangles only for the simpler minds, quads only for the middle, and spheres for the most... well rounded.
Plan complete. What complications might arise? This requires small-planet physics, like Super Mario Galaxy. If we can't manage it, we could do fish tanks or something with vertical gravity instead, but the planet/ufo thing was too cool to drop without giving it a try. So, our programmers agreed to try to solve for it before the jam, and if they can't, we're down to the fish tanks.
Daniel provided the breakthrough we needed and was able to demo localized central gravity! The jam may go on!
We waited until the jam began to do anything else as we all loved the spirit of the game jam, where we really do create reality within the two day span of time. Our team lead gave me some sketches of what the creatures might look like, with the angles = perception concept in mind, and I went to work. Next, we needed a UFO. I had to resist the urge to add a decorative bobble-head alien inside for the sake of time.
After play testing, we realized it's easy to accidentally fling a creature into the great beyond, and never achieve a win state. We could teleport them straight back, but the most fun solution was to teleport from wall to wall, like a portal, so they could be caught mid-air as they passed by, lost in loop.
Next, playtesters want to reach in and fist-grab the creatures. We only want them to grab one at a time, and we don't want the ship to slice right into the planet or bump off other creatures. We'd need a beam or something to indicate they're supposed to suck up the creatures from a distance. We could use particles or a cone with a looping texture motion. Looping textures would need a custom shader. Being a game jam, and none of us being shader coders, particles were much quicker.
Changing color to indicate tolerance status and frustration level turned out to be a frustrating problem. The code was triple checked, yet all creatures would only turn white. We dropped the feature and moved on. Later, Paul learned it was because Unity was looking for percentages instead of the 256 color range. Good to know.
The music was more complicated than imagined too. Do we make an orchestra with musical notes per-creature? If so, we'll have over 40 sound emitters while trying to maintain 90fps for the VR to stay stable. Do we make a disharmonious track, a harmonious track, and fade back and forth? If so, how does a third one work? We realized we might need to drop it down to two planets for the sake of finishing the game for the jam.
Locomotion was a problem. How do you apply AI pathing to a sphere? We dropped AI pathing and coded simple movement. But that meant it'll be difficult to have decorations and obstacles. We settled on a barren planet with nothing but one building model to cover up the spawner.
The sphere creature was an inch-worm. I figured it would be neat to pick it up head-first, with the rest of its body dangling around while it's abducted using physics. There is a neat spring-joint component built into Unity, so this was bound to be easy. *cough* I set up multiple spring joints and tried it out, but the spring tolerance was met right away and it broke off. No problem - ask an expert! I found a Unity employee at the jam. He admitted the spring joints are not the best and I probably shouldn't use them in this way. Oh well.
Between lunch and mingling and playtesting, our time came to a close and we made our final build. While it wasn't as amazing as we had imagined it, it did work, featured spatial audio, and even had a win state. Not everybody finished a playable game, so this really was an accomplishment. Monday was demo-day, and we were ready.
It was great watching random members of the public try it out. Many were amused and some beat the game. The public was not the only ones. There was a surprise announcement - an award will be granted after all. The winner is... Musical Migration VR!!! The jam was even featured in the local news.
I 3D modeled and textured a UFO sized to precisely match the HTC Vive controller, three low-poly character models, and one emitter cover. Created musical note sprite for particle emission. Assisted in concept design and participated in troubleshooting.
Team Lead and Programmer: Paul Gasca
Lead Programmer: Daniel Perry
Audio and SFX: Emily E. Meo
Other assets provided by HTC Vive and Unity 3D
Game Jam organized by VR Austin Meetup Group
Don't use Unity's spring joints.
When you think you're ahead of schedule, you're not.
Planning ahead pays off.
Good teams make great games (and win contests!)
While it may seem like we ran into a lot of course corrections, this went very smoothly and I attribute that to excellent planning and scope-control by Paul. The mantis creature was perfect for re-use in Flatland VR, a later jam production.