Rift Virtual Reality Checks

Your Rift app must meet or exceed these minimum requirements to be considered for distribution on the Oculus Store.

  • Runs on the recommended system:
    • NVIDIA GTX 970 or AMD R9 290 equivalent.
    • Intel i5-6400 equivalent.
    • 8GB RAM.
    • Windows 7 SP1 64 bit and later plus the DirectX platform update.
    • Latest versions of NVIDIA and AMD drivers.
  • Meets all Oculus PC SDK and game engine version requirements:
    • Oculus PC SDK version 1.8 or later.
    • Unity game engine 4 must be version 4.7.0f1.
    • Unity game engine 5.4 must be version 5.4.5f1 or later.
    • Unity game engine 5.5 must be version 5.5.2p3 or later.
    • Unity game engine 5.6 must be version 5.6.0f3 or later.
    • Unreal game engine must be version 4.14 or later from the Epic GitHub repository, or version 4.12 or later from the OculusVR GitHub Repository.
    • Audiokinetic Wwise must be version 2016.1 or later.
  • Meets all performance requirements:
    • Maintains 90 FPS through most of the app.
    • No systemic judder. Asynchronous Timewarp can help with minor rotational judder, but your application still needs to be at 90 FPS most of the time. You should disable Asynchronous Spacewarp for performance testing because it can mask brief performance drops.
  • Meets all audio requirements:
    • When your app starts, you must target the audio device selected in the Audio Output in VR setting in the Oculus app, regardless of the default Windows audio device setting. You only need to do this on app start.
  • Meets all graphics requirements:
    • All graphics resolve correctly into 3D images with no convergence issues or unusual distortion. See Binocular Vision, Stereoscoping Imaging and Depth Cues.
    • Has no major graphics issues. This includes z-fighting, depth conflicts, and so on.
    • Renders head-locked UI elements such as cursors and in-game dialog in a separate layer from the main game to avoid judder if the app misses frames or runs with Asynchronous Spacewarp. See VR Compositor Layers.
  • Meets all functional requirements:
    • Does not crash, freeze, or enter an extended unresponsive state.
    • Correctly uses entitlement checks to prevent unauthorized access. See Getting Started and Checking Entitlements.
    • Does not launch with a Windows Firewall interruption or a Unity configuration prompt.
    • Does not contain extraneous files such as debug builds, marketing assets, or DLL libraries from other distribution platforms.
    • Displays graphics and responds to head tracking within 4 seconds of launch. Longer launch times are allowed if there is a loading indicator.
    • Has no data loss. All saves, settings, and content persist through the user’s experience.
    • Users do not get stuck in any section. For example, if you require a login, we must be able to successfully create an account. Game levels must not have broken logic that prevents progressing to the next level.
    • Does not tie animation or physics to a 90Hz frame rate. Dropped frames and asynchronous spacewarp reduce frame rates below 90FPS and cause such animations to play out of sync with the displayed frame.
    • If the app supports a desktop mode, it must launch and be playable on the standard display without the use of the HMD or Oculus Touch controllers.
  • Meets all reserved interaction requirements:
    • Apps must not submit frames or accept input while the Universal Menu is open or the HMD is not worn.
    • Single-player apps must pause while the Universal Menu is open or the HMD is not worn.
    • The reorientation option in the Universal Menu must reorient appropriately:
      • Apps that do not use the Oculus Guardian System play area should reset the user's home position and orientation to their current position and orientation, using the built-in Oculus API functionality.
      • Apps that use the Oculus Guardian System play area may use more advanced reorientation logic.
      • If Oculus Guardian System bounds are not configured, re-center must work regardless of app tracking or movement type.
    • The Exit to Home function must work.
  • Meets all input requirements:
    • Map all the buttons required to allow a user to play through your application with all the controllers you support.
    • If you indicate Oculus Touch as a supported input device for this app, you must use Touch position and orientation data to either manipulate the environment or facilitate player movement. Apps that merely emulate gamepad control schemes using Touch must not indicate Oculus Touch as a supported input device and shall indicate Touch (as Gamepad) instead.
    • In-game menus must be activated with the menu button on the gamepad controller or the menu button on the left Oculus Touch controller.
  • Meets all player mode and tracking mode requirements for the modes select on your Submission Info page:
    • Sitting. The app must be completely playable while seated.
    • Standing. The app must be completely usable within a 7' x 5' play area.
    • Roomscale. The app must be completely usable within a 7' x 5' play area with a 3-sensor experimental roomscale setup. Additionally, you must also select the 360° checkbox and meet the 360° requirements as well.
    • Front-facing. The app must be completely usable with the standard setup of 2 sensors on a desk. Additionally:
      • Ensure objects on the floor can be picked up or reached even if the floor is partially occluded by the desk.
      • Ensure users are never required to interact with content behind them. If the app places interactive content behind the user, the app must take some steps to keep the user facing forward. This prevents them from unknowingly occluding the sensors with their body while trying to interact with the content.
    • 360°. The app must provide interactive content behind the user. If the app only provides interactive content in front of the user, it is Front-facing instead of a 360° app. Front-facing apps are already assumed to work with a 3-sensor setup, and don't need additional flags to indicate compatibility. Additionally:
      • If Roomscale is selected, the app must be completely usable with the experimental 3-sensor 360 setup.
      • If Roomscale is not selected, the app must be completely usable with the experimental 2-sensor 360 setup.