As those tho know me will know. I was an avid Unreal Engine enthusiast trying to make my game. Unfortunately however, things did not go as planned and lets just say the Unreal Engine thing fell apart. I did learn a lot and became a better developer based on my experience with C++ 11.
However, as the hands of fate will have it, I recently joined a team that was developing a game in Unity 5, namely Ascend. You can read more about the game here:
I knew these guys for some time but never quite got around to working with them. Especially since I invested quite heavily in Unreal Engine. However, since now I am part of the team, I need to get up to speed with Unity 5.
My initial thoughts on Unity the game engine is that it is much simpler to setup and develop than Unreal Engine, however not as tweak-able since we can't mess with the underlying game engine code like Unreal Engine does. The thing that kinda annoyed me is that the C# code parts, unlike the latest version of Unreal Engine, does not behave like you would expect, like for instance properties/fields can't be used to expose things to the editor.
Another thing that kind of annoyed me was that you do not seem to instantiate a class/script the way you would in a regular C based programming language which is using the constructor, you will need to use a method named Start() which by the way is not an override so you must trawl through the documentation to figure out whats the method rather than being able to use intellisense to help you sort that bit out.
The final annoyance I have found so far is that the conventions used in Unity's objects does not really conform to what you would expect if you come from a .NET background where you would expect properties to have Pascal cased naming. For instance, to access the text property of a Text object looks a little strange:
// Normal .NET expectations MyText.Text = "Some text"; // Unity's thing MyText.text = "Some text";
I know this is more nit-picking but for guys like myself who basically type really quick based on muscle memory tend to cause compile time errors because of the property naming conventions. This however, is more of a "getting used to" thing than a real issue, just that it annoyed the shit out of me.
The final thing is more of a preference thing. What I REALLY loved about Unreal Engine was the Blueprints feature. Those of us who have used Nintex or K2 workflow will know this bad boy.
For more information on the Blueprints, click here.
The upsides however are as follows:
Even with Unreal's latest hot compile feature, the compilation time is long which is still fine, until you discover that the compile went wonky because the changes were very drastic so you need to close the editor, recompile your code and then open your editor again which can be aggravating.
With Unity however, it becomes less often that you need to do such aggravating stuff, thereby increasing turnaround time which is great for iteration. The flip-side of this however, is that the code is naturally almost never as optimized as the code written in Unreal Engine which used C++ with very deep hooks into the engine.
That being said however, it is always a choice since we can't always have everything we want. In Unity, you basically get to market quicker in small teams and for indie productions, we are not expected to have game quality like say Dragon Age: Inquisition, GTA 5 or Mass Effect so it is acceptable to have perhaps lower quality visuals and also game mechanics that are not as intricate. It is all a matter of what you have for your game development team and also whats your time scale.
This is something that has been pioneered by Unity. Unreal Engine, has loads of features that come out of the box and is more capable. However, what Unity has is an ecosystem that allows modules to be developed and sold on what is termed as an "Asset Store". The interesting thing about this is that there are many predefined templates and add-ons that, if you have the money for it, will allow you to go toe to toe with a mature game engine like Unreal. Unreal Engine has recently launched their own version of this with Unreal Engine 4 called the Unreal Store. It is nowhere as rich at the time of this writing but it would be cool to see where these 2 engines go in this area.
More competition for better templates and modules will only make Unity and with Unreal competing here as well will make Unity proper and Unity asset store devs up their game. In the end, game developers will reap the benefits.
Keep It Simple Stupid
I must say, with my experience with Unity 5, it is dead simple with little craziness or nebulous things which is the main draw of the engine. In short, Unity is a Toyota Camry while Unreal Engine is a Subaru Impreza.
Unity, like the Toyota may not be exceptionally good in everything but it does everything you need. It also does not need expert knowledge to use it well but however, for more extreme things, it may not fair so well and require lots of money to tweak the Toyota to be more performance (this alludes to the need to purchase stuff from the asset store to fill in the gaps). However, if you want to make something that is no frills, this is what you are looking for.
Unreal Engine however, like a Subaru Impreza is VERY powerful. However, you will need some expert knowledge to use it and the learning curve to use this properly will be steeper than a Toyota. However, once you know how to use it, it will take less cost/effort to make it perform well. If you want to make something that is insane or have a team of experts, this is exactly what you need.
I will write more about my journey through Unity 5 as time goes on. I am confident with the new team and lets see where this goes.