Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Vous êtes créateur de jeu d'aventure ? Venez nous le présenter !
Répondre
StraToN
Apprenti aventurier
Apprenti aventurier
Messages : 9
Inscription : 20 mars 2021, 22:58
Contact :

Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Message par StraToN »

Bonjour à tous !

Je voudrais vous présenter un projet que j'ai repris il y a plusieurs mois. Il s'agit d'Escoria, un "framework" pour aider à la création de jeux point'n'click à l'aide du moteur Godot Engine.

Godot Engine est un moteur 2D/3D généraliste, à l'image de Unity 3D. Il s'agit d'un outil libre, open-source (licence MIT) et proposant un éditeur fournissant tous les outils nécessaires à la réalisation de jeux video de tous genres. Il fournit notamment les "nodes", qui sont des briques de base permettant de construire des scènes sous la forme d'arbres (le principe d'héritage est donc important).

Il est tout à fait possible de fabriquer des jeux d'aventure sans Escoria, il en existe certainement quelques uns. Néanmoins, même si l'architecture proposée par Godot permet la réutilisation des scènes, les nodes de Godot n'offrent pas "de base" les fonctionnalités nécessaires à un jeu d'aventure: il faut les développer à l'aide de scripts attachés aux nodes. De cette façon, on peut définir le fonctionnement du joueur, des objets, de l'inventaire, etc.

C'est là qu'Escoria entre en jeu: son objectif est de fournir tous (ou en tout cas un maximum) de fonctionnalités nécessaires à la création d'un jeu d'aventure point'n'click:
  • Personnage(s) contrôlable(s)
  • PNJ
  • Objets et zones interactives
  • Inventaire
  • Dialogues et interactions d'objets
  • Langage de script ESC pour les interactions et les dialogues
  • Cut-scenes
  • Son et musique (y-compris les dialogues parlés et les traductions)
  • Chargement et sauvegarde
  • Interface utilisateur totalement personnalisable, transitions, effets de caméras...
Pour l'historique, Escoria existe depuis quelques années et a déjà été utilisé pour le développement du jeu The Interactive Adventures of Dog Mendonça & Pizza Boy (que certains d'entre vous ont peut être joué https://www.planete-aventure.net/forums ... 7a#p226020). J'ai maintenu Escoria pendant un temps avant de finalement décider de le réécrire en très grande partie.

Un des gros points faibles d'Escoria était notamment la faiblesse des scènes d'exemple fournies, ce qui était un frein fort à l'apprentissage. Aussi, en parallèle de la réécriture d'Escoria (qui est dorénavant prévu pour être un plugin pour Godot et non pas une simple collection de scripts comme c'était le cas auparavant) j'ai construit plusieurs scènes d'exemple afin d'illustrer des cas particuliers de Rooms ou de puzzles qui peuvent être complexes à réaliser. Ces exemples seront évidemment fournis avec Escoria.

Parallèlement, une artiste travaille à quelques assets (notamment sprites et fonds) pour essayer de proposer un mini jeu d'exemple un peu plus "joli" dans le futur.

Pour l'instant, vous pouvez trouver ma version de travail sur github : https://github.com/StraToN/unofficial-escoria-reloaded/
Lorsque celle ci sera suffisamment avancée, elle migrera vers le dépôt officiel d'Escoria: https://github.com/godotengine/escoria/

J'aimerais beaucoup avoir vos retours, notamment sur vos besoins en tant que créateurs de jeux d'aventure: quels sont vos problèmes récurrents ? Avez vous des puzzles compliqués à mettre en œuvre ? Des besoins au niveau de l'interface utilisateur ?

Je vous remercie de votre attention ;)
Avatar de l’utilisateur
YAZ
Messages : 10803
Inscription : 27 décembre 2003, 18:01
Localisation : Bordeaux
Contact :

Re: Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Message par YAZ »

Bonjour !

Je n'ai personnellement jamais rien compris à Godot, mais je ne doute pas de l'utilité d'un tel plugin. Notre forum réunit plusieurs développeurs de jeux d'aventure, amateurs ou professionnels, et peut-être que votre Escoria leur donnera envie de se lancer dans Godot, s'ils ne connaissent pas déjà. J'admire particulièrement tous les développeurs de game-engine, tant leur travail est complexe et leur talent indispensable dans le domaine du jeu vidéo, rendant le rêve de créer son jeu accessible à de nombreux développeurs plus orientés conception artistique ^^"

Personnellement, j'utilise Clickteam Fusion 2.5 dev, assimilable à son clone injustement plus célèbre Construct. Je n'ai pas encore créé de jeu Point & Clic à proprement parler, mais j'aime assurément les puzzles (c'est mon point fort), et j'attends d'un point & clic qu'il ait des dialogues à choix multiple (et une réelle conséquence à ces choix), une gestion d'inventaire (objets à récolter, objets à observer de plus près, objets à combiner, objets à utiliser sur le décors, ...), ... et pourquoi pas une carte générale sur laquelle activer des lieux à pouvoir visiter, ainsi qu'un arbre de choix-conséquences comme dans Detroit (oui, je sais que ce n'est pas un point & clic ^^) pour résumer les actions faites par le joueur et l'embranchement de celles-ci dans le scénario.

