Die .gdextension-Datei
Einführung
Die .gdextension-Datei in Ihrem Projekt enthält die Anweisungen zum Laden der GDextension. Die Anweisungen sind in bestimmte Abschnitte unterteilt. Diese Seite soll Ihnen einen schnellen Überblick über die verschiedenen Ihnen zur Verfügung stehenden Optionen geben. Eine Einführung in die ersten Schritte mit Gdextensions finden Sie im GDExtension C++-Beispiel.
Abschnitt „Konfiguration“
Propertys |
Typ |
Beschreibung |
|---|---|---|
entry_symbol |
String |
Name der Einstiegsfunktion zum Initialisieren der GDExtension. Diese Funktion sollte bei Verwendung von godot-cpp in der Datei |
compatibility_minimum |
String |
Minimale kompatible Version. Dies verhindert, dass ältere Versionen von Godot Erweiterungen laden, die von Funktionen neuerer Versionen von Godot abhängen. Wird nur in Godot 4.1 oder höher unterstützt |
compatibility_maximum |
String |
Maximal kompatible Version. Dies verhindert, dass neuere Versionen von Godot die Erweiterung laden. Wird nur in Godot 4.3 oder höher unterstützt |
reloadable |
Boolean |
Lädt die Erweiterung beim Neukompilieren neu. Das Neuladen wird für die Godot-CPP-Bindung in Godot 4.2 oder höher unterstützt. Andere Sprachbindungen unterstützen dies möglicherweise auch, müssen es aber nicht. Dieses Flag sollte hauptsächlich zum Entwickeln oder Debuggen einer Erweiterung verwendet werden. |
android_aar_plugin |
Boolean |
Die GDExtension ist Teil eines v2 Android-Plugins. Während des Exports zeigt dieses Flag dem Editor an, dass die nativen gemeinsam genutzten Bibliotheken von GDExtension von den AAR-Binärdateien des Android-Plugins exportiert werden. |
Abschnitt „Bibliotheken“
In diesem Abschnitt können Sie die Pfade zu den kompilierten Binärdateien Ihrer GDExtension-Bibliotheken festlegen. Durch die Angabe von Feature-Flags können Sie filtern, welche Version mit Ihrem Spiel geladen und exportiert werden soll, je nachdem, welche Feature-Flags aktiv sind. Jedes Feature-Flag muss mit den Feature-Flags von Godot oder Ihren benutzerdefinierten Export-Flags übereinstimmen, um in ein exportiertes Spiel geladen zu werden. Beispielsweise bedeutet „macos.debug“, dass es geladen wird, wenn in Godot sowohl das Flag „macos“ als auch das Flag „debug“ aktiv ist. Jede Zeile des Abschnitts wird von oben nach unten ausgewertet.
Hier ist ein Beispiel, wie das aussehen kann:
[libraries]
macos.debug = "res://bin/libgdexample.macos.template_debug.framework"
macos.release = "res://bin/libgdexample.macos.template_release.framework"
windows.debug.x86_32 = "res://bin/libgdexample.windows.template_debug.x86_32.dll"
windows.release.x86_32 = "res://bin/libgdexample.windows.template_release.x86_32.dll"
windows.debug.x86_64 = "res://bin/libgdexample.windows.template_debug.x86_64.dll"
windows.release.x86_64 = "res://bin/libgdexample.windows.template_release.x86_64.dll"
linux.debug.x86_64 = "res://bin/libgdexample.linux.template_debug.x86_64.so"
linux.release.x86_64 = "res://bin/libgdexample.linux.template_release.x86_64.so"
linux.debug.arm64 = "res://bin/libgdexample.linux.template_debug.arm64.so"
linux.release.arm64 = "res://bin/libgdexample.linux.template_release.arm64.so"
linux.debug.rv64 = "res://bin/libgdexample.linux.template_debug.rv64.so"
linux.release.rv64 = "res://bin/libgdexample.linux.template_release.rv64.so"
Hier sind Listen einiger der verfügbaren integrierten Optionen (weitere finden Sie in den Feature-Tags):
Laufendes System
Flag |
Beschreibung |
|---|---|
windows |
Windows-Betriebssystem |
macos |
Mac-Betriebssystem |
linux |
Linux-Betriebssystem |
bsd |
BSD-Betriebssystem |
linuxbsd |
Linux- oder BSD-Betriebssystem |
android |
Android-Betriebssystem |
ios |
iOS-Betriebssystem |
web |
Webbrowser |
Builds
Flag |
Beschreibung |
|---|---|
debug |
Erstellen mit Debugsymbolen |
release |
Optimierter Build ohne Debugsymbole |
editor |
Editor-Build |
Architektur
Flag |
Beschreibung |
|---|---|
double |
Doppelt präziser Aufbau |
single |
Einfachpräziser Aufbau |
x86_64 |
64-Bit x86-Build |
arm64 |
64-Bit-ARM-Build |
rv64 |
64-Bit-RISC-V-Build |
riscv |
RISC-V-Build (beliebige Bitanzahl) |
wasm32 |
32-Bit-WebAssembly-Build |
Abschnitt „Symbole“
Standardmäßig verwendet Godot das Node-Icon im Szenendock für GDExtension-Nodes. Das eigene Icon kann über die Datei gdextension hinzugefügt werden. Das Icon des Nodes wird durch Bezugnahme auf seinen Namen und den Ressourcenpfad einer SVG-Datei festgelegt.
Zum Beispiel:
[icons]
GDExample = "res://icons/gd_example.svg"
Der Pfad sollte auf ein 16 x 16 Pixel großes SVG-Bild verweisen. Lesen Sie die Anleitung für Erstellung von Icons für weitere Informationen.
Abschnitt „Abhängigkeiten“
In diesem Abschnitt legen Sie die Pfade der GDExtension-Abhängigkeiten fest. Dies wird intern verwendet, um die Abhängigkeiten beim Exportieren Ihrer ausführbaren Spieldatei zu exportieren. Sie können festlegen, welche Abhängigkeit abhängig von den Feature-Flags der exportierten ausführbaren Datei geladen wird. Darüber hinaus können Sie ein optionales Unterverzeichnis festlegen, in das Ihre Abhängigkeiten verschoben werden. Wenn kein Pfad angegeben wird, verschiebt Godot die Bibliotheken in dasselbe Verzeichnis wie Ihre ausführbare Spieldatei.
Warnung
Unter macOS müssen gemeinsam genutzte Bibliotheken in einem Ordner namens Frameworks mit einer Verzeichnisstruktur wie dieser vorhanden sein: Game.app/Contents/Frameworks.
[dependencies]
macos.debug = {
"res://bin/libdependency.macos.template_debug.framework" : "Contents/Frameworks"
}
macos.release = {
"res://bin/libdependency.macos.template_release.framework" : "Contents/Frameworks"
}
windows.debug = {
"res://bin/libdependency.windows.template_debug.x86_64.dll" : "",
"res://bin/libdependency.windows.template_debug.x86_32.dll" : ""
}
windows.release = {
"res://bin/libdependency.windows.template_release.x86_64.dll" : "",
"res://bin/libdependency.windows.template_release.x86_32.dll" : ""
}
linux.debug = {
"res://bin/libdependency.linux.template_debug.x86_64.so" : "",
"res://bin/libdependency.linux.template_debug.arm64.so" : "",
"res://bin/libdependency.linux.template_debug.rv64.so" : ""
}
linux.release = {
"res://bin/libdependency.linux.template_release.x86_64.so" : "",
"res://bin/libdependency.linux.template_release.arm64.so" : "",
"res://bin/libdependency.linux.template_release.rv64.so" : ""
}