Animal Crossing, si vous ne connaissez pas, est une série de jeux vidéo sortis sur diverses plates-formes Nintendo, dans lequel vous incarnez un personnage qui arrive dans un village peuplé d’animaux qui parlent. Le jeu se passe en temps réel : quand il fait nuit chez vous, il fait nuit dans le jeu, il se passe quelque chose le 31 décembre, etc. ; le village a un rythme particulier, avec des événements hebdomadaires (comme le concert du samedi soir de Kéké Laglisse, un chien guitariste), des plantes qui mettent un certain temps à pousser, et un véritable écosystème.

Le jeu a plusieurs façons de vous faire revenir : l’argent que vous collectez sert à rembourser votre prêt immobilier, ce qui agrandit votre maison automatiquement, certaines personnes déménagent et d’autres arrivent, et surtout (et ça marche vachement bien sur moi) vous pouvez collectionner tout un tas de choses : des meubles, des papillons, des poissons, les chansons de Kéké, etc.

Ah, Tom Nook, le type qui vous fait payer un crédit immobilier, puis qui agrandit votre maison dès que vous avez fini de payer et vous demande de rembourser…

Le jeu place aussi beaucoup d’importance dans les relations avec les autres personnages, et vous encourage à leur envoyer des cadeaux et des lettres gentilles ; ce faisant, vous garderez des bonnes relations, et il n’est pas rare que vous receviez des cadeaux d’eux. Le système de lettres est ainsi central dans la relation aux personnages, et est assez surprenant et osé : vous écrivez les lettres en langage naturel, et vous recevez des réponses comme : « Merci pour ta lettre gentille, oui je vais bien merci ». Cela crée une vraie implication du joueur, qui peut se prendre au jeu et avoir l’impression de pouvoir discuter avec ses amis. Puisqu’on s’intéresse aux chatbots ce mois-ci, on va regarder comment c’est fait !

Rétro-ingénierie de l’amitié

Bien entendu, ce jeu n’est pas capable de comprendre parfaitement des lettres de plusieurs phrases et d’y répondre précisément ; on n’est déjà pas capables de le faire avec un ordinateur puissant, alors pensez sur une GameCube… Et bien entendu, les joueurs ne sont pas dupes et le savent. Mais vous avez le choix : voulez-vous jouer à ce jeu mignon, dont le seul but est de revenir cultiver votre petit espace détente, en écrivant des lettres gentilles à vos amis ; ou en essayant de désosser le système pour obtenir les meilleurs résultats ? (Bien entendu, on peut aussi en avoir marre de se creuser la tête pour écrire des lettres gentilles à des écureuils en polygones et vouloir rendre cette partie du jeu moins fastidieuse !)

Il existe ainsi des dizaines de pages sur Internet dédiées à l’écriture de lettres dans Animal Crossing. Que mettre ? Qu’est-ce qui importe ? Comment avoir de bonnes notes et recevoir de super cadeaux ? Le code source n’étant pas disponible, les joueurs ont fait leurs propres expériences pour essayer d’en tirer des règles. Je trouve cet aspect d’expérimentation face à une boîte noire qui imite un humain intéressant (après tout, on peut se demander en le codant comment le chatbot va être abordé, et donc ce qu’il faut y mettre dedans), donc voyons les hypothèses et réactions des humains.

Parmi les joueurs, vous avez certains qui n’aiment pas écrire des lettres et qui sautent cet aspect, ou qui écrivent des choses complètement au hasard, pour y mettre le minimum d’effort ; si votre chatbot n’est qu’une partie relativement optionnelle de votre jeu, il faut s’attendre à ça, même si vous y avez mis tout votre cœur.

D’autres écrivent des choses moqueuses ou sarcastiques, et c’est tout à fait standard également : quand un joueur est face à un système qui prétend pouvoir tout comprendre, la tentation est de le pousser dans ses retranchements pour se moquer de lui et exposer les failles (tout comme les joueurs de jeux à parser qui vont essayer « merde » ou « mettre un coup de pied aux fesses à René »). On a affaire à une joueuse qui voit vos règles du jeu, mais qui n’a pas envie de rentrer dans le jeu, pour une raison X ou Y — peut-être par ennui, ou parce qu’elle se sent bloquée dans le jeu (énigme non résolue dans un jeu à parser, manque d’objectifs ou grinding nécessaire dans Animal Crossing).

