content: three long text gamebooks
Repo State / repo-state (push) Failing after 49s
Repo State / repo-state (pull_request) Failing after 46s
Validate Zacus refactor / validate (push) Failing after 5m38s

Context:
The gamebook engine had a single short demo. We want several long,
text-only "livre dont vous etes le heros" adventures to play on the
Freenove (and to exercise deeper branching).

Approach:
Author each as a standalone gamebook YAML in game/gamebooks/, using the
navigable format (passages with screen/text, choices as label+goto;
a choiceless passage is an ending that restarts on click).

Changes:
- game/gamebooks/tour_horloger.yaml: "La Tour de l'Horloger"
  (fantastique/temps) — 23 passages, 8 fins.
- game/gamebooks/train_de_nuit.yaml: "Le Dernier Train de Nuit"
  (mystere/huis clos) — 19 passages, 7 fins.
- game/gamebooks/ile_echos.yaml: "L'Ile aux Mille Echos"
  (aventure/survie) — 16 passages, 7 fins.

Impact:
Three richly branched stories ready to stage on the master SD with
tools/gamebook/build_gamebook.py. Graphs validated: no broken gotos,
every passage reachable, multiple endings each.
This commit was merged in pull request #181.
This commit is contained in:
clement
2026-06-19 14:41:54 +02:00
parent 05c4c11c0b
commit bfa09b68be
3 changed files with 697 additions and 0 deletions
+196
View File
@@ -0,0 +1,196 @@
# Livre dont vous êtes le héros — L'Île aux Mille Échos
# Navigation D-pad (curseur ">" + clic). passages {screen, text,
# choices:[{label, goto}]}. Passage sans choices = fin.
title: "L'Île aux Mille Échos"
voice: Thomas
start: plage
passages:
plage:
screen: "La plage"
text: >
Vous reprenez connaissance sur une plage de sable noir, les poumons
brûlants d'eau de mer. De votre voilier, il ne reste qu'une planche et un
coffre échoué. Devant vous, une jungle dense ; à droite, des falaises
percées de grottes ; à gauche, une crique. Quand vous toussez, la jungle
vous répond : « …toussez… toussez… » d'une voix qui n'est pas la vôtre.
choices:
- label: "Ouvrir le coffre échoué"
goto: coffre
- label: "Entrer dans la jungle"
goto: jungle
- label: "Explorer les grottes des falaises"
goto: grottes
coffre:
screen: "Le coffre"
text: >
Le coffre contient une gourde, un couteau, un briquet à amadou et une
carte trempée. La carte montre l'île : une jungle, des grottes, un phare
au sommet, et au centre une spirale annotée « NE PARLE PAS DANS LE PUITS ».
Une plume y est glissée, comme un marque-page.
choices:
- label: "Partir vers le phare par la jungle"
goto: jungle
- label: "Aller droit aux grottes"
goto: grottes
jungle:
screen: "La jungle"
text: >
La jungle bruisse de mille échos décalés : vos propres pas vous reviennent
avec un temps de retard, comme si quelqu'un marchait derrière vous. Un
sentier monte vers une lumière — sans doute le phare. Une trouée latérale
descend vers un puits de pierre, au centre de l'île.
choices:
- label: "Monter le sentier vers le phare"
goto: phare
- label: "Descendre vers le puits central"
goto: puits
- label: "Appeler à l'aide de toutes vos forces"
goto: appel
appel:
screen: "L'appel"
text: >
« Ohé ! Y a quelqu'un ?! » Votre cri se démultiplie, revient de partout,
enfle au lieu de s'éteindre — dix voix, cent voix, toutes la vôtre, qui se
mettent à répondre des choses que vous n'avez pas dites. La jungle frémit.
Quelque chose, nourri de ces voix, se rapproche.
choices:
- label: "Vous taire et courir vers le phare"
goto: phare
- label: "Vous taire et vous cacher dans les grottes"
goto: grottes
grottes:
screen: "Les grottes"
text: >
Les grottes sont une cathédrale d'échos. Le moindre bruit s'y répète à
l'infini, de plus en plus net, de plus en plus humain. Des peintures
pariétales montrent des silhouettes qui se bouchent les oreilles. Un
boyau descend vers un grondement d'eau ; une corniche mène vers la lumière
du dehors et le sentier du phare.
choices:
- label: "Suivre le boyau vers l'eau"
goto: source
- label: "Regagner la corniche et viser le phare"
goto: phare
- label: "Graver votre nom dans la roche"
goto: fin_gravure
source:
screen: "La source"
text: >
Le boyau débouche sur une source souterraine d'une clarté irréelle. À sa
surface flotte un radeau de roseaux, déjà construit, et un message gravé
au-dessus : « D'autres ont fui par l'eau. L'île ne garde que les voix. »
Le courant file vers une issue lumineuse, vers la mer.
choices:
- label: "Embarquer sur le radeau et fuir par l'eau"
goto: fin_radeau
- label: "Remonter, déterminé à percer le secret du puits"
goto: puits
phare:
screen: "Le phare"
text: >
Au sommet, un phare éteint depuis longtemps. La lanterne est intacte ; il
manque juste une flamme. De là-haut, vous voyez tout : la spirale du puits
au centre, et au large… un navire, minuscule, qui passe sans vous voir.
Avec le briquet et l'huile de la lampe, vous pourriez rallumer le phare.
choices:
- label: "Rallumer le phare pour appeler le navire"
goto: fin_phare
- label: "Crier vers le navire de toutes vos forces"
goto: fin_cri
- label: "Descendre d'abord élucider le puits"
goto: puits
puits:
screen: "Le puits"
text: >
Au cœur de l'île, un puits en spirale s'enfonce dans le noir. L'air en
remonte chargé de chuchotements — toutes les voix prisonnières de l'île,
celles de tous les naufragés. Une inscription, encore : « NE PARLE PAS.
Écoute. Et si tu dois parler, dis ton nom, une seule fois, pour le
reprendre. »
choices:
- label: "Vous pencher et écouter en silence"
goto: ecoute
- label: "Crier dans le puits pour défier l'île"
goto: fin_avalee
- label: "Prononcer votre nom, une seule fois"
goto: fin_nom
ecoute:
screen: "L'écoute"
text: >
Vous écoutez, sans un mot. Peu à peu, le chœur des voix dessine une
vérité : l'île n'est pas vivante, elle est affamée de sons, et elle rend
qui lui rend le silence. Une des voix, plus claire, vous souffle : « La
cloche du phare. Sonne-la une fois, et pars sans un mot. »
choices:
- label: "Remonter sonner la cloche du phare"
goto: fin_cloche
- label: "Tenter malgré tout la fuite par l'eau"
goto: source
# ── Fins ──────────────────────────────────────────────────────────────────
fin_gravure:
screen: "Un nom de plus"
text: >
Vous gravez votre nom dans la roche, à côté des centaines d'autres. À
peine la dernière lettre tracée, votre voix vous quitte, aspirée par
l'écho. Vous devenez l'un de ces murmures qui, un jour, souffleront un
conseil à un nouveau naufragé. L'île vous a gardé. Fin.
fin_radeau:
screen: "Par l'eau"
text: >
Vous vous laissez glisser sur le radeau. Le courant souterrain vous crache
en pleine mer, sous les étoiles. Derrière vous, l'île s'éloigne, et son
chœur de voix s'éteint enfin dans le ressac. Trois jours plus tard, un
chalutier vous repêche, muet d'épuisement mais vivant. Vous avez fui. Fin.
fin_phare:
screen: "La lumière"
text: >
La flamme prend, la lentille s'embrase : un faisceau balaie la mer. Le
navire vire de bord. Tandis que la chaloupe approche, le phare semble enfin
respirer, et les échos de l'île s'apaisent, comme rassasiés d'avoir, pour
une fois, servi à sauver quelqu'un. On vous hisse à bord. Sauvé. Fin.
fin_cri:
screen: "Le cri de trop"
text: >
Vous hurlez vers le navire. L'île saisit votre cri au vol, le multiplie,
le retourne — et le navire, croyant à un piège de sirènes, met les voiles.
Votre voix, elle, ne revient pas : elle reste là-haut, à appeler des bateaux
qui fuiront toujours. Vous, vous restez aussi. Fin.
fin_avalee:
screen: "Avalé par l'écho"
text: >
Votre défi résonne dans la spirale, descend, descend, et remonte
centuplé, assourdissant, jusqu'à vous arracher du sol. Le puits vous avale
comme une dernière syllabe. Quelque part, très loin, un futur naufragé
entendra votre cri et croira que l'île est vivante. Fin.
fin_nom:
screen: "Reprendre son nom"
text: >
Vous prononcez votre nom, une seule fois, fermement. Les voix se figent,
surprises — puis vous le rendent, intact, et avec lui un sentier de pierre
qui n'existait pas, droit vers la plage et un canot oublié. L'île, qui ne
retient que les noms perdus, vous laisse partir avec le vôtre. Fin.
fin_cloche:
screen: "Une seule cloche"
text: >
Vous remontez et sonnez la cloche du phare : un coup, grave et pur. L'écho,
pour la première fois, ne se démultiplie pas — il s'éteint, net, comme un
souffle qu'on relâche. Dans ce silence neuf, vous descendez à la plage,
poussez le canot, et ramez sans un mot. Derrière vous, l'île se tait
enfin. Fin.
+268
View File
@@ -0,0 +1,268 @@
# Livre dont vous êtes le héros — La Tour de l'Horloger
# Navigation D-pad (curseur ">" + clic). Format : passages {screen, text,
# choices:[{label, goto}]}. Un passage sans choices = fin (clic = recommencer).
title: "La Tour de l'Horloger"
voice: Thomas
start: seuil
passages:
seuil:
screen: "Le seuil"
text: >
La pluie tambourine sur les pavés. Devant vous se dresse la Tour de
l'Horloger, dont nul n'est jamais ressorti depuis trente ans. Une porte
de chêne, gravée d'engrenages, attend. Une lucarne éclairée veille tout
en haut. Vous resserrez votre manteau. Comment entrez-vous ?
choices:
- label: "Frapper à la grande porte"
goto: vestibule
- label: "Contourner par le jardin"
goto: jardin
vestibule:
screen: "Le vestibule"
text: >
La porte cède dans un grincement. Des centaines d'horloges couvrent les
murs, toutes arrêtées sur minuit moins le quart. Un escalier en colimaçon
monte vers l'obscurité ; une porte basse, à gauche, laisse filtrer une
lueur d'huile et un cliquetis d'outils.
choices:
- label: "Monter l'escalier en colimaçon"
goto: palier
- label: "Pousser la porte basse de l'atelier"
goto: atelier
jardin:
screen: "Le jardin"
text: >
Le jardin est une jungle d'orties et de cadrans solaires renversés. Au
centre, un vieux puits exhale un froid d'hiver, alors qu'on est en été.
Une porte de service, entrebâillée, donne sur les cuisines.
choices:
- label: "Descendre dans le puits glacé"
goto: puits
- label: "Entrer par les cuisines"
goto: cuisine
atelier:
screen: "L'atelier"
text: >
L'atelier sent l'huile et le laiton chaud. Sur l'établi, un automate à
moitié construit fixe le vide de ses yeux de verre. Un plan jauni est
épinglé au mur, et une clé de bronze pend à un clou.
choices:
- label: "Remonter l'automate"
goto: automate
- label: "Prendre la clé et étudier le plan"
goto: plan
automate:
screen: "L'automate"
text: >
Vous tournez la grande clé dans le dos de l'automate. Ses paupières
cliquettent. « Voyageur, murmure-t-il d'une voix de carillon, je garde
une énigme. Qu'est-ce qui dévore tout, ne rend jamais, et n'a pas de
ventre ? » Son regard de verre vous transperce.
choices:
- label: "Répondre : le Temps"
goto: fin_apprenti
- label: "Répondre : la Tour"
goto: fin_rouages
- label: "Refuser de jouer et fuir vers l'escalier"
goto: palier
plan:
screen: "Le plan"
text: >
La clé de bronze au poing, vous déchiffrez le plan : il décrit non pas
une machine, mais la Tour elle-même, comme une horloge géante dont le
sommet serait le balancier. Une note griffonnée dit : « La dernière
marche n'existe que pour qui porte le bronze. »
choices:
- label: "Monter l'escalier, clé en main"
goto: palier
puits:
screen: "Le puits"
text: >
Vous descendez l'échelle rouillée. Au fond, pas d'eau : un tunnel tapissé
d'engrenages tournant au ralenti, et l'air si froid que votre souffle
gèle. Une lueur dorée pulse au loin, au rythme d'un cœur.
choices:
- label: "Suivre le tunnel vers la lueur"
goto: coeur
- label: "Remonter, transi, vers le vestibule"
goto: vestibule
cuisine:
screen: "Les cuisines"
text: >
Les cuisines sont figées en plein service : une soupe fume encore sur
le feu, intacte depuis des décennies. Sur la table, une lettre cachetée
à votre nom — impossible. Un escalier descend vers une cave noire.
choices:
- label: "Ouvrir la lettre à votre nom"
goto: lettre
- label: "Descendre à la cave"
goto: cave
lettre:
screen: "La lettre"
text: >
« Si tu lis ceci, c'est que tu es déjà venu, et reviendras. L'Horloger,
c'est toi, dans une boucle que tu n'as pas encore choisie de rompre.
Monte. Au sommet, tu comprendras. » L'encre est de votre main. Un frisson
vous parcourt.
choices:
- label: "Gagner l'escalier et monter"
goto: palier
- label: "Refuser ce destin et fouiller la cave"
goto: cave
cave:
screen: "La cave"
text: >
La cave est un cimetière d'horloges éventrées. Des dizaines de
silhouettes de cire, figées, vous ressemblent toutes — d'autres
visiteurs, pris au piège du temps. L'une d'elles cligne lentement des
yeux. Le froid vous engourdit les jambes.
choices:
- label: "Vous arracher à la cave et monter"
goto: palier
- label: "Vous asseoir un instant, juste un instant"
goto: fin_cire
palier:
screen: "Le palier"
text: >
L'escalier débouche sur un palier où oscille un pendule grand comme un
homme, qui tranche l'air d'un sifflement. Derrière lui, deux issues : le
bureau de l'Horloger, et la dernière volée de marches vers le sommet.
choices:
- label: "Entrer dans le bureau"
goto: bureau
- label: "Franchir le pendule vers le sommet"
goto: sommet
- label: "Tendre la main vers le pendule"
goto: fin_fige
bureau:
screen: "Le bureau"
text: >
Un bureau couvert de croquis et de tasses de thé encore tièdes. Le
journal de l'Horloger est ouvert : « J'ai voulu arrêter le temps pour
sauver quelqu'un. J'ai réussi. C'est la pire chose que j'aie faite. »
Une fiole d'huile dorée trône près d'une loupe.
choices:
- label: "Empocher l'huile dorée et monter"
goto: sommet
- label: "Lire le journal jusqu'au bout"
goto: journal
journal:
screen: "Le journal"
text: >
La dernière page : « Pour relancer la Tour, il faut une goutte d'huile
au cœur du mécanisme, ou un sacrifice au sommet. Je n'ai jamais eu le
courage du premier ni la cruauté du second. À toi. » Un plan mène au
cœur, par le puits.
choices:
- label: "Descendre au cœur réparer la Tour"
goto: coeur
- label: "Monter affronter le sommet"
goto: sommet
coeur:
screen: "Le cœur"
text: >
Au centre de la Tour bat un mécanisme colossal, grippé par une seule
dent brisée. Si vous aviez de l'huile dorée, une goutte suffirait à tout
relancer — et à libérer les figures de cire. Sinon, il faudrait y glisser
la main, et la perdre, pour décoincer la dent.
choices:
- label: "Verser une goutte d'huile dorée"
goto: fin_huile
- label: "Glisser la main dans les rouages"
goto: fin_main
- label: "Reculer, vous n'êtes pas prêt"
goto: palier
sommet:
screen: "Le sommet"
text: >
Le sommet s'ouvre sur le ciel et l'envers d'un cadran géant. Les aiguilles
sont bloquées à minuit moins le quart. Le vent hurle. Ici, vous le sentez,
un seul geste peut tout figer pour toujours, ou tout remettre en marche.
choices:
- label: "Pousser les aiguilles vers minuit"
goto: fin_minuit
- label: "Remonter les aiguilles à rebours"
goto: fin_rebours
- label: "Vous asseoir sur le trône de l'Horloger"
goto: fin_apprenti
# ── Fins ──────────────────────────────────────────────────────────────────
fin_apprenti:
screen: "Le nouvel Horloger"
text: >
« Le Temps », dites-vous — et la Tour exhale. Les horloges repartent
toutes ensemble dans un fracas de cloches. L'automate s'incline : « Bon
retour, Maître. » Vous comprenez enfin : vous êtes le nouvel Horloger,
gardien du temps de la cité. La boucle, cette fois, sera douce. Fin.
fin_rouages:
screen: "Mauvaise réponse"
text: >
« La Tour », répondez-vous. L'automate secoue lentement la tête. « Non.
La Tour n'est qu'un corps. » Le sol se dérobe en un cliquetis, et vous
glissez parmi les rouages, qui vous emportent doucement, pour toujours,
au rythme de minuit moins le quart. Fin.
fin_fige:
screen: "Figé"
text: >
Vos doigts frôlent le pendule. Le sifflement s'arrête net — et vous avec.
Vous voilà statue parmi les statues, le bras tendu, conscient et immobile,
à compter les secondes qui ne viennent plus. On vous retrouvera dans
trente ans, peut-être. Fin.
fin_cire:
screen: "Un instant de trop"
text: >
Vous vous asseyez. La chaleur de la fatigue se mue en torpeur, puis en
cire tiède. Votre dernier souffle givre dans l'air. Vous rejoignez la
rangée silencieuse de ceux qui, eux aussi, voulaient juste se reposer un
instant. Fin.
fin_huile:
screen: "La Tour ressuscitée"
text: >
La goutte dorée fond sur la dent brisée. Dans un soupir titanesque, le
mécanisme reprend. Au-dessus de vous, les figures de cire s'éveillent,
hagardes, libres. Vous remontez à l'air libre sous un vrai lever de
soleil — le premier depuis trente ans. Vous avez gagné. Fin.
fin_main:
screen: "Le prix du temps"
text: >
Vous glissez la main dans les rouages. Une douleur blanche, un craquement
— la dent cède, la Tour repart. Vous remontez, une manche vide pendant à
votre côté, mais les cloches sonnent enfin l'heure juste, et les prisonniers
du temps marchent à nouveau. Le prix était lourd. Il en valait la peine. Fin.
fin_minuit:
screen: "Minuit pour toujours"
text: >
Vous poussez les aiguilles sur minuit. Le silence tombe comme une lame.
Plus rien ne bouge, nulle part — ni la pluie, ni votre cœur, ni le monde
au-dehors. Vous avez offert l'éternité à la cité endormie. Personne ne
vous remerciera : il n'y a plus de personne. Fin.
fin_rebours:
screen: "À rebours"
text: >
Vous remontez les aiguilles à l'envers. La Tour gémit, le temps reflue :
la pluie remonte au ciel, votre manteau redevient sec, la grande porte se
referme. Vous reculez jusqu'au seuil, trente ans plus tôt, libre — mais
sachant déjà, cette fois, ce qui vous attend là-haut. Fin.
+233
View File
@@ -0,0 +1,233 @@
# Livre dont vous êtes le héros — Le Dernier Train de Nuit
# Navigation D-pad (curseur ">" + clic). passages {screen, text,
# choices:[{label, goto}]}. Passage sans choices = fin.
title: "Le Dernier Train de Nuit"
voice: Thomas
start: quai
passages:
quai:
screen: "Le quai"
text: >
Vingt-trois heures cinquante-huit. Un brouillard épais avale le quai
désert. Le train de nuit pour Sombreville crache sa vapeur, deux minutes
avant le départ. Le contrôleur, visage dans l'ombre, vous tend la main
pour votre billet. Derrière une vitre, une femme pâle vous fixe sans
ciller.
choices:
- label: "Monter et chercher votre compartiment"
goto: compartiment
- label: "Demander au contrôleur qui est cette femme"
goto: controleur
controleur:
screen: "Le contrôleur"
text: >
« Quelle femme ? » répond le contrôleur sans lever les yeux. La vitre est
vide, à présent. « Montez, le train n'attend personne. Surtout pas cette
nuit. » Il poinçonne votre billet d'un geste sec et vous pousse presque à
l'intérieur. Les portes claquent. Le quai s'efface dans le brouillard.
choices:
- label: "Gagner votre compartiment"
goto: compartiment
compartiment:
screen: "Le compartiment"
text: >
Votre compartiment sent le velours humide et le tabac froid. Un vieil
homme y somnole, un journal sur les genoux dont la une date d'il y a
quarante ans. Sur la banquette, un billet abandonné porte un seul mot,
tracé à la hâte : « DESCENDS ».
choices:
- label: "Réveiller le vieil homme"
goto: vieil_homme
- label: "Sortir explorer le couloir"
goto: couloir
vieil_homme:
screen: "Le dormeur"
text: >
Vous secouez doucement son épaule. Il ouvre des yeux laiteux. « Vous êtes
monté ? murmure-t-il. Grave erreur. Ce train ne va pas à Sombreville. Il
n'arrive nulle part. Chaque nuit, il en prend un de plus. » Sa main froide
agrippe votre poignet. « Le wagon-restaurant. La réponse est là. Ou la
voiture de queue, si tu es fou. »
choices:
- label: "Filer vers le wagon-restaurant"
goto: restaurant
- label: "Tenter la voiture de queue"
goto: queue
- label: "Vous dégager et explorer le couloir"
goto: couloir
couloir:
screen: "Le couloir"
text: >
Le couloir tangue, éclairé d'ampoules vacillantes. Chaque compartiment est
vide, banquettes encore tièdes, bagages ouverts, comme si les voyageurs
s'étaient volatilisés en pleine phrase. Au bout, une porte vers le
wagon-restaurant ; à l'avant, l'accès à la locomotive.
choices:
- label: "Entrer au wagon-restaurant"
goto: restaurant
- label: "Remonter vers la locomotive"
goto: locomotive
restaurant:
screen: "Le wagon-restaurant"
text: >
Des tables dressées, des verres pleins, personne. Au piano du fond, la
femme pâle de la vitre joue une berceuse sans toucher les touches. « Vous
avez vu mon billet ? dit-elle sans se retourner. Je cherche à descendre
depuis 1953. Lui ne laisse personne descendre… sauf si on lui donne autre
chose à emporter. »
choices:
- label: "Lui demander qui est « lui »"
goto: revenante
- label: "Reculer vers la locomotive"
goto: locomotive
- label: "Boire le verre posé devant vous"
goto: fin_verre
revenante:
screen: "La revenante"
text: >
« Le Contrôleur, souffle-t-elle. Ce n'est pas un homme. C'est le train qui
a pris un visage. Il garde un passager par nuit pour avoir de la compagnie.
Tire le signal d'alarme rouge dans la locomotive, et il devra s'arrêter —
mais il faudra quelqu'un pour rester à sa place. » Elle vous tend une vieille
clé de laiton.
choices:
- label: "Prendre la clé et courir à la locomotive"
goto: locomotive
- label: "Refuser : il y a sûrement une autre issue, par la queue"
goto: queue
locomotive:
screen: "La locomotive"
text: >
La cabine est brûlante, le foyer rugit, mais aucun mécanicien. Le levier
de frein est cadenassé. Au-dessus, le signal d'alarme rouge. Une trappe au
sol descend vers les essieux. Dans le rétroviseur, le Contrôleur avance
dans le couloir, sans hâte, en souriant.
choices:
- label: "Ouvrir le cadenas (si vous avez la clé)"
goto: frein
- label: "Tirer le signal d'alarme rouge"
goto: alarme
- label: "Descendre par la trappe vers les essieux"
goto: essieux
frein:
screen: "Le frein"
text: >
La clé de laiton tourne dans le cadenas. Vous abattez le levier de frein
de tout votre poids. Le train hurle, les roues jettent des gerbes
d'étincelles. Le Contrôleur, dans votre dos, perd son sourire pour la
première fois. « Pas. Cette. Nuit. », gronde-t-il, et sa main se referme
sur votre épaule.
choices:
- label: "Le pousser dans le foyer rugissant"
goto: fin_foyer
- label: "Lui offrir le billet « DESCENDS » comme un autre passager"
goto: fin_echange
alarme:
screen: "Le signal"
text: >
Vous tirez le signal. Une sonnerie déchire la nuit, le train ralentit dans
un long gémissement. Mais une voix résonne partout à la fois : « Le signal
exige un remplaçant. Quelqu'un doit conduire à ma place, pour toujours. »
La femme pâle apparaît près de vous, suppliante. Le vieil homme, aussi.
choices:
- label: "Vous offrir comme nouveau conducteur"
goto: fin_conducteur
- label: "Désigner le vieil homme, déjà à moitié parti"
goto: fin_vieux
- label: "Sauter du train en marche pendant qu'il ralentit"
goto: essieux
essieux:
screen: "Sous le train"
text: >
Le vacarme des essieux est assourdissant, le ballast file à un mètre de
votre visage. Le train ralentit — c'est maintenant ou jamais. Au loin, une
lueur : une gare, ou l'aube. Sauter, c'est se briser, peut-être. Rester,
c'est rejoindre les disparus.
choices:
- label: "Sauter dans le brouillard"
goto: fin_saut
- label: "Se raviser et remonter affronter le Contrôleur"
goto: locomotive
queue:
screen: "La voiture de queue"
text: >
Vous traversez wagon après wagon vers l'arrière. Le dernier n'a pas de
mur du fond : juste une plateforme ouverte sur le néant, et les rails qui
s'effacent dans le brouillard derrière vous. Accrochée au garde-corps, une
lanterne verte — le feu de fin de convoi — palpite faiblement.
choices:
- label: "Décrocher et brandir la lanterne verte"
goto: fin_lanterne
- label: "Revenir vers le restaurant"
goto: restaurant
# ── Fins ──────────────────────────────────────────────────────────────────
fin_verre:
screen: "Le verre de trop"
text: >
Le vin a un goût de poussière et d'années. À la dernière gorgée, vos
contours s'estompent. La femme pâle a maintenant de la compagnie au piano,
et vous jouez à quatre mains une berceuse que personne, dehors, n'entendra
jamais. Fin.
fin_foyer:
screen: "Dans le foyer"
text: >
Vous poussez le Contrôleur vers le foyer. Il s'y dissout en une gerbe
d'escarbilles et un rire qui s'éteint. Le train, privé de maître, déraille
en douceur dans un champ de blé à l'aube. Les portes s'ouvrent ; les
voyageurs disparus titubent dehors, vivants. Vous les avez tous sauvés. Fin.
fin_echange:
screen: "L'échange"
text: >
Vous lui tendez le billet « DESCENDS ». Il l'examine, perplexe — un ordre,
pas une supplique. « Habile », concède-t-il. Il vous laisse descendre à la
prochaine gare fantôme, seul rescapé de la nuit, le billet repris. Vous
vivrez. Mais vous éviterez désormais les trains après minuit. Fin.
fin_conducteur:
screen: "Le nouveau Contrôleur"
text: >
« Je reste », dites-vous. Le train exhale de soulagement. La casquette se
pose sur votre tête, lourde de toutes les nuits à venir. Les autres
descendent enfin, libres, sans un regard en arrière. Vous poinçonnez votre
premier billet d'une main qui n'est déjà plus tout à fait la vôtre. Fin.
fin_vieux:
screen: "Le sacrifice du dormeur"
text: >
Vous désignez le vieil homme. Il sourit, presque soulagé. « J'attendais
qu'on me le demande. » Il enfile la casquette et s'efface dans la cabine.
Le train s'arrête ; vous descendez sur un vrai quai, au petit matin. Le
poids de ce choix, lui, ne descendra jamais. Fin.
fin_saut:
screen: "Le saut"
text: >
Vous sautez. Le monde tournoie, le ballast vous mord, puis l'herbe humide
d'un talus vous reçoit. Le train de nuit file sans vous, ses fenêtres
pleines de visages tournés vers vous. Au matin, on vous retrouve, meurtri,
incapable d'expliquer d'où vous venez. Vivant. Libre. Fin.
fin_lanterne:
screen: "Le feu de queue"
text: >
Vous brandissez la lanterne verte — le signal qui dit « la voie est
libre ». Le train comprend qu'il est enfin arrivé quelque part. Doucement,
il s'efface, wagon après wagon, emportant le Contrôleur et libérant les
âmes. Vous restez seul sur une plateforme posée dans l'herbe, au lever du
jour. Vous avez clos le dernier voyage. Fin.