Godot’s design philosophy

Jetzt, wo Du Deine Hände schmutzig gemacht hast, lass uns über Godots Design sprechen.

Every game engine is different and fits different needs. Not only do they offer a range of features, but the design of each engine is unique. This leads to different workflows and different ways to form your games‘ structures. This all stems from their respective design philosophies.

Diese Seite soll Dir helfen, die Funktionsweise von Godot zu verstehen, angefangen bei einigen Grundpfeilern. Es ist keine Liste verfügbarer Funktionen und auch kein Engine-Vergleich. Um herauszufinden, ob eine Engine für Dein Projekt gut geeignet ist, musst Du sie selbst ausprobieren und ihr Design und ihre Einschränkungen verstehen.

Bitte schaue unter Discover Godot 3, the Free game engine (englisch) nach, wenn Du einen Überblick über die Funktionen der Engine suchst.

Objektorientiertes Design und Komposition

Godot setzt auf objektorientiertes Design mit seinem flexiblen Szenensystem und der Node-Hierarchie. Die Engine versucht sich von strengen Programmiermustern fernzuhalten, um das Spiel intuitiv zu strukturieren.

Du kannst zum Beispiel mit Godot Szenen zusammenstellen oder zusammenfassen. Es ist wie verschachtelte Fertigteile: Du kannst eine BlinkendesLicht-Szene und einer KaputteLaterne-Szene erstellen, die BlinkendesLicht verwendet. Dann erstelle eine Stadt mit KaputteLaterne. Ändere die Farbe des BlinkendesLicht, speichere es und alle KaputteLaterne Objekte in der Stadt werden sofort aktualisiert.

Darüber hinaus kannst Du von jeder Szene erben.

A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part of a level… anything you’d like. It works like a class in pure code, except you’re free to design it by using the editor, using only the code, or mixing and matching the two.

It’s different from prefabs you find in several 3D engines, as you can then inherit from and extend those scenes. You may create a Magician that extends your Character. Modify the Character in the editor and the Magician will update as well. It helps you build your projects so that their structure matches the game’s design.

image0

Also note that Godot offers many different types of objects called nodes, each with a specific purpose. Nodes are part of a tree and always inherit from their parents up to the Node class. Although the engine does feature components like collision shapes, they’re the exception, not the norm.

image1

Sprite ist ein Node2D, ein CanvasItem und ein Node. Es verfügt über alle Eigenschaften und Funktionen der drei übergeordneten Klassen, z. B. Transformationen oder die Möglichkeit, benutzerdefinierte Formen zu zeichnen und mit einem benutzerdefinierten Shader zu rendern.

Rundum-sorglos-Paket

Godot versucht, seine eigenen Werkzeuge zur Verfügung zu stellen, um die häufigsten Bedürfnisse zu erfüllen. Es verfügt über einen dedizierten Scripting-Arbeitsbereich, einen Animationseditor, einen Tilemap-Editor, einen Shader-Editor, einen Debugger, einen Profiler, die Fähigkeit, Hot-Reloads lokal und auf Remote-Geräten usw. durchzuführen.

image2

Ziel ist es, ein komplettes Paket für die Erstellung von Spielen und eine kontinuierliche Benutzererfahrung anzubieten. Du kannst weiterhin mit externen Programmen arbeiten, sofern dafür ein Import-Plugin vorhanden ist. Du kannst auch ein eigenes erstellen, wie z. B. den Tiled Map Importer.

That is also partly why Godot offers its own programming languages GDscript and VisualScript, along with C#. They’re designed for the needs of game developers and game designers, and they’re tightly integrated in the engine and the editor.

Mit GDscript kannst Du einfachen Code mit Python-ähnlicher Syntax schreiben, jedoch erkennt es Typen und bietet die Vorzüge der Autovervollständigung einer statischen Sprache. Es ist auch für Gameplay-Code mit integrierten Typen wie Vektoren und Farben optimiert.

Beachte auch, dass Du mit GDNative Hochleistungscode mit kompilierten Sprachen wie C, C++, Rust oder Python (mit dem Cython-Compiler) schreiben kannst, ohne die Engine neu kompilieren zu müssen.

image3

VisualScript ist eine knotenbasierte Programmiersprache, die sich gut in den Editor integrieren lässt. Du kannst Nodes oder Ressourcen per Drag & Drop in das Diagramm ziehen, um neue Codeblöcke zu erstellen.

Note that the 3D workspace doesn’t feature as many tools as the 2D workspace. You’ll need external programs or add-ons to edit terrains, animate complex characters, and so on. Godot provides a complete API to extend the editor’s functionality using game code. See The Godot editor is a Godot game below.

image4

Ein State Machine Editor Plugin in Godot 2 von kubecz3k. Mit ihm können Sie Zustände und Übergänge visuell verwalten.

Open Source

Godot offers a fully open source codebase under the MIT license. This means all the technologies that ship with it have to be Free (as in freedom) as well. For the most part, they’re developed from the ground up by contributors.

Anyone can plug in proprietary tools for the needs of their projects — they just won’t ship with the engine. This may include Google AdMob, or FMOD. Any of these can come as third-party plugins instead.

On the other hand, an open codebase means you can learn from and extend the engine to your heart’s content. You can also debug games easily, as Godot will print errors with a stack trace, even if they come from the engine itself.

Bemerkung

This does not affect the work you do with Godot in any way: there’s no strings attached to the engine or anything you make with it.

Community-gesteuert

Godot is made by its community, for the community, and for all game creators out there. It’s the needs of the users and open discussions that drive the core updates. New features from the core developers often focus on what will benefit the most users first.

That said, although a handful of core developers work on it full-time, the project has over 600 contributors at the time of writing. Benevolent programmers work on features they may need themselves, so you’ll see improvements in all corners of the engine at the same time in every major release.

Der Godot Editor ist ein Godot Spiel

The Godot editor runs on the game engine. It uses the engine’s own UI system, it can hot-reload code and scenes when you test your projects, or run game code in the editor. This means you can use the same code and scenes for your games, or build plugins and extend the editor.

Dies führt zu einem zuverlässigen und flexiblen UI-System, da es den Editor selbst steuert. Mit dem Schlüsselwort tool kannst Du beliebigen Spielcode im Editor ausführen.

image5

RPG in a Box is a voxel RPG editor made with Godot 2. It uses Godot’s UI tools for its node-based programming system and for the rest of the interface.

Platziere das Schlüsselwort tool oben in einer GDScript-Datei, und es wird im Editor ausgeführt. Auf diese Weise kannst Du Plugins importieren und exportieren, Plugins wie benutzerdefinierte Level-Editoren erstellen oder Skripts mit denselben Nodes und APIs erstellen, die Du in Deinen Projekten verwendest.

Separate 2D- und 3D-Engines

Godot bietet dedizierte 2D- und 3D-Rendering-Engines an. Daher ist die Basiseinheit für 2D-Szenen Pixel. Obwohl die Engines getrennt sind, kannst Du 2D in 3D und 3D in 2D rendern sowie 2D-Sprites und -Benutzeroberflächen über Deine 3D-Welt platzieren.