feat(worldgen): unify Sanctuary and native size options for alpha.13
Build Sanctuary / build (push) Canceled after 0s

This commit is contained in:
koka
2026-09-09 11:13:24 +02:00
parent 818c6753f9
commit 78b63be8e1
52 changed files with 4204 additions and 240 deletions
+179
View File
@@ -0,0 +1,179 @@
# Alpha.13 — un monde Sanctuary unifié
**Implémentée et vérifiée localement.** Cette version réunit l’île de départ complète et les outils
dexpansion du laboratoire. La distribution est en préparation ;
[Validation](testing.md) décrit les preuves disponibles et
[Distribution](packwiz.md) indique la version effectivement publiée.
La cible reste **Minecraft 26.3-pre-2 / Fabric**. Ce guide concerne un nouveau
monde alpha.13. Les anciens mondes conservent leur génération.
## Créer son monde
1. Créer un **nouveau monde**, puis sélectionner le type **Sanctuary**.
2. Ouvrir le bouton natif **Personnaliser**.
3. Choisir la taille, puis cliquer sur **Terminé** avant de créer le monde.
| Taille | Diamètre nominal de l’île initiale |
| --- | --- |
| Petit | 512 blocs |
| Moyen, choix par défaut | 724 blocs |
| Grand | 1 024 blocs |
**Annuler** revient sans appliquer le changement. La hauteur reste de 384 blocs,
de `Y=0` à `Y=383`. Le diamètre est une référence pour la forme : trous, surplombs,
fragments et contour irrégulier dépendent de la graine. Il ne mesure pas une
surface entièrement constructible et ne fixe pas un nombre de joueurs.
La liste des types de monde contient un seul choix Sanctuary ; les types
Minecraft habituels restent disponibles. Petit, Moyen et Grand sont des
réglages de ce même choix. Lancien Grand alpha.11, de 724 blocs, correspond
au diamètre nominal du nouveau Moyen.
Sur un serveur neuf, le preset suivant crée un monde de taille Moyen :
```properties
level-type=sanctuary:sanctuary
level-name=sanctuary-dev
level-seed=42
```
Choisir un dossier de monde neuf pour un essai. Le bouton **Personnaliser**
configure la création en solo ; il ne modifie pas les fichiers dun serveur
existant. Installer le mod ou changer `level-type` ne transforme pas une partie.
## L’île de départ
Le nouveau monde reprend le générateur complet de l’île initiale : forêts de
chênes et de bouleaux, clairières, affleurements, strates rocheuses et corniches
intérieures. Son relief flottant conserve les trous et les surplombs, sans
ajouter de noyau cylindrique pour garantir un terrain à lorigine.
Les plans hydrologiques de Population sont repris : étangs et lacs, recherche
de rivière, bassins étagés et leurs débordements, sources et cascades, poche et
coulées de lave. Le placement dépend des supports réellement présents dans la
roche. Un plan qui ne trouve pas de site admissible reste absent ; aucune
rivière, terrasse ou ressource nest garantie sur chaque graine. Les eaux en
terrasses permettent la nage verticale sans ajouter de culture de riz.
Les poches souterraines natives du laboratoire rejoignent cette île : cavités
luxuriantes, à spéléothèmes ou soufrées, avec leurs décorations Minecraft.
Il sagit toujours des profondeurs de lOverworld, pas de la dimension des
cavernes prévue dans la vision. L’île garde sa palette tempérée en surface ;
Dappled Forest reste disponible dans les expansions au climat automnal.
Lintégration protège les volumes déclarés par les plans deau et de lave
contre les écritures de décoration suivantes. Cette protection concerne les
plans de génération, sans mettre les blocs à labri des actions des joueurs.
Les preuves moteur et leurs limites sont suivies dans [Validation](testing.md).
## Ajouter une île
Les commandes demandent les commandes autorisées en solo ou la permission
opérateur sur le serveur. Elles reprennent les outils alpha.12.1 dans le nouveau
monde Sanctuary. L’économie, les recherches et les contributions collectives
ne conditionnent pas encore leur utilisation.
```text
/sanctuary expansion quick north autumn 128 peaks
/sanctuary expansion list
/sanctuary expansion visit island_1
/sanctuary expansion create oasis island_1 east arid 64 natural 2048
```
`quick` ouvre une île depuis Sanctuary et lui attribue un identifiant `island_N`.
Lexemple de visite suppose quil sagit de la première réservation ; `list`
indique lidentifiant et l’état réels. La visite attend que l’île soit prête.
`create` choisit un nom et un parent déjà prêt pour prolonger une branche.
La création ne téléporte personne implicitement.
Les nouveaux continents choisissent leur propre direction, climat, diamètre
**64/128/256/512** et relief **natural/peaks/canyon/volcano**. La direction ne
contraint pas le climat. Lautocomplétion fournit les huit directions et les
douze profils : `temperate`, `boreal`, `glacial`, `cold_humid`, `humid`, `tropical`,
`warm`, `arid`, `dry`, `cold_dry`, `autumn`, `cherry`.
Le dernier nombre facultatif est une **distance minimale entre les centres**
du parent et de lenfant, entre 0 et 100 000 blocs. Une valeur de 0 ou son
omission laisse le placement automatique. Les marges et lalignement sur les
chunks peuvent éloigner le centre retenu.
Si le premier site est occupé, la recherche continue plus loin dans la même
direction : au plus 32 positions et 30 secondes de lecture au total. Même du
vide déjà généré compte comme occupé. Une erreur disque arrête la demande ;
elle nautorise pas à remplacer les chunks concernés.
```text
/sanctuary expansion preview glacier sanctuary northeast glacial 256 canyon 2048
/sanctuary expansion resume island_1
```
`preview` calcule une proposition géométrique sans activer l’île et sans vérifier
loccupation ou les fondations. `resume` reprend une réservation interrompue,
avec sa graine et ses paramètres conservés. Le système ne fournit aucune commande
de régénération des régions déjà créées.
Les îles ajoutées gardent la génération dexpansion alpha.12 : leurs climats,
reliefs, décorations et structures compatibles. Elles ne reçoivent pas
systématiquement la grande rivière ou les terrasses de l’île initiale. Villages,
temples, cabanes de marais et camps abandonnés dépendent du biome, du diamètre
et des fondations ; aucune présence nest garantie. Les règles de progression
futures restent décrites dans [Expansion](expansion.md).
## Paramètres et sauvegardes
Le preset public `sanctuary:sanctuary` utilise le nouveau codec de générateur
`sanctuary:island_v13`. Sa source de biomes est également enregistrée sous
`sanctuary:island_v13`. Le générateur sérialise `initial_diameter`, limité à
512, 724 ou 1 024 ; une valeur absente prend 724. Ce champ appartient à la
sauvegarde créée, et ne suit pas les changements ultérieurs de défaut du pack.
Pour l’île initiale, les réglages internes `sanctuary:unified_5`,
`sanctuary:unified_10` et `sanctuary:unified_20` correspondent respectivement
aux diamètres 512, 724 et 1 024. Les suffixes sont des références de calcul,
pas des capacités affichées. Ils reprennent la densité Population et son
hydrologie avec le générateur et le `RandomState` propres à lorigine.
La source combine la palette Population de départ et le sélecteur de cavités
natives du laboratoire, avec les mêmes conditions de sélection de ces poches.
Les îles enfants conservent le sélecteur climatique du laboratoire. Les 34
biomes natifs de cette palette et les dix biomes Population sont déclarés
avant la première expansion ; TerraMix nest pas une dépendance téléchargée.
Le nouveau journal est enregistré dans le dossier du monde :
```text
data/sanctuary-world-v13/expansions.json
```
Son schéma reste **1**, avec une racine de **génération 13** et des extensions
de **génération 12**. Les identifiants, parents, graines, paramètres, positions
et états douverture sont conservés côté serveur. La racine et le diamètre
initial ne sont pas modifiables par une commande dexpansion.
Les mondes du laboratoire alpha.12/12.1 gardent leur codec et leur journal
`data/sanctuary-expansion-v1/expansions.json`. Les générations Population et
les autres générations antérieures gardent leurs paramètres enregistrés.
Les presets historiques sont conservés mais cachés dans la création publique.
**Aucun monde nest converti, agrandi, réduit ou régénéré par lalpha.13.**
Le [guide alpha.12](alpha12-laboratory.md) est une référence historique, pas une
instruction de sélectionner à nouveau le laboratoire pour cette version.
## Contrôles de développement
`./gradlew check build assemblePack` et `:sanctuary:runGameTest` sélectionnent
par défaut la suite unifiée. Son diamètre de test se choisit avec
`-PsanctuaryTestDiameter=512`, `724` ou `1024` ; il ne change pas le défaut public.
Les suites Population historiques demandent `-PsanctuaryUnifiedTests=false`,
avec leur profil `-PsanctuaryTestPlayers=5`, `10`, `20` ou `100`. Les essais du
laboratoire historique utilisent aussi ce drapeau, avec
`-PsanctuaryExpansionTests=true`. Ces processus travaillent dans les dossiers
de développement ignorés, jamais dans les sauvegardes personnelles.
Les validations et mesures des alpha.11, .12 et .12.1 restent historiques.
Elles ne prouvent ni les temps de chargement ni le rendu de cette intégration.
Les trois tailles, linterface native et les expansions/rechargements passent
les contrôles alpha.13. Moyen atteint 63,66 s pour créer le monde puis charger
289 chunks FULL sur la graine 0 ; voir [Validation](testing.md) pour le protocole
et ses limites. La procédure de distribution reste à terminer.