Dialogues


Sommaire

I. Un système de dialogues

Un système de dialogue permet de gérer les échanges entre le personnage du joueur et des personnages non-joueurs (PNJ). Le joueur choisir les réponses de son personnage. Dans les systèmes classiques, comme celui de Baldur's Gate, les choix proposent la réponse complète qui sera prononcée une fois qu'elle sera choisie. Dans d’autres, comme Mass Effect, seul une idée générale de la réponse est donnée, avec parfois des effets d’incompréhension. Notre système se veut classique.

II. Modélisation des dialogues en arbre

La première étape est de séparer la structure des dialogues, les enchaînements et les choix, du texte des dialogues. Pour cela, les dialogues vont être enregistrés sous la forme d'arbre. Nous présentons ci-dessous un exemple d'arbre avec le texte, en utilisant le codage suivant :

Exemple d'arbre de dialogue avec texte, le joueur incarne un inquisiteur chargé de trouver une certaine Siriah Anrir, qui réussirait des miracles à l'aide d'arts sombres. Pour cela, il se rend dans le village où elle serait située et entrepend un villageois :

  1. Bonjour, étranger, que puis-je pour vous ?
    1. Je cherche Siriah Anrir, où puis la trouver ?
      1. Je ne connais pas cette Dame.
      2. [Charisme > 14] Pourquoi voulez-vous rencontrer notre Dame ?
        1. [Intelligence > 14] (mensonge) On m'a vanté ses pouvoirs et j'aurais aimé être béni.
          1. [Charisme > 16] Très bien, son temple est sous la maison communale.
          2. Elle viendra à vous quand vous serez prêt. Bonne journée.
        2. R1 : Je suis ici pour enquêter sur ses agissements.
          1. Je n'ai rien à vous dire. Bonne journée.
    2. Je désire rencontrer le chef du village.
      1. La bourgmestre a disparu depuis trois nuits. Tout le village est très inquiet. Pourriez-vous nous aider à la retrouver ?
        1. Je vais voir ce que je peux faire.
          1. Merci Messire !
        2. (désolé) Je suis désolé mais je ne peux pas vous aider.
          1. Cela ne fait rien. Bonne route étranger.
        3. (méprisant) Cela ne m'intéresse pas.
    3. J'ai besoin de soin.
      1. Vous trouverez le shaman dans sa hutte, à la lisière des bois.
        1. Merci, au revoir.

On voit que la structure de données applicable ici est un arbre.

III. Séparation de la structure et des données

On va séparer les données : d'un côté le texte, de l'autre la structure. Le texte sera indiqué par un simple identifiant numérique. La structure c'est l'arborescence des réponses, indiquant les enchaînements et les choix possibles. Elle est constituée de nœuds, chaque nœud peut être un nœud simple ou nœud de choix. Un nœud simple contient :

Un embranchement est constitué d'une suite de conditions avec à chaque fois le nœud suivant si la condition est vraie. La première condition vraie détermine le nœud suivant.

Un nœud de choix contient :

Chaque option contient :

On peut transformer ainsi notre dialogue, le chiffre entre parenthèses indique son numéro de référence, les conditions sont entre crochets, et le type d'objet (nœud simple, nœud choix, texte, option, embranchement) est indiqué entre accolades, nous le reconstruisons ainsi :

IV. Internationalisation

Ce système de dialogue doit être pensé pour être facilement internationalisable : traduisible en de nombreuses langues, sans nécessiter de recompiler ou recoder une partie du système spécifiquement pour une langue donnée.

On peut extraire de la partie précédente le texte de la structure des dialogues pour ne garder que son identifiant. On stocke ensuite dans un fichier texte, XML, JSON ou binaire des couples associant une clé, auquel correspond une ou plusieurs références, et un texte :

  1. Bonjour, étranger, que puis-je pour vous ?
  2. Je cherche Siriah Anrir, où puis la trouver ?

Cette division facilite grandement cette étape : la structure de l'arbre ne change pas d'une langue à l'autre, seuls les lignes de textes changent. Il suffit de faire traduire la ressource contenant toutes les répliques pour traduire le jeu. Il faut néanmoins faire attention à :

V. Exemple de parcours

Cette petite implémentation en JavaScript illustre tous les principes exposés ci-dessus en reprenant les mêmes données.

Votre personnage :

Intelligence Charisme

Vous êtes l'inquisiteur Larius et vous arrivez dans le petit village où vous devez enquêter sur les agissements d'une mystérieuse sorcière hérétique.

Démarrer le dialogue