There are a number of game engines out there such as Unity, Unreal Engine, GameMaker Studio, OpenGl and so forth. With that, we have the Paradox of Choice. There are so many of them, which one to choose? Well, why don’t you go for the underdog Godot. In this article, I’m going to give you plenty of reasons why you should go for this game engine. But, before we do that let’s first find out what Godot really is and how it evolved over time.
What is Godot?
It is an open-source C++ based game engine with a complete Unity-Esque world editor. Godot runs on Windows, Linux, Mac, UWP, *BSD, & Haiku platforms and can target all of those, plus iOS and Android.
In Godot’s own words:
“Godot is an advanced, feature-packed, multi-platform 2D and 3D game engine. It provides a huge set of common tools, so you can just focus on making your game without reinventing the wheel.”
That description is incredibly apt as well; you will certainly be surprised by just how many tools are included. Now let’s take a quick look at the history of Godot.
A very brief history of Godot
Godot is the brainchild of Juan ‘Reduz’ Linietsky and Ariel ‘Punto’ Manzur, who begin developing it back in 2007. It was not always called Godot; it went through many (horrible) names, in the following order:
Larvotor -> Legacy -> NG3D -> Larvita -> Larvita2 -> Larvita3 -> Godot
Finally, it was named after Samuel Beckett’s play “Waiting for Godot”, as according to its creators it represents the never-ending wish of adding new features in the engine, which would get it closer to an exhaustive product, but never will. In early ’14, the source code for Godot was put on GitHub as an Open Source project with a very unrestrictive MIT license (which basically means the developer has to include the copyright of MIT within their project). Support for most major VR headsets has been available since early ’18, while the engine now also supports AR.
Around the end of 2014, Godot reached version 1.0, marking the first stable release and the addition of lightmapping, navmesh support, and more shaders. Version 1.1 replaced it in May ’15, adding improved auto-completion in the code editor, a visual shader editor, a new API to the OS for managing the screens and window, a rewritten 2D engine, new 2D navigation polygon support, a much improved Blender Collada exporter and a new dark theme. It joined the Software Freedom Conservancy in ’15.
Godot 2.0 reached stability in Feb ’16 features included better scene instancing and inheritance, a new file system browser, multiple scene editing, and an enhanced debugger. This was followed by version 2.1 in Aug ’16, which introduced an asset database, profiler, and plug-in API.
In June ’16, Godot received a twenty-thousand-dollar Mozilla Open Source Support (MOSS) “Mission Partners” award to be used to add WebSockets, WebAssembly and WebGL 2.0 support.
Version 3.0 was released in early 2018, adding a brand new PBR renderer implemented in OpenGL ES 3.0, support for most major VR headsets, and C# (via Mono) support. It also replaced the engine’s former built-in 3D physics back end with the Bullet physics engine. Version 3.0 was also the first version of Godot to be included in Debian.
It is currently undergoing a rewrite to use Vulkan which will significantly improve performance on the Quest.
Ok, by now you must have an idea of what kind of features have been added to Godot over the course of time, let’s delve deeper into its most essential features.
Reasons for using Godot
Here are the main reason for using Godot game engine:
Open-Source and Community
As mentioned above, Godot is an open-source game engine; you can view the full source code of Godot to learn the architecture and design of the code. The editor and all tools attached to it fall under the MIT license. Godot is free of charge; your game is yours, down to the last line of engine code. You’re not forced to use their splash-screen, use their additional services or host your project files in their cloud.
As mentioned above, it joined the Software Freedom Conservancy in ’15, which shows how serious Godot is about it.
The open-source nature of the Godot project also makes it highly extendable. If you are working with the platform and find something that isn’t implemented or doesn’t work the way you like, you can change it!
Its dev community is really active, and beyond their commits to the repo, there are always news articles and progress reports. Its Discord is always full of people willing to help or showing WIP’s of their games.
Cross-Platform Editor and Deploy
There is an editor version for every popular operating system: Windows, Mac, and Linux. This makes it a fantastic choice for game developers on Linux. I used the Windows one, and I found it to be very lightweight and pretty well-designed with all the needed tools packed into a beautiful and uncluttered context-sensitive UI.
Moreover, with the ever-increasing variety of gaming devices, it is vital that modern game engines be capable of deploying your games on multiple platforms. In Godot, as said before, you will be able to ship your games to almost all modern gaming devices and too just by a simple click.
- Deploying on desktop: Windows, macOS, Linux, UWP, *BSD, Haiku
- Deploying on mobile: iOS & Android
- Deploying on Web via Emscripten (WebGL 2.0 and WebAssembly in the works)
A Godot build occupies only around 30MB disk space, with (almost) all included. Meaning it’s fast to download & will spare 3 to 30GB that other engines would take. It also shows the seriousness of the team with its performance since its conception.
And most important: the Godot’s Engine is a Godot Game itself, meaning any in-engine performance reflects the performance of finished projects made with it.
Version Control Friendly
Most game engines have a problem working seamlessly with version control software. Those of you who have worked with Unreal or Unity will know what I’m talking about and how painful it is, especially in bigger teams.
Godot engine, on the other hand, works elegantly with version controlling software such as Git since every object is stored as text in a very friendly and human-readable format.
The animation system is pretty neat in Godot; I have to say it has one of the most powerful but yet simple animation systems. You can animate ANY PROPERTY of an object, even function calls. Besides that, it contains a tool to create cut-out animations. Overall, the built-in animation saves a lot of budget and time for developers to make good looking animations.
Real 2D vs. Fake 2D
Godot has a dedicated 2D engine and not a fake 2D, a 3D world represented in two dimensions. What that means in practice while using Godot:
- Work in pixels as your units, including the Physics Engine;
- More performance and API simplification as the engine does not need to deal logically / mathematically with a 3rd dimension;
- Typical workarounds used in other engines are not necessary (e.g.: setting a unit as 1 pixel, pixel-perfect rendering, z-ordering and camera zoom hacks and etc.)
To put it simply, you’ll have fine control over size, position, velocity, and collision with each one of the game’s entities, including HUD that is usually a total PITA to setup.
The Godot engine comes with a programming language called GDScript. When developing games in Godot, almost all of the gameplay code should be written in this programming language. A dynamic-typed scripting language, it came as a result of in-house testing by the Godot team. The team has stated that many alternative 3rd-party scripting languages (namely, Lua and Python) were tested before deciding that using a custom language allowed for superior optimization and editor integration.
Finally, they created GDScript to be as readable as Python, yet retaining essential elements for development like strict typing, better editor integration, and more straightforward optimizations for speed. Most of the developers can pick it up in a couple of hours. Godot editor provides a pretty nice text editor for GDScript; its functionality includes syntax highlighting, real-time parser and code completion. All in all, it’s still a well-designed and easy-to-use scripting language. However, if learning a new language isn’t on your list, alternatives are available.
Apart from GDScript, Godot currently directly supports C++ and C#. It also supports VisualScript; a code-free node based programming system similar to Unreal Engine’s Blueprint system. Additional languages with community-provided support for Python, Nim, D, and other languages.
Node and Scene System
Its workflow is similar to most game engines with a UI editor. However, unlike most component-based engines, it has its unique scene-based system.
In Godot, a scene is a collection of nodes. A node:
- Has a name.
- Have editable properties.
- Is a single object.
- Can receive a callback to process every frame.
- Can be extended (to have more functions).
- Can inherit from any other node.
- So, typically, nodes in Godot are in the structure of trees.
A scene is a group of nodes organized hierarchically, like in a tree. Everything in Godot is a scene. A scene has the following properties
- A scene always has only one root node.
- Everything in Godot is a scene; each one can contain other scenes and nodes.
- Scenes can be saved to disk and loaded back.
- Scenes can be instanced.
- Scenes can inherit from each other, so long as they have a common root node.
- There can be several scenes in a project, but for it to start, one of them must be selected to be loaded first.
Comparing to the component-based system, node-scene system abides better to OOP (object-oriented programming) principles, those who master this approach, value it as an intuitive and extendible design tool. You can also make your game in a component-based way in Godot by adding child nodes as components of the parent node. So, generally, I guess the node-scene system is equally flexible (if not more) compared to the well-known component-based system.
What Is Godot Not Good For?
So far I’ve shown you a number of great features of Godot which makes it better than others and are reasons enough why you should use it, but let me also tell you why you shouldn’t use it? Well, Godot isn’t going to be producing the next AAA blockbuster, but then again that is not who the engine targets. Its library consists of fun little games, made by mostly amateur coders and game developers. The games can be great stepping stones for developers to graduate to more complicated and staggeringly impressive projects.
Perhaps more critical to Indie developers is the fact that at present there is no direct way to produce Godot games for consoles. This lies in the fact that the tools to publish to consoles are closed source and fly in the face of Godot’s commitment to open source.
That said, there are 3rd-party tools in development to allow publishing onto consoles, and given Godot’s growing use it seems likely console possibilities will continue to grow.
Well, that’s it, I hope you liked this article and hope that by now you’ll be capable enough to make up your mind about whether you should use this game engine or not. Personally, I really like this engine and its community. Since it is an open-source project, its development relies fully on its community. The community is growing bigger by the day and I hope it continues too, thus making the engine even better in the future.