Godot (moteur de jeu)

moteur de jeu open source et libre
Godot
Description de l'image Godot logo.svg.
Description de l'image Godot3.4.png.
Informations
Créateur Juan Linietsky (d) et Ariel Manzur (d)Voir et modifier les données sur Wikidata
Développé par Rémi Verschelde (d) et Juan Linietsky (d)Voir et modifier les données sur Wikidata
Première version Voir et modifier les données sur Wikidata
Dernière version 3.5.3 ()[1]
4.2.2 ()[2]Voir et modifier les données sur Wikidata
Version avancée 4.2 beta 6 ()[3]Voir et modifier les données sur Wikidata
Dépôt github.com/godotengine/godotVoir et modifier les données sur Wikidata
Assurance qualité Intégration continueVoir et modifier les données sur Wikidata
État du projet Développement actif
Écrit en C++ et CVoir et modifier les données sur Wikidata
Supporte les langages GDScript (d), C++, C#, Python, Nim et DVoir et modifier les données sur Wikidata
Système d'exploitation GNU/Linux, macOS, Microsoft Windows, BSD, iOS, Android, Universal Windows Platform, HTML5, WebAssembly, Xbox et Windows PhoneVoir et modifier les données sur Wikidata
Environnement

Création : Windows, MacOS, Linux, FreeBSD, OpenBSD, Haiku [4]

Déploiement : Windows, MacOS, Linux, BSD, Haiku, iOS, Android, BlackBerry, HTML5[4]
Formats lus Windows bitmap, DirectDraw Surface (en), OpenEXR, RGBE image format (en), JPEG File Interchange Format, Portable Network Graphics, Truevision Targa, SVG, WebP, Waveform Audio File Format, Vorbis, glTF, FBX, DAE, .OBJ et BlenderVoir et modifier les données sur Wikidata
Langues Multilingue (Support avancé du français, erreurs subsistantes)
Type Moteur de jeu
Politique de distribution Gratuit (Don)
Licence Licence MITVoir et modifier les données sur Wikidata
Documentation docs.godotengine.orgVoir et modifier les données sur Wikidata
Site web godotengine.orgVoir et modifier les données sur Wikidata

Godot est un moteur de jeu multiplateforme, c'est-à-dire un logiciel permettant de créer des jeux vidéo qui est compatible avec différents systèmes d'exploitation. Il comporte entre autres un moteur 2D, un moteur 3D, un moteur physique, un gestionnaire d'animations, et des langages de script pour programmer des comportements. Il est depuis ouvert au public et disponible sous licence MIT, ce qui fait de lui un logiciel libre. En plus des nombreux contributeurs bénévoles qui participent au projet, quelques développeurs rémunérés par don mensuel y travaillent à temps plein.

Historique des versions modifier

