A few years into my game development journey I stumbled upon Godot. It ticked all the right boxes. Godot is a free, cross-platform, open-source video game engine. It can export to Windows, Mac, Linux, Android, iOS, and to web. Exporting to consoles is supported through third-party companies.
Godot is lightweight. It does not even require an installation. The entire engine runs of a single executable file. The version I’m using right now takes up 61.9 MB of space on my hard-drive.
It has excellent 2D support, arguably the best of all video game engines. A complete 3D rewrite is coming to Godot 4.0 with a new Vulkan renderer which is expected to put the 3D performance on par with other major game engines.
You can download the latest stable version of Godot here.
Nodes, Scenes, and Trees
A game made in Godot is made up of scenes. Scenes can be made of nodes and/or other scenes. These nodes are organized in a tree-like structure. A single root node branches out into all child scenes and nodes. The scene tree is the full structure of scenes and nodes of your game when it is running.
A node in Godot is responsible for handling one major thing. For example, a pretty simple node is the Timer node. You can set the length of the timer, you can set whether it repeats, and you can start, stop and pause the timer.
A scene is made up of multiple nodes and/or scenes to form a more complex object. You can think of a scene as the objects that make up your game’s world. A scene can be an entire level, a player, an enemy, a weapon, or a health potion. Godot’s powerful node structure allows you to organize your game how you need to.
Here is an example from a simple platformer game. Here we have the scene tree for level one.
The ‘Level1’ scene has a background image, a player, a tilemap, and a light.
The ‘Player’ node here is actually it’s own scene made up of it’s own child nodes.
When you first launch Godot, you will be met the Project Manager window.
From here you can import projects you have downloaded or create a new project. New projects have to created in an empty folder.
After you have created a new project, you will be met with Godot’s interface.
Let’s go over each part.
The Scene window shows all the nodes of the current scene. Here you can add built-in nodes, attach scripts, and even add other scenes to the current scene you are editing.
A script is a file that you write code in, to define or customize how a scene behaves. For example, you can use a script to listen for keyboard presses, and move the player accordingly.
Godot’s primary programming language is GDScript. The C# language is also supported. Unless you have a strong reason to use another programming language, you should use GDScript for your Godot projects.
The tab next to the Scene window is the Import window. Here you can define the import settings for any files created outside of Godot such as images, audio files, or models.
The FileSystem window shows all the files you have created or imported to this project. These are the folders and files stored on your computer’s hard-drive.
This is different from the Scene window. Scenes and nodes in the Scene window are instanced in your game. To instance a scene means to create a new copy of it in RAM and add it to your game’s world. Don’t worry if this is confusing. It is much easier to understand in practice, when you actually start building a game.
All Godot projects have a root folder calls
The Inspector window is where you can view and edit the properties of the currently selected node. You can define your own properties by attaching a script to the node.
Signals and Groups
In the Node window, you can attach signals and manage groups for the node.
Signals allow you to signal to other nodes that something important happened. You can define your own signals in a script.
Groups allow you to categorize nodes so you can easily reference them later.
The main viewport is where you can your game’s visuals. You can switch between the different options at the top.
The view for 2D scenes. The two dimensions are represented by an X and Y axis.
The X axis is represented in red. When an object moves along the X axis, you can think of it as moving left and right.
The Y axis is represented in green. When an object moves along the Y axis, you can think of it as moving up and down.
The blue line in the 2D view represents your project’s resolution. Objects within that bounding box will be visible to the player.
The view for 3D scenes. The three dimensions are represented by an X, Y, and Z axis.
In addition to the X and Y axis, there is a third Z axis. The Z axis is represented in blue. When an object moves along the Z axis, you can think of it as moving forward and backward.
In the script view you can write and edit your scripts.
The section marked as ‘A’ displays all your recently opened script files. The section marked as ‘B’ displays all the functions in your currently opened script file. The section marked as ‘C’ is the script itself.
The Asset Library has user created scenes, nodes, and scripts. Chances are if many games require a feature, someone has built a solution and uploaded it to the Godot Asset Library.
Since Godot is relatively new to the scene, there isn’t as many user-built assets on the Asset Library as other engines, although that is slowly changing over time.