136 lines
7.8 KiB
Markdown
136 lines
7.8 KiB
Markdown
# beta.013 — compétences sur une ligne et prix du prestige
|
||
|
||
Ticket sur `codex/progression-inline-costs`, demandé le 13 septembre 2026.
|
||
Contrat préalable à l'implémentation.
|
||
|
||
## Résultat attendu
|
||
|
||
Chaque compétence occupe une ligne : icône, nom, jauge ASCII, valeur/plafond,
|
||
retrait opérateur et achat. Les colonnes s'adaptent à la largeur disponible ;
|
||
les noms trop longs défilent dans leur cellule et restent complets au survol.
|
||
Les aptitudes gardent leur panneau distinct et leur défilement.
|
||
|
||
Les sept achats coûtent par défaut **1, 2, 4, 8, 16, 32, 48 niveaux**.
|
||
L'Inventaire utilise les cinq premiers. Le dernier achat passe ainsi de 64 à 48.
|
||
Le New Game+ exige toujours les six compétences au maximum et donne, par défaut,
|
||
un prestige et une charge personnelle. Une charge fonde une faction de deux places ;
|
||
rejoindre sur invitation ne demande pas de prestige. La page Factions explique
|
||
où gagner les charges et mène à la page Cycle. Les règles de faction restent celles
|
||
de beta.011, configurables côté serveur.
|
||
|
||
Ajouts demandés pendant le ticket : après un prestige, toutes les cases visibles
|
||
de récupération sont grisées, même vides et même dans les deux rangées
|
||
supplémentaires. Les objets restent lisibles et récupérables. Ce repère suit
|
||
l'inventaire personnel, les conteneurs et leur défilement ; aucune règle de
|
||
transfert ne change. La fiche Habitant ajoute au nom le prestige en chiffres
|
||
romains (`Poupoutain I`, `Poupoutain II`), sans changer le pseudo enregistré.
|
||
|
||
La carte conserve son image lors d'un rafraîchissement réseau et les relevés déjà
|
||
reçus lors d'un déplacement. Le cache en mémoire est borné à 16 384 chunks et
|
||
disparaît à la fermeture, au changement de dimension/mode ou au retrait des droits.
|
||
Les sauvegardes Atlas et le protocole de lecture restent identiques.
|
||
Le repère personnel utilise le sprite natif du locator et la couleur de l'habitant.
|
||
Les marqueurs du locator se superposent à la barre d’XP native : le fond et
|
||
le remplissage d’expérience restent visibles derrière les points. Le serveur renseigne la couleur de l'habitant dans son icône native
|
||
de waypoint à la connexion et à la restauration ; aucun changement de portée,
|
||
de furtivité ou de permissions du locator. Cette propriété native est conservée
|
||
avec les données Minecraft du joueur, sans nouveau format Sanctuary.
|
||
|
||
La molette agit selon le survol : hotbar → sélection horizontale ; stockage
|
||
débloqué → rotation des rangées ; offres de villageois → défilement natif.
|
||
Le titre d’inventaire et les cases de récupération gardent le défilement des
|
||
rangées masquées dans les grands conteneurs. Tab/Maj+Tab restent disponibles.
|
||
Les rotations utilisent le protocole beta.012 ; une courte file bornée attend
|
||
les confirmations serveur et s’annule à la fermeture du menu. Aucun objet porté
|
||
par le curseur ni glisser-déposer ne déclenche de rotation.
|
||
|
||
## Migration de configuration
|
||
|
||
La configuration de progression passe au schéma 3. Lors du chargement par le
|
||
serveur, les schémas 1 et 2 sont repris : seule la courbe exactement égale à
|
||
`[1,2,4,8,16,32,64]` devient `[1,2,4,8,16,32,48]`. Une courbe personnalisée
|
||
reste intacte, ainsi que les autres réglages. Le schéma 1 reçoit toujours le
|
||
prix Atlas par défaut de 4, selon le contrat beta.005.
|
||
|
||
La configuration migrée est validée puis enregistrée atomiquement en vérifiant
|
||
que le fichier d'origine n'a pas changé. Un fichier invalide est refusé, jamais
|
||
remplacé par les valeurs par défaut. Le schéma 3 n'est pas réécrit au rechargement ;
|
||
une courbe choisie explicitement dans ce schéma, y compris avec un prix final de 64,
|
||
reste la décision du serveur. Client et serveur utilisent beta.013 ensemble.
|
||
|
||
Les données des habitants ne changent pas de format. Aucun rang, achat, date,
|
||
objet, aptitude, faction, charge ou prestige n'est retiré. Les achats existants
|
||
gardent leurs prix : le retrait opérateur d'un rang payé 64 rembourse 64 ;
|
||
un nouvel achat de ce rang coûte ensuite 48 avec la nouvelle courbe par défaut.
|
||
Aucune modification du terrain ni de la génération. Export local pour essai.
|
||
|
||
## Vérifications
|
||
|
||
Les tests de contrat vérifient la reprise des schémas 1/2, la conservation d'une
|
||
courbe personnalisée, le refus d'un fichier corrompu et l'absence de réécriture
|
||
du schéma 3. Un achat historique à 64 est remboursé à 64, tandis qu'un nouvel
|
||
achat du même rang coûte 48. Les tests de Minage et Construction attendent
|
||
désormais 111 niveaux pour les sept rangs, au lieu de 127.
|
||
|
||
Le parcours graphique natif passe avec Minecraft **26.3-pre-2**, Fabric Loader
|
||
**0.19.5**, Fabric API **0.160.0+26.3** et Java 25 :
|
||
|
||
```sh
|
||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||
-PsanctuaryInlineClientTests=true -PsanctuaryInventoryClientTests=true
|
||
```
|
||
|
||
- Colonnes alignées en français et en anglais, GUI 1 et automatique, ainsi qu'en
|
||
fenêtre de 640 × 480 (GUI logique 320 × 240). Les jauges, valeurs et boutons
|
||
ont les mêmes abscisses pour les six compétences.
|
||
- Bouton + absent sans XP, dernier achat refusé à 47 et accepté à 48 niveaux ;
|
||
retrait opérateur puis remboursement. Parcours explicatif Factions → Cycle.
|
||
- Véritable confirmation New Game+ : prestige I sur la fiche, nom enregistré
|
||
inchangé, objets conservés. Les 45 cases de récupération dessinées sont grisées,
|
||
y compris les cases vides et supplémentaires ; coffres de trois et six rangées
|
||
contrôlés aux deux extrémités de leur défilement.
|
||
- Un relevé hors de la zone de capture passive reste dessiné pendant un glisser,
|
||
son relâchement et 150 ticks de rafraîchissement ; le centre choisi reste fixe.
|
||
Le retrait des droits opérateur vide bien la vue concernée.
|
||
- La carte emploie le sprite natif. Un waypoint reçu par le protocole Minecraft
|
||
apparaît à `yXP − 2`, dans sa couleur, avec fond et remplissage XP présents et
|
||
sans fond de locator supplémentaire. La couleur projetée côté serveur est
|
||
également contrôlée. Ce test utilise un waypoint de laboratoire, pas une
|
||
session multijoueur à trente personnes.
|
||
- Dispatch natif de la molette : sélection de case synchronisée au serveur,
|
||
rotations avant/arrière et plusieurs crans en attente, Tab/Maj+Tab ; vingt
|
||
offres dans un menu de commerce natif défilent sans modifier la hotbar, et
|
||
les gestes sur l'inventaire ne font pas défiler les offres.
|
||
|
||
Journal graphique : `build/progression013-client-delivery.log` ; les 17 captures
|
||
sont conservées dans `build/progression013-evidence/`. Les mondes de laboratoire
|
||
et les classes de test restent dans les dossiers de développement ignorés.
|
||
Les menus de mods communautaires extérieurs ne font pas partie de ce contrôle.
|
||
|
||
La livraison finale réussit :
|
||
|
||
```sh
|
||
./gradlew check build assemblePack :sanctuary:runGameTest \
|
||
-PsanctuaryFocusedTests=progression,map,demeure,mining,building,inventory,cycle,inventoryflow
|
||
```
|
||
|
||
**50/50 tests natifs serveur passent**, avec les contrôles de contrat du projet.
|
||
Journal : `build/progression013-delivery-verified.log` (`BUILD SUCCESSFUL`,
|
||
4 min 10 s). La première passe avait signalé uniquement les deux anciens totaux
|
||
de 127 niveaux dans les tests de Minage et Construction, corrigés pour 111.
|
||
|
||
## Artefact d'essai
|
||
|
||
[Sanctuary-beta.013.mrpack](../build/Sanctuary-beta.013.mrpack), **2 503 734 octets**.
|
||
Export packwiz après le build final ; versions internes `beta.013`, JAR embarqué
|
||
identique au build, Demeure imbriqué identique à son module, absence de classes
|
||
de test, dépendance Fabric API, ressources et clés FR/EN vérifiées.
|
||
Les exports beta.003 à beta.012 gardent leurs empreintes précédentes.
|
||
|
||
- SHA-256 MRpack : `3e4348ea2817d3fb45e432cfbd5feb01e84d29e3938e3b08370c7dc6eca77398`.
|
||
- SHA-256 JAR Sanctuary : `28e8a486053cc83dd4a8375f805deaf8922c2282e6c995e53ba7c4e6599f62ce`.
|
||
- Reçu : `build/progression013-artifact.json`.
|
||
|
||
Cet export local ne publie pas le canal packwiz et ne synchronise pas
|
||
l'installation Prism personnelle.
|