Si vous avez des images (la présentation du post est un peu "sobre" sans images ^^) afin de montrer comment ça fonctionne, s'il faut écrire des lignes de code ou utiliser une interface WYSIWYG, si les exemples et autres aides seront écrites en français (j'avoue qu'en plus, si tout est en anglais en commentaires/explications, ça peut bloquer quelques dev indés/amateurs francophones) et quelques exemples visuels de résultat (captures d'écran depuis Escoria dans Gogot), ce serait top ! Peut-être que votre outil me donnera l'envie de me lancer dans Godot, qui sait ? ^_^ En revanche, j'ai cliqué sur votre lien github, et je me retrouve à ne pas savoir quoi faire de tout ce qui est à l'écran (j'ai toujours trouvé qu'un tel pack de fichiers est effrayant lorsqu'on ne s'y connaît pas). Décidément, si on ne me tient pas la main, je me perds d'un rien, d'où l'importance d'un travail comme le vôtre ^^ Merci à vous.
Image Ma collection de jeux (physiques et dématérialisés)
Avatar de l’utilisateur
Ghylard
Messages : 4455
Inscription : 07 mars 2015, 18:54
Contact :

Re: Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Message par Ghylard »

Salut StraToN

C'est curieux comme en ce moment, j'entends souvent parler de Godot. =)
J'avais vu dernièrement sur Game Boomers que Mikael Nyqvist, le créateur des jeux Carol Reed collaborait avec Dennis Ploeger pour l'aider à développer un framework de Godot nommé EgoVenture.
Les derniers jeux de Mikael Nyqvist ont été créés avec Wintermute qui ne permet pas d'autre plateforme que windows d'où l'intérêt de MDNA pour Godot Engine.
Un jeu test a d'ailleurs déjà été créé par MDNA avec EgoVenture. Il s'agit de Carol refurbished et il est téléchargeable sur itch.io.
L'idéal serait que tu trouves toi aussi dans notre communauté ton Mikael Nyqvist pour t'aider à développer ton framework. : ;)

Plus égoïstement, moi, je commence à rechercher un outil qui me permettra de décompiler et RECOMPILER les fichiers de données de ces jeux-là pour pouvoir éventuellement les traduire. :D

Euh... les jeux faits avec Godot peuvent-ils fonctionner sans que le fichier pck soit recompilé ? :^^:
StraToN
Apprenti aventurier
Apprenti aventurier
Messages : 9
Inscription : 20 mars 2021, 22:58
Contact :

Re: Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Message par StraToN »