Historique des versions de Godot
Version Date de sortie du Notes complémentaires Dernière version du correctif
1.0 Décembre 2014 Première version stable. 1.0
1.1 Mai 2015 Améliorations de la saisie semi-automatique dans l'éditeur de code, ajout d'un éditeur de shader visuel, moteur 2D réécrit et nouveau support pour la navigation des polygones 2D. 1.1
2.0 Février 2016 Interface utilisateur et débogueur améliorés. 2.0.4.1
2.1 Juillet 2016 Introduction de la base de données des addons, du profileur et de l'API du plugin. 2.1.6
3.0 Janvier 2018 Nouveau moteur de rendu basé sur la physique, prise en charge de Mono (C#) et ajout de Bullet comme moteur physique. 3.0.6
3.5 Août 2022 Nouveau système de navigation avec évitement des obstacles, accès aux nœuds via des noms uniques. 3.5.3
4.0 Mars 2023 Ajoute la prise en charge de l'API graphique Vulkan. Passe de Mono à .NET 6 CoreCLR. Introduit l'illumination globale basée sur SDF ainsi que plusieurs modifications de l'éditeur et optimisations des performances. 4.0.4
4.1 Juillet 2023 Mises à jour des éléments de performance, de base et de script. Présentation des variables statiques dans GDScript et de l'attribut [GlobalClass] dans C#. Prise en charge de plusieurs fenêtres et possibilité de détacher les éditeurs de scripts. Amélioration de la turbulence des particules et introduction de textures de bruit 3D. Algorithmes de prévention remaniés pour la navigation par IA. 4.1.1
4.2 Novembre 2023 Nouveau nœud AnimationMixer qui unifie AnimationPlayer et AnimationTree. Amélioration de l'éditeur de tuiles. Support des régions de code dans l'éditeur (pour GDScript) afin de les nommer, les plier et faciliter la navigation. 4.2.2
4.3 Avril 2024 Améliorations notables du système de rendu. Nouveau pilote de rendu Direct3D12. Entrées à partir de plusieurs contrôleurs en même temps. 4.3 dev 5
Légende:
  • Version obsolète
  • Version LTS
  • Ancienne version, toujours maintenue
  • Version actuelle
  • Version à venir

Fonctionnalités modifier

En tant qu'outil de création de jeux vidéo, Godot couvre de nombreux aspects de leur réalisation. L'utilisateur de Godot a la possibilité d'importer du contenu (images, son, modèles 3D), de créer des animations, de programmer le comportement de différents éléments du jeu grâce à un langage de script, de soumettre des objets à une physique (forces, collisions), de placer des sources de lumière, de créer un niveau constitué de tuiles au sein de l'éditeur, etc. Il permet aussi de distribuer le jeu comme exécutable.

Rendu modifier

Godot possède à la fois un moteur de rendu 3D et un moteur de rendu 2D dédiés. Cette approche est différente de certains autres moteurs de jeu tels que Unity, qui manipulent une scène 3D dans tous les cas, et utilisent une caméra orthogonale pour restituer une visualisation de type 2D.

Moteur de rendu 2D modifier

Le moteur de rendu 2D de Godot utilise le pixel en tant qu'unité de distance, quitte à utiliser des agrandissements pour obtenir les dimensions d'image voulues sur l'écran. Il est capable de gérer les rendus[5] :

  • De sprites statiques,
  • D'animations, soit avec des sprites animés (succession d'images), soit par utilisation d'un squelette vectoriel,
  • De défilement différentiel (ou parallaxe), technique utilisée pour faire défiler plusieurs plans d'un décor à des vitesses différentes pour donner l'illusion de profondeur,
  • D'effets de particules,
  • D'effets de lumière ; les éclairages et les ombres.

Moteur de rendu 3D modifier

Depuis la version 3.0 de Godot, le moteur de rendu 3D utilise la technique du rendu physique réaliste[6],[7]. La fonction de réflectivité bidirectionnelle choisie pour les calculs de lumière respecte tous les principes définis par les studios d'animation Disney[8]. Le rendu des objets virtuels est alors basé sur le paramétrage des matériaux qui le composent. Il tient compte de leur albédo, leur rugosité, leur caractère métallique, leur occlusion ambiante, leur anisotropie, leur transluminescence, leurs effets de contours et leur réfraction[8].

Godot gère les plateformes supportant les bibliothèques OpenGL et OpenGL ES et l'API Vulkan a été ajoutée avec la sortie de la version 4.0 début 2023.[réf. souhaitée]

Arbre de scène modifier

Le contenu d'un jeu conçu sur Godot est organisé sous la forme d'un arbre de scène. Dans Godot, une scène désigne un ensemble de nœuds organisés en arbre[9], où les nœuds peuvent être des sprites, des formes servant de masques de collision, des sources lumineuses, des sources sonores, des objets physiques, des gestionnaires d'animation, ou d'autres choses. Par exemple, on peut créer une scène « personnage » composée d'une sprite, d'un objet physique et d'une forme de collision.

Il est aussi possible de réutiliser une scène, créée au préalable, en tant que nœud d'une autre scène. Ce système permet alors d'imbriquer des scènes les unes dans les autres. Ainsi, on peut construire une scène principale « niveau » qui contient plusieurs scènes « personnage » telles que décrites dans l'exemple précédent, entre autres nœuds.

Chaque scène est enregistrée sous la forme d'un fichier texte pour faciliter la gestion de versions[9].

Langages de programmation modifier

Godot permet d'attacher un script à n'importe quel nœud présent dans l'arbre de scène, afin de programmer le comportement de ce nœud. Différents langages de programmation sont disponibles pour ce faire.

GDScript, le langage de script de Godot modifier

