VR Development: A Soft Introduction

VR Headset

Developing immersive experiences in VR may initially seem like a daunting task. The cutting edge nature of VR means that the development landscape is constantly in flux. As new headsets are released, new software libraries are built, and new techniques are discovered, it can be challenging to stay abreast of everything that is going on. Fortunately, even though the VR landscape is complex, getting started with VR development doesn’t have to be. There are several beginner-friendly places to get started with developing your own VR experience.

OpenXR – Simplifying The VR Development Process

When getting started with VR you may find yourself overwhelmed by headset-specific documentation. For example, Oculus offers this getting started guide for developing a sample application, and similar documentation is available for most of the other headsets on the market today. Generally, this type of documentation appears to be intended for people  already familiar with the tools being used. If you’re just getting started with VR development, you can quickly get lost in the myriad options presented by the guide. It isn’t bad documentation, it just assumes the reader is quite knowledgeable or up for a steep learning curve.

Beginners are better off using the OpenXR project for development. Created by the Khronos Group, the same organization responsible for API standards such as OpenGL and OpenCL, OpenXR provides a library of functions that sit on top of the headset-specific APIs, simplifying the development process. 

There are two significant advantages to using OpenXR. The first is that your application will work on any headset which supports the framework. When writing this article, every consumer-grade headset on the market except for the Valve Index supports OpenXR, and the Valve Index is slated to receive support soon. If you develop your application using OpenXR, you don’t have to worry about users having various versions of the Oculus headset or different brands of headsets altogether. Furthermore, you won’t have to worry about a hardware or software update invalidating functionality you have already created; the OpenXR specification is designed to be very stable.

The second advantage to using OpenXR is that it makes development much more straightforward. Because the development is headset agnostic, the APIs exposed by OpenXR are much more beginner-friendly than the APIs provided by the headsets themselves. For example, OpenXR provides a controller component in Unity, and this component comes with functionality for interacting with other objects. With only a few clicks, you can create a simple hand for picking things up rather than learning how to map buttons on a controller specific to your headset. There are cases where accessing buttons specific to your headset are helpful, but for getting started the defaults and assumptions provided by OpenXR make life much easier.
You can learn more about the OpenXR project here.

Unity – An Easier Engine Experience

A significant decision in VR development is choosing which game engine to use. There are numerous engines that support VR, for instance, the Unreal Engine or the CryEngine, and, when getting started, you are typically deciding which of these engines to use with little information. For beginners, our recommendation is to begin with Unity, an engine which is free to use for learning and development work below a certain size.

Why do we recommend starting with Unity? Unity tends to be the most beginner-friendly of the major game engines and requires the least amount of initial knowledge to get started with. While the other engines may offer more advanced features, these features are unneeded for a beginner and only tend to complicate the process. Unity’s straightforward interface and a plethora of getting started projects make it easy to jump into Unity development. Furthermore, Unity handles many aspects of the physics and camera automatically and can provide immediate feedback via simply running your scene onto your headset. There is also a fairly large user community surrounding Unity, making it easier to find tutorials and help as needed. 

You can download Unity from https://unity.com/ . When writing this article all versions of Unity do not yet support OpenXR and so when selecting a version for installation ensure that it has OpenXR support. For more information about OpenXR support in the various Unity versions see the Unity/OpenXR version selection document.
There are some great tutorials on the web and on YouTube for getting started with Unity via VR. This YouTube series briefly explains how to get started using Unity and OpenXR and starts at the very beginning with a blank slate, perfect for a beginner.

Unity + OpenXR- A Great Combination

VR development may seem complex, but both Unity and OpenXR have tried to make the process as friendly as possible. This combination of tools greatly simplifies development, allowing you to target any headset your customers may use, removing worries about complex and changing third-party APIs, and providing a beginner-friendly environment in which to create your experience. VR development may seem daunting, but anyone can create a great VR experience when you have the right tools. Checkout our previous post ‘Creating solutions for VR’ to learn more about what makes a great VR experience.

Authors

  • Branden Crawford

    Branden Crawford is a Senior Backend Developer versed in everything from infrastructure to AI. He’s focused on building great technologies from the ground up.

  • Adam Sadeghi

    Adam is an experienced developer with a demonstrated history of working in the software industry and security. He has achieved two Master’s degrees in software engineering and cybersecurity.