Кроссплатформенна підтримка XR-пристроїв: Quest, Pico, SteamVR

Запуск однієї VR-гри на Meta Quest 3 — задача. Запустити її ж на Pico 4, HTC Vive XR Elite та PC через SteamVR без переписування взаємодій — зовсім інша. Різниця в API контролерів, системах трекінгу рук, роздільній здатності дисплеїв та продуктивності GPU робить кроссплатформенну XR-розробку однією

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

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

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
    1505
  • 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-гри на Meta Quest 3 — задача. Запустити її ж на Pico 4, HTC Vive XR Elite та PC через SteamVR без переписування взаємодій — зовсім інша. Різниця в API контролерів, системах трекінгу рук, роздільній здатності дисплеїв та продуктивності GPU робить кроссплатформенну XR-розробку однією з найтрудомісткіших задач в мобільному геймдеві. VR кроссплатформенність — це не лише технічна задача, а й стратегічне рішення. Наш досвід — понад 10 років у XR-розробці та 30 реалізованих проектів для клієнтів з США, Європи та Азії. Ми є сертифікованими партнерами Meta та Pico. Ми допомогли десяткам студій уникнути витратного рефакторингу, тому знаємо, де ховаються найпідступніші граблі. Пропонуємо кроссплатформенну XR-розробку під ключ. Оцінимо ваш проект безкоштовно за 2 години.

Де ламається кроссплатформенність на практиці

Найболісніша точка — мапінг інпутів XR. Meta Quest використовує OVRInput з кнопками PrimaryButton, SecondaryButton, PrimaryIndexTrigger. SteamVR (OpenVR) працює через Action System з файлом actions.json. OpenXR уніфікує це через Input System з InputActionAsset, але конкретні шляхи до кнопок різняться: /user/hand/left/input/trigger/value для OpenXR — і це ще відносно стандартно, але grip/pose на різних HMD має різний фізичний зміст та зсув позиції.

Другий кейс — hand tracking кроссплатформа. На Quest рука трекається через OVR Hand API з суглобами OVRSkeleton.BoneId.Hand_Index1. На Pico — через SDK з іншою назвою та іншою кількістю суглобів в ієрархії. XR Hands (пакет com.unity.xr.hands) вирішує цю проблему через абстракцію XRHand з XRHandJointID, але підтримка конкретних пристроїв залежить від версії пакета та нативного провайдера.

Третя — просторові якорі OpenXR та Scene Understanding. Meta Spatial Anchors API, ARKit Anchors, OpenXR Spatial Anchors Extension (XR_EXT_spatial_entity) — це три різні API з різним ступенем зрілості. Якщо додаток використовує збереження позицій об'єктів у реальному просторі, архітектуру потрібно будувати з абстракцією над anchor API з самого початку, інакше потім рефакторинг займе тижні.

Як забезпечити кроссплатформенність XR без втрати продуктивності?

Основа — OpenXR + Unity XR Plugin Management. OpenXR покриває Quest (через Meta OpenXR), Pico (PicoXR OpenXR), SteamVR, Windows Mixed Reality. Для кожної платформи підключається відповідний OpenXR Feature Package, але логіка взаємодій залишається спільною. Порівняння підходів:

Функція OpenXR Нативні SDK
Інпути Єдиний API через InputActionAsset Окремі бібліотеки для кожної HMD
Hand tracking Абстракція XRHand OVRHand, PicoHand, SteamVR_Hand
Просторові якорі Розширення XR_EXT_spatial_entity Meta Spatial Anchors, ARKit Anchors

Стек: XR Interaction Toolkit (високорівневі інтерактивні компоненти XRGrabInteractable, XRRayInteractor, XRDirectInteractor), Unity Input System з InputActionAsset (єдиний мапінг, окремий binding для кожної платформи), XR Hands (для hand tracking), AR Foundation (для AR-функцій на мобільних пристроях).

