Qu'est-ce que GDNative ?

Introduction

GDNative est une technologie spécifique à Godot qui permet au moteur d'interagir avec des bibliothèques natives partagées <https://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries>`__ au moment de l'exécution. Vous pouvez l'utiliser pour exécuter du code natif sans le compiler avec le moteur.

Note

GDNative n'est pas un langage de script et n'a aucune relation avec GDScript.

Différences entre les modules GDNative et C++

Vous pouvez utiliser les modules GDNative et les modules C++ pour exécuter du code C ou C++ dans un projet Godot.

Ils vous permettent également tous deux d'intégrer des bibliothèques tierces dans Godot. Le choix de l'une ou l'autre dépend de vos besoins.

Avantages de GDNative

Contrairement aux modules, GDNative ne nécessite pas de compiler le code source du moteur, ce qui facilite la distribution de votre travail. Il vous donne accès à la plupart des API disponibles dans GDScript C#, ce qui vous permet de coder la logique du jeu avec un contrôle total sur les performances. Il est idéal si vous avez besoin d'un code performant que vous souhaitez distribuer en tant qu'extension dans la bibliothèque d'asset.

Aussi :

  • GDNative n'est pas limité au C et au C++. Grâce à des liaisons tierces, vous pouvez l'utiliser avec de nombreux autres langages.

  • Vous pouvez utiliser la même bibliothèque GDNative compilée dans l'éditeur et dans le projet exporté. Avec les modules C++, vous devez recompiler tous les modèles d'exportation que vous prévoyez d'utiliser si vous avez besoin de leur fonctionnalité au moment de l'exécution.

  • GDNative vous oblige uniquement à compiler votre bibliothèque, et non le moteur entier. C'est différent des modules C++, qui sont compilés statiquement dans le moteur. Chaque fois que vous modifiez un module, vous devez recompiler le moteur. Même avec des constructions incrémentales, ce processus est plus lent qu'avec GDNative.

Avantages des modules C++

Nous recommandons C++ modules dans les cas où GDNative n'est pas suffisant :

  • Les modules C++ permettent une intégration plus poussée dans le moteur. L'accès de GDNative est limité à ce que l'API de scripting expose.

  • Vous pouvez utiliser des modules C++ pour fournir des fonctionnalités supplémentaires dans un projet sans avoir à transporter des fichiers de bibliothèque natifs. Ceci s'étend aux projets exportés.

  • Les modules C++ sont pris en charge sur toutes les plateformes. En revanche, GDNative n'est pas encore pris en charge par HTML5 et la plateforme universelle Windows (UWP).

  • Les modules C++ peuvent être plus rapides que GDNative, surtout lorsque le code nécessite beaucoup de communication via l'API de script.

Langages supportés

Les développeurs de Godot prennent officiellement en charge les liaisons de langage suivantes pour GDNative :

Note

Il n'est pas prévu de supporter officiellement d'autres langues avec GDNative. Cela dit, la communauté propose plusieurs liaisons pour d'autres langues (voir ci-dessous).

Ces liaisons sont développées et gérées par la communauté :

Note

Toutes les reliures mentionnées ici ne sont pas forcément prêtes pour la production. Veillez à bien étudier les options avant de commencer un projet avec l'une d'entre elles. Vérifiez également si la reliure est compatible avec la version de Godot que vous utilisez.

Version compatibility

Unlike Godot itself, GDNative has stricter version compatibility requirements as it relies on low-level ptrcalls to function.

GDNative add-ons compiled for a given Godot version are only guaranteed to work with the same minor release series. For example, a GDNative add-on compiled for Godot 3.4 will only work with Godot 3.4, 3.4.1, 3.4.2… but not Godot 3.3 or 3.5.