We are still buzzing from completing the Oculus VR Jam and getting selected as finalists so even though I don't normally write project retrospectives the Oculus community has been so positive that I feel like giving something back (however small).
We're very grateful of Oculus and Unity for hosting this game jam and for all the effort they are going to for judging the entries and we're also very pleased and humbled to have been selected as a finalist.
But first of all a small gripe: Not every game that we thought were amazing made it to the finals and some rather dubious entries did. This maybe be due to the fact that the finalist were selected purely based on descriptions and videos and that each entry was reviewed by (at least) 3 random judges (which might lead to score skewing). This method makes sense due to the sheer volume of entries but is less than ideal for all the hard working innovative devs who didn't get selected.
You might think being up against a weaker selection of games would give us a better chance at a prize but we'd much rather see all the truly innovative games get the exposure of being a finalist.
Anyway, usually post-mortems follow the 5 wrongs and 5 rights format so without further-ado:
What went wrong:
1) Asymmetrical Multiplayer
One of the judging criteria was multiuser interaction and we also wanted to create a game with different view points on the world to provide 2 different experiences and encourage discussion.
What this meant was that no one play tested our game as no one had 2 Gear VRs. It was also a conscious decision not to include a single player option as that would detract from the experience we were creating of Runner and Operator, if we had done both we would have had less time to focus on the core experience.
We could have possibly made the 2nd player work on tablets but having 2 Gear VR experiences was more important to us. Splitting our attention on multiple platforms and formats would have put more time pressure on us and dilute the experience.
This no doubt hurt our chances with the community vote. We've since released a windows build which can connect to a Gear user but there's still a lack of play testers so maybe our game just isn't very appealing? Perhaps we could put more effort into recruiting play testers next time.
i.e. the lack of any play testing. Because our game required wifi to play and that no one we knew had a GearVR (except one person who works full time and has little free time) we only managed to get a few play testing sessions from people in our office. Most of them were non-gamers and required a lot of coaching to even get to grips with VR.
As a result we have no idea if the puzzles are pitched at the correct difficulty or if the game is intuitive to play or not or how long a typical play session lasts.
We tried to make the game easy to understand and all the instructions are on the Challenge post page. If we develop the game further we'd include user-friendly in-game tutorials as well. Right now we just don't know if people are going to get stuck or not.
As a fail-safe we made a walk-through video with hints to each puzzle in case the judges get stuck on a puzzle but want to see the rest of the game in their short allotted time (5-10 minutes) . Whether or not they bother to watch the video is another problem. If they get stuck on the 2nd puzzle they might not even get to the best bit!
In hindsight we probably could have reshuffled the levels around to start with easier ones but we just didn't know which puzzles were easy as we already knew the solutions.
Next time we'll be sure to playtest often and from the start.
We originally intended to make a co-op heist game where one person is the thief and the other was the support guy in the van outside with the building schematics and elite hacking skills, opening doors and hacking cameras. (In the end the top-down player had far less impact on the levels than originally planned but this isn't necessarily a bad thing).
The theme quickly evolved into a simulation of a heist given the amount of art assets we were going to need to create in a short amount of time (we used no pre-made or bought assets, everything was made from scratch in 4 weeks) and then again into a surreal cyberpunk mind-dive given the warped look of the architecture.
In a game jam, story is probably the least of your concerns (unless it's a story telling app) but on the other hand I'm not sure all the elements stick together or come through clearly enough but that's something we can address in the full version (maybe?) , replacing the random photos of my office with proper images related to the story of the character.
I'm also not convinced by my own voice acting (hate the sound of my own voice) but I tried to inject some of the theme into the voice recordings. My biggest fear is that people miss clues in the audio because they can't understand what I'm saying.
We also wanted to include a plot twist at the end which ended up quite weak.
Frame rate is the number 1 killer of immersion and cause of motion sickness in VR. Because of this we couldn't include the nice poly explosion effects we wanted but the scaling effect is just as nice and far cheaper.
There are still some frame drops in some levels because we couldn't make moving geometry static for batching. In hindsight we probably could have made some of the less obvious drifting chunks static but the subtle movement really helped sell the surreal atmosphere. We could have made the animations baked into the 3D models instead of individual objects with scripts on them if we had the time.
We also couldn't compress the lightmap textures for android as they looked terrible (and also took ages to compress anyway) but the lack of any other textures in the levels reduces the memory demand which allowed us to leave much nicer looking uncompressed lightmaps in.
5) Unity 5
This has appeared everywhere but Unity5 just wasn't ready for VR. We use Unity5 in our office without issue but this was the first time we tried it for VR with lightmapping and the amount time lost tracking down bugs and flickering textures could easily have been avoided if we used the more stable Unity4.
Another general unity gripe is the lack of "nested prefabs". The way the levels were loaded we had to make prefabs of all the levels but this broke the link to individual element prefabs which left me scratching my head for days about why the audio tapes played on both devices in some levels but not others. (it was because of a single check box on the audio tape which I only thought to look at in the object prefab and not the level prefab)
Certain basic functions also don't work for some reason like FindGameObjectsWithTag().
Unity Asset server is also a buggy pile of crap.
What went right:
1) Asymmetrical Multiplayer
The game design gods giveth with one hand and taketh away with the other, no doubt it was the multiuser design that was, in part, why we were selected for a finalist position. It might have hurt our chances for the $10,000 community vote prize but we're in with a chance of a much larger prize. I'd like to think that our game offers something unique to VR.
Luckily we have 2 Gear VRs so we could test early and frequently to ensure smooth development throughout. Despite this being the first networked game we've made there wasn't that many hurdles to overcome partly thanks to Unity's networking API and having 2 devices on hand.
Having 2 different experiences also means that a person more prone to motion sickness can have the top-down view as there's no walking in that, which is much more comfortable to play.
Swapping headset is also a bit of a revelation as you experience the same level from different perspectives. In hindsight we could have allowed view swapping by a single player to get that same experience but we would have had to remake the entire system to remove networking. Not something we were prepared to do during a jam but a possibility for future versions.
2) Art direction/Team
It's important to play to your strengths and Julian is an excellent artist. I can't stress enough how much a strong art direction can influence the game and perception the user gets. We also picked a style which was both striking and easily doable in the time-frame by our small team.
We have an amazing team of 3 people at Mechabit Studios. Working remotely is great but working in the same space at the same time is loads more fun and productive. We are passionate about game development and VR innovation and each put our all into the project which I hope you can see in the love, attention to detail and polish.
The small tweaks we made at the end (which I wouldn't have considered working alone) really tie the whole experience together (notches on the speed meter, notifications and the laser pointer) and adds that little bit of polish which might make or break our chances of winning.
I think we managed to hit the other judging criteria of innovative use of head-tracking and touch-pad input. The whole game can be played using only the integrated touch-pad and back button on the side of the GearVR.
Everything from walking, picking up, throwing, spinning, pushing buttons and audio scrubbing is easily accessible with taps, swipes and look gestures. The UI is also designed to work in VR intuitively and makes full use of the 3D space around you by allowing the Operator to place windows anywhere around him.
If only they allowed multi-touch on the touch-pad.
We make use of a floating cursor which aids look gesture targeting on small buttons. It reacts to level geometry, moving closer to avoid appearing behind walls and awkward eye focusing and to rest near where the player is focusing on naturally.
We didn't want to allow walking sideways or backwards as this is a recipe for motion sickness but a few people have pointed out they'd want to walk backwards sometimes (which we don't do a lot of in real life), in the end we prioritised comfort.
We also threw in a VR nose option as there's research which points to that reducing motion sickness (I don't notice a difference but it's there if you find it helps).
We carefully planned out the whole experience on a white board with input from the whole team. We've been working together for several years now and are familiar with our own development speed and ability. This has probably been the most relaxing game jam we've done with days left to spare at the end.
An important thing to remember is to work smarter, not harder. Working late into the night while your brain is tired is a recipe for disaster as you start making mistakes and are too tired to work efficiently the next day, this also impacts the whole team.
5) Video trailer
Given that the finalist selection was going to be based on the description and video (which was clearly stated from the beginning) you would be insane to neglect it. We spent 1-2 days recording and editing the final trailer and text which is a long time in a jam but is also amazingly fast for promotional work. Again, amazing work on the trailer by Julian in such a short amount of time.
I'd like to reiterate my thanks to Oculus and Unity for hosting this event and for making VR development possible for small guys like us and also the Oculus community on the forums and reddit just for being amazing. Don't be disheartened if you don't win a prize, just having made a game in this short time is pretty damned impressive and having more VR experiences available in the long run is far more valuable to the industry.
You can download the game for free and play it right now at the links below:
Oculus Forum (including windows build):