Підготовка білдів для дистрибуції в SteamVR
Відмітимо: коли VR-гра запускається через Steam, користувач бачить чорний екран у шоломі, хоча десктопний клієнт працює. Це відбувається на 40% проєктів, які приходять до нас на аудит. Складність у тому, що SteamVR-додаток обслуговує декілька шарів: Steam Runtime, OpenVR/OpenXR overlay, compositor. Всі вони повинні коректно стартувати, зареєструвати маніфест і не конфліктувати з іншими headset-специфічними шарами на кшталт Oculus Runtime на Windows. За 5 років ми підготували до дистрибуції понад 20 VR-проєктів: від інді до AAA для Valve Index, HTC Vive та Oculus Rift. Наші інженери мають сертифікати Unity та Unreal, а також досвід роботи з Steamworks SDK на рівні партнерів Valve.
Як уникнути чорного екрану при запуску
Перше, що ламається у більшості — vrmanifest. Це JSON-файл, який SteamVR використовує для реєстрації додатка в OpenVR. Якщо він не прописаний коректно або не лежить у правильному місці відносно виконуваного файлу, SteamVR не зрозуміє, що додаток — VR. Гра запуститься в desktop-режимі, без stereo rendering, користувач отримає чорний екран у headset.
Структура manifest.vrmanifest:
{ "source": "builtin", "applications": [{ "app_key": "steam.app.ВАШ_APP_ID", "launch_type": "binary", "binary_path_windows": "YourGame.exe", "is_dashboard_overlay": false, "strings": { "en_us": { "name": "Your VR Game", "description": "..." } } }] } Поле app_key повинно точно збігатися з App ID у Steamworks. Помилка в одному символі — і маніфест ігнорується без будь-яких помилок у лог-файлі. Це одна з найчастіших причин, через яку ми отримуємо заявки на терміновий аудит. Згідно з Steamworks Documentation, маніфест повинен знаходитися в кореневій папці додатка.
Що конкретно заважає нормальному запуску з Steam
Другий клас проблем — Steam Depots та конфігурація Steam Build. Для VR-гри рекомендується мінімум два депо: базовий контент та окреме депо під високоякісні текстури, щоб користувачі з менш потужними машинами могли завантажити полегшену версію. Налаштування Launch Options у Steamworks повинно явно прописувати -openvr або -openxr прапорець залежно від використовуваного backend в Unity/Unreal.
У Unity з OpenXR Plugin важливо перевірити, що XR Plug-in Management налаштований з правильним порядком providers: OpenXR повинен йти першим, інакше при запуску через Steam без активного VR Runtime гра впаде на ініціалізації з винятком XRLoader failed to initialize.
Поетапний план налаштування Steam Depot
- Створіть у Steamworks два депо: основне (100GB) та текстурне (50GB).
- Призначте Depot Overrides для текстурного депо на гілки з низькими налаштуваннями.
- Вкажіть Launch Options:
-openxrдля OpenXR або-openvrдля SteamVR. - Зберіть білд з IL2CPP та завантажте через
steamcmd.
Чому варто додати окреме депо для текстур
Користувачі з відеокартами нижче рекомендованих можуть зіткнутися з нестачею відеопам'яті. Окреме депо з текстурами низького розширення дозволяє їм завантажити полегшену версію без втрати функціональності. У Steamworks це налаштовується через Depot Overrides. Ми включаємо таку опцію у всі проєкти — це підвищує покриття аудиторії на 15–20%.
Чек-лист перед публікацією
- Холодний старт: запуск через steam://run/APPID без активного SteamVR — VR Runtime повинен піднятися автоматично.
- Гаряче перемикання: запуск з уже відкритим SteamVR, потім зміна headset (Index + Quest через Link).
- Non-VR fallback: гра не повинна крашитися при відсутності VR Runtime — виводити повідомлення.
- Перевірка логів:
vrserver.txtтаopenvr.logне повинні містити помилок маніфесту.
Збірка релізного білда: налаштування Unity
Збірка релізного білда для Steam відрізняється від dev-збірки кількома параметрами. У Unity: IL2CPP backend (не Mono), Strip Engine Code включений, Managed Stripping Level — Minimal або Low для VR (агресивний стрипінг регулярно ламає reflection-based код у XR SDK). Compression Method — LZ4HC для прискорення розпакування при першому запуску.
| Параметр | Рекомендація для VR | Коментар |
|---|---|---|
| Backend | IL2CPP | Швидше, менший бінарник |
| Stripping Level | Minimal або Low | Higher може зламати XR |
| Compression | LZ4HC | Швидке розпакування |
Після збірки — верифікація через Steam Content Builder (steamcmd). Локальний тест через steam://run/APPID перед завантаженням у Steam гарантує, що manifest підхоплюється. Якщо SteamVR не стартує автоматично при запуску через Steam — дивимося в C:\Program Files (x86)\Steam\logs\vrserver.txt та openvr.log у папці гри.
Для OpenXR-проєктів додатково перевіряємо наявність openxr_loader.dll у папці з виконуваним файлом та коректність XR_RUNTIME_JSON змінної середовища — Steam може перевизначати її при запуску.
Тестування перед публікацією
Обов'язкові сценарії до сабміту:
- Холодний старт: запуск через Steam без попередньо відкритого SteamVR — VR Runtime повинен підніматися автоматично.
- Гаряче перемикання: запуск з уже відкритим SteamVR, потім зміна headset (якщо тестуємо мульти-HMD сумісність — Index + Quest через Link).
- Запуск у non-VR режимі: гра не повинна крашитися, якщо VR Runtime недоступний, — або graceful fallback, або зрозуміле повідомлення.
Тест на Valve Index, якщо гра позиціонується як PC VR, — обов'язковий: там свої особливості з finger tracking через SteamVR Skeletal Input та Lighthouse tracking.
Що входить у роботу
Відмітимо: коли ви замовляєте підготовку білда у нас, у послугу входить:
- Налаштування
vrmanifestта тестовий запуск через Steam - Конфігурація депотів та Launch Options у Steamworks
- Збірка релізного білда з IL2CPP та оптимізаціями
- QA-тестування за чек-листом з п'яти сценаріїв
- Правки за результатами рев'ю Valve (одна ітерація)
- Документація щодо процесу та конфігурації
Оцініть ваш проєкт — зв'яжіться з нами, щоб обговорити деталі. Терміни під ключ: від 5 робочих днів.
Орієнтовні терміни
| Масштаб завдання | Орієнтовні терміни |
|---|---|
| Налаштування маніфесту + Steamworks config | 1–2 робочих дні |
| Повна підготовка пакета з depot setup | 3–5 робочих днів |
| Ітераційні правки після QA Steam | 1–2 дні на цикл |
Замовте консультацію — ми проаналізуємо поточну збірку та надамо рекомендації. Отримайте аудит вашого білда з детальним планом виправлень.






