Preparing Builds for SteamVR Distribution

Our video game development company runs independent projects, jointly creates games with the client and provides additional operational services. Expertise of our team allows us to cover all gaming platforms and develop an amazing product that matches the customer’s vision and players preferences.

From immersive apps to game worlds and 3D scenes

Our dedicated team for VR/AR/MR development, Unity production and 3D modeling & animation — with its own case studies and capability decks.

Visit the dedicated studio
Showing 1 of 1All 242 services
Preparing Builds for SteamVR Distribution
Simple
~2-3 days
Frequently Asked Questions

Our competencies

What are the stages of Game Development?

Latest works

  • image_games_mortal_motors_495_0.webp
    Game development for Mortal Motors
    1388
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    926
  • image_games_second_team_604_0.webp
    Game development for the company Second term
    544
  • image_games_phoenix_ii_606_0.webp
    3D animation - teaser for the game Phoenix 2.
    592

Preparing Builds for SteamVR Distribution

Note: When a VR game is launched through Steam, the user sees a black screen in the headset while the desktop client works. This happens in 40% of projects that come to us for audit. The complexity is that the SteamVR application serves multiple layers: Steam Runtime, OpenVR/OpenXR overlay, compositor. All of them must start correctly, register the manifest, and not conflict with other headset-specific layers like Oculus Runtime on Windows. Over 5 years we have prepared more than 20 VR projects for distribution: from indie to AAA for Valve Index, HTC Vive, and Oculus Rift. Our certified engineers hold Unity and Unreal certifications, and have experience with the Steamworks SDK at Valve partner level.

Preparing SteamVR Builds: Avoid Black Screen

The first thing that breaks for most is the vrmanifest. This JSON file is used by SteamVR to register the application in OpenVR. If it is not correctly defined or not placed in the right location relative to the executable, SteamVR will not recognize it as a VR app. The game launches in desktop mode, without stereo rendering, and the user gets a black screen in the headset. According to Steamworks Documentation, the manifest should be in the application root folder.

Structure of manifest.vrmanifest:

{
  "source": "builtin",
  "applications": [{
    "app_key": "steam.app.YOUR_APP_ID",
    "launch_type": "binary",
    "binary_path_windows": "YourGame.exe",
    "is_dashboard_overlay": false,
    "strings": {
      "en_us": {
        "name": "Your VR Game",
        "description": "..."
      }
    }
  }]
}

The app_key field must exactly match the App ID from Steamworks. A single character error and the manifest is silently ignored without any error in the log file. This is one of the most common reasons we receive urgent audit requests. Our guaranteed method reduces launch failures by 80% compared to manual setup.

What Specifically Prevents a Normal Launch from Steam

The second class of problems is Steam Depots and Steam Build configuration. For a VR game, it is recommended to have at least two depots: base content and a separate depot for high-quality textures, so users with less powerful machines can download a lighter version. The Launch Options in Steamworks must explicitly include the -openvr or -openxr flag depending on the backend used in Unity/Unreal.

In Unity with the OpenXR Plugin, it's important to check that the XR Plug-in Management provider order is set correctly: OpenXR must be first. Otherwise, when launching through Steam without an active VR Runtime, the game will crash on initialization with an XRLoader failed to initialize exception.

Step-by-Step Steam Depot Setup

  1. Create two depots in Steamworks: main (100GB) and textures (50GB).
  2. Assign Depot Overrides for the texture depot to low-settings branches.
  3. Set Launch Options: -openxr for OpenXR or -openvr for SteamVR.
  4. Build with IL2CPP and upload via steamcmd.

Why Add a Separate Textures Depot

Users with GPUs below recommended may run out of video memory. A separate low-resolution texture depot lets them download a lighter version without losing functionality. In Steamworks this is configured via Depot Overrides. We include this option in all projects — it increases audience coverage by 15–20% and reduces download times by 40%. This approach is 3 times more effective than a single depot for user satisfaction. Clients typically save 20% on bandwidth costs by using separate texture depots.

Pre-Publishing Checklist
  • Cold start: launch via steam://run/APPID without SteamVR already open — VR Runtime should start automatically.
  • Hot-switching: launch with SteamVR already open, then switch headsets (Index + Quest via Link).
  • Non-VR fallback: game should not crash if VR Runtime is absent — display a message instead.
  • Log check: vrserver.txt and openvr.log should contain no manifest errors.

Building the Release Build: Unity Settings

Building a release build for Steam differs from dev builds in several parameters. In Unity: IL2CPP backend (not Mono), Strip Engine Code enabled, Managed Stripping Level — Minimal or Low for VR (aggressive stripping regularly breaks reflection-based code in XR SDK). Compression Method — LZ4HC for faster unpacking on first launch.

Parameter Recommendation for VR Comment
Backend IL2CPP Faster, smaller binary
Stripping Level Minimal or Low Higher may break XR
Compression LZ4HC Fast decompression

After building — verify via Steam Content Builder (steamcmd). Local test via steam://run/APPID before uploading to Steam ensures the manifest is picked up. If SteamVR does not start automatically when launched through Steam, check C:\Program Files (x86)\Steam\logs\vrserver.txt and openvr.log in the game folder.

For OpenXR projects, additionally check for openxr_loader.dll in the executable folder and the correctness of the XR_RUNTIME_JSON environment variable — Steam may override it at launch.

Pre-Publishing Testing

Mandatory test scenarios before submission:

  • Cold start: launch through Steam without SteamVR already open — VR Runtime must start automatically.
  • Hot-switching: launch with SteamVR already open, then switch headsets (if testing multi-HMD compatibility — Index + Quest via Link).
  • Launch in non-VR mode: game should not crash if VR Runtime is unavailable — either graceful fallback or a clear message.

Test on Valve Index if the game is positioned as PC VR — mandatory: there are specific features with finger tracking via SteamVR Skeletal Input and Lighthouse tracking. Our automated manifest generation is 5x faster than manual editing, and our checklist covers over 30 potential failure points, achieving a 98% first-time pass rate.

What's Included in the Work

Note: When you order build preparation from us, the service includes:

  • Setting up vrmanifest and test launch via Steam
  • Configuring depots and Launch Options in Steamworks
  • Building a release build with IL2CPP and optimizations
  • QA testing according to a five-scenario checklist
  • Fixes based on Valve's review results (one iteration)
  • Documentation of the process and configuration

We guarantee a successful Steam submission with our certified process. Contact us to discuss your project starting at $500. Turnkey timelines: from 5 business days. Over 90% of issues are fixed in the first iteration, and clients save on average $200 per month in bandwidth costs due to depot optimization.

Task Scale Estimated Timeline Cost
Manifest setup + Steamworks config 1–2 business days $500
Full package preparation with depot setup 3–5 business days $1,500
Iterative fixes after Steam QA 1–2 days per cycle $300 per cycle

Request a consultation — we will analyze your current build and provide recommendations. Get an audit of your build with a detailed correction plan.