blog.vfg.lol

Le village de Jah était vert, et une partie du jeu ne l'était pas

Le 27 septembre 2026 au soir, Jah Messenger affichait une suite de tests rassurante. Le lint passait. 519 tests unitaires et d'intégration passaient. 108 parcours de bout en bout et le test de fluidité passaient. Les fiches du mini-jeu, de J1 à J6, étaient cochées. Le polish de l'interface aussi.

Un audit du même jour, déposé dans les plans du dépôt, dit autre chose : une quinzaine de ces fiches étaient creuses ou cassées. Aucun test ne passait par elles. La barre était verte parce qu'elle ne regardait pas l'endroit qui comptait.

Deux bugs déjà en service

La pré-version alors en ligne, 4.0.0-alpha.6, avait deux défauts visibles, corrigés dans la pull request de l'audit (#48), avec des tests :

  • après « Quitter », la fenêtre de connexion restait invisible : il fallait recharger la page ;
  • la carte de pêche plantait, au lieu de montrer ce qui avait été repêché.

Autour, des gestes du monde qui ne faisaient rien, ou mal :

  • le Tableau des quêtes, la fontaine et les boîtes aux lettres ne s'ouvraient pas quand on arrivait dessus ;
  • se lever d'une borne ne fermait pas la partie ;
  • une porte refusée laissait un écran noir ;
  • des messages envoyés très vite arrivaient dans le désordre.

Rien de tout cela n'avait été exploité comme une faille. C'était le jeu qui ne tenait pas ce que ses propres cases affirmaient. Les notes de version du 27 septembre le racontent sans jargon : la connexion revient, la pêche montre le souvenir, les objets s'ouvrent, les messages gardent leur ordre.

Réparer sans inventer une mécanique

Le plan de réparation, écrit le jour même, est explicite : il n'ajoute aucune règle de jeu. Le mini-jeu est déjà dessiné. Il reste à le tenir. Huit lots, R0 à R7, fusionnés avec la fin de la réparation dans la #49.

L'ordre n'est pas un détail. Quatre fichiers du monde étaient au plafond de taille autorisé par le lint du projet (600 lignes). Aucune réparation n'y tenait. Le premier geste a donc été de découper, sans changer le comportement, et de relancer la suite à chaque découpe. À l'arrivée : l'affichage du monde (444 lignes), le moteur (447), le module du monde (446) et la feuille de style (462).

Ensuite, en parallèle quand les fichiers le permettaient :

  • le serveur reprend la charte et la vie privée (rien sur quelqu'un qu'on ne voit pas) ;
  • les parties s'arrêtent à l'heure, même si plus personne ne bouge, et la mémoire des parties finies est purgée ;
  • l'interface se touche du premier coup, le joystick va où l'on pousse, le clavier retrouve sa place quand on ferme une fenêtre ;
  • vingt-et-une fiches creuses sont finies : suivre quelqu'un, le cache-cache, les trouvailles du dimanche, les ailes, les sons, le Crieur qu'on peut toucher, le décor de la Scène ;
  • quand rien ne bouge, le monde se met au ralenti, autour de quatre images par seconde, pour que le téléphone chauffe moins ;
  • les preuves qui manquaient ferment le lot : démonstration, parcours au vrai toucher, confort réduit.

Les notes de 4.0.0-alpha.7, datées du 27 septembre et en ligne le 28, résument le résultat pour un habitant : on peut suivre, jouer à cache-cache pour de vrai, ramasser les trouvailles à deux, et le village se repose quand il n'y a rien à animer.

La règle qui reste

Le mode d'emploi des tâches a gagné une section, ce jour-là. Une case ne se coche qu'avec un test nommé, vu rouge avant le correctif, puis vert après. Un test qui passe déjà sans la tâche ne prouve pas la tâche.

C'est la leçon utile de cette journée, au-delà de Jah : une suite verte mesure ce qu'on lui a appris à regarder. Le 26 septembre, une revue de tout le code avait déjà trouvé une faille d'administration, corrigée avant la mise en ligne, alors que Jah n'avait encore aucun habitant. Le 27, la même discipline appliquée au jeu a trouvé l'inverse d'une faille : des promesses cochées, que personne n'avait encore jouées.

Le 28 septembre, ces réparations sont dans 4.0.0-alpha.9. Les fiches J et R n'ont plus de case ouverte. L'audit multi-agent du lendemain a cherché ailleurs : vie privée du bal, sockets, client, veille de la production. Ça, c'est la journée des lieux.

source markdown