The Virtual Reality Check (VRC) Validator utility runs automated tests to determine if your Rift app is ready for Oculus Store technical review. The VRC Validator can reveal shortcomings that need to be addressed before your app can pass the Oculus Store review process. The VRC Validator has a command-line interface as well as a GUI interface.
VRC Validator is included in the Oculus Runtime. You do not need to wear the Rift during the tests.
To run the VRC Validator:
OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe"
The tests results are written to the command prompt window. You can also log the test results to a .txt file.
Lost events: The VRC Validator will retry the tests if any events were lost while the application was being evaluated.
Append the -l option to your OculusVRCValidator command line to write the test results to the text file. For example: C:\Program Files\Oculus\Support\oculus-diagnostics\OculusVrcValidator_Log.txt
If you want to write the test results to a different file, use --log_file fullpath.
OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-oculus-video\Cinema.exe" --log_file "C:\temp\log.txt"
If you need to add a delay before each test begins to navigate to a specific part of your app you wish to test, append the --load_time_ms duration option to your OculusVRCValidator command line.
You can specify the wait duration in milliseconds. This example delays for 30 seconds:
OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --load_time_ms 30000
To make the tests wait until you press ENTER in the command prompt window, specify a duration of 0. The command prompt window must have focus. For example:
OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --load_time_ms 0
To retrieve the complete list of tests, run OculusVRCValidator --list_tests.
Append the --test testname option to your OculusVRCValidator command line to specify that you want to run a particular test. If you want to run several selected tests, specify more than one --test testname option.
For example, to run the TestFrameRate and TestAppShouldQuit tests:
OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --test TestFrameRate --test TestAppShouldQuit
The default tests of the OculusVRCValidator test your app against specific VRC criteria. If your app fails any of these default tests, it is likely to fail its official Oculus Store technical review.
There are also a number of optional tests. We do not run these tests during Oculus Store technical review, but ensuring that your app can pass them adds quality to your app.
Default Tests (in order they will be tested)
|Test Name||Pass Criteria|
|TestSdkVersion||Your app must use the correct versions of Oculus PC SDK, Unity, or Unreal Engine.|
|TestEntitlementCheck||Your app must perform an Oculus Platform entitlement check within 10 seconds of launch.|
|TestOculusDLLIncludes||Your app must not distribute its own copies of Oculus DLLs.|
|TestLaunchIntoVR||Your app must launch into VR within 4 seconds and display a non-headlocked layer.|
|TestFrameRate||Your app must maintain 90 frames per second.|
|TestSubmitFramesWhenVisible||Your app must submit frames when visible.|
|TestSubmitFramesWhenNotVisible||Your app must stop submitting frames when the Universal Menu is open.|
|TestResponseToRecenterRequest||Your app must respond to requests to reset the view.|
|TestAppShouldQuit||Your app must quit gracefully.|
|CheckForExtraneousFiles||Your app must not contain DLLs from other platforms.|
|TestAudioOutput||Your app must target the audio device specified in the Oculus app.|
Optional Tests (in order they will be tested)
|Test Name||Pass Criteria|
|TestMismatchedAdapters||Your app must run correctly when the HMD is connected to a different GPU than the main display.|
|TestResponseToDisplayLost||Your app must either quit properly or stop submitting frames when the HMD is unplugged from the GPU.|
|TestPropertyAccess||Your app must not use any deprecated properties.|
|RunErrorCapture||Your app must not generate runtime errors.|
|TestResponseToIadChanges||Your app must respond to changes in the lens slider.|
The following are details of the tests as they will be run by the validator.
Tests if your app is built with the supported versions of Oculus PC SDK, Unity, or Unreal Engine.
Tests if your app performs an Oculus Platform entitlement check within 10 seconds of launch.
Tests if your app is distributing copies of the following Oculus DLLs instead of loading the DLLs from the Oculus runtime directory:
Tests if your app displays a non-headlocked graphic in VR and responds to head tracking within 4 seconds of launch. If you want to test a different duration, append the --max_time_to_frame duration option to your command line. Specify the duration in milliseconds.
Note: This test is known to fail every time if you are using Unity Personal (the free version of Unity). The issue is that Unity Personal takes a long time to load, and during this period it always displays a splash screen. However, the splash screen produced by Unity Personal does not render into VR, although it appears on the computer monitor. The workaround for this is to use one of the Pro versions of Unity to generate your app for submission to the Oculus Store.
Tests if your app displays graphics in the headset at 90 frames per second.
Tests if your app renders when it is visible. The test counts the number of texture swap chains committed and reports it at the end of the test.
Tests if your app stops submitting frames when the Universal Menu is open.
Tests if your app resets the user's position and orientation when a user selects Reset View in the Universal Menu.
Tests if your app quits properly from the Universal Menu with ovr_Destroy when it receives a quit request.
Tests if your app folder contains extraneous .pdb symbol files.
Tests if your app targets the audio device selected in the “Audio Output in VR” setting in the Oculus app.
Tests if the application supports plugging the HMD and the primary display into different display adapters. To run this test, the system must have at least two separate display adapters, with the HMD and primary display connected to different display adapters.
Tests if the application responds gracefully if the HMD cable is unplugged from the display adapter. Once the HMD display is lost, the application should either quit with ovr_Destroy, or pause and stop submitting frames to the HMD. Example:
OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --test TestResponseToDisplayLost
During this test, you will be asked to unplug the HMD from the display adapter, allow the test to run, and then plug the HMD back in.
Tests if your app calls any internal, deprecated, or otherwise unsupported API functions that are carryovers from DK2 development. Deprecated property functions include:
Tests if your app generates runtime errors. Some common errors include:
Tests if your app correctly adjusts for Inter Axial Distance (IAD) changes by getting updated HmdToEyeOffset values from ovr_GetRenderDesc at least once every 500ms. It also tests that your app actually responds to IAD changes.
The Oculus Debug Tool provides a VRC Validator dialog. To use this GUI interface, follow these steps: