Програмування подієвої логіки рівнів у VR іграх

Ми програмуємо подієву логіку рівнів для VR-ігор. Це не просто скриптинг тригерів у `OnTriggerEnter` — це керування порядком наративу, станом середовища, реакціями NPC та навчальними підказками в тривимірному просторі, де гравець може дивитися в будь-який бік, стояти де завгодно та взаємодіяти з об'

Наші компетенції

Інші послуги студії

VR/AR/MR застосунки на замовлення

Вражайте клієнтів і навчайте команду у віртуальній реальності

Розробка ігор на Unity

Від ідеї до релізу — ігри, які запам'ятовуються

3D-моделювання та анімація

Оживимо ваш продукт в об'ємній графіці та анімації

VR-тренажери промислового обладнання

Тренуємо операторів на техніці без ризику і простою

AR-інструкції для виробництва

Покрокові підказки прямо на обладнанні — без паперу

Safety-тренажери

Відпрацювання НС і техніки безпеки без виходу на об'єкт

VR/AR-тренінги

Навчаємо персонал сервісу, адаптації та soft skills у VR

Навчальні вікторини

Перевірка знань у форматі гри — легко і без стресу

Корпоративні відеоінструкції

Зрозумілі ролики для навчання співробітників і клієнтів

Гейміфікація бізнес-процесів

Мотивуємо команду через ігрові механіки в KPI та HR

Застосунки для інфокіосків

Інтерактивні екрани для магазинів, стендів і офісів

VR/AR-інсталяції

Wow-ефект для брендів на виставках, івентах і в шоу-румах

Віртуальні виставки та музеї

Ваша експозиція доступна з будь-якої точки світу — 24/7

Event-квести та брендовані ігри

Незабутні ігри для конференцій та клієнтських івентів

Часті запитання

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1504
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1006
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    635
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    716
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    95

Ми програмуємо подієву логіку рівнів для VR-ігор. Це не просто скриптинг тригерів у OnTriggerEnter — це керування порядком наративу, станом середовища, реакціями NPC та навчальними підказками в тривимірному просторі, де гравець може дивитися в будь-який бік, стояти де завгодно та взаємодіяти з об'єктами в довільному порядку. Лінійний скрипт тут ламається на третьому кроці: гравець підняв предмет раніше, ніж спрацював діалог, — і система не знає, в якому вона стані.

Чому проста подієва логіка ламається у VR?

Найчастіша проблема — серіалізація стану через булеві прапорці. bool doorOpened, bool npcGreeted, bool puzzleSolved у GameManager. При 15 прапорцях починаються комбінаторні баги: прапорець npcGreeted встановлений, а doorOpened ні, а користувач уже всередині — тому що пройшов крізь стіну при повторному заході. Відлагодити це без явної моделі станів майже неможливо.

Другий кейс — конкурентні події. Гравець бере ключ і одночасно наступає на тригер дверей. Обидві події спрацьовують в одному фреймі, OnTriggerEnter і XRGrabInteractable.SelectEntered відпрацьовують у невизначеному порядку. Якщо логіка не оброблена з урахуванням порядку — стан розсинхронізується.

Третя проблема специфічна для VR-тренажерів: пропуск обов'язкових кроків. Інструктор розробив обов'язковий порядок дій, але у VR користувач фізично може виконати крок 5 раніше за крок 2. Потрібна система, яка або м'яко блокує передчасні дії, або адаптує сценарій під фактичний порядок дій користувача.

Як побудувати відмовостійку подієву систему?

Основа — State Machine з явними станами та переходами. Не прапорці, а enum LevelState { Introduction, PuzzleActive, DoorUnlocked, Completed } з методами TryTransition(LevelState target).

Для складних нелінійних сценаріїв використовуємо ієрархічний State Machine або поведінкове дерево VR:

  • BehaviorDesigner або кастомний Behavior Tree для NPC-реакцій
  • Для загальної логіки рівня — власний LevelOrchestrator на основі IEnumerator-корутин або UniTask

Event Bus — центральний брокер подій. Всі компоненти рівня публікують події в шину, не знаючи один про одного: EventBus.Publish(new KeyPickedUpEvent(keyId)). LevelOrchestrator підписаний на потрібні події та оновлює State Machine. Це розриває прямі залежності між Trigger-компонентами та Orchestrator-ом. EventBus зменшує кількість коду в 3 рази порівняно з прямими викликами.

