Some times ago I made a quite successful post about how to experience virtual reality reducing your simulation sickness. After that, I also published a deeper insight on simulation sickness where I described how this issue depends on age, sex and race of the person experiencing virtual reality. People have asked me to make another kind of post: if you are a developer and don’t want to give motion sickness to your users… what can you do? So, here you are, with some advices on how to make your users puke less.
First of all, absolutely, in any case, don’t make the camera move without an explicit action of the user. Please, don’t. I know that making some cinematic sequences with camera moving on the play area is very cool, but it’s also very nausea inducing… so, it’s not a good idea. The reason is the same that I described in my previous articles (read them if you want to understand better what motion sickness is!): your body stays still, but your eyes see movement; the brain thinks that this sensorial mismatch is due to some kind of poison and so trigger its defenses, that are nausea and stuff (come on brain, what awful defenses you have! 🙂 ). This is a very basic concept, but I continue seeing lots of demos with automatic camera movements. Camera MUST move only under consent of the user.
Another obvious advice, is not to make the head wobble during player walking. You know, in FPS games, while you walk, you see your head wobbling, and this makes the game more real. If you do the same in VR, your players will have so much nausea and dizziness that they won’t play your game for more than 20 seconds.
About the environment of the game… less confusion is better to avoid stress of the user: a relaxing environment is always better to reduce nausea induction. And avoid repetitive patterns: repetitive patterns give confusion to the brain, especially if you use some continuous movement mechanics, so if you can, avoid them. For example, the checkered floor of Tuscany is not the best option if you want to reduce simulation sickness (in fact some of our colleagues suffered because of it). We noticed that this is not a mandatory constraint, but it is something that is better doing, to give more comfort to your user.
The game performance should be adequate to virtual reality: you have to guarantee at least 60PFS, or the brain will start trigger its defense mechanism. If you are on a desktop PC, having 90FPS will be the optimum. I can guarantee you that keeping a frame rate so high is not trivial at all, especially on mobile devices. Frame rate on apps that I develop on GearVR easily drops to 30-40FPS, so I have to optimize everything. I should write an article specificly about this issue, but just to give you some hints, you should do things like:
- Keep the polygon number in the scene low (max 100.000)
- use computational-light (non heavy) shaders (e.g. avoid transparent shaders if you can)
- keep the number of materials in the scene low
- use texture atlas
- reduce the number of lights
- lower anti-aliasing level
- remove shadows
- use pre-computed lighting
Usually, when I make a game in Unity for virtual reality, I make the scene for PC and then when it works, I create a new, lighter scene, for mobile… with the same behaviours, but with less details and with simpler materials. And sometimes I’ve lost many hours in trying to make it work at 60FPS on a GearVR…and on Cardboard it is even worse.
Of course, if your game is more engaging, you guarantee a deeper presence and so the brain will concentrate on the story of the game and will care less about making you puke. It may seem something obvious to say, but… try to make your game really entertaining and catchy. I’ve noticed this on myself: if there is an automatic camera movement in a boring scene, I feel really bad; if the same happens in a super-interesting environment, I feel bad… but less bad.
I’ve read about a super-strange idea on how to reduce motion sickness long time ago: make your players see their nose! Some people made a research making testers live a rollercoaster virtual reality experience (super nausea-inducing), but half of them lived it with a simple 3d model of their nose put exactly between their virtual eyes. People with the virtual nose suffered less from motion sickness… don’t know why (maybe the nose give a fixed reference point to the brain), but it works. I’ve never seen a game exploiting this research (maybe because it would be weird)… so you can be the first one to experiment this tactic! (UPDATE: thanks to epic redditor bionicle877 now I know that this idea has been patented… WTF virtual reality…)
About the interface: make a 3D HUD, create a diagetic interface… don’t do classical 2D HUDs attached to the user’s field of view like in PC first-person-shooters. 2D HUDs reduce the presence, furthermore require the eyes of the user to continuously change the focus to look at the 2D interface and then to look again at the 3D environment of the game. This continuous focus change is not good if you don’t want the eyes of your users to explode, so please use only GUI positioned in 3D on your 3D world. Or don’t use a GUI at all… do you remember the burrito trick to exit from Job Simulator?
And here we come to the super-mega-hyper problem of the locomotion. How to make your player move in virtual reality? How to make him cover long-distances? As I’ve already explained, if you make your players walk in a standard way (e.g. WASD keys to move like in a FPS), you will trigger motion sickness. So, how to make him move without making him vomit?
- Use a locomotion mechanim that doesn’t trigger sickness, like teleportation. If your player can move only teleporting, he can’t suffer at all from any sickness… that’s why this is the recommended locomotion system on Vive. But, this is very un-natural and breaks the presence… that’s why lots of Vive users (including me) hate it so much;
- If you want to make player movement in a classical way, with user walking with gamepad or such (i.e. classical movement mechanics), please deactivate accelerations in your player controller. I’ve written on Immotionar blog a long article on how to do it for Unity on Oculus and I recommend you to read it. If you want a tl;dr: take your player controller and remove all accelerations from it: it must have only two possible states: still or moving at a fixed velocity. No intermediate velocities. If you’ll try it, you’ll discover that the results of this small tricks are really impressive: motion sickness is reduced a lot. Besides that, you should avoid continuous rotation of user visuals… if user wants rotate his head with the gamepad, he should do it in a discrete way, rotating his head of a fixed angle amount for every keypress.
If you allow continuous rotation, as happens with mouse in classical first person shooters, this can make your player feel bad. Besides that, discourage lateral or backwards movements of the player, because these can cause dizziness. Another advice: when your player moves, reduce his field of view (FOV): this means shrinking the area of the screen that your player can see with his eyes and make black all the surrounding area. It’s like if your player is looking through binoculars. This trick has been used in lots of games (including the new Google Earth VR) and works because FOV is directly correlated with virtual sickness and because the fixed black zone gives some kind of fixed reference frame to our brain. Ah, if you can, avoid stairs or this kind of stuff, because since the player will see himself going up while he’s actually always on the floor, he could feel weird sensations.
- If you have control on the way the user can move, encourage solutions where the user can actually walk: hardware like the Virtuix Omni (where you can walk in the real world to walk in the virtual world); or software solutions that allow the player to walk in place to walk inside the game, like the one of this Unity plugin or our ImmotionRoom solution, allow the player to walk both in the real and in the virtual world, so removing completely the motion sickness sensation;
- Last but not the least, please leave the player the freedom to choose how he wants to walk: lots of people complain because they don’t suffer from motion sickness and so don’t need that ugly teleportation mechanim, but are forced to use it. Let your game allow at least 2 movement mechanics and let the user to choose the one that makes him more comfortable. This is veeery important.
Last point is more tricky: choose a game genre that don’t induce motion sickess. We could talk about this point for years and yes, there is no accepted answer. For example, if you want to make a game like a racing game, or a game where you fall off a skyscraper, or a roller-coaster, you will surely induce motion sickness to your users. Yes, of course more people will get VR legs and so will be less sensitive to this issue, but you’re more prone to create bad sensations to your users, especially VR novices ones. From another point of view, sincerely speaking, these are super-cool experiences: virtual rollercoaster are really entertaining (I miss UE4 rollercoasters so much) and we all love living them. So the big questions arises: doing them or not doing them? There is no accepted answer… mine is: do them, but make a warning for your users that they could suffer from motion sickness.
And that’s all, folks. Hope these advice will help you in making your next VR game… I’ve never seen someone puking after using VR, but I’ve seen lots of people stay bad, so please shape your game so not to induce motion sickness!
If you have other suggestions to add, please use the comment section… and if you liked the article, like and share… and come visiting my blog once in a while! Cheers!