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 register_types.cpp definiert werden. Das Hinzufügen ist erforderlich, damit die Erweiterung funktioniert.

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" : ""
}