Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Godots Design-Philosophie¶
Nun, da Sie sich einen Überblick verschafft haben, lassen Sie uns über Godots Design sprechen.
Jede Spiele-Engine ist anders und erfüllt unterschiedliche Bedürfnisse. Sie bieten nicht nur eine Reihe von Features, sondern auch ein jeweils einzigartiges Engine-Design. Dies führt zu unterschiedlichen Arbeitsabläufen und unterschiedlichen Möglichkeiten, 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 Features 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 sich Godot explained in 5 minutes an, wenn Sie einen Überblick über die Features 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 Programmier-Patterns 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 BlinkingLight-Szene und einer BrokenLantern-Szene erstellen, die BlinkingLight verwendet. Dann erstellen Sie eine Stadt mit BrokenLanterns. Ändern Sie die Farbe des BlinkingLight, speichern es und alle BrokenLanterns 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. Sie funktioniert wie eine Klasse in reinem Code, außer dass Sie sie frei gestalten können, indem Sie den Editor oder nur den Code verwenden oder beides kombinieren.
Sie unterscheidet sich von den Prefabs, die Sie in verschiedenen 3D-Engines finden, da Sie von diesen Szenen erben und sie erweitern können. Sie können einen Magier erstellen, der Ihren Charakter erweitert. Wenn Sie den Charakter im Editor ändern, wird auch der Magier aktualisiert. Es hilft Ihnen, Ihre Projekte so aufzubauen, dass ihre Struktur mit dem Design des Spiels übereinstimmt.
Beachten Sie auch, dass Godot viele verschiedene Arten von Objekten anbietet, die als Nodes bezeichnet werden und jeweils einen bestimmten Zweck haben. Nodes sind Teil eines Baums und erben immer von ihren Parents bis hin zur Klasse Node. Obwohl die Engine über einige Nodes verfügt, wie z.B. Kollisions-Shapes, die von einem übergeordneten Physik-Bodies verwendet werden, arbeiten die meisten Nodes unabhängig voneinander.
Mit anderen Worten, Godots Nodes funktionieren nicht wie Komponenten in einigen anderen Spiele-Engines.
Sprite ist ein Node2D, ein CanvasItem und ein Node. Er verfügt über alle Eigenschaften und Features der drei Parent-Klassen, z.B. Transforms oder die Möglichkeit, benutzerdefinierte Shapes zu zeichnen und mit einem benutzerdefinierten Shader zu rendern.
Rundum-sorglos-Paket¶
Godot versucht, seine eigenen Tools zur Verfügung zu stellen, um die häufigsten Bedürfnisse zu erfüllen. Es verfügt über einen dedizierten Skripting-Arbeitsbereich, einen Animations-Editor, einen Tilemap-Editor, einen Shader-Editor, einen Debugger, einen Profiler, die Fähigkeit, Hot-Reloads lokal und auf Remote-Geräten usw. durchzuführen.
Ziel ist es, ein komplettes Paket zum Erstellen von Spielen und ein durchgängiges Benutzererlebnis anzubieten. Sie können immer noch mit externen Programmen arbeiten, solange es ein Import-Plugin in Godot dafür gibt. Oder Sie können eines erstellen, wie den Tiled Map Importer.
Das ist auch teilweise der Grund, warum Godot neben C# seine eigene Programmiersprache GDScript anbietet. GDScript ist auf die Bedürfnisse von Spieleentwicklern und Spieledesignern zugeschnitten und ist eng 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 Built-in-Typen wie Vectors und Colors optimiert.
Beachten Sie, dass Sie mit der GDExtension leistungsstarken Code in kompilierten Sprachen wie C, C++, Rust, D, Haxe oder Swift schreiben können, ohne die Engine neu zu kompilieren.
Beachten Sie, dass der 3D-Arbeitsbereich nicht so viele Tools 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 Spiele-Code zu erweitern. Siehe Der Godot-Editor ist ein Godot-Spiel unten.
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 quelloffene Code-Basis unter der MIT-Lizenz an. Das bedeutet, dass alle Technologien, die mit ihm ausgeliefert werden, auch frei sein müssen ("frei" im Sinne von 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-Importer 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 beeinflusst in keiner Weise die Arbeit, die Sie mit Godot machen: Es gibt keine Bedingungen, die an die Engine geknüpft sind, oder irgendetwas, das Sie damit machen.
Community-gesteuert¶
Godot wird von seiner Community, für die Community, und für alle Spieleentwickler da draußen entwickelt. Es sind die Bedürfnisse der Nutzer und offene Diskussionen, die Kern-Updates vorantreiben. Neue Features der Kernentwickler konzentrieren sich oft darauf, was den meisten Nutzern zuerst nützt.
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 Features, die sie möglicherweise selbst benötigen. Dadurch sieht man Verbesserungen in allen Teilen der Engine in jedem größeren Release.
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 der Annotation @tool
können Sie beliebigen Spielcode im Editor ausführen.
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.
Setzen Sie das Schlüsselwort @tool
an den Anfang einer beliebigen GDScript-Datei und sie wird im Editor ausgeführt. Auf diese Weise können Sie Plugins importieren und exportieren, Plugins wie z.B. benutzerdefinierte Level-Editoren erstellen oder Skripte mit denselben Nodes und APIs erstellen, die Sie in Ihren Projekten verwenden.
Bemerkung
Der Editor ist vollständig in C++ geschrieben und wird statisch in die Binärdatei kompiliert. Das bedeutet, dass Sie ihn nicht wie ein typisches Projekt importieren können, das eine project.godot
Datei hat.
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.