Langages de script

Cette leçon vous donnera un aperçu des langages de script disponibles dans Godot. Vous apprendrez les avantages et les inconvénients de chaque option. Dans la partie suivante, vous écrirez votre premier script en utilisant GDScript.

Les scripts s'attachent à un nœud et étendent son comportement. Cela signifie que les scripts héritent de toutes les fonctions et propriétés du nœud auquel ils sont attachés.

Par exemple, prenons un jeu où un nœud Camera2D suit un navire. Le nœud Camera2D suit son parent par défaut. Imaginez que vous vouliez qu'il tremble lorsque le joueur subit des dommages. Comme cette fonctionnalité n'est pas intégrée à Godot, vous devez y attacher un script et coder le tremblement de la caméra.

../../_images/scripting_camera_shake.gif

Langages de script disponibles

Godot offre cinq langages de programmation de jeu : GDScript, C#, VisualScript, et C++ et C via sa technologie GDNative. Il existe d'autres langues soutenues par la communauté, mais celles-ci sont les officielles.

Vous pouvez utiliser plusieurs langages dans un même projet. Par exemple, dans une équipe, vous pouvez coder la logique de jeu en GDScript, qui est rapide à écrire, laisser les concepteurs de niveaux écrire les quêtes dans le langage graphique VisualScript, et utiliser C# ou C++ pour implémenter des algorithmes complexes et maximiser leurs performances. Vous pouvez aussi tout écrire en GDScript ou en C#. C'est vous qui décidez.

Nous offrons cette flexibilité pour répondre aux besoins des différents projets et développeurs de jeux.

Quelle langue dois-je utiliser ?

Si vous êtes un débutant, nous vous recommandons de débuter avec GDScript. Nous avons créé ce langage spécifiquement pour Godot et les besoins des développeurs de jeux. Il possède une syntaxe légère et simple et offre l'intégration la plus étroite avec Godot.

../../_images/scripting_gdscript.png

Pour C#, vous aurez besoin d'un éditeur de code externe comme VSCode ou Visual Studio. Si la prise en charge de C# est désormais mature, vous trouverez également moins de ressources d'apprentissage pour ce langage par rapport à GDScript. C'est pourquoi nous recommandons C# principalement aux utilisateurs qui ont déjà une expérience du langage.

Examinons les caractéristiques de chaque langue, ainsi que ses avantages et ses inconvénients.

GDScript

GDScript est un langage de programmation orienté objet et imperatif construit pour Godot. Il est fait par et pour les développeurs de jeux pour vous faire gagner du temps dans le codage des jeux. Ses caractéristiques comprennent :

  • Une syntaxe simple qui conduit à des fichiers courts.

  • Compilation et temps de chargement ultra-rapides.

  • Intégration parfaite à l'éditeur, avec complétion de code pour les nœuds, les signaux et d'autres informations provenant de la scène à laquelle cela est attaché.

  • Types de vecteurs et de transformations intégrés, ce qui permet une utilisation efficace de l'algèbre linéaire, indispensable pour les jeux.

  • Prend en charge plusieurs threads aussi efficacement que les langages typés statiquement. C’est l’une des caractéristiques que nous ne pouvions pas fournir facilement avec un langage tiers comme Lua ou Python.

  • Pas de garbage collection, car cette fonctionnalité finit par gêner lors de la création de jeux. Le moteur compte les références et gère la mémoire pour vous dans la plupart des cas par défaut, mais vous pouvez également contrôler la mémoire si vous en avez besoin.

  • Saisie graduelle. Les variables ont des types dynamiques par défaut, mais vous pouvez également utiliser des indices de type pour des vérifications de type fortes.

GDScript ressemble à Python puisque vous structurez vos blocs de code à l'aide d'indentations, mais il ne fonctionne pas de la même manière en pratique. Il s'inspire de plusieurs langages, dont Squirrel, Lua et Python.

Note

