Files
sanctuary-beta/docs/cycle-factions-beta011.md
T
2026-09-15 09:29:11 +02:00

173 lines
10 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.
# CYCLE-01 · PROG-03 · FACTION-01 · NGP-01 — beta.011
Contrat commun établi avant l'évolution des sauvegardes. Branche :
`codex/factions-new-game-plus`. Minecraft reste **26.3-pre-2**.
> Historique beta.011. Depuis [beta.038](graves-food-beta038.md), la fondation
> coûte 10 niveaux et crée une seule place, sans prestige ; les charges servent
> aux places supplémentaires. Les anciennes fondations restent inchangées.
## Règles de cette livraison
Un cycle est personnel. Le premier porte le numéro 1. Seul un habitant vivant
ayant les **six compétences au maximum** peut confirmer son New Game+.
Les aptitudes ne conditionnent pas ce passage. Une mort ordinaire ne termine
jamais un cycle et ne distribue aucune récompense de prestige.
Valeurs initiales de `config/sanctuary/cycle-factions.json` : chaque passage
accorde **1 prestige et 1 charge personnelle**. Créer une faction coûte
**1 charge**, donne **2 places**, fondateur compris. Chaque membre peut payer
**1 charge pour ajouter 1 place**. Le plafond de cette première version est
100 membres. Le prestige compte les cycles achevés ; ce n'est pas une monnaie.
Les charges inutilisées appartiennent à l'habitant. Les places financées
appartiennent à la faction et restent après un départ ou un New Game+.
Aucun remboursement lors d'une dissolution. Les règles monétaires sont
configurables au redémarrage, mais ne recalculent jamais les anciens événements.
Une personne appartient à une seule faction à la fois. Le propriétaire invite,
révoque les invitations, exclut, transmet la responsabilité et dissout.
Les invitations durent 7 jours réels ; elles ne réservent pas de place.
L'acceptation revalide place, invitation et absence d'autre faction. Les membres
peuvent partir ; le propriétaire doit transmettre ou dissoudre. Son absence
ne transfère pas automatiquement la propriété. Le changement de propriétaire
annule les invitations en cours. La couleur de faction est copiée de celle du fondateur à sa création ;
la couleur personnelle reste indépendante.
Les factions n'accordent encore ni claims ni protection de blocs.
## Matrice du New Game+
| Donnée | Traitement |
| --- | --- |
| Six compétences | Rang zéro : 3 cœurs, 3 nourritures, 3 bulles, gestes individuels, 9 cases |
| XP non dépensée | Remise à zéro par défaut ; option serveur `keepXp` |
| Identité, UUID, pseudo enregistré, bio, couleur | Conservés |
| Aptitudes et preuves de leurs achats | Conservées |
| Achats du cycle terminé | Archivés intégralement, coûts et dates compris |
| Objets, équipement, main secondaire, coffre de l'Ender | Conservés, sans déplacement |
| Rangées d'inventaire redevenues verrouillées | Occupées et visibles en récupération : retrait autorisé, nouveau dépôt interdit |
| Recettes, découvertes, Atlas personnel, statistiques et advancements | Conservés |
| Demeure, faction, rôle, invitations encore valides | Conservés |
| Prestige et charges personnelles | Conservés, puis récompense du cycle ajoutée une seule fois |
| Monde, constructions, coordonnées du joueur | Conservés ; aucune régénération ou téléportation |
| Santé, faim, air courants | Bornés aux nouvelles capacités, sans soin gratuit |
| Argent, coffre-fort, favoris, mémoire Web | Systèmes futurs ; ce ticket ne crée ni ne migre de données fictives |
Exemple : Alice termine son premier cycle, obtient prestige 1 / charge 1 et
fonde une faction de deux places. Bob la rejoint sans payer. Son propre premier
New Game+ lui donne une charge : il l'investit et la faction passe à trois
places. Au deuxième New Game+ d'Alice, son prestige devient 2 ; sa nouvelle
charge reste personnelle et son rôle de propriétaire demeure. Ses 54 cases
pleines ne sont ni effacées ni jetées : les 45 cases désormais verrouillées
restent retirables jusqu'à leur prochain déblocage.
## Contrat de migration et reprise
L'adoption des progressions beta.003010 est additive : schémas 15 vers
**schéma 6**, avec `cycle: 0` (zéro cycle terminé). Aucun achat n'est perdu.
La révision réseau vaut `cycle * 64 + nombre d'achats actifs`, empêchant qu'un
ancien clic d'achat soit accepté après remise à zéro. Les identifiants existants
restent stables. La capacité de configuration `sanctuary:cycle_factions_v1`
exige la mise à jour des deux côtés avant de rejoindre.
Le nouveau fichier `data/sanctuary-cycle-factions.json` est un journal de monde
versionné (schéma 1), lié à la graine, contenant UUID de monde et événements
datés identifiables. Il reconstruit soldes, factions et fins de cycle. Chaque
mutation est validée sur une copie, écrite par remplacement atomique puis
publiée en mémoire. Une erreur ou un fichier modifié extérieurement bloque les
mutations ; aucune remise à zéro silencieuse.
Un New Game+ écrit **d'abord** sa fin de cycle et sa récompense dans ce journal,
puis applique la nouvelle progression au joueur. Au prochain chargement, si
le journal a un cycle d'avance, sa décision est rejouée sur le joueur (avec
sa politique XP enregistrée). Si les numéros concordent, rien n'est réinitialisé.
Un joueur en avance sur le journal, ou en retard de plus dun cycle, est
refusé, ce qui détecte une restauration partielle incompatible. Le délai entre clics utilise une horloge monotone réelle (250 ms), indépendante
des ticks suspendus dans le menu pause solo. Lire une page ne consomme pas
le délai réservé à une mutation. Le solde dXP est envoyé explicitement avec
la progression pour rester exact pendant cette pause. Les tentatives répétées d'un même cycle ne donnent
pas de charge supplémentaire. La sauvegarde vanilla conserve les objets et
la progression dans le même fichier joueur, comme en beta.010. Les acquisitions
dobjets entre deux sauvegardes restent soumises à lautosauvegarde Minecraft :
ce journal ne remplace pas la sauvegarde générale du monde.
Faire une copie complète du monde arrêté avant adoption ; restaurer ensemble
le journal, les fichiers des joueurs et les autres données du monde. Le retour
aux anciens binaires après adoption n'est pas supporté. Ce contrat autorise
l'évolution du code de lecture/écriture ; aucun monde personnel n'est modifié
par les travaux de développement.
## Livraison et vérifications
Les contrôles du contrat pur passent : reprise beta.010, cinq/six compétences,
conservation des aptitudes, deux cycles successifs, double requête, dépenses,
propriétaire absent, invitations concurrentes, expiration exacte à sept jours,
transmission, dissolution, relecture du journal et refus d'une écriture après
corruption ou modification externe.
Les sept scénarios natifs propres à beta.011 passent (8/8 avec l'admission
Fabric), puis la suite progression/carte/Demeure/minage/construction/inventaire/
cycles passe à **45/45**. Ils couvrent notamment :
- Inventaire réellement rempli de 54 piles avant passage ; récupération dans
le menu natif, équipement et coffre de l'Ender conservés.
- Retour à 3/3/3 sans soin offert, XP zéro, nouvel achat possible et ancien
paquet d'achat refusé grâce à la révision de cycle.
- Identité, statistiques, observations Atlas et influence Demeure conservées.
- Décision de fin écrite puis relecture d'un ancien fichier joueur ; après une
seconde sauvegarde, l'XP et les achats du nouveau cycle ne sont plus remis
à zéro. L'option de conservation XP est prise dans la décision enregistrée.
- Mort ordinaire après New Game+ : même progression, prestige et faction.
- Création, invitations par pseudo/UUID, contribution d'un membre, changement
de responsable, conteneurs ouverts et mode spectateur refusés.
Le test de reprise a d'abord détecté un problème de fixture : chaque joueur
simulé possède un nouveau profil d'authentification, que Minecraft rétablit au
chargement. La fixture de reconnexion utilise maintenant le même UUID.
Le parcours client natif `Cycle011ClientChecks` est compilé : ouvert depuis
le menu pause, cycle verrouillé, aperçu/annulation, passage confirmé, création
et journal, à deux échelles GUI. **Il n'a pas été exécuté graphiquement : le
Mac est verrouillé. Aucun rendu beta.011 n'est déclaré vérifié.**
La commande de livraison est :
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew check build assemblePack \
-PsanctuaryFocusedTests=progression,map,demeure,mining,building,inventory,cycle
```
Les logs restent ignorés dans `build/cycle011-delivery-final.log`,
`build/cycle011-smoke.log` et `build/cycle011-client-final-compile.log`.
La commande finale réussit en **3 min 55 s**, avec les 45 tests natifs et
les contrôles purs. Le reçu `build/cycle011-artifact.json` confirme l'intégrité
ZIP, l'identité des JAR compilés et embarqués, les versions beta.011, les
87 libellés FR/EN des cycles, les dépendances exactes et les assets conservés.
Les exports beta.003010 gardent leurs empreintes précédentes.
Artefact local : `build/Sanctuary-beta.011.mrpack` — 2 479 614 octets.
SHA-256 : `dae0d1fbd8f410fd73b2d3053ef0f17539e24639c3d338ce84dbfca6e4f43ec0`.
L'export local ne publie pas le canal packwiz et ne modifie aucune instance Prism.
## Essai en jeu
Installer la même beta.011 côté client et serveur. Dans un monde de test,
`/experience add @s 1000 levels` permet à un opérateur de tester les achats
sans attendre. Acheter les quarante rangs des six compétences dans le Blocodex,
puis ouvrir **Progression → Cycle**. Acheter les aptitudes reste facultatif.
Remplir aussi les dernières rangées avant de confirmer pour vérifier leur
récupération. Un second joueur peut rejoindre la faction via son invitation
sans avoir lui-même fait de New Game+.
Les invitations et les actions de faction se trouvent dans **Monde → Factions**,
l'historique dans **Monde → Journal des cycles et factions**. Les montants
s'éditent dans `config/sanctuary/cycle-factions.json`, serveur arrêté : `reward`,
`creationCost`, `initialCapacity`, `expansionCost`, `maxMembers`, `keepXp`.
Le prestige reste toujours le nombre de cycles terminés. Le journal est borné
à 100 000 événements / 16 Mio ; il refuse d'effacer les anciennes archives
pour faire de la place. Une future rotation nécessitera son propre contrat.
Le journal fournit une ontologie locale (`sanctuary:cycle_completed`, `sanctuary:faction_*`) ; aucune
connexion au site ni distribution de droits opérateur n'est incluse.