May 22, 2019
How Good is Unity for Game Development?
Unity is a great tool for developing both single and multiplayer 2D and 3D games for over 25 platforms but there are some things to keep in mind when it comes to large team collaboration and triple-A game development.
Even though Unity is a perfect cross-platform game development engine for small and mid-sized games, and it does provide decent capabilities for building more competitive (AAA) games, it still has some serious drawbacks that we will discuss in this article.
Why Unity is good for game development
As the main Unreal Engine competitor, Unity game development engine is a very powerful tool which has at least five pillars that make it truly great:
- Fast prototyping and development process compared to other engines
- Multi-purpose built-in functionality (editor, scripting, graphics & physics, etc.)
- Portability to over 25 platforms including VR, AR, and MR devices
- Growing community (documentation, support, forums, asset store, etc.)
- Flexible monetization opportunities for mobile devices (Unity Ads)
Language support
Currently, Unity supports two main programming languages: C# and UnityScript (JavaScript for Unity).
However, since 2017, Unity is smoothly deprecating UnityScript. UnityScript can be converted into C# using the conversion tool that Unity is actively upgrading.
Just for your information, with the release of Unity 5.0, in 2014, Unity has dropped the Boo support (Python-style-like language for .Net) excluding its accessibility from the menu.
Anyway, the main functioning language in Unity is C# which is perfect for performance-driven games thanks to the automatic memory management.
Prefab system
With Unity, you’re able to create reusable assets which allow for fast game development.
Unity’s Prefab system allows you to create complex hierarchies that are easy to maintain, configure, and update across multiple levels. A prefab asset is a template that should not necessarily be identical to the previously created one.
You can easily edit and create new prefab assets from the existing ones. When it comes to asset modification, the extension is done by association and not by hierarchical inheritance which allows for logic and code consistency. Moreover, when an object is edited, it doesn’t break the whole chain of objects of the same type but simply modifies the current object without messing up the code.
Unity’s Prefab system significantly speeds up the prototyping and overall development process.
Physics, Graphics, and Animation
Physics
Unity has two separate physics engines for 2D and 3D games which helps developers to focus on the right editor without trying to find a turnaround playing with a single multi-purpose editor.
The main difference between the two physics engines is that the 2D engine is purely customized for 2D app development and has a higher frame rate results (FPS) showing ~4x increase in performance.
Keeping in mind that the use of a 3D physics engine for 2D app development would slow down the development process; it’s good to have two separate engines which allow developers to switch between the two depending on the type of the project.
Graphics
High-quality graphics in Unity can be achieved thanks to real-time global illumination, physically-based shaders, dynamic lights, and a solid particle control system (for water, fire, etc.) using scripting.
However, most of the graphical achievements in Unity can be bound to the Asset Store which allows developers to sell their own frameworks and plugins.
Among the most popular plugins are “Amplify Color”, “FXAA Fast Approximate Anti-Aliasing”, “Time of Day”, “Relief Terrain Pack”, “Alloy Physical Shader Framework”, and others.
Even though the majority of graphical advancements were made by independent developers, Unity is busy working on new trendy tech – ray tracing. Unity is planning to add support of the ray tracing feature and provide access for developers making Unity’s graphics even better.
Animation
Unity does a great job animating simple things, however, Unity’s animation is used for GameObjects animation and not for physical level animations.
In other words, Unity’s animation is used to influence the gameplay while other software like Blender is used to create complex characters or object animation.
There are several benefits of Unity’s animation:
- You can influence the performance and quality of the animation by changing animation parameters directly increasing or decreasing the animation frame rate
- Implement various logic to different animated parts
- Utilize state machine animation for different states animation like breathing, flowing, etc.
Troubleshooting and real-time editing
Unity has great troubleshooting and real-time editing systems.
Considering current market demands, it’s crucial to have a quick and responsive troubleshooting system empowered with real-time editing which allows trimming the project according to the client’s vision and demands.
Unity developers find especially useful systems and modules such as:
- Gizmos (for visual debugging)
- Real-time editor and the ability to extend the editor
- Object-component design for its clear logic
Unity app monetization opportunities
In 2018, Unity introduced Unity Monetization SDK 3.0 which extended the monetization opportunities for marketers.
The list of app monetization features includes:
- Basic ads
- Banner ads, video ads
- Augmented reality (AR) ads
- In-app purchases (IAP) promotion
- Personalized placements
Configuring ad campaigns with Unity, marketers are able to create, edit, delete, budget, and schedule ad assets as well as track and selectively target user groups.
As you can see, Unity is an amazing tool with great out-of-the-box capabilities and monetization opportunities.
If it’s so great, why should you not consider Unity for AAA app development or if you have a large team?
Why Unity is not good for AAA games and large teams
There are multiple reasons why Unity isn’t yet a good fit for large teams and AAA games.
From code accessibility to Unity project management and features overload, Unity developers encounter various issues which keep them from collaborating efficiently.
Unity’s source code is hard to obtain
One of the reasons why Unity is not a good fit for AAA games which require custom solutions is the source code accessibility.
On March 26, 2018, Unity published an article under a very clickbait title “Releasing the Unity C# source code” where they pointed out that they are actually not going to make their software open source for two reasons:
- Unity wants to remain competitive and stay in business
- Unity doesn’t allow code disassembling and redistribution
However, they were forced to release separate sources of code which were developed using .NET since developers cheated and disassembled the .NET assemblies anyway.
Ideally, you have to get a license to be able to edit and create new logic within the Unity Engine. For example, you need a license to:
- Change/add/create dashboard features and functionality
- Enhance/optimize Editor since it has a lot of unnecessary features
- Add modifications to any parts of the engine
For these and other reasons, AAA game developers usually choose a tailor-made engine to be able to modify it quickly and have it crafted for specific needs.
AAA game series require tailor-made software
Even though AAA games require specific functions in their game development engine, it doesn’t mean they are building it from scratch.
Usually, companies utilize open source software that’s already available:
- Gamebryo
- Cocos2D-x
- Godot
- Blender
- Unreal Engine
However, the software is heavily modified and created to serve specific needs. For example, these games used a tailored game development engine:
- Call of Duty. Engine: id Tech 3
- The Elder Scrolls. Engine: Gamebryo, Creation Engine
- The Witness. Engine: specific engine developed by Jonathan Blow
A custom game development creation pays off with time. In the beginning, it might slow down the process; however, if you’re building a game series or a franchise, it’s wise to think about custom solutions and not off-the-shelf software.
A complicated team collaboration system
Lastly, Unity has a complicated team collaboration system which still has many bugs and “ifs” which you may want to avoid when you’re trying to meet the needs of the demanding customers.
One of Unity’s features is a solution called “Unity Teams” which has it’s expert’s guide to Collaborate. While reading this guide as a non-developer, I personally found a lot of limitations.
However, developers on different forums point out the following problems when collaborating in Unity:
- Hierarchy management issues and scene merge complexity
- One scene collaboration issues. However, developers advise avoiding collaboration on a single scene and use prefabs
- Unity Collaborate is too simplified and doesn’t have settings or configurations
- There is no autosave and you have to publish/updates scenes manually. If the internet connection is slow or unstable it might cause trouble
- A lot of assets in collaboration drastically slow down the work making it hard to scale the project
Conclusion
If you google the top 10 games built with Unity, you’ll find that most of these games vary from small to mid-sized mobile games; however, there some very solid games build for PC such as Rust and Deus Ex: Mankind Divided.
Unity is a very competitive engine which has a lot of advantages that easily beat the drawbacks, especially when it comes to mobile game development.
If you’re looking for fast prototyping, idea testing, or even full-cycle mobile game development opportunities – Unity is the right choice.
At Game-Ace, we provide Unity game app development services as well as Unity mobile app development services to help you build your dream application.
Having over 10 years of experience in gaming and non-gaming app development, our team of certified Unity developers is ready to collaborate on your project and become your reliable technological partner.
For further information, team availability questions, prices, or other inquiries, please contact us here.
Author: Philip Volna
Average rating 4.8 / 5. Votes: 57
No votes so far! Be the first to rate this post.