Oculus Go Development

On 6/23/20 Oculus announced plans to sunset Oculus Go. Information about dates and alternatives can be found in the Oculus Go introduction.

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.

Configure Unity Settings

This topic describes how to configure Unity settings to optimize the app performance and quality, and utilize Oculus features to ease the app development process in Unity. We recommend that you perform these settings as outlined in this guide to meet the minimum technical requirements as defined by Oculus Store policies and guidelines.

Create or open Unity project

The Unity settings are project-specific and you need to configure these settings in a Unity project. Before you begin with the settings configuration, create a new Unity project or open the project in which you want to configure these settings.

Build Settings

Build settings let you set the target platform, configure build-related settings, and start the build process. We recommend that you set the app’s target platform, such as Windows or Android, prior to performing any other project settings as there are a variety of settings that depend on it.

The target platform for Oculus devices that run on Windows, such as Oculus Rift and Oculus Rift S, is PC, Mac & Linux Standalone, and builds a .exe file.

  1. In the menu, go to File, and select Build Settings.
  2. Under Platform, select PC, Mac & Linux Standalone. By default, Windows is set as the target platform.
  3. In Target Platform, select Windows.
  4. Clear the Development Build selection for the final build as it may impact performance.
  5. Click Switch Platform, if the target platform was different than PC, Mac & Linux Standalone.

The target platform for Oculus devices that run on Android, such as Oculus Quest and Oculus Go, is Android, and builds a .apk file.

  1. In the menu, go to File and select Build Settings.
  2. Under Platform, select Android.
  3. Set Texture Compression to ASTC.
  4. In Run Device, select the Oculus device to run the app in the Oculus device. Your device is listed only if it is connected to your computer over USB. This is an optional step and is usually helpful to test the app on a real device.
  5. Clear the Development Build selection for the final build as it may impact performance.
  6. Click Switch Platform.

Note: Select Development Build to test and debug the app. When you’re ready for the final build, clear the selection as it may impact the app performance.

Project Settings

Project settings surface a variety of elements that drive app’s quality and performance. For example, it bundles audio, input, graphics, rendering, physics, XR support, and many more.

Add Product Details

You can add basic product details that uniquely identifies your company and the app in Unity.

  1. From the menu, go to Edit > Project Settings > Player.
  2. In Company Name, type the name of your company.
  3. In Product Name, type the name of your app or product that you want it to appear on the menu bar when your app is running.
  4. In Version, type the version number that identifies the iteration. For subsequent iterations, the number must be greater than the previous version number.

Add Package Identification Details

When you build the Android app, the build tools use the package name as the package attribute value and add it in the AndroidManifest.xml file. Therefore, there’s no need to manually add the package attribute value in the manifest file.

  1. From the menu, go to Edit > Project Settings > Player, and select the Android tab.
  2. Under Identification, do the following:

    a. In Package Name, enter a unique package name. It must be unique within the Oculus ecosystem, and it should be similar to the app’s in-store title. However, feel free to deviate from the app’s title, if needed. For example, if your company’s name is Jane Doe Inc. and the app’s title is Move Along with Colors, the package name can be com.JaneDoeInc.colorgame.

    b. In Version, type the version number that identifies the iteration. For subsequent iterations, the number must be greater than the previous version number. If you’ve set the version number in product details, Unity automatically populates the version number.

    c. 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.

    d. In Minimum API Level, set the minimum Android version to Android 6.0 Marshmallow (API level 23) for Oculus Quest and Oculus Quest 2 and Android 5.0 Lollipop (API level 21) for Oculus Go.

    e. In Target API Level, select Automatic (highest installed) to let the app support the highest Android version available.

    f. In Install Location, select Automatic.

Enable Virtual Reality (VR) Support

To build a Virtual Reality (VR) app that provides an immersive and interactive user experience, you need to enable the VR support in Unity.

Depending on the Unity version you’re using, there are two ways you can enable the VR support:

  • Through XR plug-in framework, which is introduced in Unity version 2019.3 and higher
  • Through built-in XR platform integration, which is the legacy method available in Unity version 2019.3 and prior

With the Unity version 2019.3 and higher, Unity has introduced the XR plug-in framework, which allows Oculus to integrate with Unity’s engine and make full use of its features. As a result, for these versions, the built-in XR platform integration is marked as deprecated. However, for version 2019.3, both the methods are available and it’s up to you to select the appropriate method.

Use XR Plugin Framework (only available in Unity versions 2019.3 and higher):

  1. From the menu, go to Edit > Project Settings.
  2. From the left navigation pane, select XR Plugin Management, and click Install XR Plugin Management.

  3. Click the Windows tab and select Oculus to install the Oculus XR plugin, which enables the VR support.

  4. From the left navigation pane, under XR Plugin Management, click Oculus to open and modify the default settings.

  1. From the menu, go to Edit > Project Settings.
  2. From the left navigation pane, select XR Plugin Management, and click Install XR Plugin Management.

  3. Click the Android tab and select Oculus to install the Oculus XR plugin, which enables the VR support.

  4. From the left navigation pane, under XR Plugin Management, click Oculus to open and modify the default settings.

