VR Development: Getting Started

Jan 4, 2015

A DK2 is born

OK, so you have a shinny new Oculus Rift Development Kit 2 (DK2) and you’re ready to start development, or you’re interested in buying a DK2 and want to understand what it’s all about before you do. First, let’s level-set on some basic background about the hardware. Oculus, the current leader in the VR market may be a new company with a great vision and talent, but VR itself is not new.

[Edit: Since this post was published, the HTC Vive has been released to wide adoption alongside the Oculus CV1. Development for both hardware platforms is the same when using the development tools highlighted below, and DK2 can be interchangeable with any hardware HMD.]

The early prototypes were created decades ago by some of the brightest minds of the time. What has changed today is the components required to build a VR Head Mounted Display (HMD) are now off-the-shelf, cheap, compact and ready to go. Modern smartphone parts (accelerometers, OLED displays, touch sensors, mobile processors/GPU) are what make up 90% of existing HMD hardware.

The section about VR starts at 47:39 in the timeline.

The latest work these last years has been focused on integrating these tiny light-weight components together into new complete platforms. Optic lenses, software drivers and motion sensing systems have been added to the same basic architecture from the early years of development. We just do it today at higher resolutions, using smaller components running at faster clock speeds. This is all done while only sipping power to do it.

We had a solid decade of smartphone improvements to capitalize on, and people like Palmer Lucky were smart enough to see this and get to work. He set up a Kickstarter that went on to become world famous in level of response. He proved not only is the technology possible, but also that people are ready and willing to throw money at a platform they believe is serious about quality. Even before the Facebook $2B acquisition, Palmer by his own efforts was an established rising star that hit a nerve with the public.

“…The Oculus Rift Kickstarter raised close to $2.5 million, and you just recently received an additional $16 million in funding on top of that…”[1]

Oculus DK2

We can expect many changes in hardware as the market matures and best practices emerge and are rolled back into consumer versions. That said, development kits like the DK2, are positioned to allow a developer a platform to create with, even if the final consumer version is not complete. Projects take time to develop. You need a minimal device to test your concepts with.

Having a head start with a device like the DK2 can be the difference you need to work through your development challenges to get your idea out first before someone else beats you to it. You can always optimize and upgrade your app later, as the CV1 is announced along with new feature/capabilities. You also need time to learn the related development tools and understanding of end-user expectations/limitations.

There are five main components required to make a modern game. you will need to get to know and master them to make anything useful and worth playing.

1) Developers, start your engines!

First you have to decide which game engine you want to use. This is an important decision because you will invest a considerable amount of time with it so pick wisely.

Unreal Engine 4 and Unity are both the leading development platforms in the industry to make games that already have VR integration. UE4 is the better of the two, but also harder to learn. Unity is not as powerful as UE4 but is really easy to use and get started with quickly. There is plenty of info already online from both vendors as well as user forums filled with people comparing pricing and features.

I use UE4 for my personal choice. At the time of this writing it is only $19 a month subscription for the complete toolset, but requires a 5% royalty for any sales you make over $30k. (e.g., $50k per $1,000,000)[2].

Unity is free but shaders and other high-end features are not included. Unity itself is $1,500 to own with no royalty, but relies on many plug-ins to fully function that sometimes don’t work well together. I hear stories of larger Unity project teams working more on glue to hold the engine together than the actual game logic. UE4 comes with full access to a single tool with all the bells and whistles out of the box. It also has better quality graphics and Blueprint logic system. In my opinion I didn’t want to start with Unity then have to start all over again with UE4 later.

Update 1/23/2016: Since the time of this writing, Unity 5.3 has come out, a huge improvement over Unity 4 making the choice even harder. If you are just starting out, Unity 5 is your best bet.

Unreal Engine 4

UE4 Blueprint system

If you are a new developer, or have little time to spend learning, then go with Unity. With a robust community, most problems are solved already on the forums. There is also a large Unity plugin marketplace you can add pre-canned items to your game. Not to mention getting started is free with the Unity Demogiving the developer the nice option to start without having to make a financial commitment! UE4 does not have a free demo at the time of this writing.

unity-3D

I do not want this to sound like I rant against Unity, it is a fantastic product and tool-set. In fact, so much so, UE4 copied most of what Unity had already established as an industry standard in radical shift in pricing model, interface design and ease of end-to-end development cycle to play test after making changes.

2) Create objects for your game world: 3D editor

Now that you have a game engine, you need a tool to create assets you will add to your game. These assets include all 3D models/objects used in your game world. I highly recommend Blender, which is free!. It is one of the be best free tools in the world, and by itself is a fantastic platform for creating. You can ignore most of the advanced features included and just focus on a simple core set of tools used to create 3D assets your game will use. Export those by saving as target file types to import into UE4 or Unity for instant use in your game.

Blender 3D graphics and animation software

3) Look and feel: image editor

Now we can make objects and add them to our game, we need a way to build the textures that are used as your object’s skin. This is why some new games play great but look bad, or old games have mods that make them look great, it’s all in the textures! Photoshop is the industry leader here, but Gimp is a free alternative.

Gimp

4) Now hear this: sound editor

You need a sound editor to create music and effects that will work with your game. Audacity is free and fantastic. Like an image editor, but lets you cut, copy, paste and filter waveforms instead of pixels. You can also use Audacity to record or import existing files and shape them into new unique sounds.

Audacity

5) Best Practices Guide:

A core part of Oculus’s focus has been on research into standards for world-class VR and has published a Best Practice Guide for developers. Still a work in progress, the manual has a good amount of information. The core take-away is don’t break immersion and make sure your game does not suffer from frame drops or other negative sensory inducing states. The last thing you want to do is make your player sick.

My best advice is dream big, but start small. Let your ideas flow but when you sit down to actually start working, before you try to start designing that slick new idea, make sure your system is setup and ready first.

Start with a system check. You just want to focus on getting set up end-to-end. Install all required software, DK2 drivers, etc. The idea is to test that everything works by itself first, then move to the next step and use them together.

The worst thing to happen is you think your are done setting up and start creating to find technical issues later. Nothing drains creativity and will to work faster than tool-chain issues. The actual learning curve is enough. You want to focus on learning and creating, not troubleshooting so get this bit of setting up out of the way first.

Start a default project with player controls in your game engine, then test your connection with your DK2 by running the game in stand-alone mode. In UE4, once the game window opens you hit Alt-Enter to send it to the DK2. Walk around the level, make sure the controls work. How is your facing position? head movement in game? If they don’t work right, spend time fixing them, you’ll thank yourself later.

After that, I would suggest following tutorials listed below to learn how to use your game engine of choice to create levels, setting up a player Actor and starting position. Once you get comfortable there, move on to create a new 3D object in Blender, export and import into your game.

Introduction to the UE4 Editor – 1 – UI Overview

After learning the basics, create a sound file and import it into your game. Then move on to textures and music. Then use the game engine to logically use them all together into simple forms of game-play. Slowly build on each skill and assets you successfully integrate. Set up trigger bound objects that will trigger events when a player walks over or shoots them. Turn on and off a light, add integers, show an explosion or play a sound. If you can do that you are well on your way to making whatever you want.