Advice for a beginning VR Indie Dev

Look up best VR practices like others have said, most of the stuff is intuitive, but there are some things to consider (like never ever taking control of the camera away from the viewer, even in menus or cinematics).

If you want the game to look good and run well on most computers, you will need to know how to optimize (e.g. LODs, culling, etc.). Biggest performance killer is dynamic lighting, you will want to use static lighting as much as possible. Any impact something has on the performance of the game in 2D will at least be twice as harsh in VR (since it has to be rendered twice for each eye). Break up the scene in clever ways to cut the players line of sight so you can avoid pop-in/pop-out and cull unseen objects. For example, in a cave system if you have large caverns separated by tunnels, make sure the tunnels curve/turn in a way that prevents the user from being able to look into both caverns from one position.

Avoid having the player looking up and down a lot.

Make the player’s collision a bit larger to account for players being able to lean into meshes since the head has no collision (and adding head collision would be quirky). Reduce the player’s normal walking speed. Also, head-bob is bad m’kay, so you will have to fiddle with the camera attachment to the static mesh (use VR template to save yourself some trouble). The head mesh needs to be separate from the body mesh so you don’t see parts of it in the camera, but it’s still there for the shadow and for others to see if multiplayer (again VR template).

From a UI standpoint, 3D menus and look-based controls (look at this button and a fill-up bar pops up, if player stares at button for 1.5 seconds, activate button) can add immersion to your project. For crosshair type of UI elements, you will need to be creative. For example, in 2D games, crosshairs are basically stickers that have been placed on the camera lens; but in 3D games, players’ eyes will actually focus differently on a target at various ranges, the 2D crosshair’s inability to move or scale to the object’s distance will frustrate the players like dirt being on a pair of glasses. So, you have to make a crosshair that can dynamically change based on the distance to an object, but the distance can’t be too great or you will lose sight of the crosshair (I just put a clamp to limit the distance my crosshair can be drawn away from the camera, see my answerhub post below for an example).

There is a lot of other small things you will notice as you go, but you should be fine with enough persistence :).

Good luck,