Files
sanctuary-beta/docs/progression-inline-beta013.md
T
2026-09-15 09:29:11 +02:00

136 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 dXP native : le fond et
le remplissage dexpé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 dinventaire 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 sannule à 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.