Jumping into Virtual Reality Development

Hello and welcome to the Immersive Limit blog! My name is Adam Kelly, and I've decided to document my experiences getting started with virtual reality. It has been a dream of mine to create beautiful, lifelike virtual worlds for a long time and I decided now is finally the time to try it out.

Who is Adam Kelly?

Before I continue, I'll take a couple paragraphs and describe myself, trying to keep things relevant and not indulge too much in nostalgia. I think my journey really began when my parents bought our first family PC. It ran Windows 95 and I remember it came with an encyclopedia and a bundle of games. I was probably about eight years old (I'm 27 now) and got sucked into Memphis Math and Al Unser Jr Racing. So began my love of computers and video games.

My first game "console" was, believe it or not, a Nintendo Virtual Boy. I loved that thing and I Mario Tennis'd and Wario Landed my way through so many AA batteries that my dad had to special order an AC adapter within the first week. If you aren't familiar with Virtual Boy, let's just say it wasn't the raging virtual reality success Nintendo was probably hoping for. They canned it less than a year after its release. After that my younger brother and I saved up for and bought an N64, setting the Virtual Boy aside for something with a much bigger game selection that we could play together. I believe my mom sold the Virtual Boy for about $20 at a garage sale.

In high school I took an interest in digital music production, AutoCAD, 3D modeling, and programming. For a while I wanted to be a professional music producer, then I seriously considered going to college for 3D Animation before my parents deftly steered me toward Computer Science. I graduated with a CS degree from the University of Michigan in 2010 and began my career as a Software Engineer at Microsoft. I worked on the communication apps for Windows 8 and 8.1 for a couple years and then in November of 2013, my team hit the jackpot. We became part of the top secret project that was recently revealed: HoloLens. HoloLens uses some of the most incredible technology I've ever experienced to put holograms in the world around you. We're still highly secretive about it, so I won't be talking about it until it releases. For now, I'm focusing on virtual reality rather than augmented reality.

Discovering the State of Virtual Reality Content Creation

Anyone who keeps up with tech news blogs has probably noticed the increasing media interest in VR. Because of that, I knew about Oculus, Project Morpheus, GearVR, Google Cardboard, and that there were a lot of other companies exploring the space, but I really didn't know where to look for resources about getting started with content creation. It turns out there isn't much out there yet. Oculus is the standard development hardware and as for software development platforms, Unity3D (free for the non-Pro version) and Unreal Engine (free as of March) are the most active, so the best place for information seems to be oculus.com, unity3d.com, and unrealengine.com. For the latest developer news, I'd definitely recommend following @oculus, @unity3d, and @unrealengine on Twitter because they share awesome, inspirational stuff all the time.

Jumping In

I've had a bit of experience with Unity due to a recent foray into game development (that hasn't yielded any completed projects), but I didn't really know much about Unreal Engine. I've seen some really cool looking games made with Unity, but the games made with Unreal Engine look incredible.  I like both platforms and I fully expect to explore both with VR, but after going through a tutorial on level design in Unreal Engine, I decided that was where I wanted to start. Here's that tutorial I started with: https://www.youtube.com/playlist?list=PLZlv_N0_O1gak1_FoAJVrEGiLIploeF3F

I really made the plunge when Oculus released their recommended specs for when the consumer version of the Oculus Rift releases in 2016.

For the full Rift experience, we recommend the following system:
• NVIDIA GTX 970 / AMD 290 equivalent or greater
• Intel i5-4590 equivalent or greater
• 8GB+ RAM
• Compatible HDMI 1.3 video output
• 2x USB 3.0 ports
• Windows 7 SP1 or newer

From: https://www.oculus.com/blog/the-rifts-recommended-spec-pc-sdk-0-6-released-and-mobile-vr-jam-voting/

I built a media/gaming PC about a year ago and it was pretty close to those specs, except for the graphics card. Time to upgrade! I had a GTX 770, and that worked fine for Skyrim, so I figured the 970 would be a good choice, especially since the GTX 980 was at least $100 more. The first thing to note is that these cards are BIG. This is the first time I've had to measure my PC case to make sure a graphics card would actually fit. The one I ended up getting was the MSI GTX 970 which is almost 11 inches long and 5 inches wide. Here's a picture of it humming along happily in my PC case.

gtx770incase.jpg

 

The next step was to get the Oculus Rift DK2. I headed over to https://www.oculus.com/dk2/ and ordered one. It took about five business days to get to me. The night before it was due to arrive, I installed the Oculus Runtime for Windows and the Oculus SDK from https://developer.oculus.com/downloads/ and read some of the documentation.

The documentation is pretty disorganized at this point. While I would expect the setup portion to come first, it actually was several pages in after a lot of info about changes since the first dev kit. I have no doubt that Oculus will improve their documentation for when the consumer version launches, but it just emphasized what I've been seeing up until this point: what information there is to be found about VR development is scattered at best. What was most interesting about the Best Practices Guide was how nearly everything had to do with user comfort. Many of the game mechanics we've been using for years with a flat screen and a controller (or keyboard and mouse) make users incredibly uncomfortable. I was pretty nervous about this, given that I'm very sensitive to motion.

Unboxing the Oculus Rift DK2 and Getting Started

oculusDK2.jpg

The Rift came in a nice box with a ton of individually wrapped cables and pieces. I'm sure there are hundreds of unboxing videos on Youtube so I'll spare you the details. Basically once you have the right software installed, all you have to do is plug all of the cables into the right spots, hooking it up to your computer. The Oculus Configuration Utility appears, you have to add a User, and then you can click the button for "Show Demo Scene".

I HAVE A VIRTUAL DESK IN FRONT OF ME. Incredible. In my excitement to explore, I pretty much immediately left the spatial tracker boundaries (the spatial tracker attaches to the top of your PC monitor and looks like a webcam). It broke the immersion very quickly. Fortunately I'm almost positive the consumer model will have built in head tracking. It's an absolute necessity, so I hope it's excellent.

Alright, so the desk was cool, it made me a little sick when the head tracking was lost, but otherwise not too bad. Now I wanted to try out something in the Unreal Engine. I opened up the half-finished Office scene I built in the tutorial I mentioned earlier, selected the drop down list from the "Play" button, and picked VR Preview.

Now this is the part that really blew my mind. IT WORKED ON THE FIRST TRY. No extra setup required. I picked up the Xbox 360 controller I had hooked up to my PC and was able to move around in the environment. It looks awesome, even without much work. This scene only has one light source and uses all sample materials, but it looks great!

Now I forgot to mention that it was about 83 degrees F in my apartment, so that plus using First Person Shooter controls to float around a small, unfinished, virtual reality office made me feel pretty nauseous. I could only stand a couple minutes. Time for a break to have some dinner, rehydrate, and watch some flat TV. (My fiancée and I decided to get caught up on Silicon Valley. Amazing show.)

Overall Thoughts

Overall, the setup process was very easy. It mainly consisted of following instructions and installing some software. It's clear that the big hurdles are still ahead. Primarily, I'm concerned with motion sickness. If it affected me in a big way in matter of minutes, I know other people will have trouble with it too. The good news is that positional tracking is already a reality, it just needs to be iterated upon in this device. That will help a lot. I'll be playing around with best practices and will share my findings. Stay tuned for more and thanks for reading!