Note: In case, you’ve not installed the Oculus Integration package as described in Import Oculus Integration Package, install it to fully use Oculus VR features. Installing Oculus XR Plugin doesn’t install the Oculus Integration package.

Use built-in XR platform integration:

  1. From the menu, go to Edit > Project Settings > Player > Windows tab.
  2. Expand XR Settings and select Virtual Reality Supported. Under Virtual Reality SDKs, you should be able to view Oculus.
  1. From the menu, go to Edit > Project Settings > Player > Android tab.
  2. Expand XR Settings and select Virtual Reality Supported. Under Virtual Reality SDKs, you should be able to view Oculus.

Set Rendering Preferences

There are a variety of options and settings that let you optimize rendering. You can define a specific set of Graphics APIs, choose color space property, or enable multithreaded rendering to optimize performance.

  1. From the menu, go to Edit > Project Settings > Player, and select the Android tab.
  2. Expand Other Settings and under Rendering, do the following:

    a. Set the Color Space property to Linear for realistic rendering. It lets colors supplied to shaders within your scene brighten linearly as light intensities increase. For more information about selecting the correct color space for your project, Unity has outlined the gamma and linear color space workflow to understand the differences.

    b. Clear Auto Graphics API to manually pick and set the order in which the Graphics APIs are consumed. The Linear color space requires OpenGL ES 3.0 or Vulkan. Currently, Oculus Quest supports Vulkan but it is under experimental phase. Therefore, we highly recommend that you use OpenGL ES 3.0 and set that as the first Graphics API in the order. Oculus Go does not support Vulkan. However, if you’d like to try out the Vulkan API, you can read the associated known issues. If none of them apply specifically to your project, then feel free to upgrade to Vulkan API, with the understanding that the implementation is still in the experimental mode.

    c. Select Multithreaded Rendering to move graphics API calls from the main thread to a separate worker thread.

    d. Select Low Overhead Mode to skip error checking in release versions of an app. This is applicable to apps that use OpenGL ES API.

  1. From the menu, go to Edit > Project Settings > Player, and select the Windows tab.
  2. Expand Other Settings and under Rendering, do the following:

    a. Set the Color Space property to Linear for realistic rendering. It lets colors supplied to shaders within your scene brighten linearly as light intensities increase. For more information about selecting the correct color space for your project, Unity has outlined the gamma and linear color space workflow to understand the differences.

    b. Select Multithreaded Rendering to move graphics API calls from the main thread to a separate worker thread.

    c. Select Low Overhead Mode to skip error checking in release versions of an app. This is applicable to apps that use OpenGL ES API.

Define Quality Settings

Several quality options let you define the graphical quality.

  1. In the menu, go to Edit > Project Settings > Quality.
  2. In Pixel Light Count, set the maximum number of pixel light count to one.
  3. In Texture Quality, select Full Res to display textures at maximum resolution.
  4. In Anisotropic Textures, select Per Texture.
  5. In Anti Aliasing, select 4x. Unlike non-VR apps, VR apps must set the multisample anti-aliasing (MSAA) level appropriately high to compensate for stereo rendering, which reduces the effective horizontal resolution by 50%. You can also let OVRManager automatically select the appropriate multisample anti-aliasing (MSAA) level based on the Oculus device.

    Known Issue: If you are using Universal Render Pipeline (URP), you need to manually set the MSAA level to 4x. 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.

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

Generate Android Manifest File

Every Oculus app built for Android-based Oculus devices must contain the AndroidManifest.xml file. It is a vital part of an Android app as it contains essential metadata such as permissions, package details, hardware and software support, supported Android version, and other important configurations.

Oculus has automated the process of adding the metadata in the manifest file and you need to generate the Android Manifest file from Unity. This means that you don’t need to manually update the manifest file to add app details or specific hardware and software support that request permission.

For example, there’s no need to manually add the package name or the minimum supported Android version in the manifest file. When you set the package name and select the minimum Android API level from Project Settings, say API level 19, Oculus automatically adds the <uses-sdk android:minSdkVersion="19" /> element and the package attribute and its value.

From the hardware standpoint, all apps that target Oculus Quest are automatically compatible to run on Oculus Quest 2. To retrieve the correct headset that the app is running on, it’s ideal to set Oculus Quest and Oculus Quest 2 as target headsets for the app. Based on the device type, Oculus automatically adds the <meta-data android:name="com.oculusupportedDevices" android:value="quest" /> element for Oculus Quest and the <meta-data android:name="com.oculusupportedDevices" android:value="quest|delmar" /> element for both Oculus Quest and Oculus Quest 2 in the manifest file. There is no need to update the Android Manifest file manually.

Similarly, when you enable hand tracking or focus aware features from Unity, Oculus automatically adds the feature and sets the permission value based on the setting you’ve opted in Unity.

  • To generate the Oculus store-compatible Android manifest file, in the menu, go to Oculus > Tools > Create store-compatible AndroidManifest.xml.