Une philosophie de conception de jeu narratif est discutée depuis plusieurs années : celle des narramiettes (storylets en anglais). Il y a eu pas mal de recherches et d’expériences, mais ça nécessitait de tout réimplanter et ça n’était donc pas la portée de tous. Twine a récemment ajouté cette nouvelle fonctionnalité, et apparemment personne n’était au courant (cf. les réponses de ce tweet d’Emmanuel). C’est l’heure de la présenter et de la survoler !

Au passage : narramiettes, c’est moi qui l’ai inventé. « Story-let », c’est « histoire-lette » comme dans les gouttelettes, mais ça fait « toilettes ». Et puis le pain, c’est important !

La Bonne Paye

Vous avez déjà joué à « la Bonne Paye » ? Vous bougez le pion, vous tirez une carte, y’a une petite histoire rigolote (un concours de beauté, votre voiture est détruite, etc.), vous reculez d’une case et vous perdez 100 €. Bon ben ça, c’est une narramiette : un petit bout de contenu qui affecte les statistiques et qui tient sur une carte à jouer.

Imaginez plusieurs tas de cartes… en fait y’a pas besoin d’imaginer : au Monopoly, vous avez les cartes « Chance » et les cartes « Communauté », et vous tirez d’un paquet ou de l’autre selon la case où vous êtes. Donc raffinons notre définition :

Narramiette = selon une ou plusieurs conditions sur des variables, on vous donne un paquet où il faut tirer une carte, qui contient un petit bout d’histoire, et qui affecte les variables.

Imaginez donc un jeu de société où c’est la seule chose qu’on fait (au contraire du Monopoly ou de la Bonne Paye). D’ailleurs, même pas besoin d’autres joueurs, ça peut se jouer en solitaire (boucle « quelles cartes sont tirables, j’en tire une, je lis le truc, je change les variables, je défausse »).

Imaginez qu’il y ait plusieurs variables sur votre fiche de perso, et plein de tas de cartes : un tas de cartes (de péripéties, donc) pour les gens qui ont plus de 25 en force, un tas pour ceux qui ont plus de 20 en intelligence, un tas qui se débloque quand vous apprenez des sorts de niveau 2, etc.

En fait imaginez qu’il y ait des milliers de tas de cartes.

En fait imaginez qu’il n’y ait plus de tas, mais plutôt que chaque carte a ses conditions particulières (on peut tirer celle-ci que si on a 20 en force, que si c’est un lundi, etc.).

Et un croupier qui, à chaque tour, regarde toutes les conditions préalables qui sont écrites sur chacune des cartes, regarde vos variables pour les comparer aux conditions, et fait un tas de cartes que vous avez le droit de tirer ce tour-ci.

Et peut-être que la carte tirée vous parle de quelque chose, puis vous fait faire un choix qui affectera vos statistiques.

Cette promesse-là, c’est celle des narramiettes.

Un peu d’histoire

Apparemment, cette structure a été étudiée la première fois par un chercheur en narratologie, Mark Bernstein, qui l’a appelée « hypertexte sculptural » (parce qu’on taille et on sculpte le paquet de cartes, je crois). Une des premières utilisations dans le jeu vidéo est King of Dragon Pass, qui est un super exemple de narramiettes et des possibilités du format : vous suivez les aventures d’une tribu au fil des années, des récoltes plus ou moins bonnes, des affrontements avec d’autres tribus, etc.

Je dis une des premières car certains font même remonter ça à King of Chicago (1989) et même Dragon’s Lair (1983) !

Cette structure a inspiré Failbetter pour leur jeu free-to-play narratif Fallen London, qui reçoit toujours du nouveau contenu dix ans plus tard. Ce sont eux qui ont inventé le terme storylets, et le terme de QBN : quality-based narrative, c’est à dire narration pilotée par les qualités (les variables, dans leur parlance), et plus spécifiquement un très grand nombre de variables. Dans Fallen London, vous avez des ressources, des compétences, des hauts-faits, des relations avec des personnages, etc ; vous avez des cartes-narramiettes devant vous, ou bien vous tirez une carte-narramiette au hasard d’un paquet de 6, puis après il faut payer ou revenir plus tard pour que ce paquet se reremplisse. Il y a beaucoup de grind, mais si vous accrochez au monde — victorien steampunk tentacules — c’est prenant.

Failbetter a créé 2 jeux premium basés sur les narramiettes et se passant dans le monde de Fallen London, et chacun semble meilleur que le précédent (meilleure histoire, moins de grind et de lenteur). Je vous laisse voir les critiques, comme celle-ci sur HG101.

En 2012, Failbetter a mis son outil, StoryNexus, à disposition des gens (mais il n’est plus disponible) ; il y avait aussi Varytale, à l’époque. Bruno Dias a fait son propre système pour Voyageur, un jeu de commerce spatial qui est basé sur des narramiettes avec de la génération procédurale. Et puis, en 2016, Reigns, qui prend les narramiettes dans une tout autre direction : littéralement des cartes, avec un mécanisme de balayage gauche/droite (comme Tinder) pour prendre une décision à la fin de chaque carte.