Bonjour YAZ,

Pour commencer, je propose de nous tutoyer, si ça ne dérange pas (ou au moins me tutoyer moi :P). C'est la première fois qu'on me vouvoie sur un forum, je suis un peu déstabilisé :^^:

Avant de commencer ma longue explication, je vous propose de télécharger et d'essayer les scènes d'exemple que j'utilise pour mes tests pendant le développement d'Escoria. Ce n'est pas réellement un jeu, il n'y a pas d'histoire, c'est une succession de rooms sans lien spécifique. C'est en anglais pour le moment car je n'ai pas encore travaillé sur la traduction. C'est moche parce que je ne suis pas artiste :D mais j'utilise des assets libres de droit (leurs auteurs sont cités dans le readme du projet).

https://cloud.murgia.fr/s/XpfcdK6bt2Domkm
YAZ a écrit : 29 mars 2021, 09:58 Je n'ai pas encore créé de jeu Point & Clic à proprement parler, mais j'aime assurément les puzzles (c'est mon point fort), et j'attends d'un point & clic qu'il ait des dialogues à choix multiple (et une réelle conséquence à ces choix), une gestion d'inventaire (objets à récolter, objets à observer de plus près, objets à combiner, objets à utiliser sur le décors, ...), ... et pourquoi pas une carte générale sur laquelle activer des lieux à pouvoir visiter, ainsi qu'un arbre de choix-conséquences comme dans Detroit (oui, je sais que ce n'est pas un point & clic ^^) pour résumer les actions faites par le joueur et l'embranchement de celles-ci dans le scénario.
Beaucoup de desideratas ici ! Parfait !
En ce qui concerne les puzzles, nous pourrions en discuter très, très longuement, même si j'ai lu quelques articles tentant de définir une classification des puzzles que l'on peut rencontrer dans un jeu d'aventure. Ils vont du plus simple (utiliser poulet en caoutchouc avec une poulie au milieu sur corde) jusqu'aux puzzles que j'appelle "complexes" et qui n'utilisent pas forcément les objets du jeu pour être résolus : je pense par exemple aux puzzles de Deponia, ou de certains qu'on peut voir dans The Dig.

Image

Pour les premiers, c'est facile : Escoria permet simplement de scripter chaque action avec le langage de script fourni, pour chaque objet utilisé. Prenons par exemple une lampe torche sans les piles. Je peux lui affecter le bout de script suivant:

Code : Tout sélectionner

:ready
# Au départ, l'objet n'a pas de piles
set_global lampe_torche_piles_ok false

:utiliser piles
inventory_remove piles
set_global lampe_torche_piles_ok true
say player "J'ai mis les piles dans la lampe torche. Elle devrait fonctionner maintenant !"

:utiliser
> [!lampe_torche_piles_ok]
   say player "Il n'y a pas de piles! Elle ne fonctionnera pas."
   stop
> [lampe_torche_piles_ok]
   say player "La lampe torche est allumée."
   stop
Dans le script ci-dessus, j'ai défini une variable globale (connue d'Escoria, à tout moment) permettant de savoir si les piles ont été mises dans la lampe. Au départ elles n'y sont pas. Puis je définis une action "utiliser" avec un paramètre "piles", qui va supprimer les piles de l'inventaire (normal puisqu'elles sont dans la lampe) et passer la variable globale à "true". Enfin, je définis une action "utiliser" sans aucun paramètre, qui contient un embranchement selon la valeur de la variable globale.

Pour les puzzles plus complexes, le langage de script donné en exemple ci-dessus ne suffira pas. Cependant, c'est là toute la force de Godot : s'agissant d'un moteur généraliste, il est possible de créer n'importe quel puzzle avec Godot à l'aide de son propre langage de script GDScript (utilisé par Escoria en coulisses). Il suffit alors d'appeler certaines fonctions fournies par Escoria pour indiquer le puzzle a été résolu, généralement en définissant une variable globale, comme ci-dessus. De cette façon, Escoria sait que le puzzle est résolu et il peut donc enchaîner les actions correspondantes.

Pour les dialogues à choix multiples, le langage de script fourni avec Escoria le permet. Pour et une réelle conséquence à ces choix, cela dépend de l'écriture et des scripts... Escoria ne peut pas le faire à la place de l'auteur :) Mais là encore, tout se passe avec des variables globales. Prenons un dialogue simple:

Code : Tout sélectionner

say vilain "Donne moi tout ton or !"
?
   - Pas question !
      say player "Pas question ! Tu devras le prendre à mon corps froid."
      set_global refuse_donner_or true
      # Et on continue la branche...
   - D'accord, prends-le.
      say player "D'accord, je ne veux pas me battre."
      remove_inventory argent
      set_global refuse_donner_or false
Comme on peut le voir, la variable "refuse_donner_or" permet au jeu de se "souvenir" que le joueur a donné son or, ou pas. Il est alors possible de tester cette même variable beaucoup plus tard dans l'aventure, et d'activer des actions spécifiques selon le cas.

Pour ce qui est de la gestion d'inventaire, tout ce que vous avez listé est possible aussi :
  • objets à récolter : oui
  • objets à combiner : oui
  • objets à utiliser sur le décors : oui
  • objets à observer de plus près : je pense que cela s'apparente un peu à ce que j'appelais un "puzzle complexe" ci-dessus. Je ne l'ai cependant pas encore illustré moi-même, mais c'est tout à fait possible.
Idem pour la carte générale sur laquelle activer des lieux à pouvoir visiter : c'est un classique des jeux d'aventure, on le trouve sous différentes formes (dans Monkey Island 1, 2 et 3, Guybrush se déplace physiquement d'un point à l'autre, alors que dans The Longest Journey le jeu change simplement la scène dès que le joueur a cliqué sur la destination). Je n'ai pas encore illustré cela avec un exemple, mais les 2 sont parfaitement possibles : Escoria intègre simplement une fonction qui permet de changer de scène. Une scène peut être une "room" (au sens du jeu d'aventure, c'est une pièce avec un unique point de vue) ou une scène spéciale affichant carte permettant le choix de la destination.

Enfin:
arbre de choix-conséquences comme dans Detroit (oui, je sais que ce n'est pas un point & clic ^^) pour résumer les actions faites par le joueur et l'embranchement de celles-ci dans le scénario
Je n'ai pas joué à Detroit donc je ne sais pas exactement à quoi cet arbre ressemble. Mais là encore, l'arbre des possibilités n'intègre logiquement que des possibilités prévues par le game designer, qui sont autant de variables globales à gérer dans les scripts. Ce qui manquerait, c'est une façon d'afficher au joueur cette succession de choix ayant activé ou non ces variables. A mon avis, dès l'instant où j'offre au concepteur de jeu la possibilité de garder en mémoire des informations incluant les choix du joueur, il n'est pas trop compliqué de concevoir une scène pour les lui afficher sous une forme ou une autre (comme un journal, ou un graphe), mais cela nécessitera certainement d'utiliser GDScript pour obtenir le résultat voulu, car le langage de script ESC fourni par Escoria est une surcouche, dédiée uniquement à manipuler les éléments du jeu d'aventure.
YAZ a écrit : 29 mars 2021, 09:58 Si vous avez des images (la présentation du post est un peu "sobre" sans images ^^) afin de montrer comment ça fonctionne, s'il faut écrire des lignes de code ou utiliser une interface WYSIWYG, si les exemples et autres aides seront écrites en français (j'avoue qu'en plus, si tout est en anglais en commentaires/explications, ça peut bloquer quelques dev indés/amateurs francophones) et quelques exemples visuels de résultat (captures d'écran depuis Escoria dans Gogot), ce serait top ! Peut-être que votre outil me donnera l'envie de me lancer dans Godot, qui sait ? ^_^ En revanche, j'ai cliqué sur votre lien github, et je me retrouve à ne pas savoir quoi faire de tout ce qui est à l'écran (j'ai toujours trouvé qu'un tel pack de fichiers est effrayant lorsqu'on ne s'y connaît pas). Décidément, si on ne me tient pas la main, je me perds d'un rien, d'où l'importance d'un travail comme le vôtre ^^ Merci à vous.
Pas de problème !

Vous l'aurez compris en lisant mes explications ci-dessus: Escoria est un mélange de WYSIWYG et de lignes de code. Pour ce qui est du scripting propre à Escoria, le langage se veut relativement simple, même s'il est selon moi nécessaire de comprendre un minimum de concepts de Godot pour l'utilise (notamment les animations, par exemple). C'est bon à savoir pour moi, car quand je commencerai à m'occuper de la documentation il faudra que je le prenne en compte.

Bon alors évidemment je suis un peu obligé de travailler en anglais parce qu'Escoria était développé en anglais à l'origine... La documentation sera donc en anglais au départ, mais il me semble important de traduire cette documentation en français.

Quelques images (dont une issue de la démo à télécharger ci dessus):
escoria_room.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par StraToN le 30 mars 2021, 07:48, modifié 3 fois.
StraToN
Apprenti aventurier
Apprenti aventurier
Messages : 9
Inscription : 20 mars 2021, 22:58
Contact :

Re: Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Message par StraToN »

Ghylard a écrit : 29 mars 2021, 17:51 J'avais vu dernièrement sur Game Boomers que Mikael Nyqvist, le créateur des jeux Carol Reed collaborait avec Dennis Ploeger pour l'aider à développer un framework de Godot nommé EgoVenture.
Les derniers jeux de Mikael Nyqvist ont été créés avec Wintermute qui ne permet pas d'autre plateforme que windows d'où l'intérêt de MDNA pour Godot Engine.
Un jeu test a d'ailleurs déjà été créé par MDNA avec EgoVenture. Il s'agit de Carol refurbished et il est téléchargeable sur itch.io.
L'idéal serait que tu trouves toi aussi dans notre communauté ton Mikael Nyqvist pour t'aider à développer ton framework. : ;)
Haha, oui effectivement ce serait bien :) Ce projet m'a permis de me rendre compte qu'un jeu d'aventure est tout sauf simple à créer, surtout du point de vue technique.
J'ai été notifié de l'annonce d'EgoVenture par Twitter, d'ailleurs. C'est une très bonne nouvelle ! J'ambitionnais de permettre à Escoria de réaliser des jeu de ce type (Myst-like), mais dans l'immédiat je me concentre sur les traditionnels point'n'click en 2D avec un personnage qui se déplace à l'écran.
Ghylard a écrit : 29 mars 2021, 17:51 Plus égoïstement, moi, je commence à rechercher un outil qui me permettra de décompiler et RECOMPILER les fichiers de données de ces jeux-là pour pouvoir éventuellement les traduire. :D
Tu trouveras peut-être ce que tu recherches ici : https://github.com/bruvzg/gdsdecomp
Bruzvg est un développeur core de Godot Engine, je pense qu'il sait ce qu'il fait :)
Cet outil est en fait un module pour Godot qui nécessite de recompiler ce dernier avec le module activé. Ce n'est pas très compliqué à faire, la compilation de Godot est réellement simple.
Ghylard a écrit : 29 mars 2021, 17:51 Euh... les jeux faits avec Godot peuvent-ils fonctionner sans que le fichier pck soit recompilé ? :^^:
Je crains que non... Cependant, peut être que l'outil ci-dessus te permettra de recompiler le PCK sans avoir les fichiers du projet. J'avoue ne jamais avoir testé cela, désolé... :ops:
Avatar de l’utilisateur
YAZ
Messages : 10803
Inscription : 27 décembre 2003, 18:01
Localisation : Bordeaux
Contact :

