Подготовка билдов для дистрибуции в 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 дня на цикл |
Закажите консультацию — мы проанализируем текущую сборку и дадим рекомендации. Получите аудит вашего билда с детальным планом исправлений.






