feat(worldgen): unify Sanctuary and native size options for alpha.13
Build Sanctuary / build (push) Canceled after 0s
Build Sanctuary / build (push) Canceled after 0s
This commit is contained in:
+120
-2
@@ -19,6 +19,124 @@ Pour générer de vrais chunks et vérifier le spawn sur d'autres graines :
|
||||
La propriété ne s'applique qu'au mod de test, jamais au mod distribué ni à une
|
||||
sauvegarde de joueur. Chaque commande repart d'un monde de développement neuf.
|
||||
|
||||
## Alpha.13 — génération unifiée
|
||||
|
||||
`check build assemblePack` passe, y compris le monde Moyen de graine 0 et les
|
||||
smokes. Les preuves exportées, journaux, paramètres, mesures et hashes figurent
|
||||
dans [le rapport alpha.13](benchmarks/alpha13-worldgen.json).
|
||||
|
||||
Le test courant charge `sanctuary:sanctuary`, puis règle son vrai générateur
|
||||
`sanctuary:island_v13` comme le fait la personnalisation. Les suites historiques
|
||||
restent accessibles avec `-PsanctuaryUnifiedTests=false`.
|
||||
|
||||
Les trois tailles passent les huit tests moteur sur la graine **42**, avec
|
||||
1 800 ticks de fluides. Chaque inspection des cavités utilise au plus 27 chunks
|
||||
FULL, choisis sur des sols et plafonds naturels ; les contrôles d’hydrologie
|
||||
emploient un autre échantillon borné. Ces volumes ne sont pas un inventaire de
|
||||
l’île et ne mesurent pas le rendu du client.
|
||||
|
||||
| Taille | Chunks FULL du diagnostic d’eau | Blocs d’eau retenus après 1 800 ticks | Pilier de spéléothèmes dans l’air naturel |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| Petit, 512 | 116 | 4 722 | 25 blocs |
|
||||
| Moyen, 724 | 80 | 1 196 | 18 blocs |
|
||||
| Grand, 1 024 | 136 | 1 434 | 18 blocs |
|
||||
|
||||
Les trois cavités natives sont réellement décorées dans chacun de ces mondes :
|
||||
mousse et lianes récoltables pour le luxuriant, pointes et piliers pour les
|
||||
spéléothèmes, roche soufrée et pointes pour le soufre. Musiques, brouillard et
|
||||
table du `sulfur_cube` restent ceux des biomes Minecraft. La graine 0 présente
|
||||
seulement du luxuriant dans le raster naturel inspecté ; elle ne justifie pas
|
||||
de forcer les deux autres biomes dans la roche. Une livraison exige les preuves
|
||||
cumulées des trois types, pas leur présence sur toute graine.
|
||||
|
||||
Le garde-fou est exercé par une vraie écriture `WorldGenRegion` : eau, lit,
|
||||
parois naturelles, sources et sorties sont protégés. Quatre témoins de berge
|
||||
appartiennent à un chunk voisin de leur cellule d’eau. Une écriture hors volume
|
||||
reste possible. Le test utilise une vue modifiable de chunk dédiée, car les
|
||||
holders FULL exposent normalement une vue de génération en lecture seule.
|
||||
Les blocs témoins temporaires sont restaurés dans le monde de développement.
|
||||
|
||||
L’essai client ouvre le bouton natif **Personnaliser**, parcourt les trois
|
||||
tailles et vérifie Terminé, Annuler, Échap, réouverture et rafraîchissement des
|
||||
réglages. L’écriture/relecture réelle des paramètres conserve la taille, la
|
||||
graine, les options, le Nether et l’End. Les anciens générateurs ne deviennent
|
||||
pas personnalisables par erreur ; l’éditeur Superflat vanilla reste disponible.
|
||||
Une capture confirme la lisibilité de l’écran. Cet essai ne constitue pas une
|
||||
visite graphique de l’île.
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryTestDiameter=512 -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryTestDiameter=724 -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryTestDiameter=1024 -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
|
||||
```
|
||||
|
||||
Les diagnostics détaillés restent dans le dossier ignoré
|
||||
`mods/sanctuary/build/run/gameTest/diagnostics/unified-<diamètre>-seed-<graine>-*.json`.
|
||||
Les anciennes mesures alpha.11 ci-dessous ne sont pas des mesures alpha.13.
|
||||
|
||||
### Mesure alpha.13 de Moyen
|
||||
|
||||
Sur le Mac M1 à 8 Go, Java 25.0.3 et heap de 2 Gio, graine 0, un seul processus
|
||||
de jeu actif : la création initiale prend **17,65 s**, puis 289 chunks FULL autour
|
||||
du spawn **46,01 s**, soit **63,66 s** cumulées. Le couloir suivant de 80 chunks
|
||||
FULL prend **7,82 s**. Le maximum observé pour une requête de chunk est de 1,30 s
|
||||
autour du spawn et de 0,79 s dans ce couloir.
|
||||
|
||||
Le protocole conserve les anneaux 17 × 17 et le couloir est de l’alpha.11.
|
||||
L’ancien Grand et le nouveau Moyen ont le même diamètre nominal de 724 blocs,
|
||||
mais la décoration et le spawn peuvent différer : ce n’est pas une mesure
|
||||
d’équivalence de génération. Le résultat de départ reste proche des 62,67 s
|
||||
mesurées pour l’alpha.11. Un seul passage par version, sans mesure du GPU,
|
||||
des FPS, du réseau, de la disponibilité des chunks pour les ticks ou d’une
|
||||
charge multijoueur. Grand n’a pas de benchmark complet 289 + 80 dans cette
|
||||
livraison ; ses tests moteur ci-dessus ont une autre charge de travail.
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryBenchmark=true -PsanctuaryTestDiameter=724 -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
```
|
||||
|
||||
Rapport local : `diagnostics/generation-performance-unified-724-seed-0.json`,
|
||||
log `build/alpha13-benchmark-medium.log`.
|
||||
|
||||
### Expansions et rechargement alpha.13
|
||||
|
||||
Sur le monde unifié Moyen de graine 42, les deux processus réussissent :
|
||||
refus des huit premiers sites occupés, tropicale plus loin au nord, branche
|
||||
aride à au moins 2 048 blocs de son parent, relecture du journal et des blocs
|
||||
témoins, puis nouvelle expansion après redémarrage. Les colonnes de terrain
|
||||
et les biomes enregistrés restent identiques après décodage du générateur.
|
||||
Le framework reconstruit les paramètres actifs depuis le preset ; le test
|
||||
vérifie séparément le codec sauvegardé et les fichiers réellement rechargés.
|
||||
|
||||
Aucun camp admissible n’a été observé sur l’origine unifiée des graines 42 et
|
||||
8 675 309 : les fondations naturelles ou la protection hydrologique écartent
|
||||
les candidats. Les essais stricts y échouent donc sur la preuve de structure.
|
||||
La paire unifiée validée utilise explicitement un témoin de structure
|
||||
facultatif, seulement après inspection complète des candidats. Ses rapports
|
||||
indiquent `native_structure_observed=false` et ne constituent aucune preuve
|
||||
positive de placement ou de butin dans l’origine alpha.13. Les critères de
|
||||
fondation et la génération ne sont pas assouplis pour faire passer un test.
|
||||
|
||||
Exécuter les deux commandes sans lancer un autre GameTest entre elles :
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryExpansionTests=true -PsanctuaryOptionalStructureWitness=true -PsanctuaryTestDiameter=724 -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryExpansionTests=true -PsanctuaryExpansionReload=true -PsanctuaryOptionalStructureWitness=true -PsanctuaryTestDiameter=724 -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
```
|
||||
|
||||
Sans ce drapeau explicite, le scénario exige toujours une vraie structure avec
|
||||
son conteneur et sa table de butin native. La réouverture vérifie toujours ces
|
||||
trois éléments lorsqu’ils ont été observés dans le premier processus.
|
||||
|
||||
La paire historique, rejouée avec le binaire alpha.13, réussit sur la graine
|
||||
42 sans rendre le témoin facultatif : camp abandonné de forêt, bloc du
|
||||
conteneur et table de butin native retrouvés après redémarrage. Cela valide
|
||||
la chaîne génération 12 conservée ; ce résultat ne vaut pas comme preuve
|
||||
d’un camp dans l’origine unifiée. Le smoke du journal teste aussi une origine
|
||||
13 de diamètre 1 024 avec un enfant 12, le schéma 1 et le refus d’une lecture
|
||||
avec une autre génération ou taille, sans modifier les octets enregistrés.
|
||||
|
||||
## Correctif alpha.12.1 — tous les premiers emplacements occupés
|
||||
|
||||
Le scénario laboratoire utilise les mêmes commandes Gradle ci-dessous. Il
|
||||
@@ -52,8 +170,8 @@ Le laboratoire possède un scénario moteur distinct, à lancer puis à rouvrir
|
||||
**dans cet ordre**, sans autre GameTest entre les deux :
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryExpansionTests=true -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryExpansionTests=true -PsanctuaryExpansionReload=true -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryUnifiedTests=false -PsanctuaryExpansionTests=true -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
./gradlew :sanctuary:runGameTest -PsanctuaryUnifiedTests=false -PsanctuaryExpansionTests=true -PsanctuaryExpansionReload=true -PsanctuaryTestSeed=42 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false
|
||||
```
|
||||
|
||||
Le premier passage crée le monde jetable. Le second saute volontairement
|
||||
|
||||
Reference in New Issue
Block a user