When we think of a scene in a movie or a book, we intuitively know what that means. It’s a literary mechanism to set the stage for characters to interact. When done right, the scene fits in with the overall theme or plot of the story. We learn this concept early on in our childhood development.
In the Godot gaming engine, a scene can certainly be used in the manner described above. But it is so much more than a place for characters to interact. You can think of scenes as container that holds components in the Godot game environment.
What Is the Godot Engine?
The Godot gaming engine is a great open-source software package. It is easy to learn, relatively speaking. It has a built-in scripting language, but is flexible enough to allow development in more traditional languages (C++, C#, etc.)
The engine is lightweight on computing resources but is quite capable of developing sophisticated games. It could even be used to develop non-gaming software.
The built-in scripting language, called GDScript, is based on the Python language. If you know Python already, you’ll get up to speed quickly. For novice gaming programmers, since Python is easy to learn, by extension, so is GDScript.
What Is a Godot Scene?
The concept of scenes are confusing for beginners. It confused me when I first started coding in Godot. Perhaps the developers could have chosen a better name for the concept of a scene in Godot, which may have reduced the newbie confusion.
When you learn the scene concept, you’ll discover how flexible it is. A scene in Godot can be anything. It can be a traditional scene showing locations, characters, and props. But it could also be defined as objects that would appear in other scenes. For instance, a player is often defined within the construct of a scene.
Other objects could be defined as scenes, too. If you were going to include a box or a crate that players use (or any object), you may choose to develop this as a scene.
Are Scenes Necessary?
One scene is all that is needed in a Godot program. The engine will ask you to define this main screen as the starting point for the program to run. However, you could (but mostly shouldn’t) define your entire game within this one scene.
When you define most (or all) of your gameplay objects into their own scenes, you’ll find you have made the architecture of your game flexible and resilient. You can make changes to an object within the scene and wherever that object appears in other scenes, the changes will occur. You can also change a single instance of an object. Again, it’s all about flexibility.
Can the Traditional “Scene” Be Constructed Using the Scene Concept in Godot?
You may be thinking how does the program switch between different traditional scenes. For instance, if you were creating a game based on the popular boardgame Clue, you would have several rooms that you’d need to construct.
Scenes in Godot can be used as traditional scenes. You can create a scene with various components or objects. Just be aware that many of these objects are likely to be scenes themselves. But it wouldn’t make sense to have the game object switch to these object scenes, in most cases.
What About Nodes?
Here is where the rubber meets the road when it comes to understanding the Godot architecture. In some ways a scene and a node are the same. Godot requires at least one node to be created. When a node is saved, it defaults to a .tscn object. This is Godot’s filetype for scenes.
But a node does not become a scene until you save it as such. In fact, if you tried to run the game without saving the node, the game will ask you which scene you would like to start the program with. It will also give you the option of saving the node as a scene, which would then make it the default scene.
Scenes in my opinion, are a bit more abstract than nodes. A scene can be a collection of nodes, whereas node is often considered a single entity.
Is This Too Complex?
I firmly believe that when you code a few games with the help of tutorials, you will grasp the concept of nodes and scenes quickly. You’ll see how they interact with each, and it will begin to make sense. Armed with the description from this article, I also believe you’ll grasp it even quicker. That is my hope, anyway.
Try not to think too much about the concept. Accept that a scene can be anything, an object, a location, a node, a player, a crate, or a user interface construction (UI). Scenes can contain other scenes, and by extension, nodes. Remember, nodes are often saved as scenes.
Perhaps a better description for theses scenes would have been templates. That is essentially what they are. You create a template and then create instances of that template in other places like scenes. Nonetheless, we are given the concept of scenes in Godot, for better or worse. But it is my belief that you’ll come to see that it is for the better.