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
+56 -32
View File
@@ -1,24 +1,45 @@
# Climats, expansion et ressources
Ce document fixe les décisions de conception pour la suite de Sanctuary.
Lalpha.12 fournit un laboratoire avec registre persistant et commandes opérateur,
suivant le [contrat de laboratoire](alpha12-laboratory.md). Le déblocage par
recherches et contributions reste à implémenter. Le relevé de ressources décrit plus bas
est un outil de développement séparé, exécuté dans le monde jetable des GameTests.
Ce document distingue les outils de génération et la progression collective
encore à construire. Lalpha.13 réunit l’île de départ et
les commandes dexpansion dans le choix public **Sanctuary**. Le
[guide alpha.13](alpha13-worldgen.md) décrit leur utilisation. Les versions
alpha.12/12.1 et leur [laboratoire](alpha12-laboratory.md) restent historiques.
Le déblocage par recherches, XP et contributions nest pas encore implémenté.
## Taille de l’île initiale — alpha.11
## Taille initiale et extensions — alpha.13
Deux choix de départ sont proposés : **Petit** et **Grand**, Grand par défaut.
Petit garde un diamètre nominal de 512 blocs ; Grand vise environ 724 blocs,
soit deux fois laire nominale de Petit. La hauteur reste de 384 blocs. Les
repères internes 5/10 servent au calcul de surface, sans nom de capacité affiché
ni promesse sur le nombre de joueurs, les minerais ou laire constructible.
Le bouton natif **Personnaliser** propose **Petit** (512 blocs de diamètre
nominal), **Moyen** (724, par défaut) et **Grand** (1 024). La hauteur reste de
384 blocs. Ce choix configure un nouveau monde ; il ne promet ni nombre de
joueurs, ni quantité de ressources, ni aire entièrement constructible.
Cette taille se choisit pour un nouveau monde et ne remplace pas le futur
déblocage collectif de continents. Grand utilise `population_10` ; les anciennes
sauvegardes 5/20/100 conservent leurs réglages et leurs dimensions. Les formats
20/100 sont cachés de la création. Les mesures de lalpha.10 conservées plus bas
restent historiques ; les contrôles alpha.11 sont dans [Validation](testing.md).
L’île initiale reprend le relief, les forêts et lhydrologie de Population,
avec les poches de cavités natives issues du laboratoire. Les îles ajoutées
conservent les tailles **64/128/256/512**, les douze profils climatiques et les
quatre reliefs dexpansion. Leur génération ne reprend pas automatiquement
la grande rivière et les terrasses de l’île initiale.
Les commandes opérateur `quick`, `create`, `preview`, `list`, `visit` et
`resume` reprennent le fonctionnement alpha.12.1. Le paramètre final de distance
est facultatif ; les sites occupés sont écartés en cherchant plus loin dans la
même direction. Même un chunk de vide déjà généré est protégé. Les recherches
collectives et les objets de déblocage ne sont pas nécessaires à ces outils.
La racine alpha.13 est de génération 13 ; les extensions restent de génération
12, dans le journal `data/sanctuary-world-v13/expansions.json` du nouveau monde.
Les anciens mondes gardent leurs codecs, leurs paramètres et leur journal.
Les choix séparés Petit/Grand et Laboratoire sont désormais cachés à la
création. Aucun monde existant nest converti ou redimensionné.
## Tailles et mesures historiques
Lalpha.11 proposait Petit (512) et Grand (724), avec Grand par défaut ; ses
repères internes 5/10 ne correspondaient pas à une capacité multijoueur promise.
Les références `population_5/10/20/100` restent celles des sauvegardes historiques.
Les mesures alpha.3 à alpha.11 conservées ci-dessous décrivent uniquement les
versions et les emprises observées à leur date. Les contrôles de lalpha.13,
les rechargements et le benchmark Moyen sont consignés dans [Validation](testing.md).
## Les huit directions et les branches climatiques
@@ -130,12 +151,15 @@ Une graine peut donc manquer dune ressource ; la présence de tout le parcour
Minecraft nest pas garantie. Les structures donnant accès à lEnd et leur lien
avec lexpansion restent à concevoir.
## Relevé de développement disponible
## Relevé de développement — générateurs historiques
`ResourceSurveyDiagnostics`, dans `src/gametest`, lit les chunks au statut
`FULL`, après le terrain, les matériaux et les décorations. Il ne figure pas
dans le JAR Sanctuary distribué et n'ajoute aucune commande joueur ou admin.
La tâche repart d'un monde GameTest neuf, jamais d'une sauvegarde personnelle.
Depuis lalpha.13, `runGameTest` et `check` sélectionnent la suite unifiée par
défaut. Les commandes ci-dessous demandent explicitement une suite historique ;
elles ne constituent pas un relevé du nouveau monde unifié.
Le relevé standard inspecte **neuf chunks**, soit un carré de 48×48 blocs autour
du chunk du spawn naturel, sur toute la hauteur de la dimension. Il prépare
@@ -146,13 +170,13 @@ n'est inclus dans ces comptes de blocs.
```sh
# Contrôle standard : neuf chunks inspectés, total local uniquement.
./gradlew :sanctuary:runGameTest -PsanctuaryResourceSurvey=sample --console=plain
./gradlew :sanctuary:runGameTest -PsanctuaryUnifiedTests=false -PsanctuaryResourceSurvey=sample --console=plain
# Relevé de toute l'enveloppe déclarée de Sanctuary, sur un monde jetable neuf.
./gradlew :sanctuary:runGameTest -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=island --console=plain
./gradlew :sanctuary:runGameTest -PsanctuaryUnifiedTests=false -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=island --console=plain
# Désactiver seulement le relevé pour un autre diagnostic.
./gradlew :sanctuary:runGameTest -PsanctuaryResourceSurvey=off --console=plain
./gradlew :sanctuary:runGameTest -PsanctuaryUnifiedTests=false -PsanctuaryResourceSurvey=off --console=plain
```
Les modes sont transmis à la propriété JVM de test
@@ -162,7 +186,7 @@ ce dernier par défaut ; `20` et `100` servent à la compatibilité historique.
Le mode `island` calcule lenveloppe du profil actif, avec 16 blocs de marge de
décoration et un halo de préparation dun chunk. Les valeurs ci-dessous sont
les bornes calculées lors de lalpha.10, pas des relevés exécutés ni un nombre
de chunks déjà validé pour le nouveau Grand :
de chunks déjà validé pour lancien Grand alpha.11 :
| Profil | Chunks comptés par `island` | Chunks FULL préparés avec halo |
| --- | --- | --- |
@@ -257,16 +281,16 @@ essai client concurrent pendant environ 23 secondes. Elle décrit une machine
chargée et cette exécution, pas une performance garantie sur d'autres machines.
Le temps de préparation est distinct du coût du comptage par palettes.
## Contrat du prochain ticket d'expansion
## Contrat de progression collective restant à construire
Avant toute activation de continent, enregistrer côté serveur son identifiant,
sa direction parmi les huit, son centre, son emprise, sa graine dérivée, sa
version de génération, son profil climatique et son état de déblocage.
Le relevé des ressources intervient après la génération effective de sa région,
avec une complétude explicite, indépendamment des contributions qui l'ont ouverte.
Le registre et la réservation des alpha.12/12.1 sont repris dans lalpha.13 :
identifiant, parent, direction, centre, emprise, graine, génération, climat et
statut sont enregistrés côté serveur. Les chunks existants, y compris le vide,
sont protégés pendant la recherche dune nouvelle région.
Les zones déjà explorées dans le vide peuvent contenir des chunks sauvegardés
ou des constructions. L'activation exige donc un contrat de réservation ou de
matérialisation qui les protège ; elle ne peut pas régénérer silencieusement
les chunks existants. Les règles de contribution, distances, tailles,
réservations, migrations et prix ne sont pas décidées par ce diagnostic.
Le prochain travail de progression doit relier ces ouvertures aux recherches,
aux contributions et à leurs coûts. Un éventuel relevé de ressources intervient
après la génération réelle, avec une complétude explicite ; il ne choisit pas
une graine pour remplir un stock attendu. Les prix, les objets de déblocage et
les règles de contribution restent à concevoir. Aucun contrat de migration
ou de régénération danciennes parties nest fourni par ce diagnostic.