Table of Contents
Introduction
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.
Video
You can watch the video covering this topic, or go at your own pace following this post.
What is Godot?
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.
Download and Installation
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.
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:
Scene Dock
The Scene dock on the left is the place you will manage your current Scene
's SceneTree
. The 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 Nodes
, Scenes
, and SceneTrees
in more detail in a later post.
Import Dock
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.
FileSystem Dock
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.
Inspector Dock
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.
Node Dock
The Node dock contains a tab for Signals
and Groups
. The Signals
tab shows all signals that may be emitted by the current selected Node
. We'll cover Signals in more detail later.
The Groups
tab is where you can assign and unassign which Group
a Node
will belong to, this can be used with methods to identify a list of Nodes based on predfined categories.
History Dock
As you make changes to a Node
or 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.
Bottom Dock
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.
Create A Scene
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 Scene
's root.
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
Nodes
in 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 Sprite2D
instance.
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 res://
path.
All resources are contained within the relative path of res://
which is the root of your project folder. We'll save this Scene
as 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 Main Scene
.
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!
Signals
Now that we have a running project, let's briefly talk about Node
communication using Signals
. A 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 Node
.
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.
We'll cover Signals
in more detail in the future.
Recap
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 Nodes
, Scenes
, and SceneTrees
.
Happy Coding.