Godot Extension erstellen
In diesem Tutorial zeige ich wie man seine eigene Godot Extension erstellt. Damit lässt sich die beliebte Game Engine an die eigenen Bedürfnisse anpassen oder um eigene Tools erweitern.
Godot Extension erstellen
In diesem Tutorial folge ich der offiziellen Dokumenation und erstelle eine eigene Extension unter Windows. Da es dabei zu einigen Problemen kommt wird diese Anleitung bestimmt nützlich sein.
Toolset
Bevor man anfangen kann sollte man sich das Toolset am Rechner zurechtlegen. Man benötigt folgendes:
- Godot Exe
Diese kommt mit der Engine, in meinem fall ist das die aktuelle Version Godot.Net 4.4. Ich habe die Engine in einem Ordner entpackt und über die Umgebungsvariablen für VS Code verfügbar gemacht. Siehe dazu meinen Godot VS Code Artikel - Visual Studio
Ist meine bevorzugte C++ IDE, alternativ kann man auch andere vergleichbare Programme verwenden, einzig relevant ist ein C++ Compiler - SCons
Das Tutorial verwendet ein Python Build Tool namens Scons. Dazu folgenden zur Installation unter Windows einige Anmerkungen, - godot-cpp Repo
Scons installieren
Damit Scons über das Terminal unter Windows funktioniert benötigt man ein aktuelles Python. Ich habe mir dieses über den Windows Store installiert.
pip install scons
Möchte man nun das scons Kommando ausführen bekommt man die Meldung, dass es ein nicht bekanntes cmdlet ist. Der Python Script Pfad muss noch in den Umgebungsvariablen hinzugefügt werden:
C:\Users\werne\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts
Der kryptische Python Name resultiert aus der Installation über den Windows Store, der ist immer anders. Im Scripts Ordner findet man eine scons.exe Datei. Nach einem Neustart des Terminals ist der scons Befehl verfügbar.
Extension Repo vorbereiten
Für meine eigene Extension erstelle ich mir ein neues Git Repository und wechsle in dessen root Ordner. Dort fügt man nun godot-cpp als submodule hinzu. Das geht mit folgenden Kommandos:
git submodule add -b 4.4 https://github.com/godotengine/godot-cpp cd godot-cpp git submodule update --init
In meinem Fall ist das eine Extension für Godot 4.4. Für eine alternative Version muss man den zugehörigen Branch auschecken (-b 4.5 z.B. statt -b 4.4).
Extension API dumpen
Im Repo umpen wir die Extension API der aktuellen Godot Version. Dazu führt man:
godot --dump-extension-api
sofern godot nicht gefunden wird führt man dieses Kommando einfach mit dem absoluten Pfad aus. In meinem Fall war das:
C:\Tools\Godot_v4.4.1-stable_mono_win64\Godot_v4.4.1-stable_mono_win64_console.exe --dump-extension-api
Ich habe Godot unter C:\Tools installiert. Das Ergebnis dieses Kommandos ist eine große JSON Datei:
Mit dem folgenden Befehl baut scons nun die Projektdateien für die Plattform Windows und die API der korrekten Godot Version:
Laut Dokumentation kann es nötig sein bits=64 als Parameter hinzuzufügen. Auf meinem System war das nicht nötig.
Demoprojekt und Extension
Im Folgenden legt man wie in der Dokumentation beschrieben in einem Ordner demo ein neues Projekt mit einem Main Node in einer Main Scene an und einen src Ordner mit den Header und Source Dateien der C++ Erweiterung.
Scons Build
Das Beispiel in der Dokumentation umfasst auch eine passende SConstruct Datei die für das Setup mit dem godot-cpp Projekt funktioniert. Sobald dieses im root des Projekts existiert kann man die Extension mittels dem Befehl:
scons platform=windows
für Windows bauen. Das Ergebnis des erfolgreichen Builds findet man unter dem/bin
Der letzte Schritt ist die Erstellung einer config Datei demo/bin/gdexample.gdextension. In der wird der Engine mitgeteilt, dass es die Extension gibt und welche Datei für welche Plattform geladen werden soll. Das bedingt auch, dass wir scons auch für alle nötigen Plattformen erneut aufrufen müssen.
Testen
Getestet wird mit dem demo Projekt. Im demo Ordner liegt auf selber Höhe wie der bin Ordner mit der Extension die Szene.
Öffnet man diese nun mit dem Editor, so findet man einen neuen GDExample Node. Da dieser von Sprite2D erbt ist dieser in der Hierarchie auch darunter zu finden.
Fazit
In diesem Tutorial habe ich gezeigt wie man unter Windows für Godot mit C++ eine eigene Extension erstellt. Mit diesem Setup hat man die nötige Struktur um Extensions für eigene Projekte umzusetzen.