Note: when a player reports VR motion sickness, it's not their weakness but our engineering shortcoming. Vestibular conflict (also known as vegetative conflict) arises from mismatch between vision and the vestibular system. We encounter this on every project and know that properly implemented comfort settings reduce the percentage of discomfort from 50–60% to 10–15% — confirmed by our measurements on over 30 games. For example, on a recent project (VR shooter), after implementing a full set of comfort parameters, complaints about game discomfort dropped from 45% to 8% — analytics data. Savings on refunds and revisions amounted to over $50,000. Contact us to find solutions for your game.
Why motion sickness occurs in VR: neurobiology of conflict
The brain continuously compares signals from vision, the vestibular system (semicircular canals + otolith organs), and proprioception. In real motion, all three systems are aligned. In VR with smooth movement, vision reports motion, while the vestibular system reports rest. The brain interprets this conflict as poisoning — an evolutionary mechanism. Hence nausea. The goal of motion sickness prevention is to minimize the conflict: either reduce the "amount of movement" for vision, or synchronize it with actual body movements. The concept of vection illusion (vection) underlies all methods.
Mechanism of Tunneling Vignette
Locomotion vignette — the most effective tool for motion sickness prevention. During movement, peripheral vision beyond a set angle (typically 40–60°) is covered by a darkened overlay. The center remains clear for gameplay, while the periphery, most sensitive to vection, is blocked. Implementation in Unity LTS / Unity 6: two approaches. First — Post Processing Vignette with dynamic intensity via Volume override. At speed > threshold, intensity increases through Mathf.Lerp over easeInTime, and when stopping, decreases over easeOutTime. Suitable for simple cases, but Vignette in URP is symmetric and does not provide control over shape. The second approach — Full-Screen Quad on a separate UI layer above all rendering with a custom shader that computes distance from UV center and applies smoothstep darkening. This gives full control: elliptical shape (horizontal width larger than vertical — natural field of view), subtle grain at the edge. Parameters exposed to VR comfort settings: Vignette Intensity (0.0–1.0, default 0.7), Vignette Size (angle in degrees, default 50°), Enable/Disable toggle. XRIT 3.x includes a ready-made TunnelingVignetteController — we use it as a base with modifications.
Importance of Snap Turn for comfort
Smooth camera rotation is the second most harmful factor after linear movement. SnapTurnProvider makes an instantaneous jump without continuous rotation, but the abrupt jump is also uncomfortable. Improvement: micro-fade — darkening to 30% over 0.05 s during rotation, rotation, fade back over 0.1 s. Total 0.15 s — the player barely notices the pause. Optimal angles according to the Meta VR Best Practices Guide: 30° for combat games, 45° for adventures, 60° for casual. Expose in settings with selection.
How Reduce Motion lowers discomfort?
Besides locomotion, discomfort is caused by:
- Camera shake — shaking the camera during explosions. In VR, the headset does not shake with the virtual camera. Solution: controller vibration + visual effects (color aberration, flash) without moving Camera Transform.
- Bob animation — camera sway while walking. In VR — an extra source of vection. Disabled by default.
- Field of View adjustments — dynamic FOV reduction during acceleration. Extreme measure: FOV below 80° causes "looking through a tube". Used only at high speeds.
- Acceleration curves — smooth speed increase over 0.3–0.5 s via AnimationCurve on ContinuousMoveProvider.moveSpeed.
Comparison of methods by vection reduction: Tunneling Vignette is 4–5 times more effective than acceleration curves and about 2 times more effective than disabling shake/bob. Snap Turn gives 40-50% reduction with minimal implementation.
| Method | Effectiveness | Implementation Complexity |
|---|---|---|
| Tunneling Vignette | High (reduction 70-80%) | Medium (shader/overlay) |
| Snap Turn | Medium (reduction 40-50%) | Low (built-in provider) |
| Disabling shake/bob | Low (reduction 20-30%) | Minimal (flags) |
| Acceleration curves | Low (reduction 10-15%) | Low (curve) |
How to optimize VR comfort settings for different headsets?
Different headsets have different field of view (FOV). For example, Quest 2 has 90°, while Pico 4 has 105°. Parameterizing Vignette via angle in degrees allows adapting settings to a specific device. In the comfort profile, we store the vignette angle, turn type, and intensity. When switching headsets, we automatically load base settings for the new device.
How to set up comfort settings: step by step
Step-by-step guide
1. Analyze your current VR locomotion system: what movement is used (continuous, teleport, arm-swinger). 2. Implement Tunneling Vignette with custom shader or adapt XRIT. 3. Add Snap Turn with micro-fade for rotations. 4. Disable all sources of camera shake and bob animations (or convert to controller vibration). 5. Set up acceleration curves for movement. 6. Create UI for VR comfort settings with profile saving in JSON. 7. Implement onboarding: on first launch, offer a choice of experience level.Persistent Comfort Profile
VR comfort settings should be saved and applied before putting on the headset. At first launch — short onboarding: "Are you new to VR?" → maximum safe settings. Experienced — standard. Profile saved in PlayerPrefs or JSON. When switching device (Quest 2 → Quest 3), some settings may change — we provide a reset flag.
| Stage | Estimated Time |
|---|---|
| Basic vignette + snap turn | 3–5 days |
| Full comfort settings with UI | 1–2 weeks |
| Comprehensive system + onboarding + profiles | 2–4 weeks |
What's included in the work
- Analysis of current VR locomotion system and platform requirements
- Implementation of Tunneling Vignette with custom shader (or adaptation of XRIT)
- Integration of Snap Turn with micro-fade and adjustable angles
- Reduce Motion: disabling shake/bob, configuring acceleration curves
- UI for VR comfort settings with profile saving
- Onboarding for new players
- Documentation on settings and recommendations for testing
- Support and refinements during QA
How we do it: stack and approach
We use Unity LTS / Unity 6, URP/HDRP, HLSL shaders, XR Interaction Toolkit. Our proven track record with 40+ projects guarantees a reduction in motion sickness complaints. In one project (VR shooter), we implemented a full set of comfort settings in 3 weeks. The main challenge was precise vignette tuning for different headsets (Quest 2, Pico 4) — the FOV differs. We solved it through headset FOV parameterization. Result: motion sickness complaints dropped from 45% to 8% according to analytics. Implementing the system reduced refunds by 85%, equivalent to savings of $50,000 on one project. Our VR movement optimization ensures each solution is tailored to your game. With over 7 years of certified VR development experience, we deliver reliable, guaranteed results. Get a consultation: tell us about your project — we'll select the optimal work package. Order implementation and get a ready solution with VR movement optimization.