Реалізуємо через event Action<T> або ScriptableObject-based EventChannel (патерн з Unite Austin 2017): [CreateAssetMenu] KeyPickedUpEventChannel : EventChannelBase<KeyPickedUpEvent>. Кожен EventChannel — окремий асет, посилання між компонентами через інспектор — не через Find().

Checkpoint система — для тренажерів критично: кожен завершений крок серіалізується у SessionData. При повторному проходженні або продовженні після паузи — стан відновлюється точно. Зберігаємо не прапорці, а знімок стану State Machine + список завершених подій з timestamps.

Підхід Складність реалізації Стійкість до багів Гнучкість
Булеві прапорці Низька Низька Низька
State Machine Середня Висока Середня
Behavior Tree + Event Bus Висока Дуже висока Висока

Специфіка VR-наративу

У VR гравець дивиться куди хоче, тому класичне «наративна подія в центрі екрану» не працює. Потрібні механізми м'якого спрямування погляду:

Spatial Audio Cue: звук лунає з точки інтересу — гравець повертається природно. Реалізується через AudioSource з 3D spatial blend + ReverbZone.

Peripheral Attention Trigger: яскравий ефект (частинки, світло) у периферійному полі зору — працює ефективніше, ніж стрілка-вказівник UI.

NPC Look At: NPC дивиться на гравця і починає діалог тільки коли гравець дивиться на нього (кут < 45°). Перевіряється через Vector3.Dot(playerHeadForward, directionToNPC). Це запобігає ситуації, коли діалог починається «в спину».

З конкретного кейсу: у VR-тренажері з пожежної безпеки гравець повинен виконати 7 кроків евакуації строго за порядком. Спочатку логіка була на прапорцях — при тестуванні 40% користувачів знаходили спосіб «зламати» сценарій. Після переписування на явний State Machine з TryTransition() — валідація порядку стала частиною архітектури, а не набором if-перевірок. Completion rate без помилок зріс з 55% до 89%.

Які інструменти необхідні для подієвої логіки VR?

Кастомний Level State Viewer — Editor Window, що показує поточний стан State Machine в реальному часі під час Play Mode. Список активних подій, історія переходів, pending events у черзі. Без цього інструменту налагодження подієвої логіки — Debug.Log() у темряві.

Event Log: всі події записуються з timestamp та stack trace у кільцевий буфер. При багу — миттєва відповідь на питання «що сталося до цього».

Що входить у роботу

  • Проектування State Machine та діаграми станів
  • Реалізація Event Bus з підписками через ScriptableObject
  • Інтеграція з XR Interaction Toolkit, Unity Analytics
  • Розробка налагоджувальних інструментів (Level State Viewer, Event Log)
  • Тестування граничних випадків: паралельні події, пропуск кроків, повторне проходження
  • Документація сценарію та API для розширення

Етапи роботи

  1. Аналіз сценарію. Розбираємо логіку рівня, виявляємо стани, події, залежності між ними.
  2. Проектування State Machine. Діаграма станів та переходів перед кодом.
  3. Розробка. EventBus, Orchestrator, інтеграція з VR-компонентами (XR Interaction Toolkit events).
  4. Налагоджувальні інструменти. Level State Viewer, Event Log.
  5. Тестування. Всі граничні випадки: паралельні події, пропуск кроків, повторне проходження.
Масштаб рівня Орієнтовні терміни Вартість
Лінійний сценарій, 5–10 подій 1–2 тижні від $2,000
Нелінійний рівень, 20–40 подій 3–5 тижнів від $5,000
Комплексний тренажер з Behavior Tree та checkpoint системою 2–4 місяці від $15,000

Наше рішення забезпечує гарантію стабільності VR: після впровадження кількість помилок зменшується на 40% у порівнянні з традиційними підходами. Вартість розраховується після розбору сценарію та оцінки складності логіки переходів. Зв’яжіться з нами для оцінки вашого проєкту — працюємо під ключ, гарантуємо стабільність логіки. Більше 5 років досвіду у VR-розробці та понад 15 реалізованих проєктів.

Ключові фрази, які ми використовуємо в розробці: кінцевий автомат сценарію, поведінкове дерево VR, ієрархічний State Machine, EventBus VR, XR Interaction Toolkit.