10 Reasons Why I Use Godot
Published on: Oct. 25, 2019 | In: Godot | By Dean
Before I start I just want to say that this is not going to be a post bashing Unity or Unreal. Both of these engines are great and I quite like Unity if I’m honest. Any comparisons to either of these engines is for context.
Instead this will be a post about what I like about the Godot engine and why I use it. So here are 10 reasons why I both use and enjoy the Godot Engine.
Godot is open source. This means that all of the source code that makes up the engine itself can be downloaded and modified by anyone. You can view and download the source code here
Having Godot as an open source project allows contributors to add features to the engine and ensure that existing features are bug free. Being open source allows Godot to add new features quickly as many people can work on many features at the same time.
It also means that should you find a bug in Godot, you can actually fix it yourself and recompile the engine while you wait for your fix to be accepted into an official Godot release.
Game development software can be very expensive for a single developer or a small team. This can be very off putting for new developers. When you’re just starting out, you don’t know if you’re game will be successful or not and you don’t know whether you will be able to recoup the cost of purchasing or renting a proprietary engine.
You could of course build your own engine from scratch. But that has a time cost. And time is of course money.
Godot is totally free. There is no upfront cost, no royalty requirements and you don’t even need to sign in to use it. Godot is distributed under an M.I.T. license. This is a very permissive license. It even allows you to modify the engine’s code and distribute it under a proprietary license. I’m not sure why you would want to do that. But you could.
Fully Functional Linux Editor
I have been a web developer for quite some time. I’ve spent much of this time using Linux, as is common for web developers. For game development however this this not the case. It can be a real headache to find a game engine that functions correctly on a Linux based operating system. Which is a real shame because most developers that use Linux tend to really like it. It’s a great operating system for people interested in computers.
This is not the case with Godot. Godot is fully functional on Linux. Godot could nearly be considered a Linux first game engine. The lead developer, Juan Linietsky, uses Linux on a daily basis and has confirmed the project’s commitment to Linux on numerous occasions.
So if you’re a Linux user and you want to get involved in game development I would definitely recommend checking out the Godot Engine.
Small Engine Footprint
Godot is tiny! The engine itself it only 25MB. It’s also a self contained application. It doesn’t require any installation or additional download. To understand how small this is consider that a full unity installation can cost you more than 4GB in storage.
Not only is the engine tiny but the games created with Godot are incredibly small too. An empty Windows build is only 28MB. A Linux build is only 39MB and an empty Android build is only 25MB. This can be further reduced by compiling the engine yourself and disabling any features that your game doesn’t need.
Godot has 2 rendering options: GLES3 and GLES2. GLES3 maps to OpenGL 3.3 on desktops, OpenGL ES 3.0 on mobile and WebGL 2.0 on the web. GLES2 maps to OpenGL 2.1 on desktops, OpenGL ES 2.0 on mobile and WebGL 1.0 on the web.
That might all sound kind of nerdy but the gist of it is that GLES3 has more advanced features and can make for a more graphically appealing game, but GLES2 can be useful if you are targeting more low end mobile devices.
The Godot team and contributors are currently working on version 4.0 which will include a Vulkan rendering backend allowing for better performance and new features.
Dedicated 2D and 3D
Godot has separate and dedicated 2D and 3D rendering engines and physics engines. This means that when you create a 2D game in Godot, it is a true 2D game. In Unity this is not the case. In unity when you create a 2D game, the game is actually in 3 dimensions you are just looking at it head on and so it appears to be 2D. This makes creating 2D games in Godot much easier as you don’t have to worry about the unused 3rd dimension when creating a 2D game and neither does the engine.
The dedicated 2D engine in Godot is really impressive. We’ll discuss some of its features in more depth in just a second.
Godot can also be used to create beautiful 3D games. It’s worth checking out the 3rd person shooter demo for an example of the kind of graphics that you can achieve with it.
Multiple Programming Languages
Godot has support for multiple programming languages. It officially supports GDScript (a language developed by the engine’s creators), C# and C++. Godot has unofficial community support for many other languages and because of the way that Godot is designed it is possible to add support for pretty much any language.
GDScript is the integrated scripting language that the developers recommend using. I was hesitant when I first started learning about Godot to learn a new language that only has use within this specific game engine but it is very similar to python, very easy to learn and it is honestly a pleasure to use.
According to the Godot documentation the original intent of creating GDScript was two-fold:
“firstly, it reduces the amount of time necessary to get up and running with Godot, giving developers a rapid way of exposing themselves to the engine with a focus on productivity; second, it reduces the overall burden of maintenance, attenuates the dimensionality of issues, and allows the developers of the engine to focus on squashing bugs and improving features related to the engine core–rather than spending a lot of time trying to get a small set of incremental features working across a large set of languages.”
The docs suggest trying it for three days. Even if you are hesitant. And I agree. It grows on you.
Godot has it’s own built in text editor for writing scripts that has excellent code completion and re-factoring features but you can also use an external editor such as Visual Studio Code, Notepad++ or Atom. Visual Studio Code has an great plugin available for GDScript.
Godot also has full support for C# as it was the community’s most requested language. This is sure to enthuse those of you with some experience in Unity as you won’t have to learn another language if you don’t want to.
Godot also has support for C++. You can build your entire game in C++ if you like, although the developers and community tend to agree that it is best to build you game in GDScript and then if resource limitations require it, rewrite some of the more resource intensive code in C++ and call that code from within GDScript.
There is also a visual scripting option that is similar to the way blueprint works in Unreal Engine. This could be useful to artists who are working with programmers. The programmers can expose code that the artists can call using visual scripting, allowing them to add functionality to the game.
All the tools you need to make a game included
Godot has an enormous amount of tools that you can use to create a game built in. Here are some, but not all of the useful tools that have been built right into Godot.
Godot’s animation editor is really really awesome. I can’t stress this enough. You can animate literally anything, you can even call functions from within an animation. It also has a built in animation state machine that you can use for transitioning between states.
2D Skeletal Animations
Godot has a built in 2D bone rigging system. You can create bones and attach them to your sprites to create rigs allowing you to create complex animations similar to Spine 2D or Spriter. This system supports mesh deformation on 2D sprites.
Advanced 2D Lighting System
Godot has an advanced 2d lighting system that supports shadows and sprite masking. You can make some very cool stuff with this.
Godot has a built in tile map that is very easy to use and is great for pixel art games.
Gridmap is like tilemap but for 3D. This is great for quickly building a 3D scene.
There is a parallax background built right into Godot. Parallax backgrounds can give the illusion of depth to a 2D game. Check out this example I made here
I’ll definitely create a longer tutorial on how to create a scene like this soon.
Godot of course has a built in particle system for both 2D and 3D which can create some very nice visual effects.
Godot uses GLSL, the OpenGL shading language. You can create some very interesting visual effects with shaders in Godot. They can be written in text and can also be created using the visual shader tool built into Godot.
Godot has a number of built in user interface elements that can be used to create complex user interfaces for GUIs and menus. The Godot engine’s user interface was built with the same elements that are available for use within your game. All of these elements can be themed.
This is by no means an exhaustive list, but these are some of the features that I was impressed to find built into the engine.
Export To Multiple Platforms
Godot can export to multiple platforms including:
• Mac OS
• Universal Windows Platform
Godot can also be exported to consoles. However there is a lot of misunderstanding on how this takes place. I think what confuses people about this is that when you go to the export settings in Unity or Unreal you can see options to export to PS4, Xbox One and Switch but when you do the same in Godot these options are not there and so the user assumes that console builds are supported by Unity and Unreal but not supported by Godot.
This subject is a little complicated but the short version is that because Godot is open source and not a company like Unity is, Godot doesn’t have the ability to sign a non disclosure agreement with the consoles’ manufacturers in order to obtain a Dev Kit. A Dev Kit allows the developers to export their game for the console in question. The Dev kit can also not be open sourced and so it is not much use for Godot themselves to have one anyway.
This issue will affect Unity users also. Unity users can get a Dev Kit from Unity but they would need to have a registered company in order to sign a non disclosure agreement.
Most Unity developers will work with a publisher in order to port their game to consoles because this is the easiest way to achieve this. Not because of the technology, but because of legal matters, and this would be the same for Godot developers.
If you create a Godot game that you want to port to consoles it would be worth talking to this publisher about what exactly that would entail.
Friendly And Active Community
One of the things that makes Godot great is its community. And that sounds super corny but it’s also very true. Godot has a bunch of places where you can ask questions, get feedback for your work and offer help to other users.
Here are some of them:
• Questions and answers site:
From my experience the community is very helpful and friendly.
There are also a number of Godot users that have youtube channels and blogs such as this but that have a lot more experience than myself with Godot and a lot more content. They are a great resource if you’re looking to start learning. Here are just a few of them:
There are plenty more out there, just search Godot Tutorial on Youtube and you’ll find a bunch of videos. If you have a blog or youtube channel and would like to be included on this list send me a message at the bottom of the page and I’ll add your details.
Object Oriented Design
The Godot docs uses a cooking analogy to explain Godot’s object oriented design, which I thought was a clever way to explain it. Imagine that your are a chef instead of a game developer. The kitchen would be the Godot engine and your ingredients would be its nodes. Nodes are the fundamental building blocks of your game. The same way that ingredients are the building blocks of a recipe.
Godot has many built in nodes such as the Sprite node, the RigidBody2D node, the AnimationPlayer node, etc. Different nodes have different functionality. Some display images, some play sounds and some play animations.
Nodes inherit their functionality from other nodes and extend upon it. For example the Sprite node inherits functionality from the Node2D node which itself inherits from the CanvasItem node which inherits from the Node node. The Node node is the base node from which all other nodes inherit their most basic functionality.
When you create a game in Godot you extend these nodes via scripting to create additional functionality. Let’s say that you want to create a sprite that rotates each frame. You would extend the functionality of the Sprite node by creating a new Sprite node perhaps called RotatingSprite. RotatingSprite would inherit all of the functionality of a Sprite. You would add a script to this node that increments the rotation of the Sprite each frame.
Nodes can have child nodes. When you have nodes arranged like this it is called a tree. This is a great way to organise a game. You could have a level that has a player node as a child, an enemy node as a child and some coins as a child.
In Godot a group of nodes organised hierarchically like this is known as a scene. Scene’s always have one root node. In our example the Level node would be the root node.
This might sound abstract and weird if you have no prior experience with programming or game development but once you start your first game you will find this design principal is very intuitive.
This was probably a long winded post but if you made it to the end I hope that you enjoyed it and that you give the Godot engine a go. I will be writing up a series of tutorials on the Godot engine in the coming weeks and we’ll create some fun games together but in the meantime if you’d like to learn more I suggest downloading Godot here and then following along with the official Godot tutorial here
Thanks for reading.