Oculus Quest Development

All Oculus Quest developers MUST PASS the concept review prior to gaining publishing access to the Quest Store and additional resources. Submit a concept document for review as early in your Quest application development cycle as possible. For additional information and context, please see Submitting Your App to the Oculus Quest Store.

Configuring Android Manifest File and Unity Settings

This topic describes how to generate the Android Manifest file for Oculus apps running on Android devices. It also provides details about configuring several Unity settings that are specific to Oculus app development.

Generating Android Manifest File

Every Oculus app built for Android devices must have the Android Manifest, AndroidManifest.xml, file. It is a vital part of an Android app as it contains important metadata such as permissions, package name, activity names, main activity (the entry point to the app), Android version support, hardware features support, permissions, and other configurations.

To build and submit an app to Oculus Store, you must customize the Android Manifest file. We have automated the customization of the Android Manifest file entirely for developers using the Oculus Integration for Unity package.

To generate the customized AndroidManifest.xml file:

  • In the menu, go to Oculus -> Tools -> Create store-compatible AndroidManifest.xml. This generates the customized Android manifest file that is used when you ship apps to Oculus store.

Configuring Unity Settings

To build apps for Oculus devices running on Android, you need to modify several Unity settings.

Build Settings

  1. In the menu, go to File and select Build Settings.
  2. Under Platform, select Android.
  3. Set Texture Compression to ASTC.

Tip: We recommend unchecking Development Build for your final build, as it may impact performance.

Player Settings

There are several settings that you should perform to ease the Oculus app development and achieve the optimum quality.

  1. In the menu, go to Edit and select Project Settings.
  2. From the Project Settings window, select Player, and then select the Android tab to open Android settings.
    • Expand Other Settings:
      • Under Rendering, do the following:
        • Set the Color Space property to Linear. The gamma color space is the default format. Linear color space rendering offers more precise results. For more information about understanding the difference between gamma and linear color space, go to Linear or gamma workflow in the Unity documentation.
        • Perform additional rendering settings, such as:
          • Select Multithreaded Rendering to move graphics API calls from the main thread to a separate worker thread.
          • Select Low Overhead Mode to skip error checking in release versions of an app (only on apps using OpenGL ES).
      • Under Identification, do the following:
        • In Package Name, set the package name, which uniquely identifies your app on the device and in app stores. The package name must be unique within the Oculus ecosystem and must be similar to the app’s Oculus store title. The basic structure of the identifier is com.CompanyName.AppName.
        • In Version, enter the build version number, which identifies an iteration (released or unreleased) of the bundle.
        • In Bundle Version Code, increment the existing version code. This version is used internally to determine whether one version is more recent than another, with higher numbers indicating more recent versions.
        • In Minimum API Level, set the minimum Android version required to run your app.
        • In Target API Level, select Automatic (highest installed) to compile the app.

    Note: The minimum API level for the Oculus Go apps is Android 5.0 Lollipop (API level 21).

    Note: The minimum API level for the Oculus Quest apps is Android 6.0 Marshmallow (API level 23).

    • Expand Configuration:
      • In Install Location, select Automatic.
    • Check the Unity version you’re using, and depending upon the version, perform the following XR settings:
      • For Unity versions 2019.3 and earlier (Unity versions that support built-in XR):
        • Expand XR Settings:
        • Select Virtual Reality Supported to let your app support virtual reality.
      • For Unity versions 2019.3 and later (Unity versions that support XR Plugin framework):
        • From the Project Settings window, select XR Plugin Management, and click Install XR Plugin Management.
        • Click Install that is available next to Oculus XR Plugin. This installs the Oculus XR plugin, which enables the VR support.
        • After the plug-in installation finishes, click the plus sign in the Plugin Providers list, and select the Oculus XR plugin to load it.
        • Select Oculus under XR Plugin Management and click Create to open and modify the default settings.

      Note: Unity version 2019.3.x supports both, built-in XR and XR Plugin Framework. It’s upto you to select the appropriate method to enable the VR support.

Quality Settings

  1. In the menu, go to Edit, select Project Settings, and then Quality.
  2. Perform the following settings:
    • In Pixel Light Count, set the maximum number of pixel light count to one.
    • In Texture Quality, select Full Res to display textures at maximum resolution.
    • In Anisotropic Textures, select Per Texture.
    • For Anti Aliasing, use the Use Recommended MSAA Level setting from OVRManager. Many non-VR apps choose to not use Multi Sampling Anti Aliasing (MSAA), but in VR, the MSAA level must be set appropriately high to compensate for stereo rendering, which reduces the effective horizontal resolution by 50%. We recommend that you enable the Use Recommended MSAA Levelsetting from OVRManager. This sets the MSAA level appropriately for you, based on specific details such as the type of headset your app is running on. For example, for Oculus Quest apps, we use an MSAA Level of 4x.

    Known Issue: If you are using Universal Render Pipeline (URP), you need to manually specify the MSAA level. We are aware of the issue that URP does not set the MSAA level automatically. Once the fix is published, we will announce it on our Release Notes page.

    • Clear the Soft Particles check box.
    • Select Realtime Reflections Probes to update reflection probes during gameplay.
    • Select Billboards Face Camera to force billboards to face the camera while rendering instead of the camera plane.

For more information on recommended settings, see Best Practices for Rift and Mobile.