Publication de la version 2.0 du moteur de jeu libre Godot Engine

Posté par . Édité par Rémi Verschelde, Benoît Sibaud et Nÿco. Modéré par Xavier Claude. Licence CC by-sa
Tags :
40
7
avr.
2016
Jeu

La communauté des développeurs du moteur de jeu libre Godot Engine a annoncé il y a quelques semaines sa toute dernière release, Godot 2.0, déjà patchée dans une version mineure 2.0.1 depuis.

Cette troisième version stable depuis la libération de Godot sous license MIT en février 2014 apporte de nombreuses améliorations relatives à l'utilisabilité de l'éditeur, et fait de cette nouvelle mouture un logiciel prêt à une utilisation massive par tous ceux que le développement de jeux vidéos intéresse, que ce soit professionnellement ou en tant que hobbyiste, pour développer des jeux libres ou non.

Sommaire

Deux ans après la libération du code source de Godot Engine sous la license MIT, la communauté des développeurs vient de publier la version 2.0 de ce moteur de jeu généraliste.

À propos de Godot Engine

Godot Engine est un moteur de jeu généraliste avec éditeur intégré, qui permet de créer facilement tous types de jeux en 2D et 3D depuis une interface unifiée.

Jeux et éditeur multi-plateformes

À la manière d'autres moteurs du même type qui se sont emparés de l'industrie du jeu vidéo ces dernières années, Godot permet de créer des jeux qui peuvent être exportés comme applications natives pour un grand nombre de plateformes : Linux et *BSD, Mac OSX, Windows, Android, Haiku, iOS, HTML5… voire certaines consoles de jeu ! Cette vidéo de présentation montre différents jeux développés par la communauté d'utilisateurs de Godot (dont un libre, Tanks of Freedom).

L'éditeur lui-même est multi-plateformes (Linux et *BSD, Mac OSX, Windows, Haiku), ce qui est compréhensible sachant que l'éditeur utilise l'API de Godot directement (c'est au final un "jeu" développé avec Godot en C++, qui se trouve être un éditeur).

Design innovant

Godot repose sur le principe de scènes arrangées sous forme d'arbres. Une scène est composée d'un ou plusieurs nœuds (nodes) eux aussi arrangés sous forme d'arbre, et est enregistrée dans un fichier sur le disque.

Éditeur de Godot, édition du jeu libre Jetpaca

Une scène peut être elle-même composée de plusieurs scènes indépendantes, en utilisant le principe d'instanciation : des sous-scènes peuvent être imbriquées dans l'arborescence d'une scène "parente", et ainsi de suite. Au final le jeu entier à un instant donné est une scène principale et l'ensemble de ses nœuds et sous-scènes.

Par exemple, un niveau de Mario SuperTux pourrait être composé ainsi :

  • le niveau à proprement parler, composé de multiples sprites pour le terrain (typiquement une tilemap), les blocs, les coins, etc. Chaque élément spécifique est une instance d'une scène, avec donc une orientation "objet" bien marquée.
  • le personnage jouable, Tux, avec son script qui détermine le mouvement, réaction à certains éléments du jeu, effets sonores, etc.
  • plusieurs instances de la même scène contenant un type d'ennemi, lui aussi avec son script propre déterminant son gameplay.

Un langage : GDScript

Godot permet d'attacher un script à chaque nœud de l'arbre. Ces scripts permettent de programmer la logique interne du nœud, sa réaction à des événements du jeu ou à des entrées utilisateur. Ils sont programmés à l'aide du langage GDScript.

Éditeur de code de Godot

GDScript est un langage très facile à apprendre. Il est très inspiré du Python dont il reprend en très grande partie la syntaxe. Comme Python, il s'agit d'un langage non typé mais performant et accessible à la fois aux programmeurs débutants et expérimentés.

Une soirée suffit à un programmeur expérimenté pour apprendre et maîtriser les bases du langage et être capable de créer un jeu ; environ une semaine pour un parfait débutant en programmation.

Et bien d'autres fonctionnalités !

Il serait difficile de décrire Godot complètement dans une annonce de sa nouvelle version, mais nous vous encourageons à visiter le site officiel pour plus de détails, et notamment sa catégorie Features. Le site anglophone GameFromScratch propose aussi une vue d'ensemble détaillée de Godot 1.0 avec de nombreuses images pour se faire une meilleure idée de ce qu'est Godot.

Quoi de neuf ?

La libération de Godot Engine a permis à ses développeurs originels de confronter leur moteur aux besoins et méthodes de création de très nombreux utilisateurs. Les deux premières versions stables, 1.0 (Dec 2014) et 1.1 (Mai 2015), ont ainsi vu l'ajout de très nombreuses fonctionnalités, refontes de certains outils, etc.

