Creating a VR Game in Unity
Back to top

How to build a VR game in Unity

Dmytro Lunov

Written by

Dmytro Lunov Verified author

Head of Delivery and Program Director at Game-Ace

Dmytro leads Game-Ace delivery teams on game development, art production, game design, MVP prototyping, and Unity and Unreal Engine projects.

Published July 17, 2022 Updated September 9, 2026

To build a VR game in Unity, you install Unity 6 with the Android Build Support module for Quest targets, enable XR Plugin Management, add the OpenXR provider, install XR Interaction Toolkit 3.x, set the Universal Render Pipeline with Single Pass Instanced rendering, then design gameplay around the "XR Origin" rig with controller and hand-tracking input. The rest of the pipeline covers comfort, performance targeting 72 to 120 Hz, on-device profiling, packaging for Quest, PCVR, or PSVR2, and store submission.

If you are scoping a VR game in Unity, talk to Game-Ace.

Setting up Unity for VR development

Unity setup for a VR game in Unity starts with Unity 6, the Android Build Support module for Meta Quest builds, and the Windows Build Support module for PCVR. Under Project Settings, XR Plugin Management installs the OpenXR provider on both PC and Android tabs. From Package Manager you add XR Interaction Toolkit 3.x, which brings the XR Origin rig, controller action maps, interactors, and locomotion providers. Meta headsets also need the Meta XR SDK for hand tracking, passthrough, and platform features that OpenXR does not expose.

The Input System package replaces the legacy input manager, and OpenXR action maps map controller buttons, triggers, thumbsticks, and hand joints into gameplay code.

Target platforms: Quest, PCVR, and PSVR2

The Room VR: A Dark Matter, a Unity VR game

The Room VR: A Dark Matter

Zenith: The Last City, a Unity VR game

Zenith: The Last City

A Township Tale, a Unity VR game

A Township Tale

Most Unity VR development targets three platforms. Meta Quest 2, Quest 3, Quest 3S, and Quest Pro run standalone Android builds. PCVR covers Meta Quest via Link, Valve Index, HTC Vive, and Pico headsets through SteamVR OpenXR. PSVR2 on PS5 uses the Sony PSVR2 SDK, and PSVR2 on PC uses the Sony PSVR2 PC adapter through SteamVR OpenXR.

Scope decisions follow the target. A Quest 2 build sits on a mobile GPU with a fixed thermal budget, so art and shaders are mobile-first. Quest 3 and 3S move to more headroom for higher texture resolution and dynamic lighting. PCVR removes most GPU limits. PSVR2 sits between mobile and PCVR, with dedicated hardware for eye-tracking, foveated rendering, and haptics.

Choosing a render pipeline and performance targets

For a VR game in Unity, the Universal Render Pipeline (URP) is the default choice. URP supports Single Pass Instanced rendering, which draws both eyes in one pass and cuts CPU cost close to half compared with multi-pass. MSAA 2x or 4x is the standard antialiasing for VR. Foveated rendering is a large win on Quest and PSVR2, Fixed Foveated Rendering typically saves 20 to 35 percent GPU time, and Quest Pro, Quest 3, and PSVR2 support eye-tracked FFR that follows the pupil.

  • Quest 2: 72 Hz baseline, 90 Hz optional for lighter titles.
  • Quest 3 / 3S / Pro: 90 Hz standard, 120 Hz for competitive or rhythm titles.
  • PSVR2: 90 Hz standard, 120 Hz reprojected for select titles.
  • PCVR (Index / high-end): up to 144 Hz depending on GPU.

Typical Quest 2 budgets that ship: 200k to 350k triangles on screen, 50 to 100 draw calls, a single dynamic light, static baked lighting for the rest. OVR Metrics Tool on the headset shows real-time frame time and GPU utilization, and the Unity Profiler runs over ADB or Wi-Fi for on-device profiling.

Input, locomotion, and comfort design

XR Interaction Toolkit 3.x provides Direct, Ray, and Poke interactors that map to Meta Touch, Valve Index Knuckles, and PSVR2 Sense controllers through OpenXR action maps. Hand tracking works on Quest 2, 3, 3S, and Pro through the Meta Hand Tracking Subsystem. Gaze input on Quest Pro, Quest 3, and PSVR2 uses the OpenXR eye-gaze extension.

Comfort is a submission gate on Meta Horizon Store and PlayStation Store, so locomotion is a first-class design decision.

  • Teleport with fade: safest, required for "comfort intense" ratings.
  • Snap turn (30 or 45 degrees): reduces vection.
  • Continuous move + tunneling vignette: accepted when configurable.
  • Room-scale + guardian awareness: always on.

Spatial audio and QA on device

Spatial audio in a VR game in Unity uses either Steam Audio (Valve, open source) or Meta XR Audio, both integrating as Unity plugins that hook into the AudioSource pipeline with occlusion, reflections, and ambisonic mixing.

On-device QA runs continuously, not at the end. Unity Profiler over ADB gives per-frame CPU/GPU data. OVR Metrics Tool shows frame time, stale frames, thermal state, and reprojection. A shipping QA matrix covers every supported headset, both controller and hand-tracking input, guardian and boundary edge cases, and session length for thermal drift.

