How we iterated on design and created a game for Google Daydream
Design Iterations on a Classic
Virush started with a simple premise: Let’s design a game for Google Daydream that’s built for the controller. As the first mobile VR with a dedicated controller, we knew that the Daydream would create new opportunities and challenges for interaction and we wanted to explore that space. We decided that our best approach was to use an existing premise to inspire our design; This would allow us more time to focus on design issues unique to Daydream. So we turned to the ever inspirational Nokia Snake as a place to start. Several members of our team have a fondness for Snake and we felt it would be a natural fit for VR.
Our development started before the Daydream was available on the market so we did all of our prototyping on the HTC Vive. To mimic the Daydream controller, we only listened to the rotation of the Vive controller and the trackpad press. We believed that this would give us a close enough approximation of the Daydream controller that we could test and prototype with confidence. With this abstraction in place we started designing. The goal of the game in our first iteration was simple - grab as many packets as you can before they turn poisonous. The more packets you grab, the longer your tail gets. Hit your tail and you die. We used the controller to drive pitch, yaw and roll. We thought this would allow for a natural flow to the game and allow the snake to move through all dimensions of the game.
Oh boy were we wrong.
People had a hard time understanding the combination of rotations that would get the snake moving in the direction they wanted. But more importantly, it was an ergonomic nightmare. You ended up contorting and twisting your wrists into uncomfortable positions and there was really no way to reset.
So we changed the behavior of the snake. Instead of directly controlling the snake, the controller became an laser pointer and the snake chases the pointer. This was better but still had problems since it was tricky to pinpoint the snake’s distance from the player. The movement of the snake was satisfying but navigating into packets was too difficult. Snatching packets needed to be fun, not frustrating. So we tried a new tactic - treat the game world as a sphere surrounding the player. Now steering the snake into packets was simple, just rotate and point. This was direct and surprisingly enjoyable. With movement mechanics in place we could finally start developing the gameplay.
At first we focused our attention on the tail. We made packets contribute to the length of the snake’s tail, with the only obstacle being the tail itself. We quickly found that this was not as enjoyable as expected. Your tail grew rapidly and before you knew it, you were snake spaghetti on the screen. We found that keeping the tail a fixed length was much more coherent, and we could still communicate packets being collected by filling up the snake’s transparent belly.
In this iteration, even with a static tail length, running into your tail was easy to do. But, if you did it intentionally, it was actually kind of fun. This led us to adding another way to capture packets - loop around a bunch like a lasso. Our test players found this very satisfying. The lasso just felt natural and had a nice plunkplunk plunk feel as the packets disappeared
Just collecting good packets and avoiding poisonous ones didn’t feel like enough. There was no real challenge to the gameplay. So we experimented with adding enemies. Simple enemies that could be defeated easily left us wanting more. The threat needed to make you think. This lead to designing unique attackers that demanded an intentional defense, and made your packet collecting more challenging. But if enemies were mean enough to be challenging then they needed a way to be defeated, and this lead to another change in mechanics...
By enabling the player to target and blow up objects we could have larger and more aggressive enemies. But how do you get bombs? Where do you store information about the number of bombs you have? How do you convey this in the game? As a design rule, we like to think about the space of the experience as conveying everything you need to be able to play the game. Menus, floating text, heads up displays... if they are not a core part of the design of the experience they can feel tacked on and distracting. So we looked to our snakey protagonist itself. They could carry the number of bombs as a swirling geometric indicator around the head. This felt natural, just like the tail filling up when you grabbed packets. It allowed us to give an extra visual note to the success of collecting packets and it opened up another door as well.
Controlling the Challenge
As your skill improves, you naturally want a better challenge. Conventionally, this is handled with the easy, moderate and hard levels of game play. But, what if the level of difficulty can be managed in game, and you can change it as you play? We quickly gravitated toward this idea and added the use of a bank. Available on completion of a stage, you can deposit your extra bombs in the bank. The more bombs in the bank, the higher your bonuses…but….the harder it is to defeat the bosses. Now, this was satisfying. You control the difficulty of your challenge in game and you can change it fluidly as the game progresses.
There was one final UI element we just could not escape - scoring. The score could not distract from the main gameplay. The snake, packets and enemies needed to be the consistently moving and changing parts of the game. Add anything else and you split focus and the player can’t follow the game as well. A single point in the world for score would mean you had to make a choice - check your score, or avoid enemies and collect packets. So we made the relatively simple decision to surround you with the score. Placing it at the primary sextants of the sphere and working it’s design till it felt rooted in the overall aesthetic of the world.
In developing Virush, we found that frequent iteration allowed us to quickly try new design ideas for a new mobile VR platform. Knowing what worked and what didn’t, right away, was essential for making smart progress. Our goal for this project was to explore the interactive possibilities of the Google Daydream controller, and make a fun, accessible and energetic game using the best of them.
We think that we achieved this, and we can’t wait for you to give it a try.