Pour la version 2.0, l'accent a été mis sur l'utilisabilité de l'éditeur, avec par exemple la possibilité d'éditer plusieurs scènes en parallèle dans des onglets, ou l'ajout d'un nouveau format textuel de sauvegarde des fichiers scènes, facile à lire et bien adapté aux systèmes de contrôle de versions.

Également, le panneau de visualisation des Ressources (textures, sons, modèles 3D…) a été grandement revu, de même que l'assistant d'animation cut-out, de l'éditeur de scripts et du module de débogage. Une nouvelle fonctionnalité de débogage particulièrement appréciée des utilisateurs est la visualisation des formes de collision et de pathfinding :

Débogage des collisions

Une autre fonctionnalité très intéressante a fait son apparition : la possibilité de modifier une scène pendant qu'elle est exécutée ! Pas seulement dans l'éditeur ou lancée sur ordinateur depuis l'éditeur, mais aussi si la scène est exécutée sur un appareil mobile ! En d'autres termes, vous pouvez modifier, ajouter, supprimer des éléments d'une scène alors même que vous l'exécutez sur votre téléphone ou votre tablette.

La prochaine version 2.1 verra arriver d'autres fonctionnalités très demandées par la communauté, notamment la nouvelle API de développement de plugins pour Godot qui facilitera l'ajout de nouvelles possibilités pour le moteur et l'éditeur. Et surtout, l'arrivée très attendue de la plateforme de partage d'assets, qui permettra de mettre à la disposition de chacun des médias créés par la communauté (sons, images, modèles 3D…), mais aussi des scripts à utiliser dans les projets ou encore des greffons pour étendre les possibilités de l'éditeur.

  • # GDscript ?

    Posté par . Évalué à 10.

    GDScript est un langage très facile à apprendre. Il est très inspiré du Python dont il reprend en très grande partie la syntaxe

    Godot est sûrement très bien (merci aux auteurs, d'ailleurs !). Mais je ne peux m'empêcher de m'interroger : pourquoi avoir créé un nouveau langage de script (a fortiori très semblable à un langage existant) plutôt que d'utiliser directement l'original ?

    • [^] # Re: GDscript ?

      Posté par . Évalué à 10. Dernière modification le 07/04/16 à 15:08.

      C'est en anglais, mais ça donne déjà de bons éléments de réponse : Frequently Asked Questions

      D'un point de vue technique, il est également beaucoup plus simple d'avoir un langage de scripting minimal directement implémenté dans le moteur, plutôt que devoir intégrer l'interpréteur python dans les binaires pour toutes les plateformes supportées j'imagine. Pour ce genre d'intégration des langages "légers" comme Lua ou Squirrel sont plus adaptés, mais la FAQ ci-dessus explique aussi pourquoi ils ont été considérés, testés et finalement abandonnés.

    • [^] # Re: GDscript ?

      Posté par . Évalué à 6.

      tu peux utiliser du C++, mais l’environnement en GDScript est vraiment très simple à appréhender (encore plus que Blender et Python). Perso j'aime bien faire du GDScript, c'est vraiment proche de python.

      Le principal problème, pour nous, c'est l'import de données depuis Blender qui oblige à utiliser "Blender Engine" au lieu de Cycle Engine, à moins de se recoltiner toutes les textures. C'est pas rédhibitoire, mais notre beau workflow en prend un coup.

      Juste pour info, nous on ne fait pas de jeux avec (j'ai toujours rêvé être développeur de jeux), on fait des applications interactives pour les salons sur tablette Android. C'est juste une caméra qui se déplace, des Zooms, des vidéos qui se lance à certaines positions… C'est vraiment super pour ça!

      • [^] # Re: GDscript ?

        Posté par (page perso) . Évalué à -4.

        hmmm HS, mais pourquoi avoir choisi comme avatar bush junior ? Tu soutiens les busheries comme le génial patriot act ? (je ne sais pas, je demande :D).

        • [^] # Re: GDscript ?

          Posté par . Évalué à 6.

          C'est au cas où. S'il fait une boulette, il pourra dire : "J'avais prévenu, j'avais mis Bush en avatar."

        • [^] # Re: GDscript ?

          Posté par . Évalué à 0.

          il y a aucun lien entre ce que je soutiens et mon avatar!

          Si ça choque, je vais changer.

          • [^] # Re: GDscript ?

            Posté par . Évalué à 4.

            Je préférais l'ancien avatar !

            "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

            • [^] # Re: GDscript ?

              Posté par . Évalué à 2.

              sale capitaliste !

              • [^] # Re: GDscript ?

                Posté par . Évalué à 1.

                j'hésite à me prendre Sarko, mais qui dit sarko dit à peu près toute la classe politique Française, c'est presque banal.. Bush c'est quand même un grand champion.

                Le dragon qui pète le feu fera l'affaire en attendant que je me décide.

      • [^] # Re: GDscript ?

        Posté par . Évalué à 0.

        Le principal problème, pour nous, c'est l'import de données depuis Blender qui oblige à utiliser "Blender Engine" au lieu de Cycle Engine, à moins de se recoltiner toutes les textures. C'est pas rédhibitoire, mais notre beau workflow en prend un coup.

        Pourtant il est assez simple de baker les textures ?

  • # Dispo sur Steam

    Posté par . Évalué à 4.

    Et pour celui qui ne veux pas compiler et dispose de Steam, c'est disponible :)

  • # Et...

    Posté par (page perso) . Évalué à 6.

    Et du coup, on attend encore quelqu'un ou on peut y aller ?

    • [^] # Re: Et...

      Posté par (page perso) . Évalué à 3.

      C'est marrant, je ne pensais pas que l'origine du choix du nom venait vraiment de là :)

  • # 3D... tous les types... Ou pas!

    Posté par . Évalué à 2.

    qui permet de créer facilement tous types de jeux en 2D et 3D

    Euh, ouai, mais non. Les "jeux 3D" n'ont qu'un rendu en 3D… et encore, je parie sur de l'isométrie moi. Ou alors, flare est en 3D… (flare est un très bon moteur pour faire un jeu de hack'n-slash mono-joueur en 2D, avec une vue en 3D isométrique. Ce n'est pas pour autant un jeu en 3D, car il est impossible de se mouvoir dans 3 directions, si l'on omet le temps. Mais si on prend en compte le temps, le moteur Godot ne montre rien comment il peut aider à réaliser un jeu 2D >:} ).

    Pour qu'un jeu soit en 3D, il faudrait que les personnages soient capables de se déplacer sur les 3 axes, ce que la vidéo ne montre pas.
    Cela dit, ils le disent eux-même "3D looking". Donc, c'est l'article, ainsi que le titre de la section dans laquelle apparaît ce "détail" sur le site officiel, qu'il faudrait corriger.

    Et quant à "tous les types", je n'ai pas eu l'impression de voir un jeu multijoueur, mais j'ai du mal voir? Ni de jeux à la première personne?

    • [^] # Re: 3D... tous les types... Ou pas!

      Posté par (page perso) . Évalué à 6.

      Comme beaucoup de moteur modernes (genre Unity ou Unreal), godot est capable de faire de la 2D ET de la 3D (exemple https://www.youtube.com/watch?v=a9zomlVEbbY, première vidéo choppée sur youtube)
      De ce que les créateurs avaient annoncé au moment de la libération de Godot, celui-ci est en retard par rapport à un Unity niveau sur la 3D mais en avance sur la 2D. Et vu que beaucoup de développeurs indépendants font de la 2D, j'imagine que ça leur fait focaliser leur com' sur ce domaine.

      En outre, le développement en 3D requière pas mal de middlewares payants (genre speedtree&co) et ceux-ci sont inclus via des partenariats sur les moteurs commerciaux ce que Godot ne peut pas faire en tant que produit open source. Du coup ça cantonne Godot à des projets 3D simples.

    • [^] # Re: 3D... tous les types... Ou pas!

      Posté par . Évalué à 6. Dernière modification le 08/04/16 à 09:49.

      As-tu seulement bien regardé la vidéo en lien? Je te donne un coup de main, avec le lien vers le minutage du jeu Steam Quest, en "vraie" 3D comme tu le réclames : https://youtu.be/6sJFMyI3eZ0?t=18 . Une autre plus détaillée par les auteurs du jeu : https://www.youtube.com/watch?v=wYeGs3BA84w.

      Il n'y a pas de vrai FPS créé avec Godot pour le moment, mais il y a cette démo de Calinou que tu peux tester : https://github.com/Calinou/fps-test/ . Si les utilisateurs actuels n'ont pas le souhait de faire un FPS, ce n'est pas aux développeurs de Godot de le faire.

      Par contre, je t'accorde qu'il y a assez peu de jeux en 3D à l'heure actuelle, mais beaucoup attendent le changement de renderer (GLES3 d'abord, Vulkan ensuite sans doute). Cela ne veut pas dire que Godot ne PEUT pas en faire, contrairement à ce que tu supposes. Aucune raison de changer le titre donc.

      Concernant le multi, je ne peux qu'acquiescer. C'est encore un peu faiblard pour l'instant, même si le moteur supporte déjà les communications TCP et UDP, mais c'est encore trop bas niveau. Cela devrait être revu en profondeur dans quelques semaines ou mois.

      Par contre, je n'ai pas compris ta phrase :

      Mais si on prend en compte le temps, le moteur Godot ne montre rien comment il peut aider à réaliser un jeu 2D >:} )

  • # correction

    Posté par . Évalué à 3. Dernière modification le 08/04/16 à 09:32.

    voire même

    "voire" suffit.

    "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

  • # Non typé ?

    Posté par (page perso) . Évalué à 5.

    Comme Python, il s'agit d'un langage non typé

    Python (et GDScript aussi je présume) est typé, mais dynamiquement, et fortement aussi (même si c'est relatif comme notion). Il suffit de faire "bidulos" + 1 pour comprendre.

    Sinon j'ai très envie depuis longtemps de tester Godot (ainsi que SuperPowers), mais il va falloir poser des vacances pour ça :)

    • [^] # Re: GDScript est dynamiquement typé

      Posté par . Évalué à 1.

      Vu sur la page GDScript :

      Le GDScript est un langage de programmation haut niveau dynamiquement typé utilisé pour créer du contenu. Il utilise une syntaxe qui est très similaire au langage Python (les blocs sont basés sur l'indentation) et son objectif est d'être très optimal et étroitement lié au moteur, autorisant une grande flexibilité pour la création et l'intégration de contenu.

      Effectivement, j'ai fait ce test suivant :

      var maVariable = 5
      maVariable = maVariable + 1
      maVariable = "bidulos"
      maVariable = maVariable + 1 # ne fonctionne pas
      self._add_text(maVariable) # affiche bien « bidulos »

  • # doc en français so lag

    Posté par . Évalué à 4. Dernière modification le 10/04/16 à 13:07.

    Ce site de documentation http://op.godotengine.org/projects/godot-engine-en-francais/wiki/GDScript freeze pendant de looongues secondes mon firefox (avec ou sans javascript). S'il fait bien partie des sites déployé par la communauté godot, jeter un petit coups d’œil éviterait des rages quit ^ ^ (si des membres de la communauté me lise :) )

    Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

    • [^] # Re: doc en français so lag

      Posté par (page perso) . Évalué à 4.

      Je confirme, le site gèle Firefox pendant au moins 10 secondes et active mon ventilateur… Par contre ça passe tout seul sur Chromium!?

      Écrit en Bépo selon l’orthographe de 1990

    • [^] # Re: doc en français so lag

      Posté par . Évalué à 2.

      Oui OpenProject n'a posé que des problèmes à Godot, c'est pour ça que la documentation officielle se trouve maintenant sur http://docs.godotengine.org

      Le site que tu donnes en lien est en lecture seule et devrait bientôt être complètement viré, il avait juste été gardé temporairement pour ceux qui ne peuvent vraiment pas se passer d'un forum (le nouveau forum de Godot a été lancé il y a une semaine).

      • [^] # Re: doc en français so lag

        Posté par . Évalué à 1.

        Je ne vois pas de section francophone sur le lien que tu donnes (remplacer "en" par "fr" dans la barre d'adresse amène à un 404)

        Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

        • [^] # Re: doc en français so lag

          Posté par . Évalué à 4. Dernière modification le 13/04/16 à 16:34.

          Je ne vois pas de section francophone sur le lien que tu donnes (remplacer "en" par "fr" dans la barre d'adresse amène à un 404)

          Nous ne nous focalisons pas encore sur la traduction de la documentation pour le moment. Selon beaucoup d'utilisateurs, la documentation est trop pauvre et ils n'ont pas totalement tort. Il est inutile de fragmenter les efforts de documentation tant que la doc anglaise n'aura pas atteint un niveau suffisant.

          Notre roadmap pour la documentation est donc aujourd'hui la suivante:
          - Refonte de plusieurs parties de la documentation (Physics)
          - Ajout de pages manquantes (par exemple Lights, Light Baking…)
          - Nouvelles démos avec pages de wiki associées pour les expliquer (ce travail vient d'être débuté)

          A ce moment-là seulement, nous lancerons les initiatives de projets de traduction (basiquement, il suffit de forker le projet godot-docs), mais avant cela nous aurons besoin d'un outil nous permettant de suivre les modifications entre le dépôt anglais et son fork (pour la langue concernée). Ce besoin est décrit ici : https://github.com/godotengine/godot-docs/issues/6

        • [^] # Re: doc en français so lag

          Posté par . Évalué à 1.

          Comme Julian l'indique, le focus est à l'amélioration de la documentation anglophone avant de penser trop à faire sa traduction dans diverses langues.

          La section francophone du site OpenProject était principalement une coquille vide, il doit y avoir une ou deux pages traduites mais pas beaucoup plus.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.