Godots Design-Philosophie

Jetzt, wo Sie Ihre Hände schmutzig gemacht haben, lassen sie 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 Arbeitsabläufen und unterschiedlichen Möglichkeiten, um die Strukturen Ihrer Spiele zu gestalten. Dies alles ergibt sich aus ihren jeweiligen Designphilosophien.

Diese Seite soll Ihnen 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 Ihr Projekt gut geeignet ist, müssen Sie sie selbst ausprobieren und deren Design und Einschränkungen verstehen.

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

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.

Sie können zum Beispiel mit Godot Szenen zusammenstellen oder zusammenfassen. Es ist wie verschachtelte Fertigteile: Sie können eine BlinkendesLicht-Szene und einer KaputteLaterne-Szene erstellen, die BlinkendesLicht verwendet. Dann erstellen Sie eine Stadt mit KaputteLaterne. Ändern Sie die Farbe des BlinkendesLicht, speichern es und alle KaputteLaterne Objekte in der Stadt werden sofort aktualisiert.

Darüber hinaus können Sie 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 Sie möchten. Es funktioniert wie eine Klasse in reinem Code, außer dass Sie es frei gestalten können, indem Sie den Editor oder nur den Code verwenden oder beides kombinieren.

Es unterscheidet sich von prefabs in anderen 3D-Engines, da man von diesen Szenen erben und sie erweitern kann. Sie können einen Magier erstellen, der Ihren Charakter erweitert. Ändere den Charakter im Editor und der Magier wird ebenfalls aktualisiert. Es hilft Ihnen Ihre Projekte so zu erstellen, dass deren Struktur dem Design des Spiels entspricht.

image0

Beachten Sie 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. Sie können weiterhin mit externen Programmen arbeiten, sofern dafür ein Import-Plugin vorhanden ist. Sie können 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 können Sie 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.

Beachten Sie auch, dass Sie mit GDNative Hochleistungscode mit kompilierten Sprachen wie C, C++, Rust oder Python (mit dem Cython-Compiler) schreiben können, ohne die Engine neu kompilieren zu müssen.

image3

VisualScript ist eine Node-basierte Programmiersprache, die sich gut in den Editor integrieren lässt. Sie können Nodes oder Ressourcen per Drag & Drop in das Diagramm ziehen, um neue Codeblöcke zu erstellen.

Beachten Sie, dass der 3D-Arbeitsbereich nicht so viele Werkzeuge enthält wie der 2D-Arbeitsbereich. Sie benötigen 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.

Jeder kann proprietäre Tools für die Bedürfnisse seiner Projekte einsetzen - sie werden aber nicht mit der Engine ausgeliefert. Dies kann NVIDIA PhysX, Google AdMob oder ein FBX-Modell-Importeur sein. Jedes dieser Plugins kann stattdessen als Drittanbieter-Plugin mitgeliefert werden.

Auf der anderen Seite bedeutet eine offene Codebasis, dass Sie von der Engine lernen und sie 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 nur eine handvoll Kernentwickler in Vollzeit an der Engine arbeiten, hat das Projekt zum Zeitpunkt des Schreibens dieses Textes über 600 Mitwirkende. Programmierer arbeiten an Funktionen, die sie möglicherweise selbst benötigen. Dadurch sieht man Verbesserungen in allen Teilen der Engine in jeder großen Version.

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 Sie denselben Code und dieselben Szenen für Ihre Spiele verwenden oder Plugins erstellen und den Editor erweitern können.

Dies führt zu einem zuverlässigen und flexiblen UI-System, da es den Editor selbst steuert. Mit dem Schlüsselwort tool können Sie 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 Node-basiertes Programmiersystem und für den Rest der Benutzeroberfläche.

Platzieren Sie das Schlüsselwort tool oben in einer GDScript-Datei und es wird im Editor ausgeführt. Auf diese Weise können Sie Plugins importieren und exportieren, Plugins wie benutzerdefinierte Level-Editoren erstellen oder Skripts mit denselben Nodes und APIs erstellen, die Sie in Ihren Projekten verwenden.

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, können Sie 2D in 3D und 3D in 2D rendern sowie 2D-Sprites und -Benutzeroberflächen über Ihre 3D-Welt platzieren.