Part 1: Be Careful With Me
Dear game designer,
You’ve been working with a flat rectangle for years now. It might be high contrast and have a decent dot pitch, but it’s got a pitiful field of view and it’s all the way over there! I’m not about to tell you to forget everything you know about games design, as you make the move to designing games in virtual reality – it’s all still pertinent. You do have some new things to learn though.
Just as you design different for phones than windowed games on PCs or full screen console games, so you need to for Virtual Reality games. This one’s a fairly large jump.
This, first in a series of posts, contains lessons learnt through our own error. We’ve been making games and telling stories on screens for years, but we’ve never had to change they way we think about conveying information so quickly as right now – as we transition to building games for VR.
Oculus have documentation on best practises, and it’s a good read (if long), but doesn’t convey the weight of certain requirements. We’re compiling this list as we find and solve problems, so you don’t have to. These all result from issues we’ve found while building games for VR, which would never have been a problem on a 2D screen.
Part 1 deals with comfort. Without good comfort, you limit the player to a maximum of around 20 minutes of play time. That’s not long enough to retain someone, so your game will have difficulty being anything beyond a novelty unless you can ensure players are happy being in your world.
Don’t Tire Me
Position the world for comfort. The player’s natural position should be looking at the horizon – within about 8 degrees of horizontal. Making them look up can be particularly tiring for them.
Under certain circumstances, VR games can work well looking down at a field of action -looking down can actually relieve the pressure of having a headset rest on the user’s nose – but you should give the player plenty of occasion to look back up to the horizontal.
If you are designing a game which requires a bird’s-eye view for the player, consider placing the action far forward, so the user only needs to look down slightly. Alternatively, rotate the world so that the area of play appears to be on the wall in front of the player, and so gravity falls away forwards. A 90 degree rotation makes the new horizon line clear.
Look After My Eyes
Begin games by allowing people to get their eyes in, with nothing close to the screen.
It can take a few seconds to get the 3D effect working on a VR headset – particularly on cheaper devices or when they’re running of a small phone screen. If you’re an end user, you can try looking at something in the distance to get the effect, then back at the foreground action. If you’re a game designer, try to build this into the design.
The key is to avoid foreground action. You can’t change the focal distance – that’s down to the hardware – but you will affect the eyes’ divergence. The closer you get to ocular infinity, the more relaxed the user will be. A sky or landscape is best, but even the back wall of a large room is normally fine – aim for the centre 15 degree cone having nothing appearing to be nearer to the user than around 4 metres.
Don’t Give Me a Headache
Do not make the scene too busy. We do not have the resolution, framerate or field of view to allow the sort of high contrast and high motion scenes in VR people can stand in real life.
We can track an object clearing a 90 degree VR FOV in around 0.2 seconds, as long as it follows a predictable path. We’re pretty fast, but that’s the limit and it’s not relaxing. It’s also not possible to track something that’s moving randomly that fast. Our reaction time is similar (a little less if there’s an audio cue, a little more if not), so consider building that time in on every sharp change of direction. That’s a good start point, and decent figures to base level design on, but it doesn’t quite get us to something relaxing.
We’ll also assume we have a slightly slow reaction time of a quarter of a second. Let’s consider that the cone of comfort is 15 degrees, that people are comfortable moving their eyes within a cone of 30 degrees for extended periods without tiring, and double again to a 60 degree cone for limited time. Given most VR headsets offer a FOV of a little more than 90 degrees, we can estimate the user’s reaction to objects taking different times to move entirely across the display.
Don’t Make Me Nauseous
Make sure you transition between game states in a way which doesn’t make the player dizzy. No hard teleports – ie, no single frame translations or rotations. That goes for everything in the scene, not just the player – in fact, it’s more important for other objects in the scene. Sudden movements are seen like flashing lights to the user. Flashing lights are tiring.
Sometimes you have to teleport the user. It’s unavoidable. It’s good to design the game so users can move from one place to another, but you will find times where that just gets in the way if the game mechanic, of the story, or just isn’t technically feasible. If you’re in that position, try to stick to these rules
- The player should expect the change. Selecting to begin a game, or go to another menu, or having just completed a level will achieve this.
- The transition should be slow. A fade to black then back up seems to be the most comfortable. But a crossfade or other tween could be made to work well if used with point 3.
- Put the player somewhere similar. At the very least, that means they’re the same way up! The further you push this idea though, the less you need to lean on point 2. If you’re careful with the scene, you could approach a match cut.
For objects in the scene, it’s really a question of acceleration. Make everything feel heavy. I’m going to assume you’re building your game in something that comes with 3D physics, so try not to circumvent it.
If the player is standing (ie, needs to turn around freely), not holding a joypad, looking up repeatedly or for large periods of time, and/or there’s a requirement for vertical movement in the game, they are at a higher risk of nausea.
Let Me Be Free!
Try not to restrict the player’s rotation. It feels very freeing at first, to allow the user to look anywhere in a scene by matching helmet direction to game view. In some games though, particularly space or flying games, this makes the player feel as though their progress in the game is limited by real world gravity. It’s a disappointing limitation, and and goes against a rule of games design in general – not to make a game difficult with its control, but with its content.
It’s difficult for a human to look straight up for a prolonged period or turn around quickly, because we’re not owls. Be prepared to re-orient to the world (or turn the spacecraft) while the player is looking away from straight forwards. It’s important this be done relative to the player’s gaze from centre, rather than triggered at a threshold, if you don’t want to create something that’s difficult to control and dizzying.
Aim for a dead zone that creates a 15 degree cone straight forwards. Between there and the limits of a 60 degree cone, linearly increase the speed the player rotates. Beyond that cone, cap the rotation speed to prevent suddenly spinning the player at points where they might not have best control of their balance. The actual speed you rotate the player will vary greatly between games, and gamer ability, and you may need to tweak figures given above.