tags: [vr-ar]
Comfort QA testing in VR games
Motion sickness in VR is not subjective feeling some have, some don't. It's physiological response to specific movement, rendering and interaction patterns. Comfort QA is systematic identification and elimination of these patterns before release.
Meta requires compliance with Comfort guidelines for Quest Store listing. Without passing Comfort QA app gets "Intense" rating and limited audience, or gets rejected.
Vestibular conflict: what causes it
Root cause of VR sickness — mismatch between what eyes see and what vestibular system feels. If in game camera moves but user physically stands still — conflict. Not all users respond same way, but design for sensitive ones.
Most frequent triggers:
Acceleration/deceleration. Smooth constant-speed movement tolerated much better than movement with acceleration and braking. Teleportation (instant transition without intermediate movement) is standard alternative for locomotion-sensitive users.
Horizon roll. When camera tilts on Z axis (roll) without corresponding physical head tilt — strong trigger. Plane bank in flight sim: either limit roll to 15–20°, or give user "stabilized horizon" option.
Field of View during movement. Dynamic FOV narrowing on acceleration (Vignette effect) reduces peripheral movement perception and decreases sickness. In Unity via Post Processing Volume with dynamic Vignette.intensity tied to character movement speed.
Framerate drops. Frame skip at 90 Hz is 11 ms delay. Regular drops to 60 fps at target 90 — perceived "jitter". For sensitive users 10–15 minutes at 60 fps instead of 90 enough to get discomfort.
Comfort QA testing methodology
Comfort QA is not "played and OK". It's protocol with documentation.
Physical testers. Need people with different VR sensitivity: from "iron stomach" to those sickened by any locomotion. Minimum 3–5 people, including at least one highly sensitive. Can't artificially simulate this parameter.
Simulator Sickness — Simulator Sickness Questionnaire (SSQ). Standardized 16-point questionnaire developed by NASA. Filled before and after session. Calculate normalized scores on three scales: Nausea, Oculomotor, Disorientation. For Comfort QA record SSQ after each test session — shows trend with iterations.
Session protocol. 15 minutes continuous active gameplay (active — static experience doesn't expose locomotion triggers). After — SSQ. 30 minute pause. Repeat if needed. Tester with discomfort stops immediately — continuation worsens state, doesn't give data.
Technical Comfort QA checks
Besides subjective testing — automatic technical checks:
Latency to photons. Motion to photon latency below 20 ms. Measured via OVR Metrics Tool (mode Motion-to-Photon Latency). Above 20 ms — visible picture lag behind head movement, direct discomfort trigger.
Frame time consistency. Not just average fps, but frame time standard deviation. Unstable 90 fps with peaks to 30 ms worse than stable 72 fps. Frame time measured via OVR Metrics Tool recording mode — look at histogram, not average.
Head movement tracking fidelity. Check that Camera.main.transform precisely follows HMD without software smoothing. Any Lerp or SmoothDamp on camera transform is immediate trigger. XROrigin updated via XRInputSubsystem, without additional "improvement" scripts.
Stroboscopic effects. List flashing elements against Meta 3 Hz limit. Especially relevant for particle effects and shader animations.
Comfortable vs uncomfortable patterns
| Pattern | Recommendation |
|---|---|
| Locomotion via stick | Add teleport option, vignette on movement |
| Free camera rotation | Add snap rotation (30°/45°/60° step) option |
| Camera roll > 20° | Limit or add stabilized horizon |
| Object scaling in VR hands | Avoid scale change relative to HMD |
| UI with small text | Minimum 0.5° angular character size |
Comfort QA timeline: one week (audit + basic protocol) to 3–4 weeks for full cycle with iterations. Cost calculated after project review and testing scope definition.





