129 lines
7.0 KiB
Markdown
129 lines
7.0 KiB
Markdown
# Atlas scientifique du terrain
|
||
|
||
L’[archive alpha.30.5](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.5/Sanctuary-Atlas-0.1.0-alpha.30.5.zip)
|
||
contient les neuf cas, leurs figures PNG/PDF et données brutes.
|
||
[Coupes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.5/Sanctuary-0.1.0-alpha.30.5-Grand-coupes.png) ·
|
||
[Cartes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.5/Sanctuary-0.1.0-alpha.30.5-Grand-cartes.png).
|
||
|
||
## Acquisition native
|
||
|
||
`TerrainAtlas305GameTests` charge les registres réels de Minecraft 26.3-pre-2
|
||
et les ressources Sanctuary. Il crée le même `RandomState` que le générateur
|
||
pour chaque graine et taille. Il compile les fonctions de densité natives,
|
||
sans réimplémentation du bruit en Python. Le serveur de test utilise un monde
|
||
plat ignoré pour démarrer rapidement ; aucun chunk Sanctuary ni aucune
|
||
expansion n’est créé pour cet export.
|
||
|
||
```sh
|
||
./gradlew :sanctuary:runGameTest -PsanctuaryAtlasOnly=true \
|
||
-PsanctuaryAtlasSeeds=0,42,-7228211907433324401 \
|
||
-PsanctuaryAtlasRevision=REVISION_DU_CODE
|
||
python3.14 -m venv build/atlas-venv
|
||
build/atlas-venv/bin/pip install -r scripts/terrain-atlas-requirements.txt
|
||
build/atlas-venv/bin/python scripts/terrain_atlas.py --output build/atlas306 \
|
||
mods/sanctuary/build/run/gameTest/diagnostics/atlas306/terrain-*.json
|
||
```
|
||
|
||
Le tracé livré utilise Python 3.14 ; les versions de Matplotlib et NumPy
|
||
sont épinglées dans le fichier de dépendances.
|
||
|
||
Les propriétés atlas sont réservées aux tests. Les tests de génération complets
|
||
restent actifs dans `check` sans ce paramètre. Ne pas lancer deux Gradle de test
|
||
simultanément : leur dossier de monde temporaire est partagé. Les diagnostics
|
||
existants peuvent rester dans le dossier ; vérifier graines, version et provenance
|
||
avant d’en faire une archive. Aucune sauvegarde personnelle n’est utilisée.
|
||
|
||
## Lecture des planches
|
||
|
||
- Cartes : nord en haut, X et Z en blocs, rapport d’aspect réel. Les quatre
|
||
profils partagent les mêmes échelles de couleur. La palette d’altitude ne
|
||
représente pas les blocs ou les biomes ; du blanc n’implique pas de neige.
|
||
- Altitude : dernier solide rencontré, recherche verticale par pas de 2 blocs.
|
||
Une cellule grise signifie qu’aucun solide n’a été échantillonné dans la colonne.
|
||
- Épaisseur cumulée : nombre d’échantillons solides multiplié par 2 sur Y2..418 dans la 30.6 (Y2..382 dans la 30.5).
|
||
Ce n’est ni une densité physique, ni un volume exact de matériaux minables.
|
||
- Roche continue : épaisseur depuis le sommet jusqu’au premier vide échantillonné.
|
||
Un petit résultat peut signaler une voûte mince, un surplomb ou un fragment.
|
||
- Coupes : trois plans Z=0, Z=96 et Z≈−rayon/4, sur toute la hauteur naturelle.
|
||
Bleu pour la densité négative, rouge pour la positive ; frontière zéro en noir.
|
||
L’échelle colorée sature au-delà de ±0,3 ; les données conservées vont jusqu’à ±1.
|
||
|
||
Le pas horizontal des cartes est de 12 blocs, le pas vertical de 2. Les coupes
|
||
sont échantillonnées tous les 2 blocs dans les deux axes. Les images ne sont
|
||
pas lissées. Le champ est quantifié à 0,0001 en conservant son signe autour de
|
||
zéro. Les petits détails peuvent être manqués : le contrôle des fragments en
|
||
volume utilise séparément une résolution d’un bloc dans les tests complets.
|
||
|
||
L’eau, la lave, les matériaux de surface, végétaux, biomes et structures ne
|
||
figurent pas dans cet atlas de **densité avant décoration**. Les tests natifs
|
||
de rivières et de structures vérifient leur présence effective dans des chunks.
|
||
Une coupe 2D ne permet pas, seule, de conclure à la connectivité d’une grotte 3D.
|
||
|
||
## Comparaison et conservation
|
||
|
||
Les tableaux utilisent les mêmes coordonnées dans chaque variante. La part
|
||
des plateaux conservés compare les colonnes de base dont le sommet atteint
|
||
Y200, avec une tolérance de deux blocs. Les statistiques d’épaisseur du toit
|
||
utilisent uniquement les colonnes atteignant Y200 dans **les quatre variantes**.
|
||
Ce sous-ensemble ne représente pas toutes les falaises de l’île.
|
||
|
||
L’archive de livraison contient JSON natifs, PNG, PDF, résumés, script de rendu,
|
||
versions Python et empreintes des fichiers. Elle est attachée à la release,
|
||
pour que les images restent récupérables même après nettoyage du dossier build.
|
||
Le manifeste relie les données au binaire livré et à la révision source.
|
||
Les vues sont générées par Matplotlib à partir des mesures ; aucune image
|
||
générative n’intervient.
|
||
|
||
Le libellé « 24 / 27 » désigne le champ de la 27 restauré depuis la 24, pas
|
||
une simulation de tous les matériaux et structures historiques de la 24.
|
||
Les samplers 30.1 et 30.4 sont conservés pour comparer des transformations
|
||
exactes, et non des approximations dessinées pour illustrer un résultat attendu.
|
||
|
||
|
||
## Comparaison 30.6 et infrastructures
|
||
|
||
L’export courant remplace la colonne 30.4 par la comparaison directe 30.5/30.6.
|
||
`compileHistorical305` conserve exactement le coefficient 0,80 ; le champ livré
|
||
utilise 0,95. Le renderer accepte également les anciens exports 30.5.
|
||
Des coupes supplémentaires Y260..418 ciblent les morceaux de terrain supérieurs.
|
||
Les JSON courants sont dans `diagnostics/atlas306/`.
|
||
|
||
`scripts/structure_atlas.py` superpose les plans ferroviaires au relief et trace
|
||
les coupes des blocs du village effectivement générés par `Village306GameTests`.
|
||
Le pourcentage est une estimation de surface projetée à partir du pas de
|
||
12 blocs ; le numérateur inclut les colonnes de ballast et les chemins. Ce n’est
|
||
ni une longueur de rails en pourcentage ni une part du volume de l’île.
|
||
|
||
```sh
|
||
build/atlas-venv/bin/python scripts/structure_atlas.py \
|
||
mods/sanctuary/build/run/gameTest/diagnostics/village306/724-0.json \
|
||
mods/sanctuary/build/run/gameTest/diagnostics/atlas306/terrain-724-0.json \
|
||
--output build/atlas306/structures
|
||
```
|
||
|
||
## Finition 30.7
|
||
|
||
Le terrain de 30.6 est conservé. L’export natif est répété sur les neuf couples
|
||
512 / 724 / 1 024 × 0 / 42 / -7228211907433324401 pour comparer exactement les
|
||
colonnes et les coupes avant décoration. L’enrichissement des minerais et les
|
||
petites structures n’appartiennent pas à ce champ de densité.
|
||
|
||
`scripts/finishing_atlas.py` superpose les rails planifiés, les axes des traversées
|
||
parcourues dans les blocs, les ruines asséchées et les réservations aériennes.
|
||
Les rectangles représentent les emprises ; ils ne représentent pas des îlots
|
||
rectangulaires. Le script refuse des rapports de graines ou tailles différentes
|
||
et des témoins natifs non réussis.
|
||
|
||
```sh
|
||
build/atlas-venv/bin/python scripts/finishing_atlas.py \
|
||
--terrain build/atlas307/raw/terrain-724-0.json \
|
||
--village CHEMIN_DU_RAPPORT_VILLAGE \
|
||
--transit CHEMIN_DU_RAPPORT_TRANSIT \
|
||
--aerial CHEMIN_DU_RAPPORT_AERIEN \
|
||
--ruins CHEMIN_DU_RAPPORT_RUINES --output build/atlas307/installations
|
||
```
|
||
|
||
Les preuves, cartes PNG/PDF et leurs empreintes sont ajoutées à l’archive de
|
||
livraison. Ces cartes sont des vues de diagnostic opérateur, pas des cartes
|
||
automatiquement révélées aux joueurs.
|