Packaging and store submission

Packaging a VR game in Unity depends on the target. Quest builds are Android APKs signed with a keystore and pushed via Meta Quest Developer Hub. PCVR builds ship as Windows executables through Steam using SteamPipe. PSVR2 builds go through Sony's dev-kit toolchain and the PlayStation Partner Portal.

Meta Horizon Store submission requires a store page, age rating, comfort rating, and technical certification against the Meta VRC list. Steam submission requires a store page and passes Valve's automated tests.

Unity for Quest vs PCVR vs PSVR2

Aspect Quest (standalone) PCVR (SteamVR) PSVR2 (PS5)
Build formatAndroid APKWindows .exePS5 package
Render pipelineURP, Single Pass Instanced, VulkanURP or HDRP, forward+URP + Sony extensions
Frame-rate target72 / 90 / 120 Hz90 / 120 / 144 Hz90 / 120 Hz
Foveated renderingFFR + eye-tracked (3/Pro)Depends on headsetEye-tracked FFR native
Store / submissionMeta Horizon StoreSteam / SteamPipePlayStation Store + TRC

A Unity VR case from the Game-Ace portfolio

Welcome to Star Archer VR, an arcade Quest shooter by Game-Ace

Star Archer VR arcade Quest shooter by Game-Ace

Star Archer VR is a bow-and-arrow arcade shooter built in Unity for Meta Quest, with input designed around the XR Interaction Toolkit and art tuned for the standalone Quest GPU budget. Game-Ace handled full-cycle production from prototype to a store-ready build, profiling performance on the target headset.

When to talk to Game-Ace about creating a VR game in Unity

Game-Ace has built VR titles in Unity since the first Oculus Rift devkits and ships across Quest, PCVR, and location-based hardware. If a VR game in Unity is part of your roadmap, Game-Ace, a Unity VR development partner, handles full-cycle production, co-development, and team extension from a single in-house team of 120+ specialists. See also virtual reality game development and hire virtual reality game developers. Related reading: testing VR games, VR game development cost, and how to make VR games in Unreal Engine.

Questions teams ask about building a VR game in Unity

Both ship VR titles. Unity has broader Quest support, faster iteration, and the largest VR asset ecosystem on the store. Unreal has stronger PCVR visuals and Nanite / Lumen for high-end PCVR or PSVR2 releases. For standalone Quest and cross-platform VR with mid-size teams, Unity is the more common pick.

Yes, a single Unity project builds one Android APK that runs on Quest 2, Quest 3, Quest 3S, and Quest Pro. Runtime code can detect the device via the Meta XR SDK and enable higher texture resolution, higher frame-rate, or eye-tracked FFR on Quest 3 and Pro while keeping a safe Quest 2 baseline.

PSVR2 development requires a Sony developer account and access to the PSVR2 SDK for Unity, which Sony gates behind approval. Once approved, Unity supports PSVR2 through Sony's plugin with native eye-tracking, foveated rendering, and Sense controller haptics. On PC, the PSVR2 PC adapter uses SteamVR OpenXR, so a Unity PCVR build also runs on PSVR2 through Steam.

Costs depend on scope. A focused single-scene Quest title with one core mechanic usually sits in the €40,000 to €80,000 range. A full multi-level VR game with polished art and store submission usually falls in the €120,000 to €300,000 range. Multi-platform releases add certification and QA cost per platform.

A prototype takes 4 to 8 weeks. A vertical slice with production art takes another 8 to 12 weeks. A full standalone Quest release typically runs 6 to 10 months from GDD approval to store-ready build. Adding PCVR takes 3 to 6 extra weeks. Adding PSVR2 with full Sony TRC certification usually adds 2 to 4 months.

Hand tracking uses the Meta Hand Tracking Subsystem, exposed through OpenXR and the Meta XR SDK. Unity gets per-joint pose data for both hands at runtime, which XR Interaction Toolkit maps to the same interactor components as controllers.

Foveated rendering lowers shader resolution outside the fovea to save GPU time. Fixed FFR is safe to enable on any Quest or PSVR2 project because the periphery drops below what the eye resolves anyway. Eye-tracked FFR on Quest 3, Pro, and PSVR2 follows the pupil and gives back more quality in the center.

Submission requires a signed APK, a store page (screenshots, trailer, description), age and comfort ratings, and a pass on the Meta VRC list. VRC covers frame-rate stability, guardian handling, input, comfort, and passthrough behavior. Timeline is usually 2 to 6 weeks from first submission to store live.
Average rating 4.8 / 5. Votes: 335
Related posts
Metahuman game character standing near realistic cars in unreal engine scene How MetaHuman changes game character development Game development for startups rocket in space Game development for startups: budget and MVP guide Tower defense games image preview Engineering tower defense games from prototype to live service Idle game development preview img Idle game development: a full production guide Gamification in recruitment preview Gamification in recruitment: what actually works
Futuristic game robot running through a purple portal
Get in touch
menu
Get in touch
Game-Ace logo loader