I wanted to talk a little bit about why I use Unity and what my motivations are for using it.
Some of the mentioned points may give you a reason to try it out as well. It certainly isn’t the perfect engine, but no engine really is. Aside from Unity I also like to work in Unreal Engine and Godot.
What I mean with a good ecosystem, is that there are a lot of users that try to help each other in the form of tool creation, tutorials, plugins and youtube videos. Some good examples that display this this are Github and reddit.com/r/Unity3D, daily there are posts that display how much it is used. The benefits for you of having this ecosystem, is that when you have questions or problems. You will be able to get an answer within a very short frame. Either through Reddit, the Official Forums, the Answer Hub, or the Official Discord.
What I like most about the ecosystem is the Unity Asset Store. Mainly for using and for being able to provide tools to other developers. The game’s I’ve made have benefited a lot from work that others have put on the store. Aside from the store I like the fact that a lot of developers use it, which in turn makes it easier to support them.
It is very easy to publish to multiple platforms using this engine.
For instance, when you develop a mobile game. Switching from iOS to Android is done by pressing a button. The only hassle you will have is to switch to a mac computer for iOS or OSX.
The same simplicity applies for WEBGL and PC builds. Just press the switch platform button. It may still be possible that some code won’t behave the same per- platform. If you run into these issues, you can use platform dependent compilation to easily enable/disable parts of your scripts to be used for different platforms.
Unity has good performance, especially for lower end devices such as mobile phones.
For instance MASKED uses multiple dynamic pointlights, has procedurally generated maps and plenty of effects, and it runs well on a Samsung S2
The Lightweight Render Pipeline (LWRP) has recently been released recently, so far it has been showing very promising results. Personally I’m using it for all my projects now and I will most likely transfer Masked to it as well. Aside from this Unity has good statistical tools to measure the performance such as the profiler, memory profiler (You can find it in the package manager, it is still under development at the time of writing) and the frame debugger. The frame debugger allows you see see each draw call separately, which makes it easy to spot issues in the rendering process.
Sometimes you hear that the engine isn’t good because of game X or Y. As a analogy I could compare an engine to a car. And a developer to a driver. An inexperienced driver has a higher likelihood of crashing in a fast car, since he lacks experience. The same goes with using game engines. When the user doesn’t understand the inner workings well enough, they are bound to not get the full potential from using it. Luckily Unity is very known and there are plenty of tutorials out there to give tips on how to optimize your game.
That isn’t to say that each engine is the same in terms of performance. And Unity isn’t necessarily the fastest out there, but it is certainly fast enough for most non AAA games.
C# programming language
Aside from the fact that C# is very easy and quick to work with. C# ranks as the #6 used language on Github There are plenty of C# frameworks and libraries that you can use with Unity.
The engine itself still uses C++ under the hood, to provide better performance. When it comes to code performance in Unity, you would have to do your best in order to get bad results nowadays. This because computers have become very fast. Things to mainly look out for when developing is garbage collection, however when the new Entity Component System comes this will also be a thing of the past.
The asset store provides plenty of free resources. Ranging from entire game templates to specific solutions to problems. However, most of the good stuff isn’t free. In the last years people have been mad at “Asset Flippers”. Using assets isn’t a sin. If you make a game, and enhance it with assets, you make a game. If you take assets and release them directly as a game you would be considered a asset flipper. Just go make something fun and creative!
Here is a small list worthwhile assets (Affiliate Links)
- Aura – Volumetric Lighting
- Bolt – Visual Scripting
- Odin Inspector – Improved editor experience
- Rewired – Add support for tons of controllers in your game
- DoTween – Easy tweening between objects
- UniRX – Reactive Extentions for Unity
- Zenject – Dependency Injection System
- Anti Cheat Toolkit – Make it harder to cheat in your game
- Obfurcurator – Make it hard for others to decompile your code
The engine exists for over 14 years, and has met it’s fair share of use-cases.
To name some popular game titles that have been made in the engine. For me this is important because it shows the real capabilities of what can be done with an engine. Not just in a performance perspective, but also from a usability standpoint. The people that have worked on these games have managed to spend years on something and were able to get it released using this technology.
- Enter the Gungeon
- Pokemon GO
Free to use commercially
If I had to pay to actually use the engine the chances would have been a lot lower that I used it today.
This is mainly because Unity was the first engine I used seriously. With a barrier set up front I wouldn’t have gotten the chance to do so. I’m glad that both Unity and Unreal Engine have become free, as this has made it possible for a lot of people to follow their dreams.
As for specifics, the engine is free to use up to 100K annually, not something that is going to happen quickly. And if you manage to get that much racked in. Then you can get plus for 35 dollars a month per user to increase the limit to 200k. In comparison, with Unreal Engine you have to pay a 5% royalty when you make over 3000 a month. Which is a good deal as well, unless you happen to make a big hit or have a very profitable game.
The internals of Unity are not modifiable by regular users. This is only possible for companies that have a special licence. The result of this is that when you encounter a bug that isn’t related to your code, or any code that you have imported into the project. It means that you cannot fix it yourself, you will have to wait for a new version of the software.
One of the solutions Unity Technologies has made for this is to create separate steams of technology.
LTS (Long term support) releases and TECH Releases. As far as I’ve seen there are new versions of the software each week.
The dark theme is behind a paywall
Aside from the fact that the user interface looks rather outdated. (They are working on fixing this within the later 2019 releases, to a flat design) The fact that a simple skin is locked behind a paywall is just plain strange. Other game engines don’t do this kind of thing. It is frustrating because many developers actually like working later in the day.
Not fully feature complete
In comparison to a engine such as Unreal Engine, you are still stuck having to buy solutions in the asset store.
An example of this is Visual Scripting, Unreal has Blueprints. The best competitor of this moment with that system is Bolt. Another example is Behavior trees, Unreal has a built in system for this while you would have to get something like Behavior Designer. Also the Character Controller in Unity is quite outdated, while Unreal has a very extensive one build in.
So for Unity you would have to get something like Easy Character Movement or Kinematic Character Controller. On the positive side of this, this makes Unity more bare bones with as result that it is lighter to use.
Also, Unity is working on improving this fact, some examples of tooling that is usable for free using the package manager: ProBuilder, ProGrids, Shader Graph, Pixel Perfect Camera, Cinemachine, TextMeshPro.
But if you want to make more sophisticated games, there is a chance you will have to pay for something at some point.
The engine is one of the best publicly available ones out there. And it is definitely worth a try.
The quickest way to get started is by downloading the Unity Hub and selecting the latest version. When the engine opens, you may see a message saying there is a new version, just ignore this since they update it so often. Afterwards go take a look at the best free assets section. Try to import some assets, see how it works.