Il y a eu plusieurs autres jeux basés sur les narramiettes : Where the water tastes like wine, Signs of the Sojourner, etc. Mais en fait, ce que je dois dire, c’est que la communauté francophone le fait déjà sans le savoir ! Parmi les jeux des concours récents, plusieurs me semblent relever des narramiettes : Si j’avais su… de Eve C. (Queen of Dragon Pass foutraque, gagnante du concours 2020), Karma Manager de Jérémie P., et Dernières heures avant liquidation de Fabrice Gille ! Bref, si vous avez une boucle « je tire une péripétie au hasard et ça affecte mes variables », ce sont des narramiettes !

Si vous voulez aller plus loin sur les narramiettes, et que vous lisez l’anglais, deux ressources importantes : le blog de Dan Cox, et celui d’Emily Short.

Avantages et inconvénients

Il y a plusieurs avantages aux narramiettes :

  • L’expressivité : vous pouvez toujours mettre en place des structures non linéaires classiques (formats linéaires, arbres, etc — je vous laisse voir l’article de Nighten). Emily Short vous explique comment dans cet article, mais en gros, vous créez des variables pour encoder où vous en êtes dans l’arbre de décision, et vous débloquez la carte suivante uniquement si la condition précédente est vérifiée.
  • L’extensibilité : vous pouvez très facilement créer des nouvelles péripéties et des nouvelles quêtes, quand vous voulez ; en général, tout ce qui existe déjà est encore compatible, et votre jeu ne fait que s’enrichir. Ça permet des situations de DLC ou d’ajout de contenu pendant 10 ans, comme dans Fallen London.
  • L’ex… euh la granularité : vu que chaque miette est petite, et qu’on laisse en général le choix de la prochaine miette au joueur, celui-ci peut explorer à son rythme. Préférez-vous continuer à suivre cette quête, ou farmer un peu plus de ressources, ou entrecouper votre quête par un peu d’exploration ? Ou juste sauvegarder parce que vous n’aviez que 5 minutes dans le bus aujourd’hui ? Tout cela est possible avec les narramiettes !

Les problèmes des narramiettes, maintenant :

  • Une certaine quantité de contenu est nécessaire avant que le jeu soit agréable à jouer ; si on retombe toujours sur les mêmes péripéties, ou le même genre, c’est vite ennuyant.
  • Il est difficile d’avoir une structure narrative globale : contrairement à une FI classique où les péripéties sont prévues pour un moment précis, il est difficile de prédire exactement comment le joueur naviguera le jeu. Soyons clairs, c’est possible (cf. mon commentaire plus haut, en encodant les bonnes variables, c’est faisable), mais ça demande une planification et une prise en compte fine de l’avancement global de la narration (genre noter sur chaque narramiette des conditions précises dépendant de l’avancement de l’histoire et jeter des paquets de cartes entiers à chaque évolution pour garder une cohérence). Pour cette raison, beaucoup de jeux à narramiettes se concentrent sur une histoire locale et individuelle (« mon personnage devient un marchand réputé », « mon personnage va-t-il rester reine longtemps ») que globale et collective (« la résistance menée par mon héros devient si puissante qu’on reconquiert des territoires de l’Empire »).
  • De par la boucle de gameplay courte et la présence de variables numériques, un jeu à narramiettes expose son côté mécanique beaucoup plus qu’un jeu narratif planifié comme un film ou une pièce de théâtre. L’inconvénient est donc une certaine répétitivité qui peut s’installer, voire un grind (actions répétitives pour faire évoluer les statistiques très lentement) qui peut ne pas être apprécié des joueurs. C’est un écueil majeur, un des reproches faits à Failbetter (leurs jeux premium 1 joueur avaient tendance à avoir trop de grind par déformation professionnelle, puisqu’ils ont commencé par un MMO free-to-play, mais apparemment ça s’est arrangé).

Bref, ça n’est pas l’outil ultime qui résout tout, mais un outil de plus dans votre boîte à outils pour créer des jeux narratifs différents.

Il y a un autre type de système à narramiettes, les systèmes basés sur la pertinence. En gros, c’est notamment utilisé dans des systèmes de réactions de PNJ (par exemple Left for Dead) : vous avez des milliers de répliques avec leurs conditions (« si on a tué un zombie, dire “ouah on a eu chaud” »), et le croupier évalue toutes les conditions de toutes les cartes pour trouver la plus pertinente (par exemple celle qui a le plus de contraintes satisfaites dans tout le tas). On garde toujours le principe de base, et donc la flexibilité et l’extensibilité, mais les répliques changent rarement les variables.

Tutoriel Twine 2 (Harlowe) rapide

