Files
sanctuary-beta/docs/expeditions-beta001.md
T
2026-09-15 09:29:11 +02:00

156 lines
8.7 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.001 — les quatre anciennes expéditions
Ticket local **EXP-01**, branche `codex/ancient-expeditions-beta001`. Ce contrat
décrit la création des quatre anciennes expéditions. La préparation de versionnement BETA-01 est conservée
dans cette première bêta, encore non publiée.
## Les régions
Répartition confirmée par le créateur :
| Direction | Nom | Climat | Relief |
| --- | --- | --- | --- |
| Nord | La Veille de Noor / Noors Vigil | glacial | peaks |
| Est | Les Braises de Makena / Makenas Embers | tropical | volcano |
| Sud | La Faille de Kai et Efe / Kai and Efes Rift | arid | canyon |
| Ouest | Les Eaux dAri / Aris Waters | humid | ocean |
Ces régions sont les traces dexpéditions des anciens personnages, ouvertes
avant larrivée des joueurs actuels. Le relief de Sanctuary reste celui de
lalpha.30.7 ; les quatre régions utilisent les générateurs dexpansion existants.
Leur diamètre nominal est **512 blocs chacune**, confirmé par le créateur.
## Contrat de création et de sauvegarde
- Réserver les quatre régions ensemble lors de la création dun **nouveau
monde Sanctuary bêta**, avant de publier les régions au générateur.
- Enregistrer leur identité, graine dérivée, direction, climat, relief, taille
et position. Les îles sont ouvertes dès le départ ; leurs chunks se génèrent
à lexploration, comme ceux de l’île initiale. Elles ne demandent pas de coût
ni de déblocage par les joueurs.
- Distinguer ce contrat dans les paramètres du nouveau monde. Labsence du
paramètre `ancient_expeditions` conserve le contrat alpha.24/30.7 ; aucune ancienne sauvegarde ne
reçoit automatiquement les quatre îles.
- Utiliser un journal bêta distinct, versionné, vérifié et atomique. Aucun
journal existant nest converti : `data/sanctuary-world-beta001/expansions.json`,
schéma `3`, disposition `expedition_layout=1`. En cas de journal incomplet ou invalide,
arrêter avec une erreur au lieu de recréer les régions.
- Conserver les identifiants des codecs et du terrain existants. Le nouveau
paramètre doit survivre à Personnaliser, à l’écriture du monde et au rechargement.
- Une sauvegarde bêta nest pas rétrocompatible avec les binaires alpha :
ne pas la rouvrir avec eux. Les mondes alpha restent sur leur ancien contrat.
## Placement proche
Chercher dabord la position admissible la plus proche sur laxe cardinal,
sans l’écart supplémentaire ni le décalage aléatoire des anciennes commandes.
Conserver les emprises écrites, la marge de décoration et la séparation des
chunks ; les bateaux et autres réservations aériennes restent prioritaires.
Avancer par pas dun chunk si une réservation interdit la première position.
La distance entre centres comprend les rayons des deux îles : ce nest pas
la longueur du vide à traverser entre leurs rivages.
Le même placement proche est disponible pour les nouvelles demandes dexpansion
dans les mondes bêta. Les contrôles doccupation et de reprise du vide certifié
restent obligatoires ; une distance `0` ne donne aucune permission d’écraser
un chunk existant. Les positions et règles des mondes alpha sont conservées.
Le plan utilise les identifiants stables `noor_vigil`, `makena_embers`,
`kai_efe_rift`, `ari_waters`. Leurs noms FR/EN sont affichés dans la liste
opérateur ; les identifiants restent présents pour les commandes. Les structures
vanilla suivent les possibilités naturelles de chaque région : les quatre
ouvertures initiales nimposent pas un bâtiment particulier. Les futures
expansions par commande gardent leur précontrôle de structure existant.
## Périmètre narratif
Le lore fourni associe Noor à laventure, Makena à la cuisine, Kai et Efe à la
construction et Ari aux villageois. Les noms des expéditions prolongent ces rôles.
Steve et ses amis sont des héros trans de cette fiction. Steve sest sacrifié
pour contenir Notch ; Galactium, Alpha, Backrooms et les récits fragmentaires
des personnages nourrissent la suite. Le dénouement et les pouvoirs restent à
définir. Ces éléments ne décrivent pas des mécaniques déjà livrées : aucun boss,
pouvoir, journal à collecter ou déblocage créatif nest ajouté par ce ticket.
## Essai local
Importer `build/Sanctuary-beta.001.mrpack` dans le lanceur, puis créer
un **nouveau monde de type Sanctuary**. Pour une visite rapide, choisir Créatif
et autoriser les commandes. La graine `0`, taille Moyen (724), permet de retrouver
les mesures natives ci-dessous.
`/sanctuary expansion list` affiche les cinq régions et les noms localisés.
Les commandes de visite sont :
```text
/sanctuary expansion visit noor_vigil
/sanctuary expansion visit makena_embers
/sanctuary expansion visit kai_efe_rift
/sanctuary expansion visit ari_waters
```
Le pack cible Minecraft `26.3-pre-2`, Fabric Loader `0.19.5` et Fabric API
`0.160.0+26.3`, avec Java 25. Cet export local navance pas le canal packwiz
publié et ninstalle rien dans une instance personnelle.
## Vérifications
Plans déterministes sur les trois tailles et les graines `0`, `42` et
`-7228211907433324401` ; quatre directions exactes, identités et profils attendus,
emprises distinctes, réservations aériennes respectées et distances mesurées.
La suite pure `ancientExpeditions001Smoke` passe : persistance des cinq régions,
reprise, refus de corruption et dun bootstrap interrompu, ajout dune expansion
ultérieure et ancien journal alpha inchangé octet pour octet. Les neuf plans
utilisent un ciel vide ; un cas supplémentaire impose de vraies réservations
de bateaux de fixture et vérifie leur priorité.
`./gradlew assemblePack -x :sanctuary:check` réussit. Lexport packwiz/Modrinth
est vérifié : versions, index et empreintes, intégrité des deux archives,
JAR embarqué identique au JAR construit et activation des expéditions dans
le preset. Le reçu est dans `build/expeditions001-artifact.json` (ignoré).
`./gradlew check build -PsanctuaryFocusedTests=expeditions` réussit en 4 min 29 s :
tous les contrôles purs du cycle et les **3 GameTests ciblés** passent sur
Moyen 724, graine `0`. Les quatre régions génèrent leurs vrais chunks, leurs
biomes correspondent aux climats attendus, locéan contient un bassin deau,
et chaque visite trouve un point darrivée sûr. Un premier lancement avait
expiré à cause dun callback de test qui se replanifiait sous la même clé ;
le scénario corrigé passe sans modifier le code de jeu.
La seconde exécution, avec `-PsanctuaryExpansionReload=true`, réussit en
1 min 40 s (**3/3**) : mêmes régions et codec, journal inchangé, et quatre
blocs témoins posés lors du premier processus toujours présents après reprise.
Les paramètres des trois tailles et des deux états de structures expérimentales
passent aussi une écriture/lecture native sur disque ; un codec alpha sans
le nouveau paramètre conserve son ancien journal.
Mesures sur Moyen 724, graine `0`, disposition `1` :
| Région | Centre X/Z | Ancienne distance entre centres | Nouvelle distance | Écart estimé de terrain sur laxe |
| --- | --- | --- | --- | --- |
| Noor | 0 / -784 | 933 | 784 | 416 |
| Makena | 784 / 0 | 1 076 | 784 | 360 |
| Kai et Efe | 0 / 784 | 1 013 | 784 | 404 |
| Ari | -784 / 0 | 1 096 | 784 | 348 |
Distances en blocs. Le dernier relevé échantillonne les hauteurs du générateur
tous les quatre blocs sur laxe des centres ; ce nest pas la distance minimale
entre deux rivages ni un tracé de pont. Le placement gagne ici 149 à 312 blocs
entre centres, mais les emprises conservées et la forme réelle des paysages
laissent encore un vide important. Un rapprochement supplémentaire qui ferait
se chevaucher leurs chunks demanderait une évolution du contrat de propriété.
Après ces essais, la version interne a été simplifiée à `beta.001` à la demande
du créateur. `./gradlew build assemblePack -x :sanctuary:check` réussit en 7 s.
Le JAR final est identique au JAR testé, sauf le champ `version` de
`fabric.mod.json`. Les 12 contrôles du nouveau format passent ; le MRpack
final contient uniquement `sanctuary-beta.001.jar` comme JAR Sanctuary.
Les preuves ignorées sont dans `build/expeditions001-check-build-retry.log`,
`build/expeditions001-reload.log`, `build/beta001-clean-naming-assemble.log`,
`build/expeditions001-artifact.json` et
`mods/sanctuary/build/run/gameTest/diagnostics/expeditions001/724-0-{native,reload}.json`.
Ce ciblage ne revendique pas la réussite de toute la suite native générale :
les deux assertions déjà relevées pendant [BETA-01](versioning.md) restent
ouvertes. Les chunks natifs sont vérifiés sur Moyen/graine `0` ; linspection
visuelle client et les essais Windows restent à effectuer.