Re: Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Message par YAZ »

Merci pour ta réponse très détaillée ^_^ N'étant pas un utilisateur de Godot, je pense qu'il va me falloir tester ce logiciel pour comprendre comment fonctionne ses scripts, et surtout apprécier toute la force de ton plugin. J'avoue que moins il y a de lignes de code, mieux je me porte personnellement, mais peut-être est-il temps que je franchisse le cap, pour apprécier la force de Godot (et m'initie à la logique des langages). Quant au français, même si Godot n'est qu'en anglais, la présence de ma langue maternelle dans les exemples et surtout la documentation, ne me semble pas du luxe, surtout si le concepteur est français. Du coup j'apprécie que tu y aies songé. Je comprends bien la suprématie de l'anglais dans le domaine de la programmation, mais ça reste un effort à fournir de plus (et parfois de trop) de traduire quelque chose qui est sensé aider à comprendre.

Quant à l'arbre des possibilités (ici de Detroit), j'avais juste trouvé génial d'avoir ses choix résumés, tout en affichant la complexité des autres choix possible.
Image
Mais ça reste un bonus qui n'affecte en rien le contenu du jeu. En revanche, une chose qui peut utiliser cet arbre (sans pour autant l'afficher tel quel) serait un journal de quêtes/indices qui se mettrait à jour au fil de l'aventure, et permettrait au joueur de bénéficier d'un résumé de ce qu'il a fait (pour peu qu'il arrête de jouer suffisamment longtemps pour ne plus savoir où il a stoppé), voire de lui proposer une sorte d'aide intégrée pour lui dire ce qu'il lui reste à faire pour clore un chapitre par exemple.

