For my next Unreal Engine VR scene, I wanted to create something simple. Based on my experience in the office scene I mentioned in the last post, it seemed like small environments were more likely to make me nauseous, so I decided to experiment with something more open. What could be more open than a flat plane with a skybox? Using the skills I learned in the office tutorial, I put on a tiled concrete texture from the Starter Content onto a large floor box and fired up the Oculus Rift DK2. At first, looking around wasn't too bad. The "screen door effect" was definitely very noticeable with the simple scene, but I was feeling alright. As soon as I used my Xbox controller to turn though, I immediately got smacked with a wave of simulator sickness. For me that means immediate dizziness, a headache, and my forehead starts to sweat. It was absolutely brutal, so I decided to set the device down and go for a walk.
Fighting Simulator Sickness
This is clearly not something I'm going to be able to ignore. Obviously I can make progress on level design in the Unreal Editor on a flat monitor, and I write code for a living, so 90% of the upfront work can be done without using the device at all, but actually using the device is going to require some changes.
I decided to do some experiments to set a baseline for what I could comfortably tolerate in terms of movement. I performed these the next morning when I was fresh, to avoid any after effects from the previous session. First, I stood with my head still, facing forward and only looked around with my eyes. Very tolerable. Second, I looked around about 45 degrees from center in all directions. Still tolerable. Third, I expanded my turning angle to about 90 degrees in either direction. It was around the edges of this that things started to feel a little uncomfortable, which I suspect is due to the head tracker mounted to my monitor. Once I'm turned 90 degrees from it, it can only see half of the headset, so tracking quality suffers. These may sound like small victories, but honestly it was a huge relief to me. I just spent about $800 getting set up for development between the new graphics card and the Oculus Rift DK2 and three days in I still hadn't had an experience with it that didn't make me sick. This was progress.
The biases I had about moving around in a video game were not doing me any favors. As someone who has spent countless hours playing Halo, Call of Duty, and Far Cry (to name a few), I've become well accustomed to strafing and whipping my aim around to take out enemies. This sort of movement just doesn't work for me in virtual reality.
At Least I'm Not the Only One...
I spent some time digging around and found quite a lot of literature about simulator sickness. Unfortunately it was mostly about what things made it worse and now how to avoid it completely. Here were a few slight improvements I found:
- It wasn't made clear in the documentation, but there are small dials on the left and right sides of the headset that let you adjust the eye pieces so that they're a comfortable distance from your face. I adjusted it so that the lenses weren't jammed into my eye sockets. Not really a large change in vestibular comfort, but definitely an improvement in face comfort.
- From the Oculus Best Practices Guide: "Using a virtual environment with an independent visual background has been found to significantly reduce the experience of simulator sickness compared to a virtual environment with a typically behaving background. … As soon as the player begins any locomotion or rotation in the foreground environment with a controller or keyboard, they will notice that the distant backdrop remains stationary, locked to their real-world body’s position. However, they can still look around the backdrop with head movements at any time." This sounds like weird and unnatural way to solve the problem. It may help the discomfort but it seems like it would break the immersion.
- From the Oculus Best Practices Guide: "Yet another approach modifies the way users turn in the virtual environment. Rather than smoothly rotating, pressing left or right on a controller causes the camera to immediately jump by a fixed angle (e.g., 30°) in the desired direction." This seems more promising and I may play around with these rotation jumps in the future.
Other than those things, most of the suggestions were around reducing latency and not forcing involuntary movement on the user. Apparently all of the developers making roller coasters missed that memo…
Moving Forward (Avoiding Turning)
From here forward, I'll need to be careful when testing out any content I create. I'm glad to know that I can at least stand still and look around without much discomfort, but disappointed that I won't be able to experience much action in the Rift DK2 without getting really sick. The good news is that I'm not blocked. I'm going to press on with learning Unreal Engine and creating content that can be enjoyed without a lot of rapid movement.
There are some brilliant teams people working to solve these problems over at Oculus and the many other companies and academic institutions working on VR, so I'm excited for a more comfortable future.