# 3. Quest 2 Project and Build Setup
Part of [[Meta Quest 2]]. Requires Unity 6.3 LTS (6000.3.27f2) and newer. Previous: [[2.Quest 2 SDK Stack]]. Next: [[4.Quest 2 Testing and Deployment]].
> [!important] Version requirement
> Unity 6.3 LTS (6000.3.27f2) and newer.
## 3.1 Create the project
1. Install Unity 6.3 LTS (6000.3.27f2 or newer) through Unity Hub. Add **Android Build Support** with **OpenJDK** and **Android SDK & NDK Tools** modules.
2. Create a project from the **Universal 3D** (URP) template. (Unity also offers VR/MR templates in the Hub; this tutorial builds from URP so each step is explicit.)
3. Open **File > Build Profiles**, add a **Meta Quest** profile, and switch to it. Unity pre-configures Player and Quality settings for it ([build profile page](https://docs.unity3d.com/6000.3/Documentation/Manual/xr-meta-quest-build-profile.html)):
| Setting | Default in the Meta Quest profile |
|---|---|
| Graphics API | Vulkan |
| Minimum API level | Android 10 (API 29) |
| Target API level | Android 12L (API 32) |
| Scripting backend | IL2CPP |
| Target architecture | ARM64 |
| Stereo rendering path | Instancing |
4. Open **Player Settings > Other Settings > Target API Level** and set **34** (or "Automatic (highest installed)" if API 34 is installed). Meta requires 34 for apps created since 2026-03-01 ([[1.Quest 2 Support Status]]). Install the API 34 platform via the Android SDK Manager in Unity Hub if it is missing.
> [!tip] Check the Meta Quest build profile page
> If a menu or option name differs in your editor, read [Configure the Meta Quest build profile](https://docs.unity3d.com/6000.3/Documentation/Manual/xr-meta-quest-build-profile.html) for your exact patch version.
## 3.2 Install packages
In **Window > Package Management > Package Manager** (Unity Registry), install:
- **OpenXR Plugin** (`com.unity.xr.openxr`): 1.16.1 is the version Unity lists for 6000.3 (1.17 to 1.19 are listed as released)
- **Unity OpenXR: Meta** (`com.unity.xr.meta-openxr`): 2.7.0
- **XR Interaction Toolkit** (`com.unity.xr.interaction.toolkit`): **3.4.0 or newer**. The 6000.3 default is 3.3.2; pick 3.4.0+ (3.5.1 is listed) in the version list for the UI Toolkit ray support used in [[7.Quest 2 Worked Example Room]]
- **XR Hands** (`com.unity.xr.hands`) **1.8.1 or newer** (the 6000.3 default is 1.7.3) if you want hand tracking ([[6.Quest 2 Input Hands and Passthrough]])
- **Input System** (XRI depends on it; accept the backend restart)
Meta XR SDK packages are optional ([[2.Quest 2 SDK Stack]]).
## 3.3 Enable OpenXR for Android
1. **Edit > Project Settings > XR Plug-in Management**. On the **Android** tab, tick **OpenXR**. Do **not** tick Oculus.
2. Under **OpenXR**, add interaction profiles: **Oculus Touch Controller Profile** (the Quest 2 controllers). Add **Meta Quest Touch Pro/Plus** profiles only if you target those.
3. Under **OpenXR > Features**, enable the **Meta Quest Support** feature (from Unity OpenXR: Meta). Its options include Symmetric Projection, Optimize Buffer Discards, Multiview Render Regions, and System Keyboard ([Unity OpenXR: Meta 2.7 manual](https://docs.unity3d.com/Packages/
[email protected]/manual/index.html)). Enable **Application SpaceWarp** and **Foveated Rendering** only after reading [[5.Quest 2 Performance and Rendering]].
4. If you use XRI hands: enable **Hand Tracking Subsystem** and **Meta Hand Tracking Aim** ([Meta Aim Hand feature](https://docs.unity3d.com/Packages/
[email protected]/manual/features/metahandtrackingaim.html)).
5. Use the **Project Validation** panel (Project Settings > XR Plug-in Management > Project Validation) and click **Fix All** for items it flags. If you installed the Meta SDK, also run the **Project Setup Tool**.
## 3.4 URP asset settings for Quest 2
On the URP asset used by the Quest quality level (create a dedicated "Quest" quality level):
| Setting | Value | Why |
|---|---|---|
| Render Scale | 1.0 (do not go below 0.85) | VRC.Quest.Performance.4 recommends at least 85% |
| MSAA | 4x (or 2x if GPU-bound) | MSAA is the cheap AA on tilers |
| HDR | Off | Saves bandwidth |
| Depth/Opaque Texture | Off unless needed | Each costs a pass |
| Additional Lights | Per-vertex or few per-pixel lights | Fill-rate bound |
| Shadows | Off or one short-range cascade | Expensive on Quest 2 |
| Post-processing | Off | Not worth it on mobile GPUs |
| Render Graph | Leave on (compatibility mode off) | Application SpaceWarp requires it |
## 3.5 Texture compression
Set **Player Settings > Other Settings > Texture compression format** to **ASTC**, and import textures with ASTC (block 6x6 is a common start; try 4x4 for UI, 8x8 for large backdrops). The ASTC recommendation here comes from a third-party guide, not from a Meta page I fetched **(unverified)**.
## 3.6 Android manifest requirements for the Store
Unity generates the manifest. For a release build, make sure the final merged manifest includes (from [Meta's manifest requirements](https://developers.meta.com/horizon/resources/publish-mobile-manifest/)):
- `minSdkVersion` 32 recommended, `targetSdkVersion` 34, `compileSdkVersion` 34
- `com.oculus.supportedDevices` including `quest2`
- `com.meta.store.defaultDeviceTargets` (see [[1.Quest 2 Support Status]])
- the head tracking `uses-feature`, the VR intent category (`com.oculus.intent.category.VR`), and `installLocation=auto`
- `android:debuggable=false` for the submitted build
Unity OpenXR: Meta writes much of this when its Meta Quest Support feature is enabled. Always inspect the built APK's manifest (**Build > Custom Main Manifest** if you need to override, or `aapt dump badging yourapp.apk`).
Minimum API: Meta recommends 32, Unity defaults to 29 **(difference noted; check what your target store requires)**.
## 3.7 Build checklist
- [ ] Scripting Backend: IL2CPP; Architecture: ARM64 only
- [ ] Graphics API: Vulkan only (remove OpenGLES3 to avoid a fallback)
- [ ] Texture compression: ASTC
- [ ] Target API 34
- [ ] OpenXR (not Oculus) enabled for Android; Touch controller profile added
- [ ] Application SpaceWarp / foveation decided
- [ ] Release keystore set (Publishing Settings), APK signing v2
## Official references
- [Unity: Configure the Meta Quest build profile](https://docs.unity3d.com/6000.3/Documentation/Manual/xr-meta-quest-build-profile.html)
- [Meta: Unity project setup](https://developers.meta.com/horizon/documentation/unity/unity-env-device-setup/)
- [Meta: Manifest requirements](https://developers.meta.com/horizon/resources/publish-mobile-manifest/)
Next: [[4.Quest 2 Testing and Deployment]]
> [!note] Unity 6000.4 and 6000.5 are not recommended
> This series targets Unity 6.3 LTS. 6000.4.x and 6000.5.x are end of life, have no patch for the October 2026 advisories, and have reported Meta SDK build breakage. See [[0.Choosing a Unity Version]].