Coming out of an excellent 3-day workshop at UploadVR, we decided to expand on what we learned and create a virtual reality game with simple mechanics that we could build in about a month. We chose to build a Tetris/Jenga inspired block stacking game with the thought that even a simple somewhat mundane mechanic in a normal 3D game would translate into an exponentially more interesting experience in VR. We developed the game in Unity for the HTC VIVE. HeapVR was born. You can now download HeapVR for free on Steam!

Lesson 1: VR Is For One, Developing VR Is For Two

Although VR is currently a (mostly) single-player experience, we discovered that it was much easier to develop as a pair. Our first attempts began with one person developing alone, going back and forth from the computer console to wearing the VR headset, which was slow, but doable. I kept hitting people and things, tripping, and being out of the play space as I tried not to veer too far from the console for my in-game testing. Going further, there were times where investigating issues involving frame dropping brought on the dreaded VR sickness. This made getting back into the orientation of developing sometimes challenging.

Adding a second developer solved the majority of these problems and was organized as one person working at a computer and the other standing in the play area waiting for the cue to go in and out of VR. This allowed the tester to remain in a safe testing area while their partner guided them around physical limitations and directed them to testing parameters. This also has the added benefit of letting the coder make live tweaks in Unity during game play testing. We were able to test changing physics properties on objects to determine how best to stack blocks, as well as figure out how to best reposition items for the player’s perspective.

At some point we went a step further and cycled a third person into the development system: our designer. Since so much of VR development uses plug-and-play widgets, a designer is able to vastly improve VR aesthetics even if they lack programming experience. He thought about things we hadn’t considered, like adjusting shadows, adding objects far off in the distance that only the acute observer would find, as well as perfecting the lighting angle and color.

Lesson 2: Make VR For Others, Not For Thyself (User Testing)

In our game, we wanted the player to have the option of going up higher as they stack upward so they could potentially continue endlessly. We built a platform that acted like an elevator, with a switch attached to it which allows players to go up or down by pushing buttons.

The switch was fine for me and my pair developer, but we got mixed reviews when we let other people try it out. Some thought it worked well, but others had trouble reaching it. It turns out some people are really tall and have problems reaching things at a fixed height and location. There were also people who just didn’t like having to look for and click on an elevator button in the midst of stacking blocks.

After consistently receiving the same tester feedback, we became convinced that utilizing other buttons on the control pad was the best implementation for this functionality. We removed the elevator switch and decided that holding up or down on the touchpad would control the elevator direction. We also added arrow indicators on the controller model to make this even more clear.

Lesson 3: Key Input — A “Word” On VR

On most platforms, keyboard input methods are clear, established, and not given a second thought. Within VR and AR, there are no clear standards yet.

We experimented with keyboard APIs we found available, but no format gained a dominant following (or provided a great user experience). So instead, we built our own. Basing it off what a real-world parallel might look like, we provided large letter blocks for the user to hit.

This turned out to be difficult to use, tiresome even, and more work that I anticipated. I failed to consider the amount of arm movement and accuracy it would require. Humbled by the clunky experiences we’d attempted, we returned to using existing keyboard APIs. The SteamVR API turned out to be relatively easy to implement, but we’re looking forward to riffing on new keyboard interactions until a dominant VR text-input standard emerges.

Lesson 4: Physics Is Nice, But Could Be Better Right?

The purpose of HeapVR is to stack blocks into the tallest possible tower without the structure collapsing. As such, we started with standard physics and began to test the stacking. No one could stack more than 8 blocks high, which made us realize that realistic physics wasn’t all it’s cracked up to be.

The Unity Engine gives us the ability to adjust the presence and properties of physics, and we experimented with most of them in our quest for more compelling gameplay. The first adjustment we tried was making the blocks weigh less, and then weigh more, but this did very little for their stack-ability. So then we cranked the drag property way up high. You can think of the drag property as the rule in physics that causes a feather to fall much more slowly than, say, a truck. With this change, one could now stack forever or even in mid-air, since it took so long for the blocks to fall.

With that in mind, we pulled the drag property way back down, but higher than we started at, finding the perfect sweet spot. Blocks still fell to the ground more slowly than you would expect them to, but our justification was that we’d just insist the player was stacking on Mars if anyone questioned us.

With our “improved” physics, we found a sweet spot between challenging and rewarding stacking game play. However, it felt like we were still bound by a low skill-ceiling. No matter how good a player became, they couldn’t stack higher than the simple physics allowed.

In order to improve the game, we turned to a secondary game mechanic: floating “ghost blocks.” These mid-air “anchors” forced the user to adjust the structure of their towers, but also allowed clever players to reinforce them.

Conclusion

HeapVR was the first VR game we created at Propeller. It is a game where players stack blocks strategically as they are slowly elevated upward. After 100+ hours of development into our project, we came out with a structured development process, several lessons learned through user testing, and a deflated ego on how best to input text.

HeapVR is now available for free download on Steam! Coming soon to Viveport. Join the conversation on social media using #HeapVR. Stay tuned for the second game mode release that lets you build any 3D structure you want in free-play…

Enjoy this demo for the first game mode release:

We enjoyed demoing HeapVR at our previous VR meetup. Check out our YouTube channel to watch the meetup presentation and learn more about our design and development processes for HeapVR.

Feel free to subscribe to our newsletter, Caching Up, to be the first to know about our future meetups and events so you can catch the next one. (FOMO is real.) You’ll also be notified of all that’s new and glorious in design, development, and emerging technology. Thanks for reading!

Stay engaged with Propeller on LinkedIn, Twitter, Facebook, and Instagram.