Virtual reality (VR) in the world of software and development is still new. No one truly knows what to do and are still experimenting around. There are no real standards on how VR games or experiences should be like besides it does not make you feel sick. Currently, it is still uncertain what direction VR will go as it is still in the early adopter phase.
Various virtual reality headsets
As of writing this article, only the HTC Vive, Oculus Rift (CV1), and Razer OSVR made it out of development phase and moved into consumer phase. It is still expensive to use the headset, requiring graphics power only high tier computers can provide. The PlayStation VR (PSVR) is coming out soon in 2016. All of these headsets fall under the “high tier” VR category, except the PSVR. The PSVR is in the mid-tier range for VR.
For low tier VR, there are the Samsung Gear VR and Google cardboard. There are also many other third party headsets that work just like the Google cardboard, but with padding and straps.
Here are some photos of VR headsets:
Samsung Gear VR
Oculus Rift (development kit 2)
HTC Vive
Photo credit: TechStage via VisualHunt.com / CC BY-ND
Razer OSVR
Photo credit: pestoverde via Visual Hunt / CC BY
PlayStation VR
Photo credit: vernieman via Visualhunt / CC BY
Starting development for VR platform
Now that you have a grasp of the major VR headsets out there, you are probably wondering how to start development for them. I am going to provide you with how I started off with VR development. Specifically, I will cover development for the HTC Vive and Oculus Rift CV1.
Requirements
Software
To start development for VR you need on the software side:
- Oculus SDK & runtime
- SteamVR
- Epic Game Launcher
- Unreal Engine 4.13.x
- Visual Studio 2015
The single most important aspect of any VR experience is that it does not make a person feel sick. Most common problem is vertigo, which is when a person feels like they or objects around them are moving when they are not. In a VR experience, vertigo usually results from low FPS (frames-per-second).
In order to get a VR experience publish, it must meet a minimum requirement in FPS. Here are the minimum FPS requirements:
- HTC Vive — 90 FPS
- Oculus Rift — 90 FPS
- PSVR — 120 FPS
These are definitely some steep requirements to satisfy. It will be especially tough on the PSVR considering it does not have the power of a high-end desktop graphics card.
I plan to talk about ways to achieve the FPS requirement sometime in the future. Currently, I am still experimenting on how to reach these numbers myself.
Hardware
To develop your VR game or experience, you need to have a powerful computer. You will need a graphics card that is at least as powerful as the Nvidia GTX 970. The CPU should also be at least the equivalent of an Intel i5 quad core or better.
Development Environment
From my research, the two most common engines for VR development are Unity and Unreal Engine (UE). I am personally using UE, so that is what I will talk about.
I recommend starting VR development with UE version 4.13.x (latest version as of this post) because there is much more VR support provided. This version of UE has VR template already setup for you, which is a nice start.
For developing your game or experience, UE offers three different ways. They are:
- Pure blueprints (BP)
- Pure code (C++)
- Mixed (BP and C++).
There are advantages and disadvantages to each way. Here are some advantages and disadvantages from my experience working with each method.
- Pure BP
- Advantage: easy to deal with if you are not a coder, good for fast prototyping
- Disadvantage: slower than c++ implementation
- Pure code
- Advantage: gives you the most control
- Disadvantage: longer development time, lack of documentations and or resources for C++ functionality specific to UE
- Mixed
- Advantage: flexibility
- Disadvantage: must handle cross communication between C++ and blueprint
Which way works best for you, would really depend on what you prefer. Try each of the methods and see which one you find most natural for you. I went with the third method because I like the flexibility it adds to the project. Sometimes, implementing a functionality in blueprint can save you hours of work in C++.
I hope I have given you an idea on how to start your VR development. If there is a topic related to VR you wish for me to talk about leave a comment.
Additional Sources:
- UE4 Overview
- VR development tips & tricks
- Blueprints optimization
- Great talk about components of immersive experience