The following blog post, unless otherwise noted, was written by a member of Gamasutras community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.
Below are my virtual reality development tips. I’ve broken these up into Vive specific, general VR and more philosophical tips. For more tips follow me on Twitter @Doolwind.
- Ask the user to press a button to begin. Doing this has a few key benefits:
- Ensures they have headset on and are ready
- Ensures they have at least one controller ready to go in their hand
- You can set any user height specific objects at this point (ie height of objects close to the user that need to be a height relative to their head)
- The button pressed will be attached to the dominant controller (regardless of whether they are left or right handed). This can then be used as the primary controller if your controllers are handled differently.
- Certain buttons are better/easier to use than others, much like console controllers. Favor the easier to use buttons where possible. When assigning buttons in your game/experience I recommend following this general order of priority:
- Track-pad as single button
- 3D world interaction (eg pressing 3D button with controller)
- Menu button
- Track-pad as 4 buttons
- Grip buttons - don’t use these unless absolutely necessary
- For room scale experiences, aim for 2mx1.5m or smaller to capture 81% of users. This will allow you to capture the largest audience possible. More detail on current user stats can be found here.
- Don’t encourage users to bring their controllers too close to each other or the headset. This is one of the few times they will hit something and possibly damage their equipment
- Use controller vibration when the user is interacting with the world to increase presence. A great example is the room scale setup with the Vive. The faster the user moves the devices the faster the vibrations occur.
- Many users fail to look at their controllers, take this into account. There are three main solutions to this:
- Add a line to the button and have the text always render in the users view. Pin to the side of the view when the controller is out of their view frustum so they must look in that direction to centre the text. This can be extended to showing an icon for the controllers any time they are not looking at the controller and they are expected to use the controller to interact with the world.
- Put text in front of them telling them to look at controller.
- Add audio queues to tell the user to look at the controller when you are showing them a particular button.
General Virtual Reality
- Framerate is paramount. Presence is achieved much more with a high frame rate than any other factor. Whenever you add something that impacts the frame rate below 90fps ask whether it’s important. Target a 970GTX as the minimum hardware and make sure on the lowest graphical settings 90fps can be achieved at all times.
- Be careful when using screen-space effects. We can forgive lens flare on a computer monitor but it can seem totally unrealistic in VR. This is especially a problem for game developers who sometimes over exaggerate reality (eg bloom). Don’t do this in your game to get it to look “good” as per game dev standards but go more for realistic. If in doubt, leave it out. Use this list as a general guide to importance of post-process effects:
- Colour correction
- SSAO (I usually drop this as the cost is too high for little payoff)
- Keep all UI diegetic. The resolution of both consumer devices is more than enough to read in 3D. However keep the text extra large. Some users can’t wear their glasses in VR so make sure text is larger than it really needs to be for the “average user”. Attaching UI to the controller is a great way of giving the user control over the size of the text as they can bring the controller close enough to their eyes to be able to read.
- Use audio when possible. While UI works well in VR, it’s much better to use audio queues where possible. There is no concern with the user missing the popup and users can multi-task, listening to your audio queues while performing another action. They must stop what they are doing to read a text message.
- Fade to black when transporting/teleporting the user. I also keep the scene fully black for a small amount of time (~0.2 seconds) to help the brain with the transition.
- Keep objects a minimum distance from the user as objects too close to the viewer can cause confusion and simulator sickness. It’s better to have the near z plane clip than have it get uncomfortably close. Respect the user's personal space (or explicitly don’t for uncomfortable experiences). The only caveat to this rule is when the user picks up and object to look closely.
- Build detail where it matters. If a user can pick up or otherwise get close to an object then focus detail in these objects. Texture detail is the most important with model quality a close second.
- Closing one eye to line up objects works really well in VR. Things like iron sights and scopes (both weapons and telescope, microscope etc) are surprisingly effective. Rather than just using this for a gun/weapon think of novel ways this can be used.
- Don’t lerp objects relative to user just lock them. I had thought this would give a less abrupt experience however it’s terrible. Keep the rotation locked and lock position on 1, 2 or all 3 axis.
Philosophical Virtual Reality
- Virtual Reality amplifies the best and worst parts of a game/experience. When VR works well, it works really well. The level of presence achieved with a great project can instantly sell someone on VR. Unfortunately the same can be said for bad experiences. Low frame rates, low quality assets and other issues can completely ruin the experience and sometimes lead to simulator sickness. With great power comes great responsibility.
- The absolute priority is presence. Ignore any of these rules that break presence in your application.
- We are on the frontier so spend time looking at each new problem and seeing if there is a novel way of solving it. Don’t just go back to previous generations of games/apps and build upon them.
- Respect the user. Respect their personal space and their comfort levels. Expect non-gamers and people of all generations to play your game/experience.
- The biggest threat to VR at the moment is over hype and bad expectation management. Expect to sell a max of 10-20k units at the moment based on Steam Spy stats. While the consumer kits are great, remember this is the first generation of consumer devices so don’t expect everything to be perfect.
- Things will change rapidly so be prepared. It’s better to start out small and start releasing products to build a name for yourself and get experience actually releasing VR content.
- Watch your target audience use VR for the first time (gamers vs non-gamers). Watch them play your prototypes as early as possible. VR amplifies the best and worst parts of your software and can therefore be very unforgiving.
- When demoing, don’t make a big deal about the experience. Most people will happily try it on, but if you build it up too much some will be turned off.
- Build consistency. One of the major (perhaps overly) criticized areas of current games are the inconsistencies between games. Work to build a common vocabulary with other VR developers and work out standards we can all follow. We should be an inclusive community that helps one another rather than competing.