id: 236 slug: oculus-vrc-and-steamvr-guideline-compliance-check title_ru: "Проверка соответствия игр гайдлайнам Oculus VRC и SteamVR" tags: [vr-ar]
Проверка соответствия игр гайдлайнам Oculus VRC и SteamVR
Meta отклоняет приложения по VRC (VR Check) без подробных объяснений. В письме придёт код нарушения — VRC.Quest.Performance.1, VRC.Quest.Security.2 — и две недели на исправление. Если цикл ревью занимает 7–10 рабочих дней, один возврат на доработку означает месяц потерянного времени. Проверка соответствия до подачи — не формальность, а часть production pipeline.
Oculus VRC: что проверяется и где чаще всего падают
Документ VRC насчитывает несколько десятков требований, разделённых по категориям. Критичные для прохождения:
VRC.Quest.Performance.1 — стабильные 72 FPS (Quest 2) / 90 FPS (Quest 3) на рекомендованных настройках. Meta проверяет это на физических устройствах. Типичные причины провала: слишком высокий Draw Call count (>300 без batching), отсутствие Fixed Foveated Rendering, некорректные настройки Eye Buffer Resolution. Для Quest 2: OVRManager.eyeTextureResolutionScale должен быть ≤1.0 в дефолте.
VRC.Quest.Performance.2 — приложение не должно перегревать устройство. Проверяется тестом на термальный троттлинг за 10 минут. GPU-интенсивные шейдеры без LOD, постоянная работа с максимальным CPU Clock — гарантированный провал.
VRC.Quest.Security.1 — приложение не запрашивает Android permissions, которые не нужны для работы. READ_CONTACTS, ACCESS_FINE_LOCATION в AndroidManifest.xml без обоснования — отказ. Unity добавляет некоторые permissions автоматически через плагины — нужно явно проверять итоговый manifest.
VRC.Quest.Input.1 — обязательная поддержка Guardian System и корректное поведение при выходе из игровой зоны. Приложение должно показывать Guardian passthrough и не блокировать его своей геометрией.
VRC.Quest.Content — требования к контенту: нет 2D-интерфейса без VR-адаптации (плоские экраны без пространственного UI не проходят), нет длительного fade-to-black (>3 секунды без контента), нет сцен с ускорением выше 1.5G без предупреждения.
SteamVR Guidelines: отличия от Meta
SteamVR технически менее жёсткий по требованиям к производительности — нет фиксированного FPS порога, поскольку PC-конфигурации разнообразны. Ключевые требования:
Reprojection support. Приложение должно корректно работать с ASW (Asynchronous SpaceWarp) и ATW (Asynchronous Timewarp). Геометрия, которая рендерится только в один глаз, или некорректные depth buffer данные — reprojection будет артефачить. Проверяется через SteamVR Compositor Mirror с включённым Reprojection.
SteamVR Input Actions. Все инпуты должны быть объявлены в actions.json и поддерживать rebinding через SteamVR Input Binding UI. Захардкоженные кнопки без action manifest — не пройдёт ревью.
OpenVR SDK версия. Устаревшие вызовы openvr_api без проверки null для опциональных интерфейсов — краши на нестандартных конфигурациях.
Как строится compliance-проверка
Автоматизированный аудит. Используем Oculus Platform Command Line Utility (OPCU) для базовых проверок APK без отправки в стор. Инструмент проверяет manifest, permissions, наличие 64-bit native libraries.
Производительностный аудит. Прогон на целевых устройствах с OVR Metrics Tool (для Quest) или SteamVR Frame Timing (для PC). Фиксируем GPU time, CPU time, тепловое состояние за 15 минут.
Ручная проверка по чеклисту VRC. Проходим каждый пункт документа, документируем статус и при необходимости — способ исправления.
Тест пользовательских сценариев. Guardian выход, быстрое снятие/надевание шлема, переход между сценами, обработка системных уведомлений (входящий звонок, low battery).
После аудита выдаём структурированный отчёт: список нарушений, критичность (блокирует публикацию / рекомендация), способ исправления с примерами кода.
Типичные исправления по результатам аудита
Лишние Android permissions удаляем через <uses-permission android:name="..." tools:node="remove"/> в кастомном AndroidManifest.xml. Это переопределяет permissions, добавленные Unity или плагинами.
Fixed Foveated Rendering включается через OVRManager.fixedFoveatedRenderingLevel = OVRManager.FixedFoveatedRenderingLevel.High — обычно забывают включить в release build.
Action Manifest для SteamVR генерируется через SteamVR Input → Save and Generate — но часто пропускают шаг тестирования binding UI в SteamVR настройках.
| Тип проверки | Ориентировочные сроки |
|---|---|
| Аудит + отчёт (без исправлений) | 3–5 дней |
| Аудит + исправление типовых нарушений | 1–2 недели |
| Полное сопровождение до прохождения ревью | 2–6 недель |
Стоимость рассчитывается после первичного осмотра проекта и оценки объёма нарушений.