Le langage de script « GDScript » est un langage conçu spécifiquement pour fonctionner avec Godot[9],[10]. Sa syntaxe est similaire à celle de Python. Plusieurs raisons étaient évoquées pour justifier le choix de créer un nouveau langage, plutôt que d'utiliser Lua, Python, Squirrel ou Javascript avec leurs interprètes. Ces raisons sont[11],[12] :

  • La relative facilité d'apprentissage de ce nouveau langage,
  • La possibilité de fournir plus facilement un meilleur éditeur de code source dans l'interface utilisateur de Godot. En effet, GDScript permet plus aisément le support du complètement et le support de l'édition de code pendant le fonctionnement du jeu (Live editing),
  • D'autres raisons plus techniques, comme l'interfaçage plus simple entre ce langage et le C++, la gestion plus adaptée du ramasse-miette, la possibilité d'ajouter de manière native dans le langage des types de variables telles que les vecteurs et les matrices, ou le support de threads.

Autres langages de script disponibles modifier

Dès la version 3.0, il est possible d'écrire les scripts en C# [13], que ce soit via l'éditeur Mono ou via un autre environnement de développement que Godot[14]. La communauté gère le support d'autres langages de scripts tels que Python, Rust, Nim ou encore D[15].

Une interface de programmation visuelle était également disponible ; elle s'appuie sur un langage graphique propre à Godot, appelé VisualScript. Celui-ci se veut plus simple d'accès pour les non-développeurs que la programmation traditionnelle, par code textuel[13]. Comme annoncé le 23 août 2022, les développeurs ont retiré le VisualScript à partir de la version 4.0, ce dernier ne remplissant pas les attentes initiales[16].

Programmation bas niveau modifier

Le C++ peut être utilisé en complément ou à la place des langages de script, en utilisant la même API C++ que celle utilisée par l'éditeur de Godot[17]. Le développeur a donc la capacité de remplacer une classe GDScript par une classe C++ sans incidence avec le reste du jeu, ce qui lui permet ainsi d'en optimiser certaines parties au besoin[10]. Il est possible d'aller jusqu'à développer un jeu entièrement en C++, mais cette pratique, considérée comme une perte de temps, est déconseillée par les développeurs[17]. Le C++ peut également être utilisé pour créer de nouveaux modules pour Godot, afin d'ajouter de nouvelles fonctionnalités sans toucher au moteur[18].

Import de ressources modifier

Les fichiers d'image, de son ou autre, créés par des logiciels distincts et utilisés à l'interieur du jeu, sont appelés des ressources. Godot est capable d'importer de nombreux types de fichiers.

Les formats d'image supportés sont[19] :

  • BMP (.bmp), seuls les formats 1,4,8,24,32 bits par pixel (mais pas 16) sont supportés.
  • DirectDraw Surface (en) (.dds), les mimaps de ce format sont également automatiquement chargés.
  • OpenEXR (.exr), (grande gamme dynamique), recommandé pour les panoramas de ciels
  • Radiance HDR (en) (.hdr), (grande gamme dynamique), recommandé pour les panoramas de ciels
  • JPEG (.jpg, .jpeg), le standard de ce format n'ayant pas de support pour la transparence.
  • PNG (.png), précision limitée à 8 bits par canal, pas d'images HDR.
  • Truevision Targa (.tga)
  • SVG (.svg), import via nanoSVG, comportant des limites sur la gestion du format. Il est recommandé d'utiliser la conversion vers le PNG d'Inkscape, l'appel en ligne de commande d'Inkscape pouvant permettre d'automatiser la conversion.
  • WebP (.webp)

Les formats de son supportés sont :

  • OGG (.ogg)
  • MP3 (.mp3), Linux uniquement
  • WAV (.wav), sujet à problèmes sous Linux et sous forme d'exécutable pour Windows

Les formats vidéo supportés sont :

  • OGV (Vidéo Vorbis .ogv), format recommandé pour la compatibilité entre plateformes
  • MP4 (.mp4), sujet à problèmes sous Windows

Les formats de modèles 3D supportés sont :

  • OBJ (.obj)
  • Filmbox (.fbx) avec support d'armatures
  • GLB/GLTF (.glb, .gltf) avec support d'armatures
  • Blender scenes (.blend), expérimental

Histoire du projet modifier

