Voici un petit topo sur les verbes de communication en inform 6, version francophone, car ils sont gérés d’une manière qui ne coule pas toujours de source au départ, et en plus la version francophone ajoute des actions qui n’existent pas dans la version anglophone.
Je vous rassure tout de même : normalement une fois que vous m’aurez lu, vous en saurez assez pour vous débrouiller, si ce n’est pas déjà le cas !
1. Les actions de communication issues d’inform 6 en anglais
Ces actions sont gérées dans la propriété « life » des objets ayant pour attribut ‹ animate › ou ‹ talkable ›.
Référence à ce sujet dans le DM4 (Inform Designer’s Manuel, en anglais) : inform-fiction.org/manual/html/s17.html ainsi que le chapitre suivant.
-
Tell : ça c’est quand on parle d’un sujet précis à un personnage : « Parler du loup des bois à toto ». L’action Tell est envoyée à l’objet toto, avec comme « topic », sujet de conversation, les mots « loup des bois ». A nous de traiter ces mots qu’envoie le joueur et de gérer les différents sujets qui peuvent être abordés et leurs diverses formulations.
-
Ask : son fonctionnement est identique à Tell ! Sauf que c’est l’action envoyée par les verbes permettant d’interroger les personnages (« Interroger toto sur le loup des bois »). Cela permet de différencier le fait de parler d’un sujet avec celui de questionner sur un sujet.
-
Answer : comme son nom ne l’indique pas, c’est l’action d’envoyer n’importe quel texte libre au personnage. C’est la plus difficile à gérer. Si je dis « dire comment ça va au personnage », le personnage va recevoir une action Answer avec le texte « comment ça va ». Derrière, il faut que le personnage ‹ comprenne › ce texte et fasse une réponse appropriée.
Pour ces trois actions, le plus difficile si on veut réellement les exploiter est le traitement de la chaîne de caractères envoyée par le joueur comme ‹ topic ›. Ce point est décrit ici dans le DM4 : inform-fiction.org/manual/html/s16.html (le chapitre parle de la consultation de quelque chose, une livre par exemple, au sujet de quelque chose, mais c’est exactement pareil que fonctionnent les actions Tell, Ask et Answer).
Attention : dans le chapitre 17 du DM4, un exemple est donné où au lieu d’analyser le sujet donné aux actions Ask et Tell, c’est simplement la variable ‹ second › qui est analysée. En anglais, ce fonctionnement est correct si on ne lui en demande pas trop. En français ce n’est pas efficace, car ‹ second › contient tout simplement le premier mot qui n’est pas ‹ the ›. Mais si le joueur tape « parler de la lune à toto », second ne contiendra pas le mot lune, il contiendra le mot la ! Il est donc préférable d’analyser la chaîne « la lune », quitte à en retirer éventuellement les mots inutiles (c’est ce qui est fait dans Ascenseur avec la fonction ElimineMotInutile), afin de n’avoir pas à gérer à la fois ‹ la lune › et ‹ lune › dans l’exemple présent.
2. Ajouts dans la version francophone
-
ParlerSansPrecision : dans la version anglaise, il n’existe pas d’équivalent au verbe parler dans le sens « parler avec quelqu’un », sans préciser le sujet de conversation. La bibliothèque francophone ajoute cette action, nommée ParlerSansPrecision. Cette action est appelée sur la propriété life des objets ‹ animate › ou ‹ talkable ›, tout comme les trois actions Ask, Tell et Answer, mais sans aucun sujet de conversation.
-
Answer : en plus de la formulation « dire {n’importe quoi} à {personnage} », la bibliothèque francophone envoie aussi l’action Answer si on écrit « demander {quelque chose qui n’est pas un objet du jeu} à {quelqu’un} ». Cela permet de gérer lorsque le joueur veut « demander » une chose qui n’est pas modélisée dans le jeu ou qui est immatérielle (l’heure, de l’aide…).
3. Comment gérer correctement ces actions sur les personnages
Ces quatre actions sont la base de la conversation avec les personnages en Inform 6, version francophone. Cependant, il n’est pas rare qu’un auteur souhaite procéder autrement :
- en donnant la même signification aux actions Ask et Tell par exemple : que j’interroge toto au sujet du loup des bois ou que je parle du loup des bois à toto, je veux la même réponse, ce qui m’importe c’est le sujet loup des bois
- en supprimant totalement la gestion de Ask, Tell et Answer pour se contenter de réagir sur ParlerSansPrecision. Cela simplifie énormément les choses. Cela appauvrit la discussion avec les personnages (impossible ici de les interroger sur un sujet précis), mais limite aussi considérablement les possibilités d’incohérence. C’est une méthode à privilégier si on n’est pas prêt à s’investir dans des personnages à la conversation poussées. Mais il ne faut pas oublier de mettre tout de même un message standard en réaction aux autres actions Ask, Tell et Answer.
- en remplaçant toute conversation par un système de menus (chose que je ne détaillerai pas car je ne la maîtrise pas, mais si quelqu’un veut le faire…)
- etc…
L’important c’est de préciser dans l’aide du jeu quelles sont les formulations à utiliser pour s’adresser aux personnages, et d’avoir prévu une réponse cohérente pour chaque action:
- Ask (interroger sur un sujet)
- Tell (parler d’un sujet)
- Answer (dire tout ce qui nous passe par la tête)
- ParlerSansPrecision (comme son nom l’indique)
Voici une méthode très simple pour faire une classe de personnage qui ne réagit qu’à l’action ParlerSansPrecision. Les autres actions avertissent le joueur que la formulation à utiliser est « parler avec personnage ».
Class PNJ
with life [;
Ask, Tell, Answer : "[Pour converser avec les personnages, utiliser la formulation 'parler avec (personnage)']";
],
has animate;
Pour les objets de la classe PNJ, il ne sera plus utile de se soucier de Ask, Tell et Answer puisque c’est géré au niveau de la classe avec un message standard.
Pour des PNJ plus complexes, il faut toujours gérer ParlerSansPrecision (pour mettre une réponse standard ou personnalisée), mais aussi gérer Ask, Tell et Answer (ou juste Ask et Tell et mettre une réponse bateau mais crédible pour Answer qui est le plus compliqué à gérer. Dans Ascenseur, j’ai en fait géré Answer exactement comme Ask et Tell mais c’est un choix personnel.). Pour cela je vous invite à lire les liens ci-dessus vers les chapitres 16 à 18 du DM4, et à consulter/compiler/bidouiller la source du jeu Ascenseur.
(Le jeu Ascenseur, dont le code et le binaire sont disponibles ici : ifiction.free.fr/telechargement/ … ascenseur/ a été conçu comme un exemple d’utilisation des actions de communication avec les personnages.)
4. Autres actions liées aux personnages.
Les ordres : les formulations telles que « personnage, manger » (malheureusement l’impératif n’est pas reconnu dans ce contexte) ou « demander au personnage de pousser le bouton » envoient un ordre au personnage. Le chapitre 18 du DM4 traite de ce point. Si on ne le gère pas on obtient le message par défaut « (Le personnage) a mieux à faire. »
Demander un objet : il existe une action AskFor, qui en fait envoie l’action Give à la propriété life d’un personnage. Cela permet de gérer lorsqu’on demande un objet présent dans le lieu (ou possédé par un personnage). Le message par défaut est « (Le personnage) a mieux à faire. »
Si vous voyez des choses à reformuler, des erreurs, des choses à préciser, à ajouter, faites en part sur le fil et on mettra à jour ce texte !