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.
As Unity developers, so much of your time is spent within the real time 3D engine that we want to ensure you’re maximizing efficiency when developing and testing your VR apps. See below for a series of recommendations when setting up your next Unity project and testing your build, along with Unity specific features to consider going forward.
There is a great deal of value within the full Oculus Integration Package for Unity, including the Oculus Avatar SDK, Platform Services, the Unity Sample Framework, utilities and more. Be sure to review the following document for a detailed breakdown of the Integration: Understand Oculus Integration Package Components.
If you are just starting out, it is recommended that you download the full integration package and utilize each of these files. On the other hand, if you have built a number of VR apps in the past and you know exactly what you’re looking to create with your next project, you may want a more streamlined set of files.
In the scenario where you are looking for the minimum number of files/folders out of the integration, feel free to extract those files that are required for your next build as this optimized set of files will save you time with each compile + iteration. For many devs, a more streamlined package would include: The core VR folder, Audiomanager, Platform, OculusProjectConfig.asset, and the Spatializer.
Each project is different, so be sure to collaborate with your team to ensure you have what you need before moving forward.
Unity is a flexible, powerful real time 3D engine for building VR games and apps, and with this flexibility comes a massive number of ways to set up your project. See below for those project settings we recommend, and be sure to review the Unity Configuration Settings documentation for more on how to get started with Unity.
Unity offers a suite of features that will help you deploy, test, and update your build. See below for a snapshot of the more powerful features for minimizing iteration time for your VR app.
This feature helps you drastically minimize iteration time when testing your app. Unity defines Assetbundles as:
...content that is stored separately from a main game or application and loaded (or downloaded, in the case of mobile and online apps) at runtime. This helps minimize the impact on network and system resources by allowing customers to download and install only the parts they need. AssetBundles can also be used to update or add to content post-release.
We recommend placing all your scenes in an asset bundle along with a thin loader scene in your APK. This will enable you to test your code without needing to reupload all of your assets, cutting down heavily on iteration time.
OVR Quick Scene Preview uses the Unity Assetbundle System to hot reload changes to your app, reducing your deployment time and (as a result) minimizing iteration time throughout your project.
Check out the Optimize Build Iterations for Android apps documentation for a step-by-step walkthrough on how to leverage this feature.
Also leveraging Unity’s Assetbundle system, we recommend using expansion files by placing all files that don’t include your game logic within an extension file. This step will help you avoid deploying the expansion file (and your assets) each time that you want to simply test your game logic.
Assembly definitions tell the engine specifically what to compile, ensuring that you’re not compiling specific parts of your build with every iteration. See Unity’s definition:
You can use Assembly Definitions to organize the scripts in your Project into assemblies. When you create an Assembly Definition Asset in a folder, Unity compiles a separate managed assembly from all the scripts in that folder.
Be sure to review the Unity Assembly Definition documentation for a detailed overview on the feature, how it works, and steps to get started.
This method utilizes the gradle cache when building your APK, and caches files so you avoid completely rebuilding your app with each iteration. The resulting APK will be identical to your normal Unity build, but this process can reduce build and deploy time by 10-50% when building an APK. This feature is located under the Oculus menu shown below:
Displayed within the OVR Platform Tool, if Oculus Quest is selected as the Target Oculus Platform, check Skip Unneeded Shaders to remove all Tier1 and Tier3 shaders from your build. We have recorded significant decreases in iteration time with this feature, combined with those outlined above.