Monday, 27 October 2014

Setting up my dev environment

Now that the Unity Free issues has been addressed, I couldn't wait so I started setting up my dev environment on my old dev laptop. I intend to use this to do the majority of my work. If the hardware specs can't keep up then I'll make use of my development machine at home instead as it's more powerful.

According to the SDK, an Intel HD 5000 should be powerful enough to run minimal demo's. Meaning demo's with the minimum performance requirement. If our project becomes more complex however we'll require more powerful hardware to get around latency issues and frame dropping. These issues could lead to problems including 'jitter' while moving and potential motion sickness. Dropping frames in VR, according to the Oculus Connect conference is a big deal when compared to traditional 2D screened games. Any frame drops are very noticeable and will detract from the overall VR experience in a large way. Something to keep in mind.

The SDK documentation lists the follow minimum requirements as a guideline:
  • Windows: 7, 8, or 8.1
    MacOS: 10.8+
    Linux: Ubuntu 12.04 LTS
    2.0+ GHz processor
    2 GB system RAM
    Direct3D10 or OpenGL 3 compatible video card.
My system specs are pretty close to these specs (2.6GHz dual core with 3 GB RAM, Radeon HD 4330). I'll have to keep an eye on performance while testing, deploying and using the engine. Worst case, I use my game dev environment I have set up at home and use my laptop as a glorified USB stick with software installed!

I now have the Oculus SDK, Runtime and Unity Integration up and running. With the first demo, compiled in Unity and run from the engine itself rather than the simple deployment demo. This means the next step I need to take is working on my very own simple demo project. I could, if allowed, reuse one of my old prototypes and just tweak it to work on the Rift. As I'm using a ready made game engine this should be fast and easy.

Demo in Unity editor

Demo up and running, ready for Oculus Rift!

To summarise, next steps are:
  • Build a demo project for familiarisation
  • Connect it to a Rift and see how it preforms with different hardware

Using Unity Free with Oculus Rift SDK (0.4.3 Beta)

After spending some time researching different options to get Unity Free working with Oculus Rift, it seems to have been unnecessary as I discevered an interesting tweet this morning about Oculus Rift 0.4.3 Beta and Unity support. But I did a lot of reading and this may prove useful to others.

Searching for a solution
I looked, briefly into piping in my own tracking data from the device into Unity, however this seems like it would be quite tricky at my current knowledge level and considering our deadline I did not think I'd be able to do this without more time.

I could also copy all the parts I needed for the Oculus Rift, into Unity Free but this would be a breach of the LIcense and as such not an option.

I started looking for third party software such as MiddleVR ( among others and this proved promising. However they did seem to briefly mention the Unity Pro requirement when using Oculus Rift but did not go into much detail. This was at least worth a try.

Next I thought we could get away with just using the 30 day Unity Pro trial. Even though it would not be ideal, 30 days should be enough to develop a prototype and deploy it. Especially given our deadlines. The drawback of this would be the project life cycle. As design and development have evolved it is important to take an iterative approach to implementation. With a 30 day limit I may have found myself holding off on starting development until the design team had a completed design. Or at the very least a near-complete design. This is not at all ideal for designers or for me, as in the real world an iterative approach has proven to be much more successful. Additionally from personal experience I try and steer clear of the Waterfall model of software engineering and development life cycles. This is due to the fact that near the end of that lifecycle, utter chaos always erupts. 

Iteration is also an important part of design work, as stated in the Art of Game Design, a Book of Lenses, "[...]The process of game design and development is necessarily iterative, or looping. It is impossible to accurately plan how many loops it is really going to take before your game passes all eight filters and is “good enough. ” This is what makes game development so incredibly risky [...]" (Jesse Schell, 2008). Without testing, experiencing and seeing how the moving parts connect, it would be nearly impossible to hit our goal of an interesting system. Unlike commercial systems that only need to accomplish a measured goal; an exhibition booth, game or entertainment system needs to be "fun". Which is not a measurable quantity, unfortunately.

If none of the options listed worked out we could turn to the University for guidance. As they are an advocate of Unity, they may have options for us.

A solution finding me!
However! As of three days ago, the amazing people from Oculus VR released SDK  Version 0.4.3 Beta. Which, in their patchnotes included the line "[...] Also added support for Unity Free in Unity 4.5.5 and up.[...]"

This was great news as this solved our problem! I am uncertain what limitations, if any, we still need to deal with. Come what may at least now I can make a start and try out the demos after setting up a development environment.

To summarise, now that I have a way to work with Oculus Rift in Unity Free:
  • I will attempt to install the Oculus Runtime, SDK and Demo projects
  • I will install the Unity Intergration along with the Unity Demo's
  • Run through the demo's, see how they work
  • Attempt to build a small test level and deploy it
  • Get my hands of an Oculus Rift for testing, this is going to be so cool!