156 lines
8.7 KiB
Markdown
156 lines
8.7 KiB
Markdown
# 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 / Noor’s Vigil | glacial | peaks |
|
||
| Est | Les Braises de Makena / Makena’s Embers | tropical | volcano |
|
||
| Sud | La Faille de Kai et Efe / Kai and Efe’s Rift | arid | canyon |
|
||
| Ouest | Les Eaux d’Ari / Ari’s Waters | humid | ocean |
|
||
|
||
Ces régions sont les traces d’expéditions des anciens personnages, ouvertes
|
||
avant l’arrivée des joueurs actuels. Le relief de Sanctuary reste celui de
|
||
l’alpha.30.7 ; les quatre régions utilisent les générateurs d’expansion 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 d’un **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
|
||
à l’exploration, 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. L’absence 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 n’est 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 n’est pas rétrocompatible avec les binaires alpha :
|
||
ne pas la rouvrir avec eux. Les mondes alpha restent sur leur ancien contrat.
|
||
|
||
## Placement proche
|
||
|
||
Chercher d’abord la position admissible la plus proche sur l’axe 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 d’un chunk si une réservation interdit la première position.
|
||
La distance entre centres comprend les rayons des deux îles : ce n’est pas
|
||
la longueur du vide à traverser entre leurs rivages.
|
||
|
||
Le même placement proche est disponible pour les nouvelles demandes d’expansion
|
||
dans les mondes bêta. Les contrôles d’occupation 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 n’imposent 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 à l’aventure, 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 s’est 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 n’est 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 n’avance pas le canal packwiz
|
||
publié et n’installe 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 d’un bootstrap interrompu, ajout d’une 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. L’export 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, l’océan contient un bassin d’eau,
|
||
et chaque visite trouve un point d’arrivée sûr. Un premier lancement avait
|
||
expiré à cause d’un 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 l’axe |
|
||
| --- | --- | --- | --- | --- |
|
||
| 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 l’axe des centres ; ce n’est 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` ; l’inspection
|
||
visuelle client et les essais Windows restent à effectuer.
|