Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Was ist GDExtension?

Einführung

GDExtension ist eine Godot-spezifische Technologie, die es der Engine ermöglicht, zur Laufzeit mit nativen Shared Libraries zu interagieren. Sie können sie verwenden, um nativen Code auszuführen, ohne ihn mit der Engine zu kompilieren.

Bemerkung

GDExtension ist keine Skriptsprache und hat keine Beziehung zu GDScript.

Unterschiede zwischen GDExtension und C++-Modulen

Sie können sowohl GDExtension als auch C++-Module verwenden, um C- oder C++-Code in einem Godot-Projekt auszuführen.

Beide ermöglichen es Ihnen auch, Bibliotheken von Drittanbietern in Godot zu integrieren. Welche Sie wählen sollten, hängt von Ihren Bedürfnissen ab.

Warnung

Unser langfristiges Ziel ist es, dass GDExtensions, die auf eine frühere Version von Godot geschrieben sind, in späteren Minor-Versionen funktionieren, aber nicht umgekehrt. Zum Beispiel sollte eine GDExtension, die für Godot 4.2 geschrieben ist, problemlos in Godot 4.3 funktionieren, aber eine, die für Godot 4.3 geschrieben ist, wird nicht in Godot 4.2 funktionieren.

Allerdings ist GDExtension derzeit experimentell, was bedeutet, dass wir Kompatibilitätsbrüche vornehmen können, um größere Bugs zu beheben oder kritische Funktionen aufzunehmen. Zum Beispiel sind GDExtensions, die für Godot 4.0 erstellt wurden, nicht mit Godot 4.1 kompatibel (siehe Aktualisieren Ihrer GDExtension für 4.1).

Vorteile von GDExtension

Im Gegensatz zu Modulen muss bei GDExtension der Quellcode der Engine nicht kompiliert werden, was die Weitergabe Ihrer Arbeit erleichtert. Sie gibt Ihnen Zugang zu den meisten APIs, die GDScript und C# zur Verfügung stehen, und erlaubt Ihnen, Spiellogik mit voller Kontrolle über die Performance zu programmieren. Es ist ideal, wenn Sie leistungsstarken Code benötigen, den Sie als Add-on in der Asset-Bibliothek verteilen möchten.

Außerdem:

  • Die GDExtension ist nicht auf C und C++ beschränkt. Dank Drittanbieter-Bindings können Sie sie mit vielen anderen Sprachen verwenden.

  • Sie können die gleiche kompilierte GDExtension-Bibliothek im Editor und im exportierten Projekt verwenden. Bei C++-Modulen müssen Sie alle Exportvorlagen, die Sie verwenden möchten, neu kompilieren, wenn Sie deren Funktionalität zur Laufzeit benötigen.

  • Bei GDExtension müssen Sie nur Ihre Bibliothek kompilieren, nicht die gesamte Engine. Das ist anders als bei C++-Modulen, die statisch in die Engine kompiliert werden. Jedes Mal, wenn Sie ein Modul ändern, müssen Sie die Engine neu kompilieren. Selbst bei inkrementellen Builds ist dieser Prozess langsamer als bei der Verwendung von GDExtension.

Vorteile von C++-Modulen

Wir empfehlen C++-Module in Fällen, in denen GDExtension nicht ausreichend ist:

  • C++-Module bieten eine tiefere Integration in die Engine. Der Zugriff von GDExtension ist nicht so tief wie bei statischen Modulen.

  • Sie können C++-Module verwenden, um zusätzliche Funktionen in einem Projekt bereitzustellen, ohne native Bibliotheksdateien mit sich herumtragen zu müssen. Dies gilt auch für exportierte Projekte.

Bemerkung

Wenn Sie feststellen, dass bestimmte Systeme nicht über die GDExtension, sondern über benutzerdefinierte Module zugänglich sind, können Sie gerne eine Issue im godot-cpp-Repository erstellen, um Implementierungsmöglichkeiten für die fehlende Funktionalität zu diskutieren.

Unterstützte Sprachen

Die Godot-Entwickler unterstützen offiziell die folgenden Sprach-Bindings für GDExtension:

Bemerkung

Es gibt keine Pläne, weitere Sprachen mit GDExtension offiziell zu unterstützen. Die Community bietet jedoch mehrere Bindings für andere Sprachen an (siehe unten).

Die folgenden Bindings werden von der Community entwickelt und gepflegt:

Bemerkung

Nicht alle hier erwähnten Bindings sind für den produktiven Einsatz geeignet. Informieren Sie sich gründlich über die Optionen, bevor Sie ein Projekt mit einer dieser Bindings beginnen. Prüfen Sie auch, ob das Binding mit der von Ihnen verwendeten Godot-Version kompatibel ist.

Versionskompatibilität

GDExtension-Add-ons, die für eine bestimmte Godot-Version kompiliert wurden, funktionieren garantiert nur mit der gleichen Minor-Release-Serie. Ein für Godot 4.0 kompiliertes GDExtension-Add-on funktioniert zum Beispiel nur mit Godot 4.0, 4.0.1, 4.0.2. Darüber hinaus ist GDExtension nicht mit Godot 3.x kompatibel.

GDExtension-Add-ons sind außerdem nur mit Engine-Builds kompatibel, die den Grad der Float-Genauigkeit verwenden, für den die Erweiterung kompiliert wurde. Das bedeutet, dass, wenn Sie einen Engine-Build mit Double Precision Floats verwenden, die Erweiterung auch für Double Precision Floats kompiliert sein muss. Siehe Große-Welt-Koordinaten für Details.