D’autres mettent des paroles de chanson ou autre : l’intention est moins malveillante ou moqueuse, mais c’est parce que ça représente une corvée de devoir réfléchir à quelque chose à dire à ces personnages (c’est en général associé à du grinding, c’est-à-dire que la personne a envie d’avoir un badge qui se débloque au bout d’un certain nombre de lettres, mais en écrire autant est ennuyeux).

Certains, par contre, font des efforts, et essaient de trouver des choses à dire que le personnage pourrait apprécier : parler de cuisine à un cuisinier, etc. D’autres envoient une newsletter à leurs amis, pour multiplier les communications gentilles avec moins d’effort. Pour d’autres, ces lettres ont une importance certaine, et ils y mettent beaucoup de cœur, en se prenant au jeu, voire en y mettant une signification émotionnelle : chacun met ce qu’il veut derrière un jeu, mais si vous donnez la possibilité de parler de sentiments et d’avoir un retour positif de la part des personnages du jeu, certains joueurs s’investiront beaucoup — même s’ils savent très bien que ce ne sont que des octets dans une console.

On trouve aussi sur Internet plusieurs fils de forums remplis de trucs, de règles que les gens suivent et qui semblent fonctionner, c’est-à-dire donner lieu à des réponses positives des personnages et à des cadeaux. Mais comment en être sûrs, qu’est-ce qui relève de la superstition ? Certains disent que le chatbot préfère que toutes les lignes de l’emplacement réservé à la lettre soient non vides, voire que la lettre soit complètement pleine ; certains disent que les lettres trop courtes ne sont pas appréciées, mais d’autres disent que certains personnages aiment des lettres courtes. On trouve aussi des conseils comme utiliser une grammaire correcte, ou mettre des mots à connotation positive ; certains pensent que c’est d’ailleurs le seul critère. Ajouter le nom des personnages, ou des noms de catégorie semble avoir un effet positif. Parfois, les animaux utiliseront votre cadeau ou suivront votre conseil, et parfois non ; dans tous les cas, les joueurs essaient de regarder la conséquence, et ont une réaction émotionnelle en voyant le résultat. Et bien sûr, il y a des gens qui décident de se lancer dans un gros projet, de sortir le classeur Excel, et de faire beaucoup d’expériences pour trouver ce qui se passe là-dedans.

Alors, comment est-ce que ce chatbot est fait ?

Hackons le chatbot

On a de la chance : après des années d’investigation et d’expérimentation, on est arrivés à en savoir plus sur le chatbot… en hackant le jeu. (C’est un chercheur en sécurité informatique, ces gens-là sont terribles, huhuhu.)

Pendant l’été 2018, James Chambers a essayé d’analyser le comportement du jeu, en regardant les instructions machine exécutées par le code en même temps que le jeu se lançait. Il a trouvé plusieurs choses intéressantes (un mode debug, un moyen de mettre n’importe quel jeu NES dans le jeu pour y jouer avec les consoles du jeu…), mais son fil Twitter sur les lettres a reçu beaucoup d’attention ; il y détaille la façon dont les lettres sont analysées par le jeu. Voyons comment ça marche.

Première constatation : les lettres sont jugées par le jeu via un système de points, qui détermine le type de lettre que vous allez recevoir en réponse. Si le score est supérieur à 100 points, vous aurez une bonne réponse ; inférieur à 50, et vous aurez une réponse négative. Si votre score est bon, vous avez un certain pourcentage d’avoir un cadeau. C’est à peu près tout ! Donc ça n’est pas vraiment un chatbot, vu que le nombre de réponses possibles est relativement limité ; et peu d’informations sont retenues de la lettre, vu que tout est condensé dans un score.

Cela ne veut pas dire que les idées trouvées par les joueurs sont inintéressantes ! On peut très bien envisager, surtout si le chatbot est au cœur de votre jeu, que l’algorithme ci-dessous soit complété par des tests supplémentaires comme « combien de mots gentils » ou « a-t-il utilisé mon prénom » ! Bien sûr, ça complique la chose, mais ça ajoute de la complexité et de l’intérêt — même si, vous le voyez, un algorithme simple mais mystérieux peut quand même être stimulant pour les joueurs.

