The full version of this post is originally published in Visartech Blog
Most of our clients want to publish their interactive app or game on multiple platforms, to increase their market accessibility. At the same time, most interactive apps and games require some 3D or 2D graphics, animation, effects, or other interactivity. All this makes Unity the best fit.
Of course, Unity has competitors. We’re often asked, “Why Unity and not Unreal?”. Recently another question became popular: “Have you tried Godot?”.
The answer is yes, we’re aware of the other engines: Unreal, Godot, CryEngine, Amazon Lumberyard. We’re keeping an eye on them as each of them is progressing. However, they all have drawbacks that are crucial for our business.
Unity is taking the lead in the niche. Although let’s check what others have to offer.
The biggest benefit of Unreal is its graphics. The target for this engine is AAA games. So it’s ready for AAA graphics out of the box. Also, it has built-in tools for multiplayer which is convenient for making such games as Fortnite (that has been developed with Unreal Engine).
However, “the best for AAA games” doesn’t mean the best for interactive apps or games in general.
Here’s the list of Unreal limitations:
- No support of the Vuforia AR platform (which means some AR features are impossible to implement).
- Less convenience for 2D game development than Unity offers.
- Poorer optimization for mobile (poor performance on older mobile phones and bigger binary size).
- A mandatory license that requires you to pay 5% of your product revenue to Epic Games (Unreal Engine developer).
- More expensive development requiring extra development time, a bigger team, and far expensive specialists.
Godot is a free and open-source 3D/2D game engine that evolves really quickly. It already supports 2D and 3D, has a convenient editor that can compete with the Unity editor, supports the physically-based rendering, etc.
Godot is literally breathing down the Unity’s neck.
However, Godot still has flaws as it is:
- Not as mature as Unity. It has fewer features and they are not as advanced as Unity’s ones.
- Open-source and doesn’t have a public company supporting it. In case of problems, there’s a risk that we’ll need to get into the engine code and fix the bugs ourselves.
- Not officially supported by VR and AR platforms, as well as by lots of other 3rd party tools.
- Having its Asset Store with less premade tools and assets compared to Unity, resulting in less development speed.
CryEngine & Amazon Lumberyard
CryEngine is a popular AAA game engine used for games like Crysis, FarCry, etc. Amazon Lumberyard is an Amazon’s AAA engine based on CryEngine. Both are pretty solid for AAA game development, same as Unreal Engine.
However, the same as Unreal Engine, they support fewer platforms and tools, have poor support for AR, and are more complex for development.
Unity is the 3D engine that we currently use for interactive apps, game development, VR, and AR apps in 90% of cases.
Why Unity? Why don’t we just make a native iOS, Android, or Windows app, etc.? Here’s the answer:
We can create an app once and publish it for any of the platforms we need. With a “native” approach we would have to code separately for each platform thus increasing the cost and timeline drastically.
Unity has the most advanced and convenient tools on the market for both 3D and 2D graphics, animation, effects, etc. Also, it has a high-quality rendering. It lets us concentrate on designing and developing the best possible user experience instead of building low-level tools for graphics and animation. Which results in cost and time reduction.
There are other benefits, as Unity is:
- The most supported 3D engine by the 3rd party frameworks and platforms, including Vuforia.
- The best and the most convenient for 2D and mobile games. It was initially designed with mobile games in mind. It’s well-optimized for mobile platforms and supports even pretty old smartphones.
- Non-running for the share of your revenue. We just pay a monthly subscription of $125 per seat for the Pro version. This is very reasonable, compared to how it reduces the development effort, time, and cost.
- Easier to learn, since it uses C# as a scripting language (for example, Unreal uses C++ which is more complex). Also, the good thing about Unity is that it encourages the best practices among developers, by introducing the advanced programming concepts like ECS and making those concepts as easy to use as possible. It constantly cares about the simplicity of the engine, combined with top performance. All that helps to complete Unity projects with smaller teams and less development time.
- Of the same graphics level compared to Unreal, starting from the 2018.1 version due to the High Definition Render Pipeline (HDRP) or custom render pipelines. Having technical artists with corresponding expertise, we are sure to deliver AAA graphics in Unity within a reasonable amount of time and effort.
- Packed with multiplayer. Although in Unity we mostly use 3rd-party tools for it, like Photon, Gamesparks, or PlayFab.
Overall, Unity is the best choice for an interactive app, game, and VR/AR development, as:
- It is the most universal engine.
- All the third-party tools support it.
- There’s a large Asset Store with a lot of premade assets and scripts.
We are sure that with Unity we can complete any feature requests, even during development.
10% of Cases When We Don’t Choose Unity
Unity supports the biggest amount of platforms, comparing to other game engines. However, there’s one platform where it is not that great — the web. The Unity WebGL builds are way too large, so the web page loading time may take about 30 seconds or even more.
Additionally, interactive web experiences created with this engine don’t work in mobile browsers. It makes it impossible to develop games for messengers in Unity at the moment. (There’s a “Project Tiny” package from Unity that should enable this, but it’s in the preview stage yet and not mature enough. No support for C# language, only 2D is supported, etc.)
And What Works Instead…
Visartech is not solely a “Unity developers company”. To achieve the best possible user experience we select the right tools. Waiting for 30 seconds while staring at a progress bar is not the best possible experience. The same is the inability to utilize an interactive experience in a mobile browser.
That’s why we use the other engines for web interactive experiences or games, WebVR, WebAR, and Instant Games (games in messengers). Those are PlayCanvas, Babylon.js, and three.js.
Of all the three web 3D engines listed above PlayCanvas is the most advanced and convenient. It supports physically based, hardware-accelerated 3D graphics, same as Unity. It has built-in physics and tools for animation, GFX, etc. Its editor is almost as good as Unity’s one. At the same time, it has a tiny memory footprint of only 170 kb, which means that interactive web experiences developed in PlayCanvas are loaded within a couple of seconds.
PlayCanvas is our preferred engine at Visartech when it comes to interactive experiences or games for web pages or messengers.
Babylon.js is a very close competitor of PlayCanvas, with almost the same features. It’s also more popular since it’s free and PlayCanvas charges a $50/month/seat subscription fee. The only thing where Babylon.js is worse than PlayCanvas is its editor. It’s less advanced. Although while preferring PlayCanvas due to its convenience of use, we also have experience with Babylon.js on some projects.
We use three.js as a part of our Web Applications when we need to implement complex animations or interactive behavior related to 3D.
To conclude, we leverage:
- PlayCanvas for games or advanced interactive experiences on the web or in messengers, WebVR, and WebAR.
- three.js for simple 3D visualizations with less interactivity.
- Babylon.js in case if the client has an existing Babylon.js project.
Click here to read the rest of Visartech's story “Everything You Need to Know About Visartech Tech Stack — Part 1”: about the best technologies we choose as our frontend tech stack to develop any kind of application for any purpose.