Interactive App Development: The Perfect Technology Stack

Written by Slava-Podmurnyi | Published 2020/12/05
Tech Story Tags: unity3d | interactive-gaming | technology | full-stack-development | tech-stack | technology-stack | how-to-create-an-app | game-development

TLDR Unity is the 3D engine that we currently use for interactive apps, game development, VR, and AR apps in 90% of cases. Unreal Engine, Godot, CryEngine, Amazon Lumberyard are all good for interactive games, says Visartech CEO. The company is keeping an eye on them as each of them is progressing, but they all have drawbacks that are crucial for our business. With a “native” approach we would have to code separately for each platform thus increasing cost and timeline. It lets us concentrate on designing and developing the best possible user experience.via the TL;DR App

What is an interactive application? It is a type of a usual web or mobile app with interactive features that allows users to interact with content via gamification, VR/AR, and visualization.
In general, if some company provides an interactive mobile or web application to its customers, it is a great way to increase its market accessibility. Though it forms a question of what technology stack is behind this solution.
Most interactive apps 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 at Visartech are 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.

Unreal Engine

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

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

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:
Multiplatform
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.
Toolkit
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 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.

PlayCanvas

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

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 $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.

three.js

three.js is the smallest and most popular 3D library for Javascript. Unlike PlayCanvas and Babylon.js that are game engines with lots of tools for various game mechanics, physics, sound, etc., three.js concentrates only on rendering the 3D scenes inside webpages in a browser.
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.

To Wrap It Up

Selecting the right technology stack is a real challenge. It should be closely aligned with each project’s requirements. The wrong choice may result in cost and time losses. So leave it to professionals. A reliable technical partner will apply the ownership mindset and deliver flawless products with the most innovative technologies.

Written by Slava-Podmurnyi | Entrepreneur, CEO of Visartech Inc, a software development agency. 3D, VR/AR, AI @ www.visartech.com
Published by HackerNoon on 2020/12/05