Розробка алгоритмів запобігання укачуванню (Comfort Settings) в іграх
Motion sickness у VR — інженерна проблема, не користувацька. Коли гравець говорить «меня укачує», це не значить «у нього слабкий вестибулярний апарат». Це значить, що система не реалізувала достатньо механізмів зниження vection. Правильно реалізовані Comfort Settings знижують відсоток гравців, які відчувають дискомфорт, з 50–60% до 10–15% — та це вимірювано.
Нейробіологія конфлікту: звідки береться укачування
Мозг безперервно зіставляє сигнали від трьох систем: зрення, вестибулярний апарат (напівкруглі канали + отолітові органи), пропріоцепція (відчуття положення тіла). У реальному русі всі три системи узгоджені. У VR з плавним рухом: зрення повідомляє про рух, вестибулярний апарат — про покій. Мозок інтерпретує цей конфлікт як отруєння — еволюційний механізм, який історично означав саме це. Звідси тошнота.
Задача Comfort Settings — мінімізувати конфлікт: либо зменшити «кількість руху», який сприймає зрення, либо синхронізувати його з реальними рухами тіла.
Tunneling Vignette: основна техніка
Locomotion vignette (tunneling effect) — найефективніший інструмент. При русі периферійне зрення за межами визначеного кута (зазвичай 40–60° від центра) закривається затемненим overlay. Центральне зрення продовжує сприймати рух — це необхідно для геймплея. Периферійне — ні, та саме периферійне зрення найчутливіше до vection.
У Unity: два підходи. Перший — Post Processing Vignette з динамічною інтенсивністю через Volume override. При швидкості > threshold інтенсивність нарастає через Mathf.Lerp за easeInTime, при зупинці — убуває за easeOutTime. Підходить для простих випадків, але Vignette у URP симетричний та не дає контроль над формою затемнення.
Другий підхід — Full-Screen Quad на окремому UI-шарі поверх всього рендеру з кастомним шейдером, який вичислює distance від UV-центра та застосовує smoothstep затемнення. Це дає повний контроль: можна зробити форму не круглою, а еліптичною (горизонтальна ширина більше вертикальної — відповідає природному полю зрення), можна додати subtle grain на кромку.
Параметри, які виносимо у Comfort Settings:
-
Vignette Intensity(0.0–1.0, default 0.7) -
Vignette Size(кут у градусах, default 50°) -
Enable/Disabletoggle
XRIT 3.x включає готовий TunnelingVignetteController компонент — використовуємо його як базу з модифікаціями.
Snap Turn та фіксований кут
Плавний поворот камери — другий по шкодливості після лінійного руху. SnapTurnProvider робить миттєвий поворот без continuous rotation. Але «миттєвий» теж може бути дискомфортним — різкий стрибок картинки без якої-либо анімації.
Покращення: micro-fade на snap turn. При повороті — миттєве затемнення до 30% прозорості за 0.05 с, поворот, потім fade back за 0.1 с. Суммарно 0.15 с, гравець майже не замічає паузи, але «прибуток» картинки зникає.
Оптимальні кути snap turn за даними досліджень Meta: 30° для боєвих ігор (потрібна точність направлення), 45° для пригод, 60° для казуальних. Виносимо у настройки з вибором з цих значень.
Reduce Motion: комплексна настройка
Крім локомоції, дискомфорт викликають:
Camera shake — тряска камери при вибухах, попаданнях. У VR це особливо погано: фізичний шлем не тригають разом з віртуальною камерою. Рішення: замість тряски камери — контролерна вібрація (haptic) + візуальні ефекти (colour aberration, brief flash) без руху Camera Transform.
Bob анімація — покачування камери при ході. Додає реалізму у flatscreen-іграх, у VR — лишній джерело vection. За замовчуванням — відключено. Хай включають любителі.
Field of View adjustments — деякі VR-гри динамічно сужують FOV при прискоренні. Крайня мера: при FOV нижче 80° виникає відчуття «погляд через трубу», що саме по собі неприємно. Використовуємо тільки при дуже високих швидкостях руху.
Acceleration curves — лінійне прискорення від 0 до max velocity за 0.3–0.5 с замість миттєвого старту. Мозок краще сприймає плавне нарощування швидкості, ніж миттєвий старт. Реалізується через AnimationCurve на ContinuousMoveProvider.moveSpeed.
Persistent Comfort Profile
Comfort Settings повинні зберігатися та застосовуватися до того, як гравець надіває шлем. Ідеально — настройки задаються на початковому екрані при першому запуску через short onboarding: «Вы новичок у VR?» → автоматично виставляються максимально безпечні настройки. Досвідченим гравцям — стандартні.
Профіль зберігається у PlayerPrefs або у JSON save-файл. При зміні пристрою (Quest 2 → Quest 3) — частина настроєк може меняться через різний FOV гарнітури; передбачаємо флаг «скинути при зміні headset model».
| Задача | Ориентировочні терміни |
|---|---|
| Базова vignette + snap turn | 3–5 днів |
| Повні Comfort Settings з UI | 1–2 тижня |
| Комплексна система + onboarding + профілі | 2–4 тижня |
Вартість розраховується після аналізу існуючої locomotion системи та платформенних вимог.





