Virtual Reality — Starting Out


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

gear_vr

Oculus Rift (development kit 2)

oculus_dk2

HTC Vive

htc_vive

Photo credit: TechStage via VisualHunt.com / CC BY-ND

Razer OSVR

razer_osvr

Photo credit: pestoverde via Visual Hunt / CC BY

PlayStation VR

psvr

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:

  1. Pure blueprints (BP)
  2. Pure code (C++)
  3. 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:

 


About Steven To

Steven To is a software developer that specializes in mobile development with a background in computer engineering. Beyond his passion for software development, he also has an interest in Virtual Reality, Augmented Reality, Artificial Intelligence, Personal Development, and Personal Finance. If he is not writing software, then he is out learning something new.