If you want to deal with game development in this day and age, you are confronted with a luxury problem right from the start. While in the early days of video game development, the sound and graphics output used for almost every game was developed or reworked in-house, nowadays you can choose from a variety of possible tools.
I have “published” two computer games so far.
The first game was a 2D jump’n’run that told the story of my (now) wife and me, which we used as wedding invitations. I had written the game in Java without using any foreign libraries. The levels and game characters consisted of non-animated sprites, there was background music, and the different levels were stored in text files whose contents were interpreted as sprites etc. at runtime.
The second game was a small learning/thinking game for mental arithmetic, which I named Little Math Academy and published in the Google Play Store in 2015. In contrast to the Jump’n’Run, I simplified my life a bit and didn’t write everything myself, but used libGDX instead. Thanks to libGDX, I no longer had to think up and implement everything myself, but could essentially focus on programming the actual game mechanics. Taking a full game engine for such a game seemed unnecessarily complicated to me at the time.
In the meantime I think differently. One of the reasons is that I realized years ago that I don’t have a knack for 2D graphics and I doubt that this will ever change, so that I am most confident in creating my own assets in the 3D area. 3D modeling is another challenge, but somehow I feel slightly better about it. Over the past few years, I’ve been looking at what I consider to be the most prominent players in the 3D engine space, who also offer relatively permissive licensing and with whom you can develop under Linux if possible. In short, I have taken a closer look at the Unreal Engine 5, Unity and the Godot Engine.
Unreal Engine 5
For me, the Unreal Engine 5 represents the maximum of what is currently possible in the field of real-time 3D rendering. Especially in connection with the free use of Quixel Megascans, it is amazingly easy to create visually impressive sceneries. And thanks to Lumen and Nanite, you also get a superior lighting and automatic LOD system, respectively. I created the one shown in the following video from ready-made components in an amazingly short time:
On top of that, the license states that fees are only due after $1 million in sales. Something I will probably never achieve with a game.
Where there is light, there is also shadow. As great as everything can seem, it takes a lot of effort to make it happen. As a single person with no prior experience with the Unreal Engine, it’s (unfortunately) too much effort. On top of that, as far as I know, development on Linux is possible, but much less well supported than on Windows.
Unity
Unity is felt to be the top dog among game engines among small studios and individuals. There are countless tutorials on the internet about game development with Unity, both free and paid. Even in my “Game Design + Development” lecture, during my Masters, Unity was used for the practical examples. The company behind it also shows again and again with impressive videos what is possible with Unity. But somehow it seems to me that the course of time makes Unity more and more a patchwork. The following video tries to summarize the current state:
I myself have also tried to make friends with Unity on and off over the past few years, but for some reason never succeeded. I also had various problems with the Unity Hub under Linux, which led to the fact that I could not start the development environment at all for some time.
But at the latest when hundreds of employees were laid off in mid-2022, the company and thus also the engine completely lost its sympathies with me.
Godot Engine
The Godot Engine is probably the new kid on the block in this comparison, even though it has actually been around for some time. I’ve only known about it for a good 1.5 years, but in my opinion it is currently the most interesting open source game engine. Thanks to the completely rewritten Vulkan renderer, Godot is making great strides in contemporary 3D rendering with the upcoming version 4. You can get some impressions of this on devmar’s YouTube channel, among others, which has already shown really convincing results through optimization with Godot 3.4:
From what I’ve read, Godot is a real strong contender in the 2D field. In addition, the development environment of the engine, which is also a Godot application, consists of only a single file that directly contains everything necessary without installation. In contrast to the Unreal Engine or Unity, no account is necessary for use. Any profit made belongs to oneself, although I think that at the latest when profits are made by using OpenSource software, one should also give something back to the projects used. It doesn’t have to be a share of the profits or a donation, but at least active engagement in the community should be in some form.
It can be programmed out of the box either with its own scripting language GDScript or C#, but there are also extensions to be able to use Rust, for example. Personally, GDScript has been sufficient for me so far, thanks to optional static typing. With Godot 4, GDScript 2.0 is or was introduced, which among other things offers performance advantages when using the optional typing.
All in all, I personally really like the Godot Engine, even if I still have a long way to go to find out what other possibilities it has in store. The range of functions should probably be sufficient for a single person and also for smaller teams for some time.
If you’re part of an ambitious team, you can also take a closer look at the Unreal Engine, as it gives you the chance to receive funding from Epic MegaGrants.