Sites


Créer un jeu Point and click avec Escoria

Créer des actions

Une fois que la scène est créé et que les modèles Escoria y sont rattachés, le jeu devrait fonctionner. Tout doit être présent : l'arrière-plan, le personnage, et quelques boutons actions avec notre noeud. Mais à l'heure actuelle, rien ne se passe si vous essayez d'y jouer. La logique et la description de ce qui devrait arriver et quand doit encore être rédigée. Pour ce faire, il faut utiliser le scripting de scénario propre à Escoria, dans des fichiers Esc.

Le principe est :

  • chaque item recevant une action aura l'attribution d'un ID, une sorte de nom unique dans la scène et doit suivre une convention de nommage. Il s'agit de la propriété de l'item : Global ID.
  • chaque item recevant une action aura un fichier escoria (.esc) rattaché qui décrit son comportement.
  • chaque action sera en relation avec un événement, généralement un bouton, mais cela peut également être un décompte de temps (timer).

Ce comportement peut recevoir plusieurs actions comme :

  • parler
  • marcher
  • utiliser
  • regarder...

Ces actions sont vraiment courantes dans les jeux de type points and clicks, mais d'autres actions peuvent être rajoutées. Actuellement, nous nous contenterons de ce qui est fournis par défaut dans les templates Escoria.

Créer des dialogues

Revenons à notre projet de jeu.

  1. Ouvrez le fichier old_man.tscn.
  2. Dans l'inspecteur, trouvez la propriété Global Id (normallement placée tout en haut) et nommez-le comme vous voulez. Nous utilisons old_man par cohérence avec le nom de la scène courante. En général, essayez de trouver un nom d'id explicite, et simple. Dans des plus gros projets, c'est une bonne idée de conserver une liste des éléments et de leur id à portée de regard et éventuellement la scène dans laquelle les éléments apparaissent. Comme vous pouvez le voir, notre id est écrit en minuscule et nous avons remplacer l'espace par un _. D'autre part, chaque global id doit être unique et correspondre à un élément (item).
  3. Si vous souhaitez, il est possible également voire préférable d'attribuer un tooltip (une bulle qui apparaît au survol de l'élément affichant du texte) à l’aide de la propriété dédiée.
  4. Maintenant, vous allons voir les actions disponibles. Elles sont représentées par des boutons situé en bas à gauche de l’écran de jeu dansbase_scene.

    Ce dont nous avons besoin c'est d'avoir le nom technique de l'action qui peut différer du nom affiché à l'écran pour le joueur. Ouvrez simplement la scène ui/verb_menu.scn du dossier demo à partir du panneausystème de fichierpour voir de quoi il en retourne. Vous verrez quelques boutons, et l'arbre des noeuds de chacuns. Si vous avez besoin de changer l'ui des actions, c'est déjà en place. Regardez simplement le nom des noeuds dans l'exemple suivant.

Nous n'avons pas encore grand chose dans notre scène, alors envisageons seulement de le faire parler.

Ouvrez votre éditeur de texte en passant par le bouton script en haut de l’interface de Godot, créez un nouveau fichier texte et enregistrez-le vide (pour l'instant) comme old_man.escdans le dossier device/scene/intro-game/ de votre dossier du projet. Attention à bien utiliser les noms de fichiers corrects car les fichiers seront nombreux.

Pour attribuer un script de scénario à un personnage ou un élément, retournez dans l'inspecteur de Godot et mettez en place la propriété duEvents path(sous Global Id) du noeud old_man au fichier que nous venons de créer. Si vous lancez la scène et que rien n'apparaît c'est simplement parce que le fichier de l'action est vide.

Commençons par éditer le fichier esc et ajouter une action parler. Pour cela, écrivez le nom de l'action définie par les verbes de cette façon :

:talk

De cette façon, l'action de parler sera déclenchée uniquement lorsque le bouton "parler" est cliqué et le old_man activé. Il faut rajouter le mot-clé say au Global id afin que le personnage parle et que son texte s'affiche à l'écran :

say old_man "Hello young panda, today is time for your first offering to the almighty panda god! I have prepared a bamboo stick for you, pick it up and bring it to me."

Nous pouvons répéter pour chaque phrase que nous souhaitons afficher un arrêt. Vous aurez alors quelque chose comme :

:talk
say old_man "Hello young panda, today is time for your first offering to the almighty panda god! I have prepared a bamboo stick for you, pick it up and bring it to me."
say old_man "Don’t worry, you’ll succeed"
stop

Au lancement de la scène, il faut cliquer sur le bouton talk du vieux monsieur. Ensuite sa première phrase se lancera. La seconde phrase s'affichera lorsque le joueur cliquera sur n'importe quelle touche ou sur la barre espace.

Bien entendu, vous pouvez alterner les personnages afin de créer un dialogue. Ce qui est sympathique, lorsque le fichier de scénario Esc est configuré, c'est qu'il n'est pas nécessaire d'ouvrir Godot pour modifier le jeu des dialogues et les interactions. Tout peut être modifié depuis un simple fichier texte, ce qui est pratique pour les designers et les scénaristes.

On remarquera l’utilisation du mot-clé stop pour terminer la discussion ou le monologue.

Définis un global flag et utilise-le

Dans certains cas, certaines choses arrivent uniquement si le joueur a essayé quelques tests ou collecter un certains nombre d'objets. De fait, il est nécessaire de parvenir à 2 étapes pour cela :

  1. Il est nécessaire de créer un identifiant pour créer un global flag. Un global flag peut contenir une valeur qui peut se définir par true ou false.
  2. Il est nécessaire de vérifier que le global flag est sélectionné à vrai ou faux lorsque nécessaire.

Pour définir que quelque chose a déjà été fait, nous pouvons utiliser la commande set_global avec le nom du drapeau (que l'on peut appeler une variable) et lui assigner une valeur pour signalier si c'est vrai ou non (spécifiquement si l'action annule le flag). Par exemple, lorsque le old_man parle pour la première fois, nous pouvons dire qu'il a déjà parlé, et donc vous souhaitez ne pas lancer encore le même dialogue. Cela se configure ainsi :

:talk
say old_man "Hello young panda, today is time for your first offering
to the almighty panda god! I have prepared a bamboo stick for you,
pick it up and bring it to me."
say old_man "Don’t worry, you’ll succeed"
set_global introduced true
stop

Nous avons opté pour le nom introduced de notre flag et l'avons paramétré à vrai.

Vérifier la valeur du flag

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.