L’algorithme est relativement simple, et passe par une série de 7 étapes. La première est de vérifier la ponctuation : est-ce que la lettre se termine par « . », « ! » ou « ? », et chaque point à l’intérieur de la lettre est suivi de quelques espaces et d’une majuscule ? C’est en réalité un des conseils que les animaux vous donnent à l’intérieur même du jeu. De même, la troisième règle est de vérifier que le premier caractère de la lettre est bien une majuscule. La quatrième règle est la suivante : si une lettre est répétée 3 fois de suite (ce qui n’arrive jamais dans des mots normaux), un malus est appliqué et l’algorithme refuse de lire le reste ; une fois encore, ceci est pour éviter les gens qui écrivent « aaaaaa… » comme lettre, entre autres. La septième règle vérifie par blocs de 32 cases la présence d’espaces ; il me semble que cette règle est là pour les lettres de type « sdffvsd ». On peut se poser la question de l’utilité d’un point de vue de game design. Je pense que cette règle est là pour encourager voire forcer les joueurs à prendre le format de la lettre au sérieux, à faire un effort, à y mettre du leur (comme en amitié, me direz-vous ; mais là le but est autre, c’est de faire en sorte que les joueurs aient du respect pour l’IA).

La deuxième règle regarde le début des mots, et compte le nombre de trigrammes (groupes de trois lettres) apparaissant dans une liste codée en dur de trigrammes courants ; ceci est sans doute pour valoriser l’utilisation de mots courants, ce qui indique une conversation « normale ». La sixième règle est de donner un malus si il y a plus de 75 caractères sans ponctuation, ce qui encourage à faire des phrases courtes et pas trop compliquées. De même, la cinquième règle vérifie qu’il y ait plus de 20 % d’espaces dans les caractères de la lettre ; je pense qu’il s’agit d’un ratio de conversation normale, et qui plus est qui encourage à utiliser des mots simples. (Certains messages dans les forums ci-dessus mentionnent avoir reçu des réponses « je ne comprends pas ? » ; je me demande si ce genre de réponses est déclenché si la 2e ou la 5e règle sont des malus.)

Bref, mon analyse est que sur les 7 règles, la moitié est là pour détecter des fraudes et des gens qui ne font pas l’effort de s’engager dans la conversation avec le chatbot, et l’autre moitié est là pour valoriser les motifs indiquant une conversation normale avec des mots simples. Absolument aucun sens n’est déduit des mots — ce qui, de toute façon, est une pente assez glissante, car le problème est difficile et risqué (pour détecter l’ironie, par exemple). C’est suffisant pour le contexte du jeu : on écrit des lettres, on a des conversations plaisantes, on s’offre des cadeaux, et c’est à peu près tout ; bien entendu, un jeu un peu plus basé sur la conversation aurait sans doute d’autres objectifs, mais au vu de ce dont le jeu a besoin, cet algorithme simple marche très bien.

Bien à vous,

En conclusion ? Je dirais que ce chatbot est assez intéressant, car ses règles sont plutôt simples à reproduire, et pourraient vous servir d’inspiration ; retenons aussi que le jeu n’a pas besoin de comprendre le sens des lettres vu leur but, mais que le choix est fait de forcer les joueurs à y mettre du leur et à écrire des lettres en y mettant les formes : ceci ne peut être qu’une bonne chose pour le jeu (et vous voyez bien au nombre de fils de forums que les joueurs sont impliqués et se creusent la tête).

On a aussi vu que, lorsque les joueurs sont forcés d’interagir beaucoup avec le chatbot, ça donne forcément des comportements qui testent les limites ou des comportements d’ennui, qui ne sont pas forcément souhaitables : vu que votre chatbot n’est pas parfait (et ici, que les règles sont floues, ce qui frustre au bout d’un moment), forcer le joueur à lui parler en permanence n’est pas forcément une bonne chose à faire. Mais on a vu aussi que certains joueurs sont satisfaits de ce chatbot, qui leur permet de s’impliquer émotionnellement dans le jeu et vraiment jouer à l’amitié avec les personnages. L’enseignement que j’en tirerais est que, comme on l’a évoqué notamment dans nos deux premiers articles, un chatbot a intérêt à utiliser sans hésiter le registre émotionnel : laisser les joueurs parler d’eux, et évoquer des émotions dans les réponses du chatbot, permet de créer un lien, faire illusion (plus ils parlent, moins on a besoin de parler) et permettre aux ambiguïtés d’être interprétées par le joueur pour qu’elles paraissent moins graves.

J’espère que cet article vous aura donné des idées ! Dans nos deux prochains (et derniers) articles, on parlera un peu plus précisément de création de chatbots (outils, techniques, etc.). Soyez au rendez-vous !