Créons à présent un jeu basique avec le format Harlowe pour Twine 2 avec des narramiettes ! Alors oui, notre jeu sera tellement basique, avec peu de contenu, que vous vous direz : « On aurait pu faire la même chose avec des tableaux et des if et des display ». Mais rappelons-nous : extensibilité, modularité, boucle de gameplé. On fait 5 narramiettes maintenant, puis vous pouvez en ajouter quand vous voulez, faire un DLC avec 5000 narramiettes de plus, en commander à une usine de narramiettes (= un freelance qui peut ainsi se consacrer à l’écriture de narramiettes sans toucher à votre code), etc. C’est flexible et modulaire et c’est très bien !

Voici la structure que je compte mettre en place : un premier passage au tout début pour définir nos variables (le Q dans « QBN », bien sûr), puis un passage nommé « Croupier » qui tirera des narramiettes au sort et nous les donnera à manger ; après avoir consommé une miette, on reviendra au croupier (boulanger ?), et il nous donne une autre narramiette, etc.

Rappelez-vous, une narramiette, ça se dit « storylet » en anglais, et c’est donc ça qui est utilisé par la syntaxe de Twine. Mais moi je vais continuer à dire narramiette, parce que j’aime vraiment trop le terme.

Voici mon premier passage : j’ai inventé des variables complètement au hasard, et ça donne a priori une histoire où on peut devenir riche et célèbre, mais attention à ne pas devenir un monstre.

Édition d'un passage Twine montrant la création des variables argent, popularité, monstre et nuit.
Juste 4 variables, et un go-to

Je m’occuperai de mon croupier plus tard ; pour l’instant, je crée des narramiettes. Pour cela, rien de plus simple : je crée un passage, et la première ligne est (storylet: condition). Par exemple, faisons une narramiette où on va au travail comme d’habitude, ce qui nous fait nous sentir normal et gagner de l’argent ; mais si on est déjà un monstre, on ne peut pas vraiment aller au travail. Donc :

(storylet: when $monstre < 7)
Vous allez au travail, comme d'habitude, et vous êtes aimable avec vos collègues. Une journée s'écoule sans vraiment qu'on la voie passer.
(set: $argent to $argent + 5)
(set: $popularite to $popularite - 1)
(set: $monstre to $monstre - 1)
(display: "Croupier")

Puis faites-en d’autres : vous acceptez de participer à une expérience risquée qui vous rend riche et monstrueux ; vous sauvez un enfant des flammes, ce qui vous rend populaire ; vous êtes un monstre mais vous passez à la télé et tout le monde vous adore ; etc., etc. ! Ajoutez-en plusieurs, et pas grave si c’est un peu du hasard pour l’instant !

Édition d'un passage Twine, montrant une narramiette quand on va au travail en étant un monstre.

Il est maintenant l’heure d’ajouter du code chez le croupier pour afficher ceci. On va utiliser pour cela la macro (open-storylets:, qui renvoie un tableau constitué de toutes les narramiettes ouvertes, c’est-à-dire accessibles, c’est-à-dire dont la condition citée au début du passage correspondant est vraie. Chacun des éléments du tableau est en fait une datamap (voir l’article de filiaa), qui contient notamment le nom de la narramiette. On peut donc utiliser cette macro pour lister toutes les narramiettes ouvertes :

(for: each _p, ...(open-storylets:) )[* (link-goto: _p's name)]

Ou pour en choisir une au hasard :

(set: _mietteName to (either: ...(open-storylets:))'s name )
    (link-goto: "Suivant", _mietteName)

Enfin, peut-être voulez-vous juste afficher les trois premières miettes de la liste des miettes ouvertes ; cela se fait avec la macro link-storylet, complétée d’un nombre n pour afficher la énième miette :

* (link-storylet: 1)
* (link-storylet: 2)
* (link-storylet: 3)
Édition d'un passage Twine montrant le passage du croupier.
Croupier final : trois conditions pour détecter trois fins différentes, et sinon deux link-storylet

Notez que vous pouvez influencer l’ordre dans lequel les narramiettes apparaissent dans la liste d’open-storylets, à travers deux variables associées à vos miettes : leur urgence (la liste sera triée avec la plus urgente en premier) et leur exclusivité (si une narramiette d’exclusivité 2 est ouverte, celles d’exclusivité 1 ou 0 (la valeur par défaut) ne seront pas affichées dans la liste). Ceci vous permet, selon votre système, de faire soudainement passer certaines miettes devant les autres, voire d’exclure les autres temporairement. Je vous laisse regarder la doc sur l’exclusivité et sur l’urgence !

Maintenant que vous avez ce système, il vous reste à déterminer comment terminer le jeu. À vous de voir : peut-être voulez-vous tester une condition particulière dans le code du croupier, par exemple « si 10 tours sont passés, montrer le passage “fin” », ou « si $monstre est à 10, fin du jeu, le joueur a détruit la ville ; ou peut-être qu’une narramiette particulière ne se terminera pas avec (display:"Croupier"), mais avec le nom d’un autre passage, pour passer à la suite. À vous de voir, et surtout, d’expérimenter !