Pourquoi n'utilisons-nous pas directement Python ou Lua ?

Il y a quelques années, Godot utilisait Python, puis Lua. L'intégration de ces deux langages a demandé beaucoup de travail et présentait de sérieuses limitations. Par exemple, le support du threading était un grand défi avec Python.

Développer un langage dédié ne nous demande pas plus de travail et nous pouvons l'adapter aux besoins des développeurs de jeux. Nous travaillons actuellement sur des optimisations de performances et des fonctionnalités qu'il aurait été difficile de proposer avec des langages tiers.

.NET / C#

Comme le C# de Microsoft est un des langages préférés des développeurs de jeux, nous le soutenons officiellement. C# est un langage mature et flexible avec des bibliothèques écrites pour lui. Nous avons pu ajouter son support grâce à un don généreux de Microsoft.

../../_images/scripting_csharp.png

C# offre un bon compromis entre les performances et la facilité d'utilisation, bien que vous deviez faire attention à son ramasse-miettes.

Note

Vous devez utiliser l'édition Mono de l'éditeur Godot pour écrire en C#. Vous pouvez le télécharger sur la page download du site web de Godot.

Puisque Godot utilise Mono .NET runtime, en théorie, vous pouvez utiliser n'importe quelle bibliothèque ou framework .NET tiers dans Godot, ainsi que n'importe quel langage de programmation conforme à la Common Language Infrastructure, comme F#, Boo ou ClojureCLR. Toutefois, C# est la seule option .NET officiellement prise en charge.

Note

Le code GDScript lui-même ne s'exécute pas aussi rapidement que le code C# ou C++ compilé. Cependant, la plupart du code de script appelle des fonctions écrites avec des algorithmes rapides dans le code C++ à l'intérieur du moteur. Dans de nombreux cas, l'écriture de la logique de jeu en GDScript, C# ou C++ n'aura pas d'impact significatif sur les performances.

VisualScript

Visual Scripting est un langage de programmation visuelle basé sur des graphes où vous connectez des blocs. Il peut être un outil formidable pour les non-programmeurs comme les concepteurs de jeux et les artistes.

../../_images/scripting_visualscript.png

Vous pouvez utiliser d'autres langages pour créer des blocs personnalisés spécifiques à votre jeu. Par exemple, pour scriter des IA, des quêtes ou des dialogues. C’est là que réside la force de VisualScript.

Bien qu'il fournisse tous les éléments de base dont vous avez besoin pour coder des jeux complets, nous ne recommandons pas d'utiliser VisualScript de cette manière. Tout programmer avec lui est lent par rapport à l'utilisation d'autres langages de programmation.

Voir aussi

Pour plus d'informations, voir Démarrer avec VisualScript.

C et C++ via GDNative

GDNative vous permet d'écrire du code de jeu en C ou C++ sans avoir à recompiler ou même à redémarrer Godot.

../../_images/scripting_cpp.png

Vous pouvez utiliser n'importe quelle version du langage ou mélanger les marques et les versions de compilateurs pour les bibliothèques partagées générées, grâce à notre utilisation d'un pont(bridge) API C interne.

Ce langage est le meilleur choix pour les performances. Il n’est pas nécessaire de l’utiliser pour l’ensemble d’un jeu, car vous pouvez écrire d’autres parties en GDScript, C# ou VisualScript.

Lorsque vous travaillez avec GDNative, les types, fonctions et propriétés disponibles ressemblent beaucoup à l'API C++ de Godot.

Résumé

Les scripts sont des fichiers contenant du code que vous attachez à un nœud pour étendre ses fonctionnalités.

Godot prend en charge cinq langages de script officiels, vous offrant ainsi une flexibilité entre performance et facilité d'utilisation.

Vous pouvez mélanger les langages, par exemple, pour mettre en œuvre des algorithmes exigeants avec C ou C++ et écrire la majeure partie de la logique du jeu avec GDScript ou C#.