Pour les scripts, vu que je n'ai jamais rédigé de ligne de code, ça reste à mes yeux quelque chose de particulièrement opaque, même si selon toi c'est des exemples assez simples. Comme je l'ai dit, il va me falloir tenter Godot avec sérieux pour comprendre tout ce que ton travail implique. Après, je me suis souvent demandé à quoi pouvait bien servir un outil de pré-programmation si on sait déjà programmer (je dis ça, car avec Clickteam, on n'entre absolument aucune ligne de code, ce qui représente pour moi l'essentiel de l'intérêt de tels outils ^^), mais j'imagine que ça doit considérablement aider à faire gagner du temps au dev.

Bref, merci pour cette présentation.
N'hésite surtout pas à revenir ici pour nous tenir informés des évolutions de ton plugin, l'ajout du french dans la doc, ... ^_^
Image Ma collection de jeux (physiques et dématérialisés)
StraToN
Apprenti aventurier
Apprenti aventurier
Messages : 9
Inscription : 20 mars 2021, 22:58
Contact :

Re: Escoria, un framework pour jeux d'aventure Point'n'click pour Godot Engine

Message par StraToN »

Merci pour cette illustration. A l'occasion j'essaierai d'ajouter un pareil embranchement dans la démo pour illustrer la possibilité, et une sorte de journal pour afficher ces choix sous une forme ou une autre. A réfléchir, mais je ne doute pas que ça sera envisageable, et même nécessaire car beaucoup de jeux d'aventure ont *besoin* du journal de nos jours.

Pour ce qui est des scripts, dès l'instant où on comprend qu'un script n'est qu'une succession d'étapes, il devient simple de le voir sous la forme d'un graphe orienté, exactement comme sur ton illustration. J'avoue ne pas exactement comprendre au premier coup d’œil comment une telle logique peut être implémentée avec une interface comme celle de ClickTeam, mais il est vrai que je n'ai pas essayé non plus. Le fait est que je suis personnellement impliqué aussi dans le développement et l'administration de Godot, ce qui me pousse naturellement à le choisir. :)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité