Oh, great. Another post about Unreal vs. Unity…
This is not a Unreal vs Unity, “what is best” type of comparison, just my thoughts on why I decided to go all in with Unreal 4 instead of settling for the arguably more popular (and more forgiving) Unity 5 game engine for learning game programming.
First of all, let me point out that there is no clear cut way of saying that one option is “better” than the other, it all depends on your needs, prior knowledge and how much time you have available for learning new stuff.
My focus with this series of blog posts is to cover beginning game development using C++, so with that criteria, the choice between the two is self explanatory.
But if Unity is so popular and easy to use, why choose something more complex if all you want is to create some fun games? And if C# is so much more forgiving and easier for most people to understand, why use C++ in all its complex glory?
Good questions. The answer is not obvious, but for me, being able to access the game engine’s source code is of great value. I’m not a fan of obscurity, and if something is not doing what I want it to do, I want to be able to know why it is behaving as it does and to have the ability to change it. This is something you can’t do with a closed source engine like Unity, at least not at the time of this writing.
C# is a very productive language to code in, and it is easier to learn than C++, no doubt about that.
But C++ is the “lingua de franca” or common standard programming language in many areas of computing including games, also it is a platform neutral programming language.
C++ is also the common base that other languages such as Java and C# is influenced from, making it a very useful language to know in the world of programming.
Arguably, C++ also tends to produce faster executable code than other higher level languages, and when your programs get more complex, it is vital to be able to churn out all the juice your processors has to offer. Learning to code in C++ gives you the ability to do just that. It has a good mixture of low-level and high-level features making it ideal for something like games.
So, all though Unity and C# may be a better match for newcomers to programming, I do believe that investing the time to learn C++ and Unreal gives a better value in the long term.
Also, there are some annoyances associated with using Unity if you don’t pay for the Pro version, like not having the ability to customize the start screen you get when starting your games. It will say “Made with Unity Personal Edition” or something like that, and that doesn’t exactly portray a professional game as I see it. It is also a constant reminder of your limited freedom and the fact that there is better options available.
This may or may not be an issue if what you are developing is an indie game anyway, but I like to be in control and Unreal gives the developer more control.
There is no “Pro” version of Unreal, just the source code that is shared by all users of the engine, and that’s kind of how I like it to be.
The reason I chose to create these posts is because I’m now in a position in life where I have some time on my hands, and I’ve chosen to use this time to learn more about game development.
I already know a fair amount of programming, both using C# and C++ from previous jobs I’ve had and from my personal interests through the years which has involved programming in some form or the other.
For people new to both programming and game development, there is a great deal to learn and I will not be able to cover anywhere near what you need to learn as this would amount to around a three year full-time study at some university for being able to produce professional quality games.
But, I do hope that the posts about C++ and Unreal will give some insight into how this works and possibly making it easier for someone to grasp the overall picture of how creating games in this environment can work out.
More to come…