List of features to implement for Oculus Rift compatibility for a newly created game or a VR mod.

Categories:
MUST
Must be implemented.
MUST NOT
Must not be implemented.
SHOULD
Can be ignored but the full implications must be understood and carefully weighed.
SHOULD NOT
May exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed.
COULD
Desirable but not necessary.

TODO : add latency mitigation strategies from Carmack, Abrash and Lottes
  • pinned memory buffers
  • head movement prediction
  • game loop

General


MUST

  • Start in Rift mode
  • Use Direct mode
  • Have latency < 20 ms

Content


MUST

  • Have every asset at 1:1 scale

Head tracking


MUST



MUST NOT

  • Disable head-tracking in any situation (menus, transitions, cinematics, cut scenes, etc.)

SHOULD

  • Handle head outside of the volume tracking (no clipping, fade to black)

SHOULD NOT

  • Take control of the camera (head bobbling, etc.)

SHOULD


  • 3dof tracking for third-party sensors (YEI3, Hillcrest, Sparkfun) used in DIY HMDs
    • use custom fusion (MahonyARHS, Madgwick)
    • head and neck model

MAY


  • 6dof tracking when such a solution is available

Rendering


MUST


  • Consistent 75 FPS framerate for the minimum system requirements
  • Stereoscopic side-by-side rendering
  • Use the IPD of the user to calculate the FOV
  • Render objects at the correct position in the world and with the correct FOV (guns, etc.)
  • camera separation at the correct scale :
    • based on game units
    • configurable to correspond to the viewer eye separation

SHOULD


  • Use the proper FOV calculated by the SDK
  • Use the height and gender parameters from the Oculus profile
  • show your own body when you look down
  • transparent HUD that fades in when relevant information changes (taking damage, reloading etc)
  • warping for the 5" DIY HMDs
  • calculate environment-mapped surfaces correctly for each eye

SHOULD NOT

  • Degrade rendering for VR support (ie. disabling shadows, reducing image quality, etc.)

Text


MUST

  • All texts must be legible

Menus


MUST

  • All menus must be rendered between 0.75 and 3.5 meters away

Input


MUST


  • support gamepad / mouse turning in addition to the tracker yaw

SHOULD


  • Have a recenter key
  • independent weapon control with a second 3dof or 6dof sensor
  • lower the gun and hide the crosshair :
    • with a command (ex : right analog stick/mouse, "use" command)
    • when initiating an action (sprinting, picking up items, etc.)
  • raise the gun with a command (ex : right analog stick/mouse, "use" command)
  • remove head bobbling
  • remove head kicks from both user weapons and enemy attacks

See also

MoSCoW method at Wikipedia
RFC 2119 (Requirement Levels)
Oculus Best Practices Guide
GameGradeVR