Juan Linietsky et Ariel Manzur ont commencé à développer un moteur de jeu en 2001[20], à cause de l'absence de moteur généraliste à l'époque (ils étaient souvent spécialisés, comme ceux servant à concevoir des jeux de tir à la première personne par exemple), et parce qu'ils pensaient important pour l'industrie vidéoludique argentine d'acquérir de l'expérience à propos de ce type de logiciels[21]. Cependant, en 2007, ce projet fut mis à mal par quelques particularités de conception apparues avec certaines machines telles que l'iPhone ou la PlayStation 3. En effet, une gestion de la mémoire différente et les microprocesseurs multi-cœur demandaient d'importantes modifications dans la façon de développer des jeux. Ils furent donc obligés de se séparer de l'architecture du moteur qu'ils avaient alors, et de repartir sur une autre base[20].

Leur nouveau moteur de jeu est celui qui deviendra Godot[20]. Ils avaient pour idée de le rendre libre dès le départ[20], mais préfèrent alors en garder la propriété[21] et attendre que le projet atteigne une certaine maturité avant de le publier. À cette époque, Juan et Ariel étaient consultants dans le domaine du jeu vidéo et proposaient Godot en tant qu'outil à leurs clients, dans divers studios[22]. Cinq à six ans après que ce nouveau moteur a été commencé[20], ils décidèrent de rejoindre le studio Okam, afin de pouvoir collaborer avec d'autres métiers du jeu vidéo[22]. Cela leur permit de se focaliser sur la préparation du moteur pendant que le reste de l'équipe concevait des jeux en l'utilisant[20].

Le , Godot devint effectivement un logiciel libre par la publication, sur le site officiel du moteur, de sa première version sous licence MIT (il s'agissait d'une version béta)[23],[24]. Ce changement de licence, ainsi que la publication du code du moteur sur Github[22], permit à d'autres contributeurs bénévoles de participer au développement du moteur. Peu après, Juan Linietsky dut quitter le studio Okam, l'instabilité politique et économique de l'Argentine rendant difficile les activités du studio malgré les débuts encourageants de ce dernier. Il a malgré cela continué à travailler sur Godot pendant son temps libre, pour résoudre des bugs et répondre aux retours des utilisateurs (dont beaucoup se plaignaient de la mauvaise utilisabilité du logiciel)[22].

Juan Linietsky indiquait qu'avec la sortie de la version 2.0 en février 2016, les utilisateurs commencèrent à être satisfaits de la partie 2D du moteur de jeu[22]. De plus, Godot a été publié sur Steam à ce moment-là (le [25]), ce qui, d'après Ariel Manzur, a fait gagner énormément de crédibilité au projet[20].

Le projet possède quelques sources de financement. Le , Mozilla annonce verser 20 000 $ au projet Godot afin que le moteur de jeu respecte les normes du web WebSocket, WebAssembly et WebGL lors des exportations de jeux en HTML5[7],[26]. Le [27], Godot lance une campagne de financement participatif sur le site web Patreon[28]. Cette campagne vise à récolter des dons mensuels afin, d'une part, de constituer un salaire destiné à certains contributeurs-clé pour qu'ils travaillent à plein temps sur le projet (non plus uniquement pendant leur temps libre) et, d'autre part, de couvrir les frais des évènements concernant Godot[29]. En septembre 2023, l'équipe de développeurs de Godot se tourne cette fois vers le principe d'un fonds de développement avec différents échelons de don, pour continuer à rétribuer ses effectifs et assurer la longévité et l'indépendance du moteur[30].

Choix du nom modifier

Le nom "Godot" a été choisi en référence à la pièce de théâtre En attendant Godot de Samuel Beckett.

Ce nom était déjà utilisé en tant que nom de code pendant le développement en interne, avant que le moteur ne soit officiellement appelé Godot. Il désignait ce que ce projet pourrait devenir, à savoir, un moteur de jeu plus généraliste, qui serait composé d'une interface utilisateur décente plutôt que d'un ensemble d'outils compatibles entre eux. Un tel projet demande beaucoup de temps avant d'aboutir, s'il aboutit, d'où la référence à la pièce En attendant Godot, dans laquelle l'attente et l'incertitude sont des thèmes prépondérants[31].

