Table of Contents
We’ll cover an introduction to Godot . How to download and install . Go over the interface and the sections we’ll want to be familiar with, and the main concepts of working in Godot: Scenes, Nodes, the Scene Tree and Signals. By the end of this article you will have what you need to know to start your own project and understand where to begin inside the Godot Engine.
You can watch the video covering this topic, or go at your own pace following this post.
The Godot game engine is a great free and open-source software that enables Game Developers to create 2D and 3D games as well as applications. It provies a user-friendly editor interface and a robust set of tools that enable developers to create games that target multiple platforms, including desktop, mobile, and web.
Key Features of Godot include:
Scene-based game design: Godot uses a scene-based game design approach, which allows developers to easily create and manage different scenes, such as levels, menus, and dialogues. Scenes can be composed of multiple nodes, which can be customized and programmed to create complex game interactions.
2D and 3D rendering: Godot supports both 2D and 3D game development, providing a wide range of rendering features, including shaders, lighting, and particle effects. This allows developers to create visually stunning games with a variety of different styles and aesthetics.
Physics engine: Godot has a built-in physics engine that allows developers to create realistic physics simulations for their games. This includes support for rigid body dynamics, collisions, and kinematic motion, making it easier to create games that respond to user input in a realistic and predictable way.
Animation system: Godot provides a powerful animation system that allows developers to create complex animations for their games. This includes support for skeletal animations, blend trees, and inverse kinematics, making it possible to create lifelike character animations and special effects.
Scripting support: Godot supports multiple scripting languages, including GDScript (a Python-like language) and C#, allowing developers to create custom scripts to control game behavior. It also provides support for visual scripting, which allows developers to create logic flows using a drag-and-drop interface.
Multiplatform support: Godot supports multiple platforms, including Windows, macOS, Linux, Android, iOS, and HTML5, making it easy to create games that can be played on a wide range of devices.
Head over to Godot's Download page to start downloading Godot. As of this post, Godot's latest version is 4.0.3 and LTS 3.5.2.
Once you've downloaded Godot, you'll need to extract it from the archive to a location of your choosing. On MacOS, you can drag the application into your Applications folder, on Windows/Linux, extract to a folder you'll remember. For me on Windows, I have a
F:\Godot folder I have different versions in. On Mac I rename the binary for the version and drag it into the Applicaitons folder.
Fire up Godot once you've got everything extracted and you'll be met with Godot's Project Manager.
Here you can see all the projects you have local to your system. You can filter projects with text entry. Sort by last edited, name or path. Create, import, scan, edit, run, rename and remove a project by using the actions on the right. For now let's start with a new project, ours will be called Getting Started with Godot - Godot Fundamentals.
Once you've created your project, you'll enter the Godot editor in the 3D main screen.
The main screens can be changed from the top center icons. The screens consist of 2D, 3D, Script Editor, and Asset Library. For now, let's focus on the 2D main screen.
On the left and right sides we have Docks for Scene, Import, FileSystem, Inspector, Node, and History. Let's briefly discuss each Dock:
The Scene dock on the left is the place you will manage your current
SceneTree is a hiearchical structure of
Nodes and their parent-child relationship.
This is how our Scene Dock will look for the
Scene we are creating in this post. We'll cover
SceneTrees in more detail in a later post.
The Import dock also on the left is your settings for importing assets in Godot. If we select the default
icon.svg in our FileSystem dock, we can see the Import dock is populated with a variety of Texture settings for importing different textures. This is where you want to modify based on your asset type and the desired result you are looking for. For example 2D Pixel art texture benefits from certain import settings.
The FileSystem dock is where you can manage and organize your assets, scenes, resources and scripts. Create folders to assist in logically grouping your files and help to keep an organized project.
The Inspector dock on the right side shows you properties of the current selected
Node within the
SceneTree. These properties are organized by where they within the
Node's inheritence stack. Each layer of inheritence can be seen by going to the Documentation for the
Node. You can modify properies within the Inspector dock and clicking and dragging things like resources and assets from the FileSystem dock is supported.
The Node dock contains a tab for
Signals tab shows all signals that may be emitted by the current selected
Node. We'll cover Signals in more detail later.
Groups tab is where you can assign and unassign which
Node will belong to, this can be used with methods to identify a list of Nodes based on predfined categories.
As you make changes to a
Scene you'll see those changes appear on a stack here. They can be selected to undo/redo changes that you may have made by mistake.
Lastly we have the Bottom dock that contains the Output log, Debugger, Audio, Animation, and Shader Editor. The panels here may change based on the context of the current selected
Node. For example when dealing with Tileset Resources.
In our current Scene Dock, let's move beyond the default and create a
Root Node by selecting the
2D Scene under the Create Root Node: section. This will create a
Node2D as our
We'll select this
Node and rename this World. From here we can either right click and Add Child or select the + icon in the Scene dock. This will pop up with the Create New Node dialogue and we can search through the
Nodes available to us in Godot.
We'll cover more
Nodesin the future.
For now let's search for
Sprite2D and click Create. We should now see the
Sprite2D node as a child to our
World root node in the
SceneTree. With that selected, we'll see properties in the inspector for our
We can now drag the
icon.svg from our Filesystem dock into the texture property of our
Sprite2D. This will set the sprite's texture to the Godot icon that is default in our project.
We can then drag our node around in the 2D main screen to place where we want relative to the world.
To test our project, let's save this scene. Either
CMD+S/CTRL+S to save, or right click the tab on your 2D main screen editor and click save. We'll keep this in the root of our
All resources are contained within the relative path of
res:// which is the root of your project folder. We'll save this
world.tscn best practice is use lowercase in filenames for maximum support accross operating systems.
Once we've saved our
Scene we can attempt to run our project using the Project Launch tools in the top right of the editor. If we just click the play icon, we'll be prompted to select our
This is the
Scene that Godot will use as it's root level
SceneTree. All of Godot is composed of
SceneTree and other
Scenes composite into this tree. For now we can choose
Select Current and that will launch our project.
Looks like we are up and running!
Now that we have a running project, let's briefly talk about
Node communication using
Signal is a type of event that can be emitted by a
Node and provide data via that event. We can see the list of built in
Signals by viewing the Node dock on our current selected
They are organized again by the object that defines the signal. For example our
Sprite2D node has a hidden() signal it inherits from
CanvasItem that can be emited when the node becomes hidden.
This would allow our parent to listen for those events to occur then take the corresponding action, and decouples our children from needing to know when to inform a parent when this event occurs, or what to do on the parents behalf.
Signals in more detail in the future.
We've successfully created our starter project and have a high level understand of the different sections within the Editor. As always there is always more information to cover and the best place to review is direction in the documentation .
You can also head over to the Github page for this project to follow along in the progress.
Stay tuned for our next post where we dive into more detail on