simulator sickness

Preventing Simulator Sickness in VR

9654 VIEWS

If you’ve ever been in a bad virtual reality experience, you know it can make you sick. If you’re a developer, this can mean a ton of bad reviews for your app.

Fortunately, there are solutions. Here are a few ways to prevent simulator sickness.

Simulator sickness occurs when what users see in virtual experiences doesn’t match what is happening in reality. For example, a camera that may be rotating automatically can make some people feel off balance. The best thing users can do in that scenario is to take themselves out of the experience. (Probably not what you want if you want to keep your audience and improve your ratings.)

1. Move at a constant speed.

We don’t often notice we’re moving after the initial acceleration in a moving vehicle. The same holds true in VR. When we speed up or slow down in VR, it is very noticeable. If you’re going to have users moving, keeping them moving at a consistent speed will lessen the likelihood that they’ll be focused solely on the movement.

2. Only move forward.

Occasionally, people will get sick when they are being moved in a direction they aren’t looking in. One way to fix this is to ensure that users in your VR experience are only moving forward. One strategy for achieving this could be to wait until the user is looking in the direction they are going to go next before moving them. You could guide their eye with an arrow, and then move them when they are looking in that direction.

public GameObject player;
	private bool isMoving;
private float speed = 5f;

	// Use this for initialization
	void Start () {
		isMoving = false;
	}
	
	// Update is called once per frame
	void Update () {
		if (GvrViewer.Instance.VRModeEnabled && GvrViewer.Instance.Triggered) {
			isMoving = !isMoving;
		}
		if (isMoving) {
			player.transform.Translate(Vector3.forward * speed * Time.deltaTime, Camera.main.transform);
		}
	}

http://gph.is/2qY8bkZ

3. Let users control when they move.

Letting users control when they move is the best thing we can do in our VR experiences. This puts the user in control of when they move. The movement will be expected, and will be less likely to make them sick. To achieve this, there’s a couple of different methods we could implement. We could use a movement strategy wherein users click on the ground and they move to that location. Or perhaps we can use way points. If the user has to look at a waypoint to click it, we are ensuring that they are facing forward already.

For example, here’s an onClick method that gets triggered when users click on an object. It uses the free iTween asset available here: https://www.assetstore.unity3d.com/en/#!/content/84.

public void onClick() {
		// On click, move player to the targeted waypoint using iTween.
		iTween.MoveTo(player, iTween.Hash(
			"x", gameObject.transform.position.x,
			"z", gameObject.transform.position.z,
			"time", speed
		));	
	}

4.Stay stationary for as long as possible.

If too much movement makes users sick, then staying still for as long as possible in a VR experience is a good way to solve the simulator sickness problem. Put users in a location, and let the world (or enemies, etc.) go to them.

5.Keep movement time short.

“Short” is always rough to pinpoint, but keeping movement time short lessens the chance of sickness. However, moving too quickly can also cause simulator sickness. This is true especially for me. While working on one of my projects for Udacity’s VR development program, I had my husband test a movement mechanic for me. He is prone to motion sickness, so he’s a good person to get feedback from. Moving a short distance in two seconds was too fast for me, but just fine for him.

6. Find actual users to test your movement mechanics.

This brings me to my last point, which arguably might be the most important. User tests can provide valuable insights and prevent you from making too many assumptions. Find someone to who can test for you. Get early feedback on the movement and the experience in general. If you get feedback early in the development phase, you have time to adjust and adapt your app to ensure it doesn’t make any of your users sick. Your app may be an amazing experience, but making users sick will likely mean you’ll lose users very quickly.


Kristin is a freelance developer living in the San Francisco Bay Area. Her development background includes a mix of LAMP stack web development, Java and Android development, as well as Unity C# development. She is currently working on the Virtual Reality Developer Nanodegree from Udacity.


Discussion

Click on a tab to select how you'd like to leave your comment

Leave a Comment

Your email address will not be published. Required fields are marked *

Menu
Skip to toolbar