I am able to experience motion sickness within VR. As a developer, this is good because it allows me to isolate and identify its causes. I have developed a working model on precisely what causes it, why, and have developed some tricks and techniques to reduce its effects. I’ll share with you a few of the things I’ve learned so that we can all build better VR experiences for our players.
My hardware: Oculus Rift DK2, NVidia GTX 560, Intel i7 (8 cores)
Who gets motion sick?
After testing my VR game on over 100 people, I’ve concluded that some people are more susceptible to motion sickness than others. Some people experience it immediately and get nauteous while others never experience any sickness it at all. I think the nausea susceptibility falls along a bell curve. I’d place myself in the center, such that 50% of people are more susceptible to motion sickness than me and 50% are less susceptible. My rule of thumb is that if I experience motion sickness, then something is wrong and the source of trouble needs to be identified and fixed.
**Where does motion sickness come from? **
My working theory is that it is due to a disconnect between what the eye sees and where the brain thinks it is. When the two don’t match, we get sick. Our brains are inherently predictive machines. They’re very good at predicting what comes next. When it comes to spatial movement in the real world, our eyes look at our surroundings and measure how fast stuff is moving relative to us. When we walk or run, our speeds are relatively constant, with very quick accellerations and decellerations. If we jump from a high height, our accelleration is brief. Then we hit the ground and we decellerate very quickly. If we land on our feet, our legs will bend at the knees and offer us a cushioned decelleration. Our brain is able to handle that without getting motion sick.
When we move in the real world, our brain is predicting where we will be fractions of a second before we’re actually there physically. If it helps, think of your brain as being spatially ahead of your physical position by a few frames. You’re constantly ghosting. As long as your physical position matches the predicted position, everything is merry and no sickness. In the real world, you can actually get motion sickness. When you are out at sea for a while and you haven’t adjusted to it mentally, you can get sea sick (particularly if you can’t see the horizon). This is because your body is experiencing motion which your brain can’t predict very well. When you ride in a car and it turns, accelleates, brakes, etc. and you aren’t looking out the windows to orient yourself, your brain also can’t predict where it will be next. The sense of motion is irregular and unpredictable. Your brain doesn’t know where to ghost your future position at.
When our brain’s predicted spatial position doesn’t match with our visually reported position, our brain has to perform some sort of ugly ‘linear interpolation’ over time between its incorrect predicted position and the visually reported position. If you smash into an invisible brick wall, your brain will position the ‘ghost’ of your body into the wall at the instant of impact. Then, the eyes report a full stop and the brain has to ‘rewind’ its spatial position to match the visually reported position. This rewinding step is where people get motion sick. If this happens for a brief instant, it’s not noticeable and the effect of nausea is next to non-existent. If it happens continuously, then our brains get very spatially confused and we get motion sick.
This explains why accelleration and decelleration with VR causes motion sickness. It also explains why bad frame rates can cause it as well.
I’m sure most of you have played VR games which cause sickness by now. There are two which stick out in my mind particularly. The first is a roller coaster simulation built in UE4. It was awful for me. I got sick the first time through it, and so I had to do it again to see if I could figure out exactly what caused me to get sick. Bad idea. I got sicker. The roller coaster has a lot of turns and accellerating and decellerating forces. Even though I can see the tracks and where I’m going to go next, this confuses my brain. It’s barely noticeable, but my visually reported position is slightly off from my spatially predicted position, so my brain is constantly performing mini corrections so that the positions match. Any time a correction needs to be made, sickness accrues.
The second game was a mech game found on Oculus Share. The part which causes great sickness was when the mech would be able to use thrusters to ‘jump’ into the air. While in flight, you could change your flight path. My brain got very spatially confused and I could feel the inside of my head spinning around. That’s not supposed to happen.
When it comes to frame rate, your eyes are constantly looking out into the virtual world and observing the scene. Then, your brain is trying to validate the observed scene against its predicted spatial positioning. As we know, if the two don’t match, we get sick. When frame rate drops, the time between frames increases. This frame gap has the potential to create spatial discontinuities (gaps), which our brain has to then fill in with mini adjustments. If we are not moving at all (with both orientation and position), then the drop in framerate has no effect. As soon as we move, it becomes noticeable.
How do you design games around this?
-
Generally, you want to avoid accelleration and decelleration. However, I would tentatively say that you can use accelleration and decelleration within a game if you are very careful with its use. Remember, the brain is constantly ghosting its position a few frames before it gets there. So long as the spatially predicted position exactly matches the visually reported position, you’re fine. This means gradual accellerations with a constant rate. Don’t be strapping player faces to a wildly flying rocket.
-
Avoid falling and flying. Treat your virtual game world like a real life world. Design your buildings and environments as if OSHA was going to come in and do a workplace safety inspection on it. Can players fall off of a ledge? Put a hand rail on it! Can players climb up to a roof and fall off? What kinds of physical safety precautions would people take in real life to avoid injury and litigious lawyers? Put those into your game! In my game, we’ve designed a wizard tower which has a curving flight of stairs. In a normal first person game, we’d just jump right off the top stair all the way to the ground floor. In a VR game, this can cause sickness. So, we put railings on the stairs. You have to walk down the flight of curved stairs.
-
Be on the look out for drops in framerate. Look at translucent objects and material complexity as the main culprits. Its better to have more polygons than more complex shaders / materials.
-
Don’t take camera control away from the player. If you must, do it for a very brief period of time. In our wizard game, the only time we take away camera control is when the wizard gets killed by zombies. The wizard falls to the ground, so the camera must follow the wizards head. This only lasts for about 2 seconds. Afterwards, the wizard gradually loses consciousness and the screen fades to black.
Bonus:
5. VR UI - You may still use UMG / Slate for VR, but you have to be very limited in its usage. You’re essentially blasting an image into someones retina, so be very careful. UMG is still a good way to apply general visual effects, such as fades, directional damage indicators, and maybe a cross hair. Anything else should be designed into the environment as an interactable object / environmental interface.