Oculus Development Tips
Updated at 2015-01-17 09:55
- Use Oculus VR distortion shaders.
- Always allow head motion control. In menus, cut scenes, everywhere.
- Images presented to each eye should only differ only in terms of viewport.
- Your program should run at a frame rate greater than the Rift display refresh rate, v-synced and unbuffered.
- Keep game loop latency consistent.
- Avoid rotating the horizon line of the user's environment which would conflict with the user's real-world self-motion.
- Avoid disabling positional tracking.
- Users can move their viewport position slightly, mind the surface culling.
- Warn the user when they are close to moving out of positional tracking area.
- Real world movements speeds feel most comfortable, between 1.4 m/s and 3 m/s.
- Give visual indication on teleportation.
- Avoid zoom effects.
- Avoid head bobbing.
- Allow settings to adjust the intensity of the visual experience on-the-fly.
- Oculus depth perception is sensitive up close but quickly diminishes. Increasing the distance between eye cameras can increase depth perception but might cause discomfort.
- Use lightning, textures and parallax to increase feeling of depth.
- UIs should be part of the virtual world and 2-3 meters away from the viewer.
- Allow viewing UI in the middle of the screen using your head movement, eye movement is straining.
- Draw all cursors and crosshairs at the same depth as the targeted object.
- Produce audio always in 3D world.
- In Unity, one unit is one meter.
- Most objects are comfortable to view between 0.75m and 3.5m.
- Prefer player having in-game avatar, but mind how the real-world and virtual world gestures contradict e.g. sitting or running.
- Minimize need of strafing, back-stepping and spinning.
- Keep in mind that player could watch in any direction in any given moment.
- Prefer "tank mode" where your avatar movement direction is not affected by where your avatar is looking.
Sources
- Oculus, Best Practices Guide