Godots Design-Philosophie

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

Jede Spiel-Engine ist anders und erfüllt unterschiedliche Bedürfnisse. Sie bieten nicht nur eine Reihe von Funktionen, sondern auch das Design jeder Engine ist einzigartig. Dies führt zu unterschiedlichen Workflows und unterschiedlichen Möglichkeiten, um die Strukturen Deiner Spiele zu gestalten. Dies alles ergibt sich aus ihren jeweiligen Designphilosophien.

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.

Eine Godot-Szene kann eine Waffe, ein Charakter, ein Gegenstand, eine Tür, ein Level, ein Teil eines Levels sein … alles, was Du möchtest. Es funktioniert wie eine Klasse in reinem Code, außer dass Du es frei gestalten kannst, indem Du den Editor oder nur den Code verwendest oder beides kombinierst.

Es unterscheidet sich von Fertigteilen in anderen 3D-Engines, da Du von diesen Szenen erben und sie erweitern kannst. Du kannst einen Magier erstellen, der Deinen Charakter erweitert. Ändere den Charakter im Editor und der Magier wird ebenfalls aktualisiert. Es hilft Dir, Deine Projekte so zu erstellen, dass ihre Struktur dem Design des Spiels entspricht.

image0

Beachte auch, dass Godot viele verschiedene Arten von Objekten bereitstellt, die als Nodes bezeichnet werden und jeweils einen bestimmten Zweck haben. Nodes sind Teil eines Baumes und erben immer von ihren Eltern bis zur Node-Klasse. Obwohl die Engine auch über Komponenten wie Kollisionsformen verfügt, handelt es sich hierbei um die Ausnahme und nicht um die Regel.

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.

Aus diesem Grund bietet Godot neben C# auch seine eigenen Programmiersprachen GDscript und VisualScript an. Sie sind für die Bedürfnisse von Spieleentwicklern und -designern konzipiert und tief in die Engine und den Editor integriert.

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.

Beachte, dass der 3D-Arbeitsbereich nicht so viele Werkzeuge enthält wie der 2D-Arbeitsbereich. Du benötigst externe Programme oder Add-ons, um Gelände zu bearbeiten, komplexe Charaktere zu animieren und so weiter. Godot bietet eine komplette API, um die Funktionalität des Editors mit Hilfe von Spiel-Code zu erweitern. Siehe Der Godot Editor ist ein Godot Spiel unten.

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 bietet eine vollständig offenen Quellcode unter der MIT-Lizenz an. Das bedeutet, dass alle Technologien, die mit ihm ausgeliefert werden, auch frei sein müssen (wie in Freiheit). Sie werden größtenteils von Mitwirkenden von Grund auf entwickelt.

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.

Auf der anderen Seite bedeutet eine offene Codebasis, dass Sie von der Engine ** lernen und sie nach Herzenslust erweitern können. Sie können auch Spiele leicht debuggen, da Godot Fehler mit einem Stack Trace ausgibt, auch wenn sie von der Engine selbst stammen.

Bemerkung

Dies hat keinen Einfluss auf die Arbeit, die man mit Godot** macht: Es gibt keine Bedingungen, die an die Engine geknüpft sind, oder etwas, was man damit macht.

Community-gesteuert

Godot wird von seiner Gemeinschaft entwickelt für die Gemeinschaft, und für alle Spieleentwickler da draußen. Es sind die Anforderungen der Nutzer und die offene Diskussionskultur, die den Kurs steuern, nach welchem sich die Engine weiterentwickelt. Neu hinzukommende Features der Kernentwickler konzentrieren sich oft auf die Elemente, die am häufigsten benötigt werden.

Obwohl eine handvoll Kernentwickler in Vollzeit an der Engine arbeiten, hat das Projekt zum Zeitpunkt des Schreibens dieses Textes über 600 Mitwirkende. Wohlwollende Programmierer arbeiten an Funktionen, die sie möglicherweise selbst benötigen, sodass Sie in allen wichtigen Versionen gleichzeitig Verbesserungen in allen Ecken der Engine sehen können.

Der Godot Editor ist ein Godot Spiel

Der Godot-Editor läuft auf der Spielengine. Er verwendet das eigene UI-System der Engine und kann beim Testen von Projekten Code und Szenen per Hot-Reload laden oder Spielcode im Editor ausführen. Das bedeutet, dass Du denselben Code und dieselben Szenen für Deine Spiele verwenden oder Plugins erstellen und den Editor erweitern kannst.

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 ist ein Voxel-RPG-Editor, der mit Godot 2 erstellt wurde. Er verwendet Godots UI-Tools für sein knotenbasiertes Programmiersystem und für den Rest der Benutzeroberfläche.

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.