Juan Linietsky justifie a posteriori le choix de garder officiellement ce nom. En effet, il compare les personnages de la pièce attendant continuellement un individu nommé Godot (sans que personne sache s'il viendra effectivement un jour), aux utilisateurs du moteur attendant perpétuellement l'arrivée de nouvelles fonctionnalités[12].

Le moteur a porté plusieurs autres noms[31]:

  • Larvotor
  • Legacy
  • NG3D
  • Larvita (et Larvita 2 et 3)

Voir aussi modifier

Sur les autres projets Wikimedia :

Références modifier

  1. « https://godotengine.org/article/maintenance-release-godot-3-5-3/ »
  2. « Maintenance release: Godot 4.2.2 »
  3. « Dev snapshot: Godot 4.2 beta 6 »
  4. a et b « Fonctionnalités de Godot (site officiel) » (consulté le )
  5. « Godot : un game engine multi-plateformes opensource », Le rdv des passionnés de technologies, de jeux vidéo et de programmation,‎ (lire en ligne, consulté le )
  6. (en-US) « Godot team ships Godot 3.0 | CG Channel », sur www.cgchannel.com (consulté le )
  7. a et b « Godot 3.0 apportera un moteur de rendu réaliste 3D et la prise en charge de C# pour les habitués d'Unity », Developpez.com,‎ (lire en ligne, consulté le )
  8. a et b « Godot est disponible en version 3.0, le moteur de jeu multiplateforme 2D et 3D fait peau neuve et apporte de nombreuses améliorations et nouveautés », Developpez.com,‎ (lire en ligne, consulté le )
  9. a b et c « Publication de la version 2.0 du moteur de jeu libre Godot Engine - LinuxFr.org », sur linuxfr.org (consulté le )
  10. a et b (en) « Scripting — Godot Engine 2.1 documentation », sur docs.godotengine.org (consulté le )
  11. (en) « Frequently asked questions — Godot Engine 2.1 documentation », sur docs.godotengine.org (consulté le )
  12. a et b « Introduction au moteur Godot, conférence de Juan Linietsky, 7 juillet 2015 », sur RMLL - Web TV (consulté le )
  13. a et b « Godot Engine sort en version 3.0 ! - Créer un jeu vidéo », Créer un jeu vidéo,‎ (lire en ligne, consulté le )
  14. Godot Engine, « Godot Engine - Godot 3.0 is out and ready for the big leagues », sur godotengine.org (consulté le )
  15. (en) « Features — Script with full freedom » (consulté le )
  16. Olivier Famien, « Godot 4.0 ne prendra plus en charge le langage de script visuel VisualScript, mais les développeurs peuvent toujours l'intégrer au moteur de jeu en tant qu'extension. », Developpez.com,‎ 31 août 2022 à 23:51 (lire en ligne, consulté le )
  17. a et b (en) « Frequently asked questions », sur docs.godotengine.org
  18. (en) « Custom modules in C++ », sur docs.godotengine.org (consulté le )
  19. (en) « Importing images », sur docs.godotengine.org
  20. a b c d e f et g (en) « SteamLUG Cast s04e05 – Waiting For VR », sur steamlug.org (consulté le )
  21. a et b 80.lv, « Godot 2.0: Talking with the Creator », sur 80.lv (consulté le )
  22. a b c d et e https://godotengine.org/article/retrospective-and-future
  23. « Annonce du passage de Godot à la licence MIT sur developpez.com » (consulté le )
  24. Godot Engine, « Godot Engine - First public release! », sur godotengine.org (consulté le )
  25. « Informations - Toutes les informations », sur store.steampowered.com (consulté le )
  26. (en-US) « Mozilla Awards $385,000 to Open Source Projects as part of MOSS “Mission Partners” Program – The Mozilla Blog », sur The Mozilla Blog (consulté le )
  27. (en) « Halfway there! Thanks for your incredible support! | Juan Linietsky & Godot Contributors on Patreon », Patreon,‎ (lire en ligne, consulté le )
  28. 3DVF, « Le moteur de jeu Godot 3.0 se dévoile et lance une campagne de levée de fonds - 3DVF.com », sur www.3dvf.com (consulté le )
  29. (en) « Juan Linietsky & Godot Contributors are creating Godot Engine | Patreon », Patreon,‎ (lire en ligne, consulté le )
  30. (en) Justin Carter, « Godot Engine launches funding initiative to fuel long-term growth », sur GamesIndustry, .
  31. a et b Godot Engine, « Godot Engine - Godot history in images! », sur godotengine.org