How to Get Started in VR Development

From Virtual Reality, Augmented Reality Wiki
Revision as of 05:50, 3 January 2017 by Bnx2212 (talk | contribs)

Jump to: navigation, search

Beginner's Guide to Learning VR Dev

This page serves as a jumping-off point for new developers to find any resources they might need along their path to learning to make virtual reality experiences.

1. Learn about the hardware

Ask yourself: do you want to develop for a computer-driven headset like the Vive, or are you more interested in mobile applications such as GearVR or Google Cardboard? If you don't already own your hardware of choice, do some reasearch and think about what would be best for both your target market and most practical to develop on. If your idea requires motion controls or high-end graphics, stick to computer-driven VR. A list of currently available hardware that is supported by Unity, Unreal, and VR web implementations:

Computer VR:

Mobile VR:

(can use a smartphone as HMD)

Web VR:

(can use a smartphone as HMD)

  • Mozilla A-Frame is a markup language (as are HTML and XML) for making cross-platform VR software. To see it in action, visit their site on your smartphone, turn off orientation lock, and press the VR button that appears.
  • Vizor is a web app that allows you to construct 3D scenes and view them across numerous platforms, including from mobile devices. Although it isn't as powerful as a game engine or open-source web platform, it is very straightforward and a great way to start creating in VR without an expensive headset. The Vizor blog has several tutorial posts.
  • Responsive WebVR is a cross-platform, web-based VR platform available for modification on GitHub. You'll probably want to brush up on Three.js.

Unreleased, but preliminary development possible:

  • Google Daydream - unavailable but supported by UE4 now, Unity support coming in the summer
  • OSVR HDK 2, $399 - will be released in July; no announced motion control

2. Learn about the software

Designing for VR is much like designing videogames, as they are both 3D interactive experiences. The difference between designing for VR and designing for traditional videogames is that special considerations must be made for the nuanced experiences of presence and immersion, nonlinear storytelling, locomotion which reduces motion sickness, and graphical optimization.

Most VR developers opt to use a game engine (unless they're developing for WebVR, discussed below), and should decide which they want to work with early on. Two most popular are Unreal Engine 4 (UE4) and Unity. Both of these engines are very capable and will become the tool that you rely on most in your development; both have very active communities with vast resources out there to help you. These are freely available software suites capable of managing 3D environments, importing custom assets (such as 3D models, imagery, sounds, video), and programming interactivity or gameplay. Most useful of all, there are an insane number of YouTube tutorials and online guides for both engines, both official and fan-created.

There is no absolute agreement in the VR developer community that Unreal is a "better" engine than Unity, nor vise versa. However, they do have distinct personalities. UE4 is characterized as being more computationally optimized with greater visual fidelity but a steeper learning curve; on the contrary, Unity was designed to be powerful enough to drive commercial-quality games while remaining more intuitive and efficient for beginning designers. Unreal Engine 4 is free to download and use, but as a condition of use they will take 5% of your net revenue (above $3000) per quarter. Unity has multiple versions with different costs, but Unity Personal is free to use. If possible, it might be best to try both of these engines to see what suits you best, however it's hard to go wrong here, both offer a lot of value and are very capable.

Outside of game engines, you may opt to develop interactive VR webpages using Mozilla's A-Frame markup language, or by using JavaScript (hack around with Three.js!), HTML5, and/or WebGL in the vein of web experiments recently put out by Chrome and Mozilla. Developing for web has the convenience of using a smartphone as the display, so you won't need an expensive headset starting off. You also won't need to compile or package any code, and can easily share your creations with your friends who also own smartphones. If this sounds like a lot of work, maybe try the easy-as pie VR scene editor Vizor, which allows you to design VR imagery on the computer and then view it from mobile.

Once you've chosen an engine or web application, the next step is to get familiar with it. Learn the basics of whatever programming language your tools use -- whether it's C++ and Blueprints Visual Scripting(UE4), C# (Unity), or a custom markup language for web applications. If you're developing for Android, download Android Studio and try deploying a basic app. For Cardboard and Unity, check out Google's SDK.

The /learnVRdev wiki has links and resources that you will find useful when trying to learn how to use an engine. It's best to follow through with some tutorials to get a feel for the engine, how to manipulate objects in space, and so on. Both Unity and Unreal offer built in VR support, so you can preview your creative works directly in VR!