Godot

aus Wikipedia, der freien Enzyklopädie
Godot
Basisdaten

Entwickler Juan Linietsky, Ariel Manzur
die Godot-Gemeinschaft
Betriebssystem Linux (X11), Windows (Win32 + UWP), macOS, FreeBSD, OpenBSD, Haiku (Entwicklungs- und Zielplattformen), Android, iOS (nur Zielplattformen), Web (WebAssembly, WebGL 2.0)
Programmiersprache C++, GDScript[1], C#
Kategorie Spiel-Engine
deutschsprachig ja
godotengine.org

Godot ist eine freie Spiel-Engine. Sie besteht aus einem grafischen Editor, in dem Spielelemente in einer Baumstruktur organisiert und auf einer 2D- oder 3D-Leinwand angeordnet werden. Die Spiellogik wird üblicherweise in GDScript[1] implementiert, einer eigenen integrierten Skriptsprache, deren Syntax an Python angelehnt ist und speziell an die Bedürfnisse von Spiel-Engines angepasst wurde.

Geschichte und Entstehung

Nach vieljähriger interner Entwicklung und Verwendung der Godot-Engine von OKAM-Studio, wurde im Februar 2014 der gesamte Quellcode des Projekts unter der MIT-Lizenz auf GitHub freigegeben.[2] Unter der Leitung von Juan Linietsky und Ariel Manzur und mit Hilfe einer wachsenden Gemeinschaft externer Interessenten wurde am 15. Dezember 2014 die finale Version 1.0 veröffentlicht.[3] Das erste große stabile Update, das die 2D-Engine stark erweiterte, erschien als Version 1.1 am 21. Mai 2015.[4]

Version 2.0 wurde am 23. Februar 2016 veröffentlicht[5] und enthält eine an vielen Stellen überarbeitete Benutzeroberfläche, die durch Registerkarten (Tabs) das Arbeiten an mehreren Szenen stark vereinfacht, einen verbesserten Debugger (inkl. Debugging auf externer Hardware) und das Persistent-Live-Editing (der Editor kann in ein laufendes Spiel eingreifen und getätigte Änderungen bleiben nach Spielende bestehen). Zeitgleich wurde eine neue überarbeitete offizielle Webseite vorgestellt. Version 2.1 überarbeitet die Benutzeroberfläche erneut (verbesserte Ergonomie, Lokalisierungen und Anpassungsmöglichkeiten) und bietet weitere Funktionen wie einen integrierten Profiler, Unterstützung von OTF- und TTF-Schriftarten, Verbesserungen am Live-Editing und einer eingebauten Funktion Medieninhalte und Projekte aus dem Internet zu laden.[6]

Version 3.0, erschienen am 29. Januar 2018 nach anderthalb Jahren Entwicklung[7], ist die erste stabile Version der Godot-Engine, nachdem große Teile von Grund auf neu geschrieben wurden. Viel Arbeit wurde in die 3D-Engine investiert, die jetzt Full Principled BSDF Rendering, globale Beleuchtung (GI-Probes und Lightmaps) und GPU-berechnete Partikeleffekte beherrscht. Zusätzlich wurden viele Grafikeffekte integriert und die Unterstützung externer Dateiformate erweitert. Mit GDNative bietet Godot eine Schnittstelle um Drittanwenderbibliotheken anzubinden, unter anderem wird nun C# als Programmiersprache durch Mono unterstützt. Parallel zur 3D-Engine wurde auch die Audio-Engine komplett neu entwickelt und bietet jetzt Audiobus-Verwaltung, positionsabhängiges Audio, Audioeffekte und 5.1-/7.1-Lautsprecherunterstützung. Zu den weiteren Änderungen gehören die Unterstützung von VR/AR, eine neue Netzwerk-API inklusive IPv6-Unterstützung, Integration der Bullet-Physik-Engine, automatischer Asset-Import, Verbesserungen an der Benutzeroberfläche und GDScript, starke Verbesserung der Dokumentation und vieles mehr.

Technische Eigenschaften

Das Szenen-System

In Godot werden Szenen in einer Baumstruktur organisiert. Die Elemente werden Nodes genannt und haben jeweils genau ein Eltern-Node und beliebig viele Kinder-Nodes. Sämtliche Objekte in Godot sind Nodes und eine Szene ist die Summe aller Nodes und ihre Anordnung im Szenenbaum (scenetree). Große Flexibilität erreicht dieser Aufbau, da in Godot auch Sub-Szenen als Nodes an beliebigen Stellen im Szenen-Baum eingefügt werden können und somit ein großes Abstraktionsniveau und hohe Ordnung erreicht werden können. Ab Version 2.0 ist es zusätzlich möglich eine Vererbungshierarchie zwischen Szenen aufzubauen. Änderungen in der Basisszene werden dabei sofort in allen abgeleiteten Szenen verfügbar.

