102 lines
5.5 KiB
Markdown
102 lines
5.5 KiB
Markdown
# Vérifier Sanctuary
|
||
|
||
Utiliser Java 25 et les dépendances épinglées dans `gradle.properties`.
|
||
|
||
```sh
|
||
./gradlew check build assemblePack --console=plain
|
||
```
|
||
|
||
`check` inclut les tests GameTest. Pour un diagnostic ciblé de la génération seule,
|
||
utiliser `./gradlew :sanctuary:runGameTest --console=plain`.
|
||
|
||
## Tests de forme
|
||
|
||
La tâche `:sanctuary:worldgenSmoke`, incluse dans `check`, vérifie les invariants de
|
||
l'enveloppe de l'île : noyau solide, limite extérieure, hauteur et stabilité de la
|
||
fonction géométrique. Elle complète les tests en jeu ; elle ne charge pas à elle
|
||
seule les ressources de génération de Minecraft.
|
||
|
||
## Tests dans le moteur Minecraft
|
||
|
||
`runGameTest` démarre le serveur de test headless officiel de Fabric dans
|
||
`mods/sanctuary/build/run/gameTest/`. La tâche `cleanGameTestWorld` supprime uniquement
|
||
son monde jetable avant chaque exécution afin de générer des chunks neufs.
|
||
Il ne déploie rien dans un serveur ou une installation de jeu personnels.
|
||
La configuration garde `eula=false` : aucun fichier d'acceptation n'est écrit par
|
||
Loom. Fabric dispose d'un chemin de démarrage propre à ses tests automatisés.
|
||
|
||
Le source set `gametest` est un mod de test séparé, exclu du JAR Sanctuary distribué.
|
||
Deux adaptations y sont nécessaires, vérifiées contre les classes Minecraft
|
||
`26.3-pre-2` :
|
||
|
||
- `GameTestServer` sélectionne normalement `minecraft:flat_all_dimensions`.
|
||
Le mixin de test sélectionne directement le preset de production
|
||
`sanctuary:sanctuary`, sans recopier ses JSON.
|
||
- Le framework désactive normalement les structures. Le test les active dans
|
||
`WorldOptions` pour examiner les chunks après toutes les étapes de génération.
|
||
La seed du serveur de test reste `0`.
|
||
|
||
Le framework déplace aussi le spawn vers une grille de tests située loin du centre.
|
||
Le test capture donc le spawn juste avant ce déplacement, après l'initialisation
|
||
normale du monde, et examine les coordonnées absolues de l'île.
|
||
|
||
Les trois tests vérifient :
|
||
|
||
1. Le vrai générateur Sanctuary est chargé, le noyau de l'île existe et le spawn
|
||
collectif possède un sol plein de 3×3 blocs avec deux blocs libres et secs.
|
||
2. Douze chunks entièrement générés sont vides dans les quatre directions, juste
|
||
après l'enveloppe de décoration puis à environ 512 et 4 096 blocs. Cela couvre
|
||
notamment l'ancien retour automatique de l'archipel au loin.
|
||
3. La densité du datapack réellement chargé, compilée par `RandomState`, est
|
||
reproductible pour la seed `0` et change pour la seed `8675309`.
|
||
|
||
Le chargement du serveur valide également les codecs et les références des
|
||
registres de biomes, densités, réglages et presets. Un échec de chargement ou un
|
||
test obligatoire en échec doit faire échouer la tâche Gradle.
|
||
|
||
Le framework et les hooks de test sont spécifiques à la version épinglée. Lors
|
||
d'une mise à jour Minecraft, vérifier ces hooks avant de conclure que les tests
|
||
exercent toujours le preset de production. La vérification explicite du générateur
|
||
dans le premier test empêche un résultat positif sur un simple monde plat.
|
||
|
||
Référence du workflow : [tests automatiques Fabric](https://docs.fabricmc.net/develop/automatic-testing).
|
||
Les signatures propres à `26.3-pre-2` ont été vérifiées dans les dépendances locales,
|
||
car la documentation publiée vise actuellement `26.2`.
|
||
|
||
## Validation de la fondation — 8 septembre 2026
|
||
|
||
Commande `./gradlew check build assemblePack --console=plain` réussie en **22 secondes**
|
||
sur Java **25.0.3**, Minecraft **26.3-pre-2**, Fabric Loader **0.19.5**, Fabric API
|
||
**0.160.0+26.3** et Loom **1.17.20**, pour Sanctuary **0.1.0-alpha.1**.
|
||
|
||
- Quatre tests requis exécutés par le framework, dont les trois tests Sanctuary
|
||
ci-dessus : tous réussis en **5,040 secondes**.
|
||
- Monde de test neuf, seed **0**, structures activées et spawn initial observé
|
||
à **(0, 118, 0)**. Les douze chunks extérieurs inspectés au statut `FULL` sont vides.
|
||
- Densité compilée reproductible pour **0**, différente pour **8675309** ; seuls
|
||
les chunks du monde de seed **0** ont été générés entièrement.
|
||
- `WorldgenSmoke`, vérification des versions et empreintes packwiz, compilation
|
||
du JAR et assemblage dans `build/packwiz/` réussis.
|
||
- Le JAR `mods/sanctuary/build/libs/sanctuary-0.1.0-alpha.1.jar` ne contient aucune
|
||
classe ni configuration de mixin GameTest.
|
||
|
||
Les preuves locales sont dans
|
||
`mods/sanctuary/build/run/gameTest/logs/latest.log` et `debug.log` ; elles restent
|
||
ignorées par Git et sont remplacées lors des prochains tests. Les vérifications
|
||
manuelles ci-dessous n'ont pas été effectuées dans cette livraison.
|
||
|
||
## Vérifications manuelles restantes
|
||
|
||
- Créer un monde avec le preset Sanctuary dans le client et évaluer visuellement
|
||
la côte, les trous, les surplombs, la végétation et la lecture du vide.
|
||
- Rejoindre à plusieurs joueurs, mourir et réapparaître ; les tests headless ne
|
||
simulent pas de connexion client ni les offsets de réapparition des joueurs.
|
||
- Modifier le spawn administrateur, arrêter puis recharger le monde et vérifier
|
||
sa conservation. Le test automatique couvre le premier démarrage, pas un cycle
|
||
de sauvegarde et de redémarrage complet.
|
||
- Explorer plusieurs seeds dans le client. Les tests compilent deux seeds mais
|
||
ne génèrent des chunks complets que pour la seed `0`, et leur échantillonnage
|
||
extérieur ne constitue pas une inspection exhaustive de toutes les coordonnées.
|
||
- Tester les resource packs, shaders et mods communautaires après leur ajout et
|
||
vérification de compatibilité avec la version exacte du pack.
|