Qu'est-ce que GDNative ?

Introduction

GDNative est une technologie spécifique à Godot qui permet au moteur de jeu d'interagir avec des bibliothèques partagées natives au moment de l'exécution. Vous pouvez les utiliser pour exécuter du code natif sans devoir compiler tout 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 supportés sur toutes les plateformes. À l'inverse, GDNative n'a qu'une compatibilité limitée avec HTML5 (qui ne peut pas encore être utilisé avec plusieurs fils d'exécution), et n'est pas supporté pour la plateforme "Universal Windows Platform" (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.

Compatibilité des versions

Contrairement à Godot, GDNative a des besoins en compatibilité de version plus strictes puisqu'il dépend d'appels ptrcalls de bas-niveau pour fonctionner.

Les extensions GDNative compilées pour une version donnée de Godot ne sont garanties de fonctionner qu'avec les versions mineures de la même série. Par exemple, une extension GDNative compilée pour Godot 3.4 fonctionnera avec Godot 3.4, 3.4.1, 3.4.2, ... mais pas Godot 3.3 ou 3.5.