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.

For example, take a game where a Camera2D node follows a ship. The Camera2D node follows its parent by default. Imagine you want the camera to shake when the player takes damage. As this feature is not built into Godot, you would attach a script to the Camera2D node and code the shake.

../../_images/scripting_camera_shake.gif

Langages de script disponibles

Godot offers five gameplay programming languages: GDScript, C#, VisualScript, and, via its GDNative technology, C and C++. There are more community-supported languages, but these are the official ones.

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.

Avertissement

Godot 4.0 will remove VisualScript from core entirely. As a result, creating new projects using visual scripting in Godot is not recommended. Future Godot 4.x releases may have VisualScript reimplemented as an extension.

While Godot 3.x will keep VisualScript supported, we recommend trying out GDScript instead, especially if you intend to migrate your project to Godot 4.

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

For C#, you will need an external code editor like VSCode or Visual Studio. While C# support is now mature, you will find fewer learning resources for it compared to GDScript. That's why we recommend C# mainly to users who already have experience with the language.

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 impératif 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.

  • Supports multiple threads as efficiently as statically typed languages.

  • 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

Avertissement

Godot 4.0 will remove VisualScript from core entirely. As a result, creating new projects using visual scripting in Godot is not recommended. Future Godot 4.x releases may have VisualScript reimplemented as an extension.

While Godot 3.x will keep VisualScript supported, we recommend trying out GDScript instead, especially if you intend to migrate your project to Godot 4.

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

You can use other languages to create custom blocks that are specific to your game, for example, to script AIs, quests, or dialogues. That's where the strength of VisualScript lies.

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.

GDNative is the best choice for performance. You don't need to use it throughout an entire game, as you can write other parts in GDScript, C#, or 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#.