Unity is a gaming engine of choice for 61% of developers and the company is constantly evolving. Recently, Unity acquired Weta Digital (for their VFX tools for artists in particular) and Ziva RT (for tools that allow crafting realistic character designs) — it’s fair to assume we’ll see more of Unity in the future. So, is Unity good?
What Is Unity Good For?
Unity is an engine for creating console, computer, and mobile games. The engine is compatible with various operating systems like iOS, Windows, Android, Linux, and macOS. Some of the most popular games in VR, AR, 2D, and 3D games were created with the help of the Unity engine:
- Pokémon Go;
- Fruit Ninja VR;
- Among Us;
- Fallout Shelter;
Unity is also a first-thought asset for indie games. It’s been around since 2005, is free, and helped thousands of indie projects to easily jump into the gaming industry. Since then, Unity has gathered a strong community with a combined following of over 394 thousand members on Unity 3D and Unity 2D Reddit, become a subject of many discussions on Crunchbase, and, in general, become very popular. Now let's talk about how good is Unity. Is Unity good for 2d games? Is Unity good for mobile apps?
We love the engine a lot — that’s one of the main technologies we use for game development. What can it do and why do many adore it so much — let’s dive in.
Creating Cross-platform AR/VR Applications
Unity provides an extensive toolset making AR and VR games — particularly, Unity MARS and AR Foundation.
Collaborating with Microsoft, Unity created over 91% of the VR applications for HoloLens. Now, engineers use Unity to build for HoloLens 2, work with Windows Mixed Reality, and, in general, build Windows-based XR experiences.
Mobile Games and Apps
Is Unity good for mobile games? Well, yes: it was partially built for them and inspired by iOS early features. From first-person shooters like Guns of Boom and Call of Duty: Mobile to fight-based RPGs like Shadow Fight to puzzle games like Tiny Bubbles and Monument Valley — Unity is a foundation for over 70% of the best mobile games on the market.
Apart from that, engineers create beautiful mobile apps for businesses and industries for Unity: e.g., Nano Simbox (an app for scientists that visualizes molecules in AR and VR) and Kavtek (a tool for retailers, interior designers, architects that their clients use to place 3D furniture models into their homes.)
With 1.5 million active developers and 2.7 billion active users monthly — Unity is the engine that powers over 40% of console games.
It enables creating, launching, and maintaining games for consoles like Xbox, Nintendo Switch, and PlayStation. Some of the most popular games built with the engine are Iron Harvest, Cuphead, Ori, Ghost of Tale, Hollow Knight, INSIDE, and Genshin Impact.
Why Is Unity a Good Game Engine
So, what are the main pros of Unity? What makes unity a good engine for game development?
Unity works using C#. Engineers can use any IDE — e.g., MonoDevelop — or even Notepad to use the engine. Raider and Visual Studio Code, though, provide support and plugins for working with Unity specifically. The engine itself runs on C++ — it’s easily compatible with DirectX and OpenGL, which provide graphic API for games.
C# is streamlined, easy to learn, but pretty strict — so it’s rather hard to program yourself in the corner, which is good for development pace. Languages that are compatible with .NET can be also plugged into Unity’s code via .dll libraries. The platform utilizes .NET platforms to make sure your game can be used for multiple hardware configurations — that’s a plus, too.
Also known as instance templates, prefabs allow game developers to store and reuse already created GameObjects within Unity. It preserves all the values, configurations, and child components of these assets. The difference between regular templates and prefabs is that prefabs can synchronize objects' characteristics across multiple devices and scenes.
It's a useful tool for changing the appearance of the main character or NPCs’ animations across different scenes simultaneously. They’re also great for editing GameObjects across game’s environment (flowers, trees, lamps) or changing actions for different components (each time your hero shoots a monster, instantiating a corresponding prefab transforms standard magic attack animation into A Great Fireball.)
A Prefab system makes it very easy to edit your game and maintain consistency of its aesthetics, — and it streamlines teamwork.
Physics, Graphics, and Animation
Unity provides a lot of tools that are useful when building and testing a game's physics, graphics, and 2d/3d scenes. The platform integrates with object-oriented 2D and 3D engines like Box2D and Nvidia PhysX to ensure that objects correctly behave when impacted by gravity and collisions.
Unity is known for its highly-customizable graphics and animations. Is Unity good for 3d games? Well, Unity:
- Provides full control of animation weights at runtime;
- Blends shapes for facial animations;
- Allows event calling from within the animation playback;
- Helps create retargetable animations;
- Has sophisticated state machine hierarchies and transitions.
So the answer is yes. There are also Scriptable Render Pipeline, its High-Definition Rendering and Universal Render Pipelines.
SRP as a tool is Unity’s built-in modular rendering system — it helps customize render loops via C# scripts. It was built to extend the features of the platform’s default renderer. SRP’s two pipelines — HDRP and URP — that focus on rendering games for different hardware.
HDRP is for PCs, Xbox, and Playstation, and is built to achieve super high graphic fidelity and the best graphics.
URP is a go-to render pipeline, perfect for mobile, web, consoles, and PC. Its graphics are also good, but the renderer is more focused on the game’s performance. Both include Shader Graph and Visual Effect Graph, which artists can use for designing amazing shading and particle effects. Both of them can be used for building VR experiences, too — and, in the case of URP, the amazing graphics capabilities they provide come without compromises with performance.
Troubleshooting and Real-time Editing
Developing with Unity means you will have tons of online tutorials and documentation available for free: YouTube videos, open access GitHub projects, lessons provided by Unity itself Unity Learn, etc.
Asset Store is another important resource for building games with the engine — developers find ready-to-use solutions for the majority of gamedev tasks: from small modules for analytics and authentication integration to constructors for RPGs and match-three games.
Some tools from Asset Store are being integrated into Unity’s standard package. In the past, the engine didn’t have built-in visual scripting tools, but with the 2021.1 version update, they’ve integrated it with Bolt. It’s a tool that has been one of the community's favorites — a gamedev tool that doesn’t require extensive coding knowledge. Developers edit macroses in-game and the graphs update in real-time.
But There Are Some Common Pitfalls
The Unity game development engine is by no means perfect (there’s nothing perfect in gamedev, honestly). Let’s discuss the most common Unity drawbacks.
UI Features Are Lacking
Unity’s UI lacks some out-of-the-box optimization features and oftentimes the program feels very raw. Of course, Unity has an extensive Asset Store you can use to buy whatever you need, but that’s just not the same ‘cause of time & cost requirements.
As for in-game UI, there’s also a UI Toolkit developed by the company, with a debugger, builder, and samples for controls — but engineers, too, often find it lacking.
Bad Code Practices
Some part of the gamedev community thinks Unity enables bad code practices and it’s hard to transfer programming skills necessary to develop games from Unity to other engines. Unity, due to its evolution from a tool that was focused on small studios and indies, provides engineers with multiple ways of doing things, and some of them are odd and sloppy. They can be avoided if you know about pitfalls — know to track your memory leaks, for instance.
Threading in Unity
It’s not possible to use native objects in Unity as main threads and, therefore, impossible to multithread on them. Splitting the performance-heavy operations within games into multiple processes that can run at the same time but still don’t overload the hardware — that’s multithreading — can be pretty useful for optimization. It’s really difficult to multithread in Unity, balance the load and direction of context switches, etc. Unity’s C# Job System fixes that, though.
Using Modules in Unity
As any other cross-platform tool, Unity can’t cover all specific features of each of the 20+ platforms it allows writing games for. In 5% of tasks connected to platform-specific development (e.g., crafting games for mobile), programmers need to know the native languages of these platforms and know how to connect the engine to their native modules.
What are Unity's Strengths
Over the years, the Unity team has made multiple updates to develop its platform. Here are some of the advantages of using Unity:
Cross-platform development. Game developers use Unity to develop titles that run on more than 25 platforms and distribute them via one hub.
High development speed. With Unity’s prototyping-oriented toolset and tools that allow developers to write highly performative code for highly performative games quickly (like Burst), Unity is great for streamlined programming.
Simplicity of prototyping. Coming from the above, prototyping with Unity’s ready-made assets, features for quick release, QA tools, etc. is very quick. That’s essential for the game’s testing among players and showcasing to publishers and investors.
Debugging. Unity has an extensive pool of debugging tools — Visual Studio in particular allows engineers to track bugs that appear in play mode, and easily find them via the Attach to Unity and Play feature, inspect them, and fix them.
Custom tools. Multiple tools for multiple purposes — like prefab systems or rendering pipelines — make Unity a fitting tool for streamlined, quick prototyping.
Asset store. Developers have one-click access to numerous pre-designed 2D/3D animations, 3D models, and tutorials.
The Challenges of Working with Unity
Here are some of the common challenges game developers can bump into while working with Unity:
Templates. Unity doesn't offer templates for the most important in-game features like the settings menu.
License. Unity is a free engine until your game makes $1 million. Unity Plus, the engine’s premium version, is $15/month. Additional tools like Unity MARS are also paid, though, as are lots of tools from the Asset Store.
Memory. Unity games require more memory and have issues with their garbage collectors.
Unity App Monetization Opportunities
Unity offers some of the best tools for monetizing apps. Thanks to Unity Ads, Unity mobile apps increased their revenue by 8% in 2020 alone. 50% of those were in-app purchases (IAP).
IAP Promo and Analytics allow developers to easily create user-specific in-app promotions and get detailed data on their revenue. The Cross Promo feature allows promotion integrations across various platforms — cross-platform promotions are good for increasing players’ retention and shifting your audience to other game platforms.
Verdict: So Should You Use Unity?
Is Unity a good game engine? Well, definitely. First and foremost, it’s a tool that was built to create mobile games — so it’s perfect for them. Unity would also be great for your new indie game, AR application for an exhibition, and large-scale multiplayer like Genshin Impact.
Is Unity Game Engine Dying?
As of 2022, Unity, with its brand-new acquisitions and new versions, is getting better & stronger on the market.
Is Unity Good For Developing Games?
Yes! It has its drawbacks and challenges, but every tool does. It’s great for creating 2D/3D games.
Does Unity Require Coding?
The real honest-to-god answer is yes. Knowledge of C# makes development with Unity very much easier.
Is Unity Better Than Godot?
Godot is young and its functionality is much more limited than that of Unity. The majority of engineers would pick Unity.