Ключовий паттерн — Device Abstraction Layer: всі звернення до нативних SDK обгортаємо в інтерфейси (IHandTrackingProvider, IAnchorService, IHapticFeedback). Це дозволяє підключати платформенні реалізації через DI без зміни ігрової логіки. Нативний підхід з використанням OVRInput та SteamVR Action System вимагає в 3 рази більше коду порівняно з єдиним OpenXR Input Action Asset. Кроссплатформенна архітектура на OpenXR в 5 разів швидше за нативні SDK при додаванні нової платформи, а вартість володіння XR-проектом вдвічі нижча.

Кейс: haptic feedback на Quest і Pico З конкретного кейсу: в проекті з підтримкою Quest 2/3 та Pico 4 проблема виникла з haptic feedback — Meta OVR SDK підтримує амплітуду та частоту вібрації (OVRInput.SetControllerVibration(frequency, amplitude)), а стандартний OpenXR шлях через XRControllerWithRumble не давав потрібної точності на Meta. Вирішили через feature detection: при старті перевіряємо наявність Meta-специфічного OpenXR Extension XR_FB_haptic_amplitude_envelope, і якщо він доступний — використовуємо нативний шлях, інакше — стандартний OpenXR.

Чому OpenXR — основа для кроссплатформенних XR-проектів?

OpenXR скорочує обсяг платформозалежного коду на 70% порівняно з використанням нативних SDK кожного виробника. Це не просто стандарт, а активно розвинутий API — нові розширення додаються регулярно. Ми використовуємо офіційну документацію OpenXR для актуальної інформації.

Device Abstraction Layer в 3 рази прискорює додавання нової платформи порівняно з прямим використанням SDK, а інвестиції в кроссплатформенну архітектуру окупаються за 2–4 місяці. Економія часу на підтримку нової платформи сягає 60%. Вартість аудиту від $500, а економія на підтримці — до $10 000+ на рік.

Що входить в роботу? Аудит кодової бази, проектування Device Abstraction Layer, мапінг інпутів під кожну платформу, налаштування XR Interaction Toolkit, тестування на фізичних пристроях, документація та навчання команди. Додатково — 3 місяці технічної підтримки.

Тестування XR пристроїв

Повноцінне тестування вимагає фізичні пристрої. Але значну частину ітерацій можна закрити через: XR Device Simulator в Unity (для базової перевірки логіки без HMD), Link/Air Link для Quest (запуск в PC режимі для швидкого циклу ітерацій), OpenXR Runtime Switcher (перемикання між SteamVR та Oculus runtime на PC для порівняння поведінки). Матриця тестування фіксує: версію ОС HMD, версію рантайму OpenXR, режим трекінгу (6DoF/3DoF), роботу з/без hand tracking, продуктивність (FPS, тепло, GPU час). Типовий FPS budget: 11 ms на Quest 2, 16.7 ms на PC VR, draw calls — не більше 200 для стабільної роботи.

Поетапний план впровадження кроссплатформенності

  1. Аудит цільових платформ та їх SDK (Meta Quest, Pico, SteamVR).
  2. Проектування Device Abstraction Layer з інтерфейсами під конкретні функції.
  3. Мапінг інпутів XR через єдиний InputActionAsset з bindings для кожної платформи.
  4. Налаштування XR Interaction Toolkit та тестування в симуляторі.
  5. Тестування на фізичних пристроях та профілювання продуктивності.
  6. Документація та навчання команди.

Орієнтовні терміни

Масштаб задачі Терміни
Перенесення Quest-проекту на Pico (тільки інпути) 1–2 тижні
Підтримка Quest + Pico + SteamVR з нуля 1–2 місяці
Повна XR-платформа з hand tracking та anchors 2–4 місяці

Якщо ви хочете уникнути типових помилок — зв'яжіться з нами для аудиту вашого проекту. Отримайте консультацію інженера з 10+ річним досвідом у XR-розробці. Ми гарантуємо якість та дотримання термінів. Пишіть нам на пошту або через форму зворотного зв'язку.