Development

VR Developer’s Journal Part 2: Content for VR Games & Experiences

November 28, 2018

The second stage of my VR Developer’s journey began in 2016, when Vive launched with a bit of a problem. Well actually, more that something was missing: content to play.

The VR ecosystem in general at this time lacked software games and experiences that a user would love to install and play on their shiny new VR headset. Unfortunately, there were just not that many available. Plus, most of the experiences were incredibly short and/or built by indie developers (of which I am one too). Overall, the quality and fidelity of these experiences was lacking at best.

This is completely understandable for such a new technology movement, and there were of course exceptions – the big players like Valve and HTC had supported a small core group of developers ahead of time, plus a few other decent software companies were involved already.

So there were some professionally created, polished experiences available including The Lab, Tilt Brush, Job Simulator, Fantastic Contraption, Zombie Training Simulator, and Windlands (you need an iron stomach for this one!), to name a few.

These were a lot of fun to play through whilst they lasted, however the lack of quality content was real and certainly made VR adoption slower and more difficult.

Thus, at the beginning of this latest VR incarnation, it was really the early adopters buying and getting into VR. Mainstream consumers would have to wait another year or so for other recognized software development companies to start releasing bigger VR games and experiences.

It was during this time – after the initial VR ‘honeymoon’ phase had started to wear off – that I discovered VR development and Unity.

VR Consumer or Developer?

At Fresh, I’m a senior software developer. My core skills are for web and mobile, I enjoy building software, and I’m fortunate to work at a company that offers creative and interesting projects that challenge me. So of course, having this new VR hardware and a lack of content got me thinking, “I wonder how difficult is it to build and code a VR software experience?”.

Surprisingly, I found that it’s not that difficult. If you already have some programming and/or creative skills, you’ve got a good head-start. That said, it’s one thing being able to build ‘something’, and it’s another thing entirely to build something of quality. That’s the real challenge, and overcoming it takes a lot more time and dedication.

To build a game you need a game engine. This might sound obvious to some, but initially, I didn’t have a clue about where to start! I started doing research to understand the different game engines. There are some amazing game engines available to indie developers, such as Unity, Unreal Engine, CryEngine, Amazon Lumberyard (which is a fork of CryEngine) and GameMaker, to name but a few.

A game engine is basically a software environment / framework for developing games and interactive experiences. Usually, it comes with an Integrated Development Environment (IDE for short), that gives you a more accessible, user-friendly way to interact and work with the underlying engine.

The game engine handles the graphics and rendering, plus various systems and subsystems that work together to process game-logic, simulate physics, deliver models and assets, play sound and music, and much more.

Game engines provide developers access to the underlying systems via software scripting or programming in a supported code language. Components, objects, and APIs aim to give authors complete creative control.

Eventually, my game engine shortlist was reduced down to two entries. These were Unity and Unreal Engine. Feature-wise, both looked awesome and supported VR development, although at this early stage the VR support was fairly minimal and there would be a lot of R&D ahead. Doing a full feature comparison is beyond the scope and purpose of this article; however, I’ve highlighted some key points that I considered in the table below.

Please note: the following points are subjective and are based on available game engine features back in early 2016. Both Unity and Unreal Engine now offer better support for VR / AR games and experiences.


Unity

Graphics:

Coding Language:

Assets & Content:

Virtual Reality Support:

Difficulty:

  • Good entry point for existing software / web developers, especially if you come from a Microsoft .NET / C# background.
  • Lots of assets and code available, easier to adapt and use.

Unreal Engine (UE)

Graphics:

Coding Language:

Assets & Content:

Virtual Reality Support:

  • Supports VR, no Forward Rendering yet (arrived November 2016).
  • Basic VR support built into UE for SteamVR, Oculus and more.
  • Virtual Reality project template available in Blueprints.
  • No additional/notable 3rd party assets available at this time.

Difficulty:

  • Higher-level / more advanced than Unity, the learning curve is steeper.
  • Programming with C++ is more complex compared to C#.

My opinion

I really liked the Unreal Engine graphics/rendering “visual look” (I’ve played a lot of Unreal games) and wanted to develop using that game engine. However my background as a Microsoft .NET web developer has equipped me with skills such as coding with C#, and so Unity was looking to be the best candidate from a coding perspective. Plus, with the additional SteamVR support and amazing VRTK asset for Unity, the entry point to VR development should be easier.

Finally, I decided that Unity was the game engine of choice for my project. Was this the right decision? Time would tell.

…to be continued.

Will Lingard

Software Development Director

You might also like...

21

Aug.

VR Developer’s Journal Part 1: Getting into VR

This is the first in a new series of Fresh blog posts about Virtual Reality (VR). Eventually we’ll be diving into the more technical aspects of software development for VR; however, this first blog post is more of an introduction, to give you some background and better context to what follows. It’s important to note … Continued

26

Jun.

How to Debug Django Apps

How to Debug Django Apps In the JavaScript world, my primary debugging workflow consists of dropping a debugger or a console.log into the code and seeing what happens in the browser’s developer console. This methodology has always worked effectively for me. However, I have started to work more with Python and Django recently, and though … Continued

25

May.

Adventures in Optimizing Performance

Even if a programmer is very comfortable with their codebase and their technology, they won’t always be correct in determining what portions of the program are running slow. To that end, the first step for optimization with an existing system is profiling or measuring the code base. This ensures that the critical parts slowing down … Continued