Godot's Design Philosophy
Every game engine is different and has different requirements. This will not only offer a range of features; The design of each engine is unique. This leads to different workflows and different methods from our game's structures.
This page helps us understand how Godot works, starting with some of its key pillars. This is not a list of available features, nor is it an engine comparison. To know if any engine can be useful for our project, we need to try it out for ourselves and understand its design and limitations.
Object-Oriented Design and Composition
Godot adopted object-oriented design at its core with its flexible visual system and node hierarchy. It tries to stay away from the strict programming patterns to the present in an intuitive way to the structure of our game.
For one, Godot lets us compose or aggregate scenes. It's like nested prefabs: we can create a blinking light scene and BrokenLantern scene that uses the BlinkingLight.
Then, create a city filled with Brokenlnterns. Change the color of the Blinklight, Save, and all Brokenlanterns. Change the color of the Blinklight, save, and all the Brokenlane in the city will be instantly updated.
On top of that, we can inherit from any scene.
A Godot scene can be part of a weapon, a character, an item, a door, a level, a level. Anything we can like. It works as a class in pure a code, except that we are free to design it using the editor, using only code, or mixing and matching both.
We can create a magician that extends our character, modify the character in the editor, and the magician will update as well. It helps us build our project so that their structure matches the Godot design.
Godot offers different types of objects called nodes with a specific purpose. Nodes are the part of the tree and always inherit from their parent into the node class. Although engines have components such as collision size, they are the exception, not the norm.
Sprite is a Node2D, a node, and a CanvasItem. It has all the attributes and attributes of its three parent classes, such as the ability to draw transforms or custom shapes and renders with a custom shader.
Gadot tries to provide his tools to respond to the most common needs. It has a dedicated scripting workspace, and an animation editor, a tilemap editor, a shader editor, a debugger, a provider, the ability to hot-reload locally and on a remote device.
The goal has a full package to create games and continuous user experience. We can still work with external programs as long as there is an import plugin for it. Or we can create one, Like the Tiled Map Importer.
That is also partly why Godot its programming languages GDscript and VisualScript, along with C#. We are designed for the needs of game developers and game designers, and they are tightly integrated into the engine and the editor.
GDScript lets us write simple code using Python-like syntax, yet it detects types and provides a static-language quality of auto-completion. It is also optimized for gameplay codes with built-in kinds of sectors and colors.
VisualScript is a node-based programming language that integrates good in the editor. We can drag and drop nodes or resources into the graph to create new code blocks.
Note that the 3D workspace does not have as many tools as the 2D workspace. We will need external programs or add-ons to edit terrain, animate complex characters. Godot provides a full API to extend the functionality of the editor using game code. See Godot Editor Below is a Godot game.
Godot offers an open-source codebase under the MIT license. All the technologies that ship with it have free as well. For the most part, they are coded from the ground up from the contributors,
Anyone can plug-in the proprietary tools for the need of their project; they cannot ship with the engine. They include NViDia
PhysX, Google Admob, or an FBX file importer. Any of these may come in the form of third party plugins instead.
On the other hand, an open codebase means we can learn from and extend the engine to our heart's content. We can also debug games easily as Godot will print errors with a stack trace, even if they come from the engine itself.