Programmierung

extends RichTextLabel 

var label_text = "Hallo Welt"

func _ready():
   self.add_text(label_text)
GDScript-Codebeispiel
VisualScript-Codebeispiel

Als Skriptsprache in Godot dient das eigens entwickelte GDScript[1]. GDScript ähnelt syntaktisch stark Python, ist jedoch teils angepasst worden, um besser in die Engine integriert zu werden. Skripte können somit direkt den Nodes, die im Editor erstellt wurden, zugeordnet werden und Variablen können vom Quelltext in den Editor exportiert werden. Die integrierte Editorkomponente verfügt über Syntaxhervorhebung, automatische Einrückungen und ein fortgeschrittenes Autovervollständigungssystem. Zusätzlich zu GDScript können Programme auch in C++ geschrieben werden. Für Shader-Programmierung wurde eine gesonderte Skriptsprache integriert, die sich an GLSL orientiert.[8] Zur Fehlerbehandlung und Leistungsmessung ist ein integrierter Debugger vorhanden. Ab Version 3.0 ist GDNative in Godot enthalten, eine Schnittstelle, welche es erlaubt, externe Bibliotheken mit Godot zu verbinden, ohne Godot neu kompilieren zu müssen. Damit ist auch Unterstützung für weitere Programmiersprachen gegeben, prominentestes Beispiel hierfür ist C#. Zusätzlich gibt es die Möglichkeit, mittels VisualScript graphisch über Flussdiagramme Programmierlogik zu definieren.

Rendering

Godot nutzt in 2D und in 3D primär einen OpenGL ES 3.0-Renderer. Alternativ ist aufgrund von manchen Kompatibilitäts- und Performance-Mängeln auch OpenGL ES 2.0 nutzbar[9]. In Version 4.0[10] wird auch Vulkan unterstützt werden, was OpenGL ES 3.0 schlussendlich ablösen soll. Materials können im Editor über Eigenschaften wie Textur, Normal Map, Spekularität und Volumenstreuung definiert oder von Grund auf als Shader in einer vereinfachten GLSL-ähnlichen Sprache geschrieben werden. Lichter nutzen Globale Beleuchtung und können dynamisch oder vorberechnet sein. Auch Postprocessing-Effekte wie Nebel, Schärfentiefe und HDR werden unterstützt.

Animationssystem

Godot verfügt über ein tief integriertes Animationssystem. Hängt man im Szenenbaum die Node Animation ein, so können sämtliche Attribute der anderen Nodes im Szenenbaum mittels Keyframes zur Laufzeit verändert werden. Des Weiteren können mit Animationen auch Funktionen gezielt aufgerufen werden, was es erlaubt, viel Programmierlogik in den Editor zu übertragen.

Separate Engine für 2D und 3D

In Godot können 2D-Anwendungen vollkommen ohne Kenntnisse über 3D-Programmierung erstellt werden, da die 2D-Engine getrennt läuft und keine Projektion der 3D-Engine ist. Dies gilt auch für die integrierte Physik-Engines (wobei deren API gleich gehalten ist). Bei Bedarf lassen sich 2D-Szenen dennoch in die 3D-Engine einbetten. 3D-Szenen lassen sich zum größten Teil in externer 3D-Grafiksoftware anfertigen (inklusive Animationen). Eine große Bibliothek von GUI-Elementen (genannt Control) lassen sich sowohl in 2D als auch in 3D verwenden. Die integrierte Physik-Engine arbeitet in Pixelkoordinaten, nicht im metrischen System.

Plattformunabhängigkeit

Godot ist eine der wenigen Spiel-Engines, die Spielentwicklung neben Windows auch vollständig in Linux, macOS und weiteren Betriebssystemen erlauben. Erstellte Spiele können neben den genannten Desktopbetriebssystemen auch nach Android und als HTML5-Webanwendung exportiert werden. Des Weiteren existieren projektexterne Export-Templates in unterschiedlicher Stabilität und Lizenz für PlayStation 3, PlayStation Vita, Nintendo 3DS, Windows Runtime, iOS und Nintendo Switch.

Dokumentation

Godot liefert eine integrierte Dokumentation aller Klassen und Funktionen direkt im Editor. Eine illustrative Einführung und detaillierte Anleitungen befinden sich auf der Projektwebseite. Auf der offiziellen Webseite befindet sich zusätzlich ein durch die Gemeinschaft organisiertes Frage-Antwort-System (inkl. generierten FAQ), ein Forum und ein Schaukastensystem, die alle zum Lernen zur Verfügung stehen.

Literatur

  • Ariel Manzur, George Marques: Godot Engine Game Development, Addison-Wesley, Juni 2018, ISBN 978-0134835099
  • Chris Bradfield: Godot Engine Game Development Projects, Packt Publishing, Juni 2018, ISBN 978-1788831505

Weblinks

Einzelnachweise (englisch)