Quick guide to your Virtual Reality engine

Olaf Tomalka
4 min readJan 31, 2017

--

Unreal Engine editor workspace

With the advent of Virtual Reality it soon became obvious that game engines, specifically designed for the creation of deep and rich game worlds are perfectly suited to this new frontier. Not even games anymore, but any application that strives to immerse the user needs to have it’s own world where the customer can operate. Worlds themselves are now becoming interfaces and entrance points into your product, thus the need to properly weave and present them.

Now, unless you’re an AAA developer and willing to spend a couple of millions just creating the engine, before you could even start making your application, your best bet is to use something already existing and supported on the market. 3 most popular and best game engines that have VR support out of the box are:

Sadly, with latest Crytek’s cash flow problems and lack of support from main VR headset creators (Oculus Rift, HTC Vive and Google’s Daydream), I would advise against CryEngine, even if by itself it’s a very high quality product. That leaves us with Unity3D and Unreal Engine. Having experience with both of them I believe that they’re suited to very different goals, with varying pros and cons, so it’s important to choose the one best suited for your specific needs.

The main reasons I would go with Unity3D are for the development speed, having low budget or the project not being the main source of revenue. Unity3D was the first engine that strongly catered to indie developers. With that came the ease of use. Developers, designers and all people working with the engine can get up to speed very fast, with it’s low entry point and easy to understand programming environment. Such ecosystem gathered quite a community around the engine. There’s a plethora of plugins that already solve your problems cheaper than solving them in-house, there are highly active forums that more often than not have a discussion about the issue that you’re currently having.

Your developers are going to be visiting those forums quite often because, woah, Unity3D does have a lot of issues. With the company’s developers spread thinly and fixing bugs across more than 25 platforms that they support, while still having to provide additional features, some issues are left unfixed for quite some time. The quality of the product is also not on par with expectations in some places, with features finished halfway and left to wither. And you’re left stuck with a huge blocker, unable to continue because your platform is not a priority right now. Many of the problems are worth fixing and features finishing in-house, but that requires big money investment for the source code license which would allow your developers to unblock themselves.

All in all Unity3D is better suited for projects that could be compared to sprinting. With the engine being the easiest to use, you will finish your project the fastest but if you need to work with that product for more than a year, Unity will rear it’s ugly head.

Unreal Engine, on the other hand, is a good choice for projects that are similar to marathons. Being directed to bigger customers, Epic Games (creators of the engine) spent more time thinking out the architecture of the engine which allows for more power to you while being a lot more maintainable in the long run. VR still being bleeding edge means that sometimes there’s no existing technology that solves your problem yet, and so you need to write one yourself. Unreal’s freely available source code is a huge plus in that situation. We have chosen Unreal ourselves and already had the need to dig inside the code of the engine, fixing issues which would block us on Unity. Not being stuck on other company’s whim also provides better predictability when your milestones will be completed. One thing I personally enjoyed, is deeply integrated multiplayer networking inside the engine, making social experiences (this is where VR really shines) extremely easy.

On the other hand with maintainability and predictability come some trade offs. The most important ones are steeper learning curve and thus the need for better qualified programmers. Also in my experience the project advances slower compared to Unity, at least at the beginning. Because of the previous targets of Epic Games, community for Unreal is smaller compared to Unity, with the engine used primary in bigger studio which aren’t prone to share their experience freely. There are less plugins on the marketplace and issues are less often discussed and so you need to come up with your own solution instead of relying on the combined experience of the ecosystem.

We have chosen Unreal Engine because it was a better tool for our project, and we’re happy with the choice. One thing we didn’t expect was that first party VR priority for Oculus and Vive is Unity3D due to their community size, and so Unreal Engine users get their newest goodies a bit later. It probably isn’t a problem anyways, since studios using it often have the resources to implement new stuff themselves. Still, please don’t follow in our steps blindly. Use the correct tool for the job.

--

--