|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Statut : fait (vérification automatisée : build /W4 /WX sans avertissement, ctest à 1007/1007, clang-format, les sept lints, cahier de test et Doxygen verts). Prérequis : LOT-66 (charte visuelle), LOT-76 (ornements tracés).
Exigence ajoutée : EX-IHM-076 (illustrations extraites du corpus). Exigences refondues : EX-GP-040 (états de jeu), EX-IHM-003 (affichage tête haute), EX-IHM-004 (écran de pause). Exigences retirées : EX-GP-030, EX-GP-031, EX-GP-032, EX-LVL-010 → EX-LVL-015, EX-IHM-005, EX-NFR-021.
Le jeu décrivait un autre jeu. fr.lang proposait « Choisir un niveau », l'écran de pause « Recommencer le niveau », et un avertissement de sortie parlait de « la progression du tableau en cours ». Un bac à sable ouvert n'a ni niveau à choisir, ni tableau à recommencer.
Ce lot retire la notion de niveau discret — des écrans, du code, du vocabulaire et des exigences — et remplace le décor du menu principal par la carte du monde de Tanares.
| Avant | Après | |
|---|---|---|
| Menu principal | Continuer · Nouvelle partie · Choisir un niveau · Mode Édition · Options · Crédits · Quitter, sur un paysage de plateforme tracé en pavés | Nouvelle partie · Mode Édition · Options · Crédits · Quitter, sur la carte du monde |
| Titre du menu | un bandeau « Just Another D&D Game » | aucun : le fond dit déjà où l'on est |
| Écran de pause | Reprendre · Recommencer le niveau · Options · Quitter | Reprendre · Options · Quitter |
| Fin de niveau | un écran de bilan (temps, morts, sauts) | il n'y en a plus |
Deux entrées de menu disparaissent parce qu'elles ne menaient plus nulle part. « Continuer » reposait sur une progression au tableau, « Choisir un niveau » sur une séquence : les deux sont retirées. Les rétablir en les grisant aurait coûté plus de confiance qu'elles n'apportaient d'information (EX-IHM-072). « Continuer » revient avec la sauvegarde du LOT-17, quand il y aura quelque chose à reprendre ; les entrées RPG de la pause — fiche, inventaire, journal, carte — avec les écrans du LOT-68, quand elles auront où mener.
Le LOT-76 venait de conclure que l'habillage se trace et ne se livre pas en image (EX-IHM-075). Ce lot livre une image. Ce n'est pas un revirement : c'est la même frontière, prise de l'autre côté, et EX-IHM-076 l'écrit.
Un ornement se trace parce qu'il doit se redimensionner et suivre les jetons de la palette. Une illustration ne le peut pas : une carte du monde peinte ne se trace pas, elle se prend ou elle n'existe pas. Les mêmes garde-fous s'appliquent — région déclarée, rendu de région (EX-CNT-022), manifeste recoupé en intégration continue avec les fichiers et avec le code qui les nomme, repli si l'image est absente (EX-NFR-040).
Trois décisions valaient d'être tranchées plutôt que découvertes :
Et le voile de lisibilité change de nature : le décor tracé se voilait par bandes superposées, ce qui est correct sur des aplats. Sur une carte peinte, chaque palier se lit comme une bande claire en travers du relief — le procédé se voit, et c'est tout ce qu'on voit. Un dégradé continu le remplace, et seulement à gauche, là où vivent les entrées : assombrir l'image entière rendrait le texte lisible en effaçant ce qu'on vient de mettre derrière.
Deux écrans (LevelSelectScreen, LevelCompleteScreen, leurs .ui et leurs deux maquettes), deux modèles (hmi::Progression, core::LevelSequence) et un bilan de partie (hmi::LevelRunStats, qui comptait le temps, les morts et les sauts). Environ 1 300 lignes.
Les retirer était le seul choix cohérent : ce sont les mises en œuvre des exigences retirées. Les garder aurait laissé du code que plus aucune exigence ne justifie — et personne, dans six mois, n'aurait su dire s'il attendait un consommateur ou s'il n'en avait plus.
La machine à états y perd deux écrans et six événements ; le viewport de jeu perd sa liste de niveaux au profit d'une carte unique.
La feuille de route demandait de retirer seize exigences. Trois d'entre elles avaient un objet au-delà du niveau discret, et les retirer aurait laissé leur mise en œuvre orpheline — le défaut symétrique de celui qu'on corrigeait :
| Exigence | Sort | Pourquoi |
|---|---|---|
| EX-GP-040 | refondue | Le jeu a toujours des états. Elle en perd deux, NiveauTermine et LevelSelect. |
| EX-IHM-003 | refondue | L'ATH reste dû ; c'est la liste de son contenu qui était celle d'un platformer. Elle garde son critère — ce dont le joueur a besoin pour décider — et cesse d'énumérer. |
| EX-IHM-004 | refondue | L'écran de pause reste ; seule la moitié « écran de fin de niveau » tombe. |
Les douze autres sont retirées, pas supprimées : leurs ancres restent, dans une section « Exigences retirées » de leur spécification, avec le texte d'origine et le motif du retrait. C'est le patron du LOT-H-69 pour les décors-sprites, et il a une raison mécanique autant que morale — une vingtaine de lots hérités s'y réfèrent, et supprimer une ancre casserait leurs renvois sans rien apprendre à personne.
Les deux catalogues passent de « niveau »/« tableau » à « carte » — y compris côté éditeur, où la famille de clés level.* devient map.*. L'éditeur n'édite pas des niveaux : il édite les cartes du monde, et il n'y a pas deux vocabulaires.
Les deux catalogues restent synchrones, 376 clés de chaque côté — un test les compare dans les deux sens, une clé oubliée d'un seul côté ne se verrait sinon qu'en changeant de langue.
L'événement sonore suit : LevelCompleted devient ExitReached, victoire_tableau devient sortie_atteinte, et SequenceCompleted disparaît avec son bruitage. Un identifiant qui nomme une mécanique retirée est un piège pour le prochain lecteur.
Il ne rend pas le jeu jouable. « Nouvelle partie » ouvre demo-deplacement.json, et ce fichier n'existe pas : le LOT-01 a purgé les niveaux du jeu de plateforme et aucun lot n'en a livré depuis. Le constat est antérieur à ce lot — la « Nouvelle partie » d'avant chargeait une séquence tout aussi absente — mais il devient visible, et il vaut mieux l'écrire que le laisser découvrir : la carte de départ arrivera avec le contenu du LOT-27, sa destination avec le graphe du LOT-09.
Il ne remplace pas l'ATH. hmi::GameHud affiche encore des budgets de sauts et de dashs. C'est le contenu que EX-IHM-003 n'énumère plus, et son remplacement appartient à l'IHM de combat du LOT-24.
Il ne touche pas au format de carte. La tuile de sortie reste dans le format et dans les cartes ; seul son effet change — elle ne termine plus rien, elle ramène au menu, en attendant la transition du LOT-09.