Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23b295356b | ||
|
|
697e4a205f | ||
|
|
c51e611f4f | ||
|
|
f4d3dad1ca | ||
|
|
653a063b15 | ||
|
|
9d3bc0cee2 | ||
|
|
5c474a8489 | ||
|
|
20d68ea7ee | ||
|
|
bf9b8fca14 | ||
|
|
bacebf8523 | ||
|
|
2a4dcec63d | ||
|
|
1a00a52c50 | ||
|
|
1116b29ceb | ||
|
|
833f14d9f9 | ||
|
|
f90d6e2928 | ||
|
|
8e512502fd | ||
|
|
126a70f217 | ||
|
|
927f961a79 | ||
|
|
850ab17d63 | ||
|
|
68ce6de1ec | ||
|
|
51e539a19a | ||
|
|
79952c3f65 | ||
|
|
0f918899fb | ||
|
|
94fefc0442 | ||
|
|
5ea7950f23 | ||
|
|
309d0ba6f3 | ||
|
|
5dee98106e | ||
|
|
d6f3258442 | ||
|
|
1c8e6437d5 | ||
|
|
00d175cb98 | ||
|
|
a7bdfe6998 | ||
|
|
f9c2ce8835 | ||
|
|
3d56d7de7f | ||
|
|
f2ac23b4f4 | ||
|
|
9c096b2563 | ||
|
|
bc27606b3e | ||
|
|
8531bb3476 | ||
|
|
8e9b8fbd62 | ||
|
|
308c0dc2ff | ||
|
|
50aaa5c135 | ||
|
|
cf5699cfe1 | ||
|
|
d9979100a9 | ||
|
|
5f3d110773 | ||
|
|
a2201cc422 | ||
|
|
42e42fea2a | ||
|
|
55df522b1e | ||
|
|
b77d71bd0d | ||
|
|
70a34df2d5 | ||
|
|
5fb1407705 | ||
|
|
e2b9ee7aaf | ||
|
|
1388d8a443 | ||
|
|
4554ea1882 | ||
|
|
9063e16e7c | ||
|
|
2d656d9525 | ||
|
|
a3dd17c37a | ||
|
|
58aa4c2ae1 | ||
|
|
988a6c8f51 | ||
|
|
3adb08eaa6 | ||
|
|
f8456df256 | ||
|
|
0eb4517961 | ||
|
|
03aab49996 | ||
|
|
b82ab378f0 | ||
|
|
da838b9e8e | ||
|
|
3941bd4711 | ||
|
|
7375046488 | ||
|
|
2ee53e1065 | ||
|
|
efb1097b65 | ||
|
|
d021341d3e | ||
|
|
bb10c24ada | ||
|
|
6f780547bb | ||
|
|
bf5df3885b | ||
|
|
2463db72f7 | ||
|
|
454d9a5c08 | ||
|
|
ba1b228e76 | ||
|
|
1d60a3eedc | ||
|
|
16d81d892f | ||
|
|
7497d9182d | ||
|
|
6b97d57bde | ||
|
|
7c14696020 | ||
|
|
39ff7e95d5 | ||
|
|
918143aaa6 | ||
|
|
9da3f7f13b | ||
|
|
7179b5d4cb | ||
|
|
78f047d3dc | ||
|
|
c7f32c9416 | ||
|
|
97ea94e482 | ||
|
|
51e7e2590e | ||
|
|
658aaf8732 | ||
|
|
c53b39e71c | ||
|
|
f40382ad04 | ||
|
|
a067c7e66b | ||
|
|
6cfa4c07bf | ||
|
|
1ca01a47b7 | ||
|
|
a46946bd4c | ||
|
|
65e7127b1d | ||
|
|
5f32455f79 | ||
|
|
459420503e | ||
|
|
a82fc559b1 | ||
|
|
5a74ba57ed | ||
|
|
db6194c3c0 | ||
|
|
9613322c6b | ||
|
|
96433d3306 | ||
|
|
ba4cf19233 | ||
|
|
968c8d7a43 | ||
|
|
b9727dfa41 | ||
|
|
63e4dab140 | ||
|
|
9f993989b0 | ||
|
|
24c3315f56 | ||
|
|
55c745a46d | ||
|
|
43ac3c7c5f | ||
|
|
6e2336db9d | ||
|
|
3faea2c9af | ||
|
|
8ab5a45bd3 | ||
|
|
fff288f27e | ||
|
|
0315fe2b05 | ||
|
|
c2dfa9e171 | ||
|
|
b49b3e2549 | ||
|
|
e382a65aae | ||
|
|
7979f33028 | ||
|
|
460c4706d3 | ||
|
|
ad960ef9bc | ||
|
|
835e6116e6 | ||
|
|
aadff6fd5e | ||
|
|
705fe9c1a0 | ||
|
|
dbb9e3428d | ||
|
|
9a429c40a1 | ||
|
|
905b3bcfa1 | ||
|
|
0c55a37562 | ||
|
|
8deba7cfb4 | ||
|
|
c1d2278674 | ||
|
|
bdaad0c940 | ||
|
|
19aa8054a5 | ||
|
|
9791d178ab | ||
|
|
32158e2e05 | ||
|
|
3bfb3cb251 | ||
|
|
0eb1a381d4 | ||
|
|
8de569bbf1 | ||
|
|
b97ec6c9e8 | ||
|
|
448e2febff | ||
|
|
1c23d0c17e | ||
|
|
6f871446bb | ||
|
|
96a36d99be | ||
|
|
cf9a670f44 | ||
|
|
ed2d088272 | ||
|
|
0cfd51eb4f | ||
|
|
38f4d6c9a9 | ||
|
|
580b2414da | ||
|
|
97ff2b54cb | ||
|
|
59346d7f0a | ||
|
|
ea151dd5df | ||
|
|
7ce01c47f2 | ||
|
|
93ed5574a4 | ||
|
|
c9f5c56e68 | ||
|
|
6e1b3b7108 | ||
|
|
c05c338e6b | ||
|
|
dc33ffa546 | ||
|
|
9d84a02ed9 | ||
|
|
91181865d5 | ||
|
|
daf36fdeac | ||
|
|
7f576d14d9 | ||
|
|
2d7072b8a8 | ||
|
|
0781cbd964 | ||
|
|
71296a9cfb | ||
|
|
07d09c8508 | ||
|
|
7fada570ef | ||
|
|
b7cf4bc294 | ||
|
|
fc4a0cb68e | ||
|
|
17172fd18b | ||
|
|
216d3f75b5 | ||
|
|
e48fc656c7 | ||
|
|
7e21781a9a | ||
|
|
d941b91265 | ||
|
|
078d3e6833 | ||
|
|
afa77f3d62 | ||
|
|
534dfec4f8 | ||
|
|
26e305d15f | ||
|
|
35103a7ea8 | ||
|
|
6502883cc4 | ||
|
|
a4e96c0d99 | ||
|
|
7c63865157 | ||
|
|
00be1eb0d0 | ||
|
|
adde24aa7e | ||
|
|
99860af312 | ||
|
|
1547396c06 | ||
|
|
4ec5b0d028 | ||
|
|
67e6e7c4f2 | ||
|
|
00179e30ef | ||
|
|
87f823af67 | ||
|
|
4552cc347b | ||
|
|
49131b4c53 | ||
|
|
edc7fc3dfb | ||
|
|
9b0104d27a |
@@ -11,6 +11,7 @@ La vision est dans `docs/vision.md` ; elle décrit aussi des fonctionnalités fu
|
||||
- Ne pas modifier un monde existant, régénérer des chunks, changer un format de sauvegarde ou activer une expansion sans contrat de migration explicite.
|
||||
- Garder les identifiants `sanctuary:*` stables et documenter toute évolution de la génération avec graine et version.
|
||||
- Ajouter les libellés FR/EN des nouvelles interfaces. Vérifier les dépendances pour la version Minecraft exacte ; aucune compatibilité supposée à partir du nom d'un mod.
|
||||
- Les tests graphiques Sanctuary ciblent uniquement Vulkan. OpenGL est abandonné comme cible de validation depuis le 18 septembre 2026 : ne plus lancer de suite OpenGL ni revendiquer sa prise en charge à partir des essais historiques.
|
||||
- Lancer `./gradlew check build` pour livrer du code, et `./gradlew assemblePack` si la distribution change. Ajouter seulement les tests utiles au comportement touché.
|
||||
- Pour chaque nouvelle livraison du mod, incrémenter le compteur `beta.xxx` (départ `beta.001`) dans `mod_version` et `pack_version` de `gradle.properties`, synchroniser `packwiz/pack.toml` et documenter le changement. Le tag reprend cette version exacte, sans préfixe `v` ; voir `docs/versioning.md`. Une simple modification documentaire n'incrémente pas les binaires.
|
||||
- Le pack Beta suit un canal packwiz stable et une seule instance Prism. Pour une mise à jour demandée, suivre `docs/packwiz.md` : publier un artefact vérifié et immuable, avancer le canal, puis synchroniser l'instance existante en conservant ses sauvegardes et réglages.
|
||||
|
||||
+166
@@ -1,5 +1,171 @@
|
||||
# beta.278 — Duel Battle pour un claim consenti
|
||||
|
||||
- Proposition depuis le clic droit d’un claim déjà revendiqué ; propriétaire et challenger valident le même enjeu.
|
||||
- Challenger ayant habité le chunk, propriétaire connecté, Carte active et disponibilité Battle contrôlés côté serveur.
|
||||
- Battle privé à deux joueurs : consentement sur le claim, puis confirmations Prêt natives ; aucun tiers admis.
|
||||
- Transfert du seul claim au vainqueur, avec l’échéance de protection conservée et actualisation de la carte/minage.
|
||||
- Refus, annulation avant lancement, égalité et interruption sans résultat durable ne transfèrent rien.
|
||||
- Journal additif de consentement/résultat, application atomique et reprise idempotente ; anciens formats conservés.
|
||||
- Interface de lecture et acceptation FR/EN, enjeu explicite dans Battle, navigation corrigée entre propositions.
|
||||
- [Contrat et vérifications](docs/claim-battle-beta278.md).
|
||||
|
||||
# beta.277 — Claims liés à Demeure
|
||||
|
||||
- Habitation Demeure obligatoire avant de revendiquer un chunk libre ; simple traversée insuffisante.
|
||||
- Priorité à l’habitant le plus influent, avec départage par l’ordre des premières traces en cas d’égalité.
|
||||
- Un habitant plus influent peut prendre le spot tant qu’il n’a pas été revendiqué ; aucun transfert automatique après acquisition.
|
||||
- Vérification serveur avant réservation ou débit, et sauvegarde des traces avant achat.
|
||||
- Carte : condition expliquée, nom/couleur du joueur prioritaire, action bloquée quand nécessaire et actualisation du terrain libre.
|
||||
- Claims antérieurs, protections, tarifs et formats de sauvegarde conservés ; aucun délai supplémentaire ni duel ajouté.
|
||||
- [Règles et vérifications](docs/claim-demeure-beta277.md).
|
||||
|
||||
# beta.276 — Contours CTM et nouvelle protection des claims
|
||||
|
||||
- Propriétés sans protection visibles par leur contour, aux couleurs de leur propriétaire.
|
||||
- Contours raccordés sur les côtés et angles, sans frontières entre chunks d’un même joueur.
|
||||
- Fond coloré sur les chunks protégés ; contour conservé après expiration.
|
||||
- Actualisation des contours voisins après un achat, dans l’Atlas et l’aperçu de Pause ; masquage conservé.
|
||||
- Protection : 8 saphirs par chunk pour trois jours de serveur en marche ; renouvellements ajoutés au temps restant.
|
||||
- Durées déjà achetées et reçus de sept jours en attente conservés, sans changement de schéma.
|
||||
- Libellés FR/EN et légende incluant aussi les propriétés sans protection.
|
||||
- [Contrat et vérifications](docs/claim-contours-beta276.md).
|
||||
|
||||
# beta.275 — Habitant et menu Pause centrés sur l’Atlas
|
||||
|
||||
- Retrait du conseil d’arrivée « première propriété gratuite » et du bouton Propriété d’Habitant.
|
||||
- Propriétés verrouillées côté serveur et client avant l’aptitude Carte achetée et active ; ancien accès carte locale bloqué.
|
||||
- Habitant : statistiques sans fond à gauche, personnage centré, biographie à droite ; navigation Factions / Familier.
|
||||
- Activité et Historique retirés de cette fiche ; données conservées.
|
||||
- Durée de jeu en jours, heures, minutes et secondes entières, sans minutes décimales.
|
||||
- Pause sans Carte conservée ; avec Carte, Gazette et Tableau dans leurs colonnes latérales, carte au centre.
|
||||
- Aventure à gauche et Communauté à droite au-dessus de la carte, y compris en grande vue ; Partie et ses actions natives dessous.
|
||||
- Mise à jour automatique de Pause lors du déblocage ou de la désactivation de Carte ; droits et protections acquis conservés.
|
||||
- [Contrat et vérifications](docs/menu-atlas-beta275.md).
|
||||
|
||||
# beta.274 — Calques de territoire continus
|
||||
|
||||
- Fiche Habitant conservée et claims actuels accessibles, selon la clarification du créateur.
|
||||
- Refonte des règles de propriété, habitation préalable, départage par Battle et nouveau tarif consignés pour la reprise.
|
||||
- Demeure sans cadres de chunks ; intensité liée à la part relative d’influence et actualisée quand celle-ci change.
|
||||
- Protections actives rendues en couleur unie dans la même texture de pixels que Demeure, sans bouclier ni pointillés.
|
||||
- Zones protégées adjacentes d’un propriétaire raccordées ; légende compacte couleur / personnage, avec masquage conservé.
|
||||
- Aperçu de Pause teinté directement dans ses pixels, avec brouillard et vide conservés.
|
||||
- Infobulle Demeure « Présence et influence d’habitation » en FR/EN ; retrait de « aucun claim ni protection ».
|
||||
- Aucun changement des données, droits, prix ou durées ; aucune attribution depuis Demeure ni aucun transfert par duel automatique.
|
||||
- [Contrat et vérifications](docs/demeure-overlay-beta274.md).
|
||||
|
||||
# beta.273 — Claims aux couleurs de leurs propriétaires
|
||||
|
||||
- Teinte et bordure utilisent la couleur persistante Hello World du propriétaire, y compris déconnecté.
|
||||
- Protection active : bordure pleine et bouclier ; sans protection : bordure en pointillés.
|
||||
- Bouton Propriétés : oui/non, partagé avec l’aperçu de Pause ; clic droit conservé quand les claims sont masqués.
|
||||
- Apparition automatique avec les tuiles de la carte proche, de l’Atlas et de l’aperçu de Pause.
|
||||
- Achats actualisant le claim visible ; expiration modifiant le style sans retirer la propriété.
|
||||
- Légende et survol FR/EN avec nom et durée restante ; terrain inconnu non révélé.
|
||||
- Aucun changement du registre, des prix, de la durée ou des droits.
|
||||
- [Contrat et vérifications](docs/claim-map-beta273.md).
|
||||
|
||||
# beta.272 — Claims et protection sur la carte
|
||||
|
||||
- Clic droit sur un chunk : panneau de revendication ou de protection sur la carte, sans grille ni changement de page.
|
||||
- Propriété ouvre directement la carte ; terrain proche visible dès Hello World, Atlas complet conservant ses prérequis.
|
||||
- Cinq chunks gratuits par joueur, puis 100 points d’XP supplémentaires à chaque nouveau claim.
|
||||
- 64 saphirs par chunk ajoutent sept jours de serveur en marche ; aucun temps décompté pendant l’arrêt.
|
||||
- Minage ×2 pour le propriétaire et ×0,5 pour les autres pendant la couverture ; pose et interactions ordinaires.
|
||||
- Nouveau registre séparé, achats avec reçu natif et migration volontaire des anciens volumes remboursant leurs extensions.
|
||||
- Stabilisation de la sauvegarde des statistiques à la fermeture face au nettoyage de déconnexion.
|
||||
- [Contrat, migration et vérifications](docs/chunk-claims-beta272.md).
|
||||
|
||||
# beta.271 — fiche Habitant, statistiques et activité
|
||||
|
||||
- Combats rétabli dans Communauté sous Habitant ; Story retiré de Pause.
|
||||
- Navigation Propriété, Factions et Familier en haut ; personnage aéré à gauche et biographie à droite.
|
||||
- Six compteurs personnels sous la biographie, lus dans Minecraft et le Blocodex.
|
||||
- Activité sous le personnage jusqu’en bas, avec défilement et bouton Historique dans son pied de panneau.
|
||||
- Publications personnelles, progrès et progression réunis sans nouveau format de sauvegarde.
|
||||
- Aperçu du familier retiré d'Habitant ; réglages et consentement regroupés dans sa page dédiée.
|
||||
- [Contrat, sources et vérifications](docs/inhabitant-menu-beta271.md).
|
||||
|
||||
# beta.270 — première propriété d’habitant
|
||||
|
||||
- Faction et Battle déplacés de Pause vers la fiche Habitant, avec un accès Propriété.
|
||||
- Une réservation gratuite après Hello World, dans un volume fini indépendant des chunks.
|
||||
- Quatre extensions de 100 à 400 points d’XP, sauvegardées avec un reçu natif.
|
||||
- Contrôles serveur du minage, de la pose et des interactions des autres joueurs ; terrains libres jouables.
|
||||
- Menu natif FR/EN, commandes `/sanctuary property`, `propriete` et `propriété`, aperçu sans écriture de terrain.
|
||||
- [Contrat, sauvegarde additive et limites de protection](docs/property-beta270.md).
|
||||
|
||||
# beta.172 — cartes de horde utilisables en jeu
|
||||
|
||||
- Suppression de la restriction au cercle laboratoire : une carte peut ouvrir
|
||||
une invasion à la position du joueur dans tout monde chargé.
|
||||
- Activation autorisée en Survie et en Créatif, avec consommation serveur et
|
||||
synchronisation immédiate de l'inventaire dans les deux modes.
|
||||
- Les joueurs créatifs restent participants aux invasions de carte ; le socle
|
||||
historique conserve ses anciennes règles d'inscription.
|
||||
- Les apparitions cherchent un sol sûr jusqu'à six blocs au-dessus ou en dessous
|
||||
du point prévu, sans écrire de bloc ni charger de chunk supplémentaire.
|
||||
- [Contrat et vérifications](docs/horde-runtime-beta172.md).
|
||||
|
||||
# beta.171 — familles de hordes dimensionnelles
|
||||
|
||||
- Chaque carte possède une famille majoritaire stable : zombies, squelettes,
|
||||
creepers, arthropodes, pillards, cauchemars, infernaux, piglins, flétris ou End.
|
||||
- La dimension de découverte favorise ses familles et espèces ; des créatures
|
||||
locales aléatoires et de rares intrus interdimensionnels cassent la régularité.
|
||||
- Catalogue porté à 34 monstres terrestres ou volants, du zombie au blaze, au
|
||||
ghast et au shulker ; les boss et créatures strictement aquatiques sont exclus.
|
||||
- Illustration divisée : file exacte des apparitions en haut, toutes les piles
|
||||
de butin garanties en bas, avec chevauchement lorsque nécessaire.
|
||||
- Le vieux socle rejoint la carte native dans le langage de particules et
|
||||
n'émet plus de messages Horde dans le chat ou la barre d'action.
|
||||
- [Contrat et vérifications](docs/horde-families-beta171.md).
|
||||
|
||||
# beta.170 — carte de horde native et langage visuel
|
||||
|
||||
- Nouvel objet `sanctuary:horde_trial_card` fondé sur la carte native 26.3,
|
||||
visible dans l'onglet créatif Outils et utilitaires.
|
||||
- Chaque exemplaire vierge tenu en main découvre une identité unique et stable ;
|
||||
les copies d'une carte découverte gardent son identité.
|
||||
- Révélation, activation, progression, refus et fin d'invasion passent par des
|
||||
connexions et glyphes de particules, sans message Sanctuary dans le chat.
|
||||
- Compatibilité conservée avec les cartes remplies beta.168/beta.169.
|
||||
- [Contrat et vérifications](docs/horde-map-native-beta170.md).
|
||||
|
||||
# beta.169 — invasion continue des cartes de horde
|
||||
|
||||
- Les cartes sont inconnues avant leur prise en main et se révèlent durablement.
|
||||
- Remplace les trois vagues par 12, 18 ou 27 arrivées individuelles qui accélèrent.
|
||||
- Mélange jusqu’à dix espèces selon la difficulté ; dessin et butins suivent le roster réel.
|
||||
- Butins généreux propres aux monstres, rubis et saphirs inclus ; anciennes cartes préservées.
|
||||
- Runes SGA natives, combat spontané élargi et interruptions diagnostiquées.
|
||||
- [Contrat et vérifications](docs/horde-invasion-beta169.md).
|
||||
|
||||
# beta.168 — cartes de horde (prototype local)
|
||||
|
||||
- Trois cartes natives illustrées et consommables ; invocation immédiate sans socle.
|
||||
- Participation spontanée et butins physiques sur les zombies, ramassage libre.
|
||||
- Nouveau labo isolé beta.168 ; cercle beta.167 conservé pour les futurs donjons.
|
||||
- [Contrat et vérifications](docs/horde-cartes-beta168.md).
|
||||
|
||||
# Changelog
|
||||
|
||||
## beta.167 — Carte de horde et socle d'épreuve, prototype local
|
||||
|
||||
- Arène circulaire dans un nouveau laboratoire, scène préservée aux redémarrages.
|
||||
- Carte réutilisable, inscriptions de 1 à 4 joueurs, préparation et lancement
|
||||
explicites, trois vagues de zombies et résultat commun.
|
||||
- Nettoyage des monstres à l'interruption et reprise du labo au repos ; aucune
|
||||
récompense économique, aucun changement de monde Sanctuary existant.
|
||||
- [Contrat et vérifications](docs/horde-lab-beta167.md).
|
||||
|
||||
## beta.144 — Code d’accès à la création
|
||||
|
||||
- Hello World demande le code `SANC-XXXX-XXXX` quand le serveur a l’URL et le jeton du site.
|
||||
- Le client ne contacte pas le site. Le serveur vérifie, puis consomme le code au moment de créer l’habitant.
|
||||
- Le lien Discord est enregistré à part. Une création interrompue après `redeemed` peut se terminer sans nouveau code si le compte est encore connu.
|
||||
- [Contrat](docs/access-code-beta144.md).
|
||||
|
||||
## beta.110 — Atelier d’argile inclus
|
||||
|
||||
- Une seule livraison réunit l’atelier d’argile, les statuaires et l’import GLB de beta.106 avec les œufs et la neige saisonnière de beta.107 à beta.109.
|
||||
|
||||
+81
-3
@@ -1,5 +1,27 @@
|
||||
# Provenance et crédits
|
||||
|
||||
Depuis beta.256, le pack client inclut [Sodium 0.9.2+mc26.3](https://modrinth.com/mod/sodium/version/bAZQdGpg),
|
||||
de JellySquid et des contributeurs CaffeineMC, sous Polyform-Shield-1.0.0.
|
||||
Le JAR officiel est une dépendance séparée téléchargée par packwiz ; il n’est
|
||||
pas intégré au code ni au JAR Sanctuary. La version et son SHA-512 sont fixés
|
||||
dans `packwiz/mods/sodium.pw.toml`. Les [sources de Sodium](https://github.com/CaffeineMC/sodium)
|
||||
et la licence de sa distribution conservent leurs auteurs et notices.
|
||||
|
||||
La musique du menu beta.253 provient du fichier `sanctuary-menu.m4a` fourni par
|
||||
le créateur le 8 octobre 2026 pour son intégration dans Sanctuary. Le fichier
|
||||
original reste intact ; sa piste audio complète est convertie en OGG Vorbis
|
||||
stéréo à 48 kHz, qualité 6 avec libvorbis 1.3.7. Les empreintes du fichier fourni
|
||||
et de l'OGG sont dans
|
||||
`mods/sanctuary/src/main/resources/licenses/Menu-Music-ASSET.json`, également
|
||||
embarqué dans le JAR sous `licenses/Menu-Music-ASSET.json`.
|
||||
|
||||
Depuis beta.257, Sound Physics Remastered **1.5.1+26.3**, GPL-3.0-only,
|
||||
est un JAR client séparé et facultatif (imbriqué entre beta.252 et beta.256). Sonic Ether, vlad2305m, Max Henkel et
|
||||
Saint conservent leurs crédits. Le binaire officiel et son SHA-512 sont figés ;
|
||||
voir `mods/sound-physics-remastered/PROVENANCE.md` pour les sources, la bibliothèque
|
||||
ConfigBuilder incorporée et l'adaptation des options. Le JAR Sanctuary contient
|
||||
la licence et cette provenance dans `licenses/sound-physics-remastered/`.
|
||||
|
||||
Le code Sanctuary est distribué sous GPL-3.0-or-later, comme la version 26.2 dont
|
||||
la génération est reprise. Voir `LICENSE` et `docs/migration-26.2.md` pour la
|
||||
provenance détaillée et le périmètre du portage.
|
||||
@@ -52,11 +74,11 @@ Les resource packs, shaders et mods communautaires envisagés dans la vision
|
||||
ne sont pas inclus automatiquement. Chaque ajout aura une version, une source,
|
||||
un hash et les crédits de sa distribution.
|
||||
|
||||
Demeure est embarqué comme mod autonome, sous GPL-3.0-or-later. Son modèle
|
||||
Demeure est intégré au code de Sanctuary depuis beta.204, sous GPL-3.0-or-later. Son modèle
|
||||
provient des sources de KOKA99CAB dans `Structures/demeure`, référencées par
|
||||
l’inventaire 26.2, et a été adapté à Minecraft 26.3-pre-2. Voir
|
||||
`mods/demeure/PROVENANCE.md` pour les empreintes et les différences du port.
|
||||
Le JAR Demeure contient sa licence et ce document de provenance.
|
||||
Le JAR Sanctuary conserve sa licence GPL et `licenses/Demeure-PROVENANCE.md`.
|
||||
|
||||
## Inventaire beta.010
|
||||
|
||||
@@ -91,7 +113,10 @@ aucune copie des textures de mobs ni aucun ancien pouvoir n’est embarqué.
|
||||
|
||||
Just Enough Items, mezz, MIT : fork source de la branche 26.2, commit
|
||||
`aae2dfcfb82e6b5bce787ba72bb2eda7339b274f`, adapté à Minecraft 26.3-pre-2.
|
||||
Le JAR contient la licence d’origine et [la provenance du portage](mods/jei/PROVENANCE.md).
|
||||
Depuis beta.280, le fork Minecraft 26.3 `30.32.0-sanctuary.4` est à nouveau
|
||||
embarqué dans le JAR Sanctuary, avec la licence d’origine et
|
||||
[la provenance du portage](mods/jei/PROVENANCE.md). Sa distribution séparée
|
||||
facultative concernait les beta.257–278.
|
||||
Les patches et la reconstruction sont fournis ; les téléchargements restent ignorés.
|
||||
Baked Substring Index 0.1.0 (MIT, James Mitchell) et Suffix Tree 1.1.0
|
||||
(Apache-2.0, Alessandro Bahgat Shehata) sont inclus avec leurs licences.
|
||||
@@ -136,3 +161,56 @@ intégré et le template personnel (SHA-256
|
||||
`a97570908db75caf8e6fc2f5ecabf12c54fd99bfea7be634df66c4310dca22af`).
|
||||
Le template regroupe les ressources client déjà distribuées par Sanctuary ;
|
||||
leurs crédits et conditions respectives restent applicables.
|
||||
|
||||
MariaDB Connector/J 3.5.10 (`org.mariadb.jdbc:mariadb-java-client`),
|
||||
MariaDB Corporation et contributeurs : LGPL-2.1-or-later. Le JAR officiel est
|
||||
embarqué comme dépendance imbriquée, sans modification, pour le stockage
|
||||
communautaire optionnel. Sa licence est fournie dans `licenses/mariadb-connector-j-LGPL-2.1.txt` du JAR Sanctuary.
|
||||
Sources correspondantes : https://github.com/mariadb-corporation/mariadb-connector-j/tree/3.5.10
|
||||
(distribution Maven Central 3.5.10).
|
||||
|
||||
## Tyroliennes et grappin beta.242
|
||||
|
||||
Poulies, modèles, recettes, textures provisoires et rendu segmenté des câbles
|
||||
repris du module `iliketomoveit` de Sanctuary 26.2 (KOKA99CAB), référence
|
||||
`26f2c2a0061619df1f146f9081d6740c560a7497`, sous GPL-3.0-or-later.
|
||||
Les sources Beta adaptent les API Minecraft 26.3 et remplacent le balancement
|
||||
par une tyrolienne portative temporaire. Le dépôt historique reste inchangé.
|
||||
Les trois PNG provisoires sont copiés octet pour octet ; la texture finale
|
||||
est réservée au créateur. Le rendu du câble utilise les laisses natives
|
||||
Minecraft ; les modèles de poulie référencent les textures natives fer
|
||||
et béton noir de Mojang/Microsoft. Aucun JAR 26.2 n’est redistribué.
|
||||
|
||||
## Insectes beta.245
|
||||
|
||||
Les 47 sprites 16 × 16 d’**Animal Crossing: Wild World** ont été fournis par
|
||||
le créateur dans son dossier `insect`, le 8 octobre 2026. Ils sont conservés
|
||||
octet pour octet dans `assets/sanctuary/textures/insect/`. **Nintendo** reste
|
||||
titulaire des éléments graphiques du jeu ; la licence GPL du code Sanctuary
|
||||
ne leur attribue pas une licence libre. Les noms des fichiers fournis et
|
||||
leurs SHA-256 sont consignés dans [l’inventaire](docs/insects-assets.json).
|
||||
|
||||
Les habitats, mois, horaires et pics suivent la
|
||||
[liste Nookipedia Wild World](https://nookipedia.com/wiki/Bug/Wild_World),
|
||||
consultée le 8 octobre 2026 (révision 1240938). Les adaptations Minecraft,
|
||||
le calendrier numérique et les limites sont décrits dans
|
||||
[le ticket INSECT-01](docs/insects-wild-world-beta245.md).
|
||||
Le modèle du filet référence les textures natives de Minecraft sans les copier.
|
||||
|
||||
## Sons des insectes beta.248
|
||||
|
||||
Neuf extraits naturels de Wikimedia Commons et Freesound sont fournis dans
|
||||
`assets/sanctuary/sounds/insects/`. Ils conservent leurs licences propres,
|
||||
distinctes du code GPL : CC0, CC BY 2.1 Japan, CC BY 3.0, CC BY 4.0 et
|
||||
CC BY-SA 3.0. L’adaptation de la cigale du soir
|
||||
reste sous CC BY-SA 3.0. Auteurs : ISAKA Yoji (Cory), Σ64,
|
||||
あおもりくま (aomorikuma), ClaudeDebussy, YaCoUYaCoU, AmberdeMeillon et IanFSA.
|
||||
Découpes, filtrage, réduction de bruit, volume, mono OGG et fondus par Sanctuary.
|
||||
Les [crédits et liens de licences](docs/insect-audio-credits.md) et
|
||||
[l’inventaire des fichiers](docs/insect-audio-assets.json) sont aussi inclus
|
||||
dans le JAR sous `licenses/Insect-Audio-CREDITS.md` et
|
||||
`licenses/Insect-Audio-ASSETS.json`. Les trois fichiers Freesound utilisent
|
||||
leurs aperçus publics de haute qualité ; la cigale du soir utilise la
|
||||
conversion MP3 publique de Commons. Aucun enregistrement d’Animal Crossing
|
||||
n’est inclus. L’identification biologique du grillon reste non précisée ;
|
||||
la courtilière européenne sert d’analogue sonore.
|
||||
|
||||
+25
-3
@@ -3,8 +3,23 @@ plugins {
|
||||
id 'net.fabricmc.fabric-loom' version "${loom_version}" apply false
|
||||
}
|
||||
|
||||
tasks.named('build') { dependsOn(':sanctuary:build', ':demeure:build', ':jei:build', ':sanctuary-test:build') }
|
||||
tasks.named('check') { dependsOn(':sanctuary:check', ':demeure:check', ':jei:check', ':sanctuary-test:check', 'verifyPack') }
|
||||
allprojects {
|
||||
repositories {
|
||||
exclusiveContent {
|
||||
forRepository { maven { url = 'https://api.modrinth.com/maven' } }
|
||||
filter { includeGroup 'maven.modrinth' }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named('build') { dependsOn(':sanctuary:build', ':jei:build', ':sanctuary-test:build') }
|
||||
tasks.named('check') { dependsOn(':sanctuary:check', ':jei:check', ':sanctuary-test:check', 'verifyPack') }
|
||||
|
||||
tasks.register('verifyServerUpdater', Exec) {
|
||||
group = 'verification'
|
||||
commandLine('python3', 'scripts/test_server_runtime.py')
|
||||
}
|
||||
tasks.named('check') { dependsOn('verifyServerUpdater') }
|
||||
|
||||
tasks.register('verifyPack', Exec) {
|
||||
group = 'verification'
|
||||
@@ -15,10 +30,17 @@ tasks.register('verifyPack', Exec) {
|
||||
tasks.register('assemblePack', Exec) {
|
||||
group = 'distribution'
|
||||
description = 'Assemble a local packwiz pack including the built Sanctuary mod.'
|
||||
dependsOn(':sanctuary:build', 'verifyPack', 'assembleResourcePack', 'assembleResourceTemplate')
|
||||
dependsOn(':sanctuary:build', ':jei:build', 'verifyPack', 'assembleResourcePack', 'assembleResourceTemplate')
|
||||
commandLine('python3', 'scripts/pack.py', 'assemble')
|
||||
}
|
||||
|
||||
tasks.register('assembleServerPack', Exec) {
|
||||
group = 'distribution'
|
||||
description = 'Build the Linux server kit and verify its packwiz profile.'
|
||||
dependsOn('assemblePack')
|
||||
commandLine('python3', 'scripts/server_pack.py')
|
||||
}
|
||||
|
||||
tasks.register('verifyResourcePack', Exec) {
|
||||
group = 'verification'
|
||||
description = 'Verify the versioned Sanctuary texture sources and their release hashes.'
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
# beta.144 — Code d’accès à la création
|
||||
|
||||
Document historique de la PR de Chris. Le contrat de reprise ci-dessous est
|
||||
remplacé par [beta.166](inscription-web-beta166.md), notamment pour les codes
|
||||
consommés et les déconnexions.
|
||||
|
||||
Le site accepte la candidature, whitelist le pseudo et envoie un code `SANC-XXXX-XXXX`.
|
||||
Hello World demande ce code avant de créer le personnage. Le client ne parle pas
|
||||
au site. Seul le serveur appelle l’API, avec le jeton `SANCTUARY_API_TOKEN`.
|
||||
|
||||
Sans ces réglages, Hello World reste celui de beta.143 : biographie, couleur et
|
||||
familier, sans code. Dès que l’URL et le jeton sont présents, un nouveau
|
||||
personnage exige un code reconnu. Un habitant déjà enregistré entre sans écran.
|
||||
|
||||
## Réglage serveur
|
||||
|
||||
Variables d’environnement, ou fichier `config/sanctuary/access.json` si une
|
||||
variable manque :
|
||||
|
||||
```json
|
||||
{"appUrl":"https://exemple.sanctuary","token":"..."}
|
||||
```
|
||||
|
||||
`appUrl` est l’origine du site, sans barre finale. Le serveur appelle
|
||||
`POST {appUrl}/api/v1/access-codes/verify` puis `redeem`. Le jeton n’est pas
|
||||
écrit dans les logs, le client ou le pack. Une URL ou un jeton illisible ferme
|
||||
la création : aucun personnage n’est inventé hors ligne.
|
||||
|
||||
## Parcours
|
||||
|
||||
1. La whitelist laisse passer le pseudo. L’écran s’ouvre tant que l’UUID n’a pas
|
||||
d’habitant.
|
||||
2. Le joueur saisit le code. L’affichage du champ et de l’exemple utilise
|
||||
l’alphabet galactique standard (`minecraft:alt`, la police de la table
|
||||
d’enchantement). La valeur envoyée reste le texte tapé. Un format complet
|
||||
déclenche `verify`, pas chaque frappe. « Code reconnu » n’écrit rien.
|
||||
3. Confirmer envoie le code de la session, la biographie, la couleur et le
|
||||
familier. Le pseudo envoyé au site est celui de la session.
|
||||
4. `redeem` répond `redeemed` avec `discord_id` : le lien est enregistré, puis
|
||||
l’habitant est créé. Les connexions suivantes sautent l’écran.
|
||||
5. Erreur, site injoignable ou jeton refusé : le joueur reste sur Hello World.
|
||||
|
||||
Une déconnexion avant `redeemed` ne consomme pas le code. Si le site a répondu
|
||||
`redeemed` et que l’écriture de l’habitant est interrompue, le lien Discord
|
||||
reste dans `data/sanctuary-access.json` (`pending`, schéma 1, graine du monde).
|
||||
La confirmation suivante termine le personnage sans rappeler `redeem`.
|
||||
|
||||
Si le code est déjà consommé et que le site ne renvoie plus `discord_id`, le
|
||||
joueur reste bloqué avec un message de reprise. Le site doit alors renvoyer
|
||||
`minecraft_username` et `discord_id` pour le même pseudo. Le mod accepte cette
|
||||
réponse, que `valid` soit vrai ou faux, et finit la création.
|
||||
|
||||
Le registre des habitants ne change pas. Le Discord est un fichier à part.
|
||||
Un fichier illisible est conservé et refuse l’accueil.
|
||||
|
||||
## Limites
|
||||
|
||||
Le gel dans le monde n’est pas ajouté : Hello World reste avant l’entrée, comme
|
||||
aujourd’hui. Inventaire, commandes et dimensions ne sont pas accessibles tant
|
||||
que l’habitant n’existe pas. La whitelist RCON reste celle du site. Un pseudo
|
||||
ajouté à la main, sans code, voit l’écran sans pouvoir le valider.
|
||||
@@ -0,0 +1,55 @@
|
||||
# Actualisation des tests — socle beta.165
|
||||
|
||||
Suite à l’audit des 23 échecs. Changements limités aux GameTests et à leur
|
||||
préparation ; aucun changement des règles, des données de production ou de
|
||||
format de monde. Pas de nouvelle version binaire : le laboratoire reste beta.165.
|
||||
|
||||
## Scénarios corrigés
|
||||
|
||||
- Placement : joueur à portée réelle, sans occuper la cellule visée. Les compteurs,
|
||||
événements, empreintes et les huit diamants de la tombe restent vérifiés.
|
||||
- Inventaires : données d’ouverture explicites pour l’atelier d’argile et le
|
||||
multibloc, avec maintien de la boucle sur toutes les entrées du registre.
|
||||
- Familiers : achat de l’accès puis commande serveur de mode travail ; le helper
|
||||
vérifie aussi que le mode combat n’accorde pas les anciens passifs. Les bonus,
|
||||
consommation de ressources et annulations restent vérifiés.
|
||||
- Ancienne invulnérabilité : test des coups amicaux sans dégâts, du K.-O. sur
|
||||
dégât létal et de la conservation de l’œuf. Le poisson terrestre utilise son
|
||||
profil actuel et garde sa vérification de transition aquatique.
|
||||
- Permissions : accès public à l’introduction, restrictions opérateur sur names
|
||||
et community admin. Catalogue recompte les 67 documents, 2042 recettes,
|
||||
1780 items, 1374 blocs et 1937 identifiants distincts. Hauteur actuelle 640.
|
||||
- Dragon : cycle natif tickNonPassenger (commonTick + tick), compteur d’entité
|
||||
contrôlé, déplacement/altitude/collision conservés.
|
||||
- Dalle/coffre : visée à portée du dessus réel, sans collision du joueur avec la
|
||||
surface à bâtir. Les assertions de fusion, collisions et contenu restent.
|
||||
- Hydrologie : les ouvertures OUTLET doivent être des coupes sans source ni
|
||||
sédiment, appartenant à un déversement terminal déclaré. Les autres cellules
|
||||
conservent les contrôles de support naturel.
|
||||
|
||||
## Diagnostics indépendants
|
||||
|
||||
- [Construction](audit-construction-beta165.md)
|
||||
- [Dragon](audit-dragon-beta165.md)
|
||||
- [Berges](audit-berges-beta165.md)
|
||||
|
||||
## Validation
|
||||
|
||||
Premier rejeu ciblé : **81/81 tests obligatoires passent** en 1 min 45 s.
|
||||
Journal : `build/test-refresh-focused.log`.
|
||||
Groupes : inventory, inventoryflow, companions, refonte, accessories, graves,
|
||||
collections, progression, demeure. Ce rejeu valide notamment les nouvelles
|
||||
assertions atteintes et le déplacement du dragon. Construction et hydrologie
|
||||
sont réservées au rejeu complet suivant.
|
||||
|
||||
`./gradlew check build --continue -PsanctuaryQuickTests=true` : **BUILD SUCCESSFUL**
|
||||
en 7 min 11 s. **252/252 GameTests obligatoires réussis**, zéro échec, puis
|
||||
les autres contrôles de `check` terminent avec succès.
|
||||
Journal : `build/test-refresh-full.log`.
|
||||
|
||||
Les quatre cas analysés par les agents passent dans ce rejeu, sans modification
|
||||
production. Le patch supplémentaire de parois OUTLET proposé à titre conditionnel
|
||||
n’a pas été appliqué : aucune assertion correspondante n’a échoué.
|
||||
Ce résultat porte sur la suite configurée ci-dessus ; aucune stabilité statistique
|
||||
sur plusieurs graines, plateformes ou répétitions n’est revendiquée.
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# WG-ECO-180 — grands bassins et donjon minier
|
||||
|
||||
Suite du retour beta.179 : relief et écologie générale validés ; les petites
|
||||
mares répétées, l’absence de cerisiers et les mines rectilignes sont à corriger.
|
||||
Branche `codex/cave-dungeon-beta180`, nouveau preset de labo
|
||||
`sanctuary_test:adventure_ecology_v1`, profil `adventure`, graine 42.
|
||||
Aucune migration : uniquement un nouveau solo, vue 32, commandes activées.
|
||||
|
||||
Cibles : grands bassins irréguliers réunis par débordements ; arrêt des petites
|
||||
mares et des cornichons hors de l’eau ; trois cerisiers sur l’île principale,
|
||||
un récif cherry et un récif automnal (autres récifs nus, relief conservé).
|
||||
Un donjon ramifié avec salles, boucles, dénivelés, spawners et wagonnets à butin,
|
||||
plus un éclairage ponctuel. La cabane et les habitats souterrains sont conservés.
|
||||
|
||||
Implémentation : deux systèmes de grands bassins sur des sols de cavités,
|
||||
berges irrégulières préservant les reliefs émergents, fonds suivant la roche et
|
||||
bassins inférieurs quatre blocs plus bas. Les anciennes petites mares sont
|
||||
exclues de ce preset. Les trois cerisiers sont réservés et placés avec la
|
||||
fonction native ; les récifs 0 et 1 deviennent cherry et automne, les autres
|
||||
restent nus. La géométrie, les minerais et l’espace ISS sont conservés.
|
||||
|
||||
Donjon : 13 salles, embranchements et boucles, cinq spawners natifs
|
||||
(squelettes et araignées des cavernes pour cette graine), quatre wagonnets-coffres.
|
||||
Butin différé natif, contenant diamants, émeraudes, `sanctuary:ruby` et
|
||||
`sanctuary:sapphire`, plus des provisions. Pas d’emblème : clarification du
|
||||
créateur, il parlait bien des gemmes dans le butin. Une lanterne tous les
|
||||
quatre portiques environ, éclairage sur tonneau dans les caches.
|
||||
|
||||
Contrôle `solo180c`, graine 42 : trois vrais troncs de cerisiers vérifiés,
|
||||
deux surfaces d’eau connectées de 1 232 et 1 221 blocs, passages praticables,
|
||||
spawners et tirage des quatre gemmes vérifiés. La réouverture avec fluides
|
||||
actifs confirme les deux chutes d’eau ; chargements forcés retirés avant arrêt.
|
||||
Dernière correction ensuite : support des lanternes des caches. Contrôle
|
||||
final `solo180d` réussi, quatre wagonnets avec leur table de butin conservée
|
||||
en sauvegarde. Suite `check build assemblePack assembleTestPack` réussie
|
||||
(11 min 26 s, journal local `build/adventure180-check-build.log`).
|
||||
|
||||
Points de visite : cerisiers près de (38,301,101), grand bassin vers
|
||||
(-192,198,32), donjon vers (120,145,48), récifs thématiques aux mêmes
|
||||
emplacements que les récifs précédents. Nouveau solo `visite180/adventure/42`,
|
||||
commandes activées, vue 32, simulation 12, créatif et difficulté normale.
|
||||
Les premières proportions restent à juger en jeu ; aucune ancienne sauvegarde
|
||||
ni distribution personnelle modifiée.
|
||||
|
||||
Ouverture confirmée le 30 septembre à 00:28 : Vulkan sur Apple M1,
|
||||
KokaLab connecté, distance serveur 32 et simulation 12.
|
||||
@@ -0,0 +1,180 @@
|
||||
# SHADER-255 — Feuilles, menus et rayons Ambiance
|
||||
|
||||
Socle beta.254 (`1a00a52`), branche `codex/ambiance-leaves-menus-beta255`,
|
||||
Minecraft 26.3, Java 25, livraison locale beta.255 vérifiée.
|
||||
Demande du 9 octobre 2026 : remplacer le bruit des ombres de feuilles par
|
||||
leurs textures, conserver un résultat visible en Moyen et Faible, ranger
|
||||
les réglages actuels dans des sous-menus et permettre l'import/export.
|
||||
Retour pendant les essais : les sun shafts activés restent trop discrets ;
|
||||
leur visibilité en Moyen fait également partie de cette livraison.
|
||||
Les meilleurs dégradés du ciel sont réservés à la passe suivante.
|
||||
|
||||
## Rendu des feuilles
|
||||
|
||||
La passe de profondeur utilise les faces du modèle natif des feuilles,
|
||||
leurs UV, rotations et offsets. Elle lit l'alpha de l'atlas de blocs chargé,
|
||||
au niveau zéro et au seuil de découpe 0,5 du terrain natif. Les texels
|
||||
transparents ne déposent ni profondeur ni marque de feuillage. Un obstacle
|
||||
opaque plus loin conserve son ombre. Le motif de bruit est supprimé.
|
||||
Les feuilles superposées contribuent selon leurs trous réels, sans objectif
|
||||
artificiel de 22 % d'opacité par surface. Plusieurs faces peuvent fermer
|
||||
un passage suivant l'angle du soleil ; une canopée serrée ne garantit donc
|
||||
pas des trous éclairés dans chaque zone observée.
|
||||
|
||||
L'atlas est emprunté au jeu : aucun duplicata de ses textures, lecture GPU
|
||||
côté production ou analyse CPU des PNG par image. Les UV sont ajoutés au
|
||||
maillage borné des casteurs : 24 octets par sommet contre 16 auparavant,
|
||||
toujours sous la limite de 96 Mio du cache. Une ressource/modèle rechargé
|
||||
reconstruit ce cache. Un atlas de feuilles animé impose un redessin au tick ;
|
||||
les textures statiques conservent la réutilisation de beta.254.
|
||||
|
||||
Moyen conserve sa carte maximale 2048², sa grille 16 pixels/bloc et sa portée
|
||||
64 blocs. Faible passe de 8 à 16 pixels/bloc et de 1024² à 2048² pour préserver
|
||||
les détails ; sa portée reste 32 blocs et ses effets lourds restent coupés.
|
||||
Ses deux textures de carte passent de 5 à 20 Mio, hors allocations du reste
|
||||
du rendu. Les profils ne sont pas imposés aux réglages Personnalisé existants.
|
||||
Patate conserve ses effets lourds désactivés. Le SSR reste inclus en Moyen.
|
||||
|
||||
## Menus et profils portables
|
||||
|
||||
Options → Shaders ouvre **Ambiance**. Le profil et l'interrupteur restent à
|
||||
l'accueil. Les six catégories natives FR/EN sont Performance, Caméra et effets,
|
||||
Éclairage, Atmosphère, Matériaux et reflets, Eau. Éclairage contient un
|
||||
sous-menu Ombres. Tous les réglages antérieurs restent disponibles ; modifier
|
||||
un effet passe en Personnalisé et conserve le budget choisi. Retour/Echap
|
||||
reconstruit le parent pour actualiser le profil affiché.
|
||||
|
||||
L'accueil propose **Importer un profil** et **Exporter un profil**. Les fichiers
|
||||
UTF-8 `.txt` contiennent des lignes `clé=valeur`, un identifiant de format
|
||||
Ambiance et les réglages complets, y compris le budget Personnalisé et les
|
||||
préférences d'eau pour chaque type de monde. La valeur `default` restaure
|
||||
le défaut du type de monde, même si l'installation destinataire a un choix
|
||||
explicite différent. Le dossier proposé est
|
||||
`config/ambiance-profiles`. Le joueur peut saisir un nom ou un chemin complet,
|
||||
ouvrir ce dossier, choisir un fichier existant dans la liste ou glisser un
|
||||
fichier extérieur dans l'écran d'import. Un remplacement de fichier existant
|
||||
utilise la confirmation native. Les réglages importés sont appliqués immédiatement.
|
||||
|
||||
L'import valide toutes les clés, types et plages avant de sauvegarder puis
|
||||
remplacer la configuration active. Une erreur laisse les préférences actives
|
||||
et persistées intactes. Les fichiers d'un autre shader ne sont pas des profils
|
||||
Ambiance ; les clés de Complementary ne commandent pas son moteur Vulkan.
|
||||
Aucune dépendance Iris n'est ajoutée.
|
||||
|
||||
Organisation inspirée des catégories du
|
||||
[fichier officiel Complementary](https://github.com/ComplementaryDevelopment/ComplementaryReimagined/blob/main/shaders/shaders.properties),
|
||||
et fichiers texte comme dans le
|
||||
[guide Iris](https://github.com/IrisShaders/Iris/blob/26.1/docs/guide.md).
|
||||
Le chantier concerne l'organisation des effets existants, conformément à la
|
||||
précision du créateur ; il n'ajoute pas les nuages, AA ou fonctions absentes.
|
||||
|
||||
## Visibilité du volume solaire
|
||||
|
||||
Les captures activées de la première passe confirment le retour du créateur :
|
||||
le signal du volume existe mais reste trop faible à l'œil. Le gain de diffusion
|
||||
dans l'air clair passe de 0,018 à 0,16 ; Moyen conserve son intensité de 25 %,
|
||||
ses huit segments et une seule lecture de profondeur par segment. Aucun
|
||||
échantillon, passe, carte ou maillage supplémentaire n'est ajouté. La courbe
|
||||
de compression de la lumière et les règles d'occlusion restent actives.
|
||||
|
||||
Le contrôle visuel cible désormais le contraste du premier plan au 95e
|
||||
percentile avec le vrai budget Moyen, plutôt qu'une simple somme positive
|
||||
sur tous les pixels. Les validations salle fermée, feuilles, retour de caméra,
|
||||
météo et OFF/zéro passent avec ce gain. Moyen atteint 10 niveaux de luminance
|
||||
au 95e percentile du premier plan à 25 %, avec son budget de huit segments
|
||||
et une lecture. Le créateur retient la capture avec tous les effets de Moyen.
|
||||
[Capture native retenue](../build/leaf255/0002_sanctuary-beta142-shader-shafts255-medium-combined.png).
|
||||
|
||||
## Coût mesuré
|
||||
|
||||
RX 9070 XT, Ryzen 7 3700X, Vulkan natif, 1920 × 1080, sans VSync ni limite
|
||||
FPS. Socle beta.254 exact et candidat beta.255 : même monde plat neuf graine
|
||||
122, sol blanc, canopée 41 × 41 de trois couches, même caméra. Deux séries
|
||||
avec ordre Faible/Moyen inversé, 60 ticks de stabilisation puis 100 ticks
|
||||
mesurés par profil. Mesure finale incluant le volume solaire retenu ; moyenne
|
||||
des deux médianes de `renderFrame` :
|
||||
|
||||
| Soleil | Profil | beta.254 | beta.255 | Écart |
|
||||
| --- | --- | ---: | ---: | ---: |
|
||||
| Fixe | Faible | 0,505 ms | 0,540 ms | +7,0 % |
|
||||
| Fixe | Moyen | 1,500 ms | 1,536 ms | +2,4 % |
|
||||
| Mobile | Faible | 0,502 ms | 0,563 ms | +12,1 % |
|
||||
| Mobile | Moyen | 1,509 ms | 1,556 ms | +3,1 % |
|
||||
|
||||
Cette passe améliore la fidélité et ne constitue pas un gain de performance.
|
||||
Le coût supplémentaire mesuré est de 0,035–0,061 ms en Faible et de
|
||||
0,035–0,047 ms en Moyen sur cette scène. La carte plus grande de Faible
|
||||
réduit aussi la tolérance angulaire du cache : les redessins au soleil
|
||||
mobile passent de 174–180 à 341–357 dans ces séries. Moyen reste à
|
||||
347–348 contre 349–351 sur le socle.
|
||||
Soleil fixe : aucun redessin pendant les mesures, dans les deux versions.
|
||||
|
||||
Ces durées incluent le temps CPU de rendu, soumission et attentes ; elles
|
||||
n'isolent pas le GPU et ne se convertissent pas en FPS de jeu. Elles ne
|
||||
prédisent pas toutes les forêts, packs de ressources ou distances. La portée,
|
||||
la grille et le budget de géométrie continuent de limiter les ombres lointaines.
|
||||
[Mesures originales](../build/leaf255/comparison.json).
|
||||
|
||||
## Validation
|
||||
|
||||
`check build assemblePack` réussi avec `sanctuaryFocusedTests=menus` et
|
||||
`sanctuaryAtlasOnly=true`. Compilation des GameTests clients réussie sur Java 25.
|
||||
Build final : 137 tâches, 2 min 52 ; quatre GameTests serveur requis et contrôles
|
||||
purs réussis. Commande de livraison :
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=menus -PsanctuaryAtlasOnly=true
|
||||
```
|
||||
|
||||
Validation graphique exclusivement Vulkan, dans
|
||||
`%LOCALAPPDATA%\SanctuaryDev\leaf255-*` sur Windows,
|
||||
à part de Prism et de ses sauvegardes ; aucun monde existant modifié.
|
||||
|
||||
- Oracle de textures contrôlées : 398–400 points conformes sur 400, avec
|
||||
masques complémentaires, en Faible et Moyen. Les trous éclairés et ombres
|
||||
suivent le fichier chargé ; captures des textures natives également réalisées.
|
||||
- Rechargement de ressources, cache statique et alpha animé validés
|
||||
(`LEAF255_ACCURACY_PASS`, variation lumineuse animée 70,06).
|
||||
- Parcours FR/EN, six catégories et Ombres, retour au parent, réglage clavier,
|
||||
export par bouton, import par liste et glisser-déposer validés. Le budget
|
||||
Personnalisé survit à l'export/import et à la relecture disque ; les choix
|
||||
d'eau explicites et par défaut sont restaurés sur une configuration différente.
|
||||
Fichiers invalides ou étrangers rejetés sans modifier les préférences.
|
||||
- Profils beta.254, SSR de Moyen, cache, déplacements, éditions et soleil
|
||||
validés par `SHADER254_PROFILES_PASS`.
|
||||
- Suite historique ombres/effets validée : soleil/lune, contours opaques,
|
||||
casteurs hors écran, éditions, stabilité, rechargement, contours, bloom,
|
||||
minerais, lens flare, SSGI rouge/bleu et occlusion, balayage de 12 blocs,
|
||||
gros plans, PBR, redimensionnement et changements de dimension.
|
||||
`PIXEL_SHADOWS122_CLIENT_PASS`, `EMISSIVE131_PASS`, `SSGI133_PASS` et
|
||||
`PBR134_PASS` présents ; exécution réussie en 9 min 50.
|
||||
- Volume solaire final : `SUNSHAFT255_VISIBILITY_PASS`, `SUNSHAFT137_PASS`
|
||||
et `SUNSHAFT138_WEATHER_PASS`, exécution réussie en 3 min 43.
|
||||
Les pièces fermées restent protégées et le feuillage atténue les rayons.
|
||||
Énergie normalisée : clair 0,0333, brume 0,1839, pluie 0,0223, orage 0,0100.
|
||||
- Restauration complète des profils, choix d'eau explicites et par défaut compris,
|
||||
validée par `SHADER_OPTIONS255_PASS` après le correctif de portabilité.
|
||||
- Mesure finale canopée : `LEAF255_PERF_PASS`, `LEAF255_PASS`, build natif
|
||||
réussi en 1 min 41. Toutes les tâches de test temporaires sont supprimées.
|
||||
[Reçu de validation et empreintes](../build/leaf255/validation.json).
|
||||
|
||||
Deux corrections de tests : le nouveau parcours clavier utilise les constantes
|
||||
natives SDL de 26.3 après un premier essai avec des codes inadaptés, et la
|
||||
canopée historique n'impose plus une proportion de trous issue du bruit
|
||||
procédural. L'oracle contrôlé ci-dessus vérifie désormais les trous contre la
|
||||
texture réellement chargée. Les contrôles isolent les effets pour mesurer
|
||||
leur signal ; les captures combinées et le profil Moyen sont aussi vérifiés.
|
||||
|
||||
## Artefact local
|
||||
|
||||
[Sanctuary-beta.255.mrpack](../build/Sanctuary-beta.255.mrpack), 16 494 496 octets.
|
||||
Minecraft 26.3, Fabric Loader 0.19.5, JAR embarqué identique au JAR construit ;
|
||||
classes d'import/export, libellés FR/EN et shader utilisant l'alpha vérifiés.
|
||||
|
||||
SHA-256 du pack :
|
||||
`71484981b3a11373596f1178182b812500a8f63f3180efc8338c8470408bdd2c`.
|
||||
SHA-256 du JAR :
|
||||
`62a3527ffdf2a5cf07ba2d42aad242e545d3556daecaca3ed31ba96eac49a492`.
|
||||
Le canal public et l'installation personnelle ne sont pas mis à jour par cette
|
||||
livraison locale. Les dégradés du ciel restent à traiter lors de la passe suivante.
|
||||
@@ -0,0 +1,203 @@
|
||||
# SHADER-256 — Volume solaire et chutes de FPS
|
||||
|
||||
Socle beta.255 (`2a4dcec`), branche `codex/ambiance-volume-performance-beta256`.
|
||||
Livré localement en beta.256, Minecraft 26.3, Java 25, Vulkan exclusivement.
|
||||
|
||||
Demande du 9 octobre 2026 : supprimer les copies espacées des casteurs dans
|
||||
les sun shafts, conserver des rayons détaillés à 10 % et rendre leur portée
|
||||
réglable. Préserver les belles ombres de surface et le SSR de Moyen.
|
||||
Diagnostiquer les chutes à 49 FPS en Personnalisé, vue 32 chunks, monde Grand,
|
||||
sur Ryzen 7 3700X / RX 9070 XT à 1080p. Les comparaisons utilisent un plafond
|
||||
Java de 8 Gio ; ce plafond ne simule pas une machine ayant 8 Gio physiques.
|
||||
Le ciel est réservé à une passe ultérieure.
|
||||
|
||||
## Contrat de vérification
|
||||
|
||||
- Monde neuf Grand, graine 0, génération actuelle inchangée, vues terrain,
|
||||
vide et trajet de caméra reproductible ; aucun monde personnel modifié.
|
||||
- Temps entre images, temps CPU de rendu et trace JFR distingués. Ne pas
|
||||
convertir les seuls temps de soumission CPU en FPS.
|
||||
- Comparaison sans effets, ombres seules, volume seul, Moyen et Personnalisé.
|
||||
- Carte de profondeur réutilisée au soleil lent ; modifications des blocs,
|
||||
déplacements, changements de lumière et textures animées invalident le cache.
|
||||
- Contrôles natifs du détail, de la subtilité, de l'occlusion et des contours,
|
||||
plus retour caméra, OFF/zéro, pluie, rechargement et tailles impaires.
|
||||
- Sodium : disponibilité exacte 26.3/Fabric et essai natif Vulkan avant toute
|
||||
inclusion dans le pack. Pas de garantie de 144/240 FPS sans mesure réelle.
|
||||
|
||||
## Changements
|
||||
|
||||
Le volume utilise un pas constant en blocs, un filtrage des comparaisons de
|
||||
profondeur et une reconstruction bilatérale. Au bord d’une silhouette trop
|
||||
fine pour les pixels réduits, l’intégration reprend la profondeur du pixel
|
||||
réel. Il n’y a pas d’historique temporel. L’intensité neuve et les profils
|
||||
explicites sont à 10 % ; les valeurs explicites existantes sont conservées.
|
||||
|
||||
Portée indépendante de 8, 16, 24, 32, 48 ou 64 blocs et densité de 64, 96,
|
||||
128 ou 192 échantillons par 32 blocs dans Atmosphère, FR/EN et import/export.
|
||||
Moyen utilise 32 blocs / 96 ; Élevé 48 / 128 ; Ultra 48 / 192. La portée
|
||||
effective reste bornée par les ombres. Réduire la portée réduit le nombre
|
||||
d’échantillons ; réduire l’intensité seule ne réduit pas ce coût.
|
||||
Aucun profil automatique ne sélectionne 256 blocs. Cette valeur reste
|
||||
manuelle et porte la mention expérimentale pour les ombres, le PBR, le SSR
|
||||
et les contours. Le SSR de Moyen reste activé. Le budget automatique des émetteurs du Custom
|
||||
historique est également limité à 128 blocs, au lieu de 256.
|
||||
|
||||
Les bornes des casteurs sont alignées sur la cellule de 16 blocs de la carte
|
||||
d’ombres : un déplacement à l’intérieur ne reconstruit plus ses bordures.
|
||||
Le cache des formes inclut les états ignorés et évite les recherches répétées
|
||||
de tags avant un accès déjà mémorisé. Les modèles et l’alpha des vraies
|
||||
textures de feuilles restent ceux de beta.255.
|
||||
|
||||
Les index des chunks et sections des ombres, du bloom et du PBR utilisent
|
||||
des clés entières sans allocation de `Long` à chaque recherche. Les quatre
|
||||
constructeurs progressifs (ombres, PBR, émission et volume des lumières)
|
||||
disposent chacun d’une tranche CPU de 0,5 ms en Patate/Faible/Moyen, 1 ms en
|
||||
Élevé/Ultra/Personnalisé, au lieu de 2–3 ms. Le travail reprend à l’image
|
||||
suivante et les meshes existants restent affichés pendant leur remplacement.
|
||||
Il s’agit d’un budget souple : une opération individuelle ou un transfert
|
||||
GPU ne peut pas être interrompu. La qualité géométrique et les échantillons
|
||||
GPU ne changent pas ; une reconstruction initiale peut prendre plus d’images.
|
||||
|
||||
La trace JFR de beta.255 indique également un recensement de toutes les
|
||||
sections chargées à chaque tick serveur, même sans demande de diagnostic.
|
||||
`TerrainCensus` démarre maintenant au premier relevé explicite. Les commandes
|
||||
conservent le budget progressif, les instantanés immuables et la lecture sans
|
||||
chargement de chunks. Après activation, le recensement continue comme avant ;
|
||||
son parcours actif reste une limite à optimiser séparément.
|
||||
|
||||
## Sodium et émission
|
||||
|
||||
[Sodium 0.9.2+mc26.3](https://modrinth.com/mod/sodium/version/bAZQdGpg) est fixé
|
||||
pour Fabric 26.3 dans le pack client, avec le SHA-512 du JAR officiel. Il est
|
||||
séparé du JAR Sanctuary et absent du serveur. Un lancement Vulkan seul ne
|
||||
suffit pas à établir que tous les effets fonctionnent.
|
||||
|
||||
Le test ciblé reproduit l’absence de brillance : zéro pixel émissif, même
|
||||
avec les minerais exposés et l’intensité à 100 %. Sodium vide la liste
|
||||
vanilla `visibleSections`, utilisée par les émetteurs et les surfaces PBR.
|
||||
`SurfaceSections` utilise avec Sodium la disponibilité native des sections,
|
||||
la caméra, l’arbre d’occlusion de Sodium (`isBoxVisible`) et les chunks déjà
|
||||
chargés dans la portée locale de l’effet. Les sections cachées ne deviennent
|
||||
pas des meshes PBR/émissifs simplement parce qu’elles sont dans le frustum.
|
||||
L’adaptateur optionnel est compilé contre la version exacte, sans embarquer
|
||||
Sodium dans le JAR Sanctuary.
|
||||
Le parcours vanilla existant est conservé pour le mod autonome. L’occlusion
|
||||
des fragments reste fondée sur la profondeur réelle du terrain.
|
||||
|
||||
Un essai natif sans Sodium vérifie aussi les profils et le SSR en Moyen.
|
||||
|
||||
Après correction, le contrôle Vulkan avec Sodium compte 14 649 pixels
|
||||
émissifs et valide les cœurs indépendants, les halos OFF/zéro, l’intensité,
|
||||
le rayon, les minerais couverts, les modifications en direct, le rechargement,
|
||||
les torches, glowstone, lampes, lave et soleil. Captures et journaux dans
|
||||
`build/volume256/`.
|
||||
|
||||
## Mesures sur le monde Grand
|
||||
|
||||
Essais Windows sur Ryzen 7 3700X / RX 9070 XT, Vulkan 1.4.315,
|
||||
pilote AMD 25.10.30, Java 25.0.1, `-Xmx8G`, 1920 × 1080, VSync désactivée,
|
||||
FPS non limités. Monde neuf `sanctuary:island231_large`, graine 0, génération
|
||||
231 existante ; distance d’affichage 32 chunks, simulation 5. Plus de 3 000
|
||||
chunks chargés avant mesure, puis 400 ticks de préparation. Terrain à
|
||||
(-40, 264, 40), vue vide depuis (560, 264, 0), trajet de 240 blocs en
|
||||
spectateur, positions espacées de 6 blocs toutes les quatre ticks.
|
||||
|
||||
Chaque phase dure environ huit secondes. Les quinze phases sont exécutées
|
||||
dans l’ordre sans effets, ombres, rayons, Moyen, Personnalisé, avec les mêmes
|
||||
positions et le même soleil immobile. Les FPS ci-dessous sont calculés sur
|
||||
les intervalles entre images effectivement rendues ; les durées CPU de
|
||||
rendu sont consignées séparément. Le p95 est le temps sous lequel se
|
||||
trouvent 95 % des images. Ce ne sont pas des mesures GPU isolées.
|
||||
|
||||
| Profil / vue | beta.255 FPS moyens | beta.256 FPS moyens | p95 avant → après |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| Moyen, terrain immobile | 368,0 | 492,2 | 3,58 → 2,51 ms |
|
||||
| Moyen, déplacement | 135,5 | 321,0 | 11,65 → 6,04 ms |
|
||||
| Moyen, vide | 1 385,8 | 1 061,4 | 0,82 → 1,17 ms |
|
||||
| Personnalisé, terrain immobile | 133,0 | 296,9 | 10,21 → 5,30 ms |
|
||||
| Personnalisé, déplacement | 72,3 | 113,0 | 30,22 → 15,27 ms |
|
||||
| Personnalisé, vide | 1 317,6 | 1 012,3 | 0,85 → 1,23 ms |
|
||||
|
||||
La référence est beta.255 sans Sodium, le candidat beta.256 avec Sodium et
|
||||
les effets rétablis. La comparaison mesure l’ensemble de cette livraison,
|
||||
y compris le recensement devenu paresseux, pas une optimisation isolée du
|
||||
shader ni le seul gain de Sodium. Sur cette scène le déplacement progresse
|
||||
de 137 % en Moyen et de 56 % en Personnalisé. La vue vide augmente de
|
||||
0,35–0,38 ms au p95 avec le nouvel ensemble, tout en dépassant 1 000 FPS.
|
||||
La référence avec Sodium avant correction contient des effets manquants :
|
||||
ses FPS ne constituent pas une comparaison à rendu équivalent.
|
||||
|
||||
Le Personnalisé de mesure est un cas lourd reproductible : budget Custom,
|
||||
ombres à 128 blocs, PBR/SSR à 64, SSGI et rayons à 35 %, portée solaire 32,
|
||||
densité 96. Il ne reproduit pas tous les réglages inconnus du Custom du
|
||||
créateur. Moyen comprend ombres, SSR, PBR, SSGI, bloom, minerais, lumières
|
||||
colorées et rayons à 10 %. Les mêmes catégories d’effets sont activées dans
|
||||
la référence, avec leur implémentation beta.255.
|
||||
|
||||
Journaux, quinze mesures JSON, captures et JFR :
|
||||
`build/volume256/baseline.json`, `candidate-budget.json`,
|
||||
`baseline.jfr`, `candidate-budget.jfr` et leurs résumés. Le contrôle du
|
||||
nouveau monde confirme qu’une partie normale n’active pas `TerrainCensus`.
|
||||
La trace de déplacement ne contient plus ses parcours permanents ; les
|
||||
reconstructions des ombres/PBR/lumières et le travail Minecraft demeurent.
|
||||
|
||||
## Limites et vérification
|
||||
|
||||
Une passe courte sur terrain préchargé n’est pas un minimum garanti en jeu.
|
||||
Le p99 du trajet vaut 9,36 ms en Moyen et 21,69 ms en Personnalisé. Deux images
|
||||
de Moyen et une du Custom dépassent 50 ms ; maxima de 106 et 95 ms. La trace
|
||||
Custom contient une pause G1 de 71,7 ms. La génération en déplacement, les
|
||||
entités, d’autres scènes et une distance de simulation supérieure peuvent
|
||||
changer le résultat. Le Custom mesuré n’atteint pas 144 FPS moyens et Moyen
|
||||
ne tient pas 240 Hz à chaque image. Les chutes à 49 FPS de la session initiale
|
||||
ne sont donc pas considérées comme entièrement éliminées.
|
||||
|
||||
Le lancement de test force le mode fenêtré, puis redimensionne à 1080p une
|
||||
fois le monde chargé. Il évite le crash de lancement signalé ; le plein
|
||||
écran exclusif n’est pas validé ni annoncé comme corrigé dans le jeu normal.
|
||||
|
||||
`./gradlew check build assemblePack -PsanctuaryFocusedTests=census,menus
|
||||
-PsanctuaryAtlasOnly=true` réussit, avec six GameTests requis et les contrôles
|
||||
purs. Compilation des contrôles client avec Java 25 également réussie.
|
||||
|
||||
La suite native complète avec les nouveaux budgets CPU passe : ombres et
|
||||
feuilles, temps réel, contours, minerais/bloom, flare, SSGI à sept distances,
|
||||
PBR, modifications, rechargement, redimensionnement et aller-retour Nether.
|
||||
Le contrôle ciblé des rayons à 1080p valide une hausse lumineuse p95 de 4
|
||||
niveaux à 10 %, zéro pixel assombri et une erreur moyenne de 0,012 niveau
|
||||
par rapport à la densité doublée. Le SSR natif passe sur eau, verre et
|
||||
surfaces opaques, avec mouvement, OFF/zéro, rechargement et resize.
|
||||
Menus, import/export, profils et alpha réel des feuilles passent avec Sodium.
|
||||
|
||||
Un premier relevé à la frontière de cellule a échoué (57 108 pixels sur
|
||||
65 664 dépassaient le seuil). La production inchangée passe ensuite la
|
||||
suite complète avec captures avant/après, puis un contrôle ciblé de trois
|
||||
passages, dont deux conservent le timing de lecture initial. Le seuil de
|
||||
différence n’a pas été relâché. La cause du premier relevé isolé reste
|
||||
indéterminée ; les journaux d’échec sont conservés.
|
||||
|
||||
L’oracle de rafraîchissement PBR utilisait lui aussi la liste vanilla vide
|
||||
avec Sodium. Il invalide maintenant les sections de `SurfaceSections` et
|
||||
exige au moins une section, puis une publication effective des remplacements.
|
||||
Le contrôle corrigé passe avec sept sections, puis valide les directions
|
||||
opposées, les murs, la lumière portée, la stabilité du cache et la grotte
|
||||
en mouvement sans points blancs isolés. Les trois angles rasants passent.
|
||||
Les profils et le SSR en Moyen repassent aussi sans Sodium sur les sources
|
||||
finales. Les 3 983 fichiers de production Sanctuary testés sur Windows
|
||||
correspondent par SHA-256 aux sources locales de livraison.
|
||||
|
||||
## Artefacts locaux
|
||||
|
||||
[Pack beta.256](../build/Sanctuary-beta.256.mrpack), Minecraft 26.3 / Fabric
|
||||
0.19.5, Sodium requis côté client uniquement. Le JAR Sanctuary embarqué
|
||||
correspond exactement au JAR du build et ne contient aucune classe Sodium.
|
||||
Canal public et instance Prism personnelle non mis à jour.
|
||||
|
||||
| Artefact | SHA-256 |
|
||||
| --- | --- |
|
||||
| `sanctuary-beta.256.jar` | `9c4f10f9a764c391fe8fa7679569d13c17e01e8c44eef92d115047544468120d` |
|
||||
| `Sanctuary-beta.256.mrpack` | `8c01aef32ce508e67016743a171d13dfa9633cddecd87c7a7424aa30816b585c` |
|
||||
|
||||
[Reçu final et mesures](../build/volume256/validation.json), journaux et
|
||||
captures dans `build/volume256/`. Dégradés du ciel réservés à la prochaine passe.
|
||||
@@ -0,0 +1,140 @@
|
||||
# APT-236 — aptitudes par thème et activation personnelle
|
||||
|
||||
La règle de désactivation décrite ici correspond à la livraison beta.236.
|
||||
[Beta.237](aptitudes-beta237.md) la remplace : seuls World Map et Mob Names
|
||||
restent désactivables, les autres aptitudes sont acquises définitivement.
|
||||
Le chantier Pause beta.235 est intégré dans cette nouvelle livraison.
|
||||
|
||||
Branche `codex/progression-aptitudes`, base beta.234 (`f9c2ce8`). Le travail
|
||||
parallèle du menu Pause occupe beta.235 ; ce lot réserve beta.236.
|
||||
|
||||
## Contrat avant implémentation
|
||||
|
||||
Progression regroupe les aptitudes en cinq thèmes : Survie (Swimming, Rest,
|
||||
Food Knowledge), Inventaire et fabrication (Inventory Sorting, Catalogue),
|
||||
Familiers (Active Bond, Familiar Study), Exploration (World Map, Mob Names,
|
||||
Zoom), Arts et métiers (Enchantement, Alchimie). Le minage et la forgerie
|
||||
restent hors de ce ticket.
|
||||
|
||||
Enchantement et Alchimie coûtent chacun 4 niveaux, comme les aptitudes actuelles.
|
||||
L'usage personnel de la table d'enchantement et de l'alambic est verrouillé au
|
||||
départ dans les mondes avec progression Sanctuary. Les menus natifs sont
|
||||
refusés côté serveur tant que l'aptitude correspondante n'est pas acquise et
|
||||
active, y compris via les blocs fonctionnels portés sur la tête. Les enclumes,
|
||||
la table de forge, les équipements enchantés et les potions déjà obtenues
|
||||
restent inchangés. Les alambics partagés et leur automatisation continuent
|
||||
leur fonctionnement autonome : ce lot contrôle l'accès personnel au poste,
|
||||
sans attribuer de propriétaire à un bloc ni arrêter une préparation lancée.
|
||||
Les personnages existants avec progression Sanctuary doivent aussi acquérir
|
||||
ces deux nouvelles aptitudes ; aucune acquisition gratuite n'est ajoutée.
|
||||
|
||||
Une aptitude achetée peut être activée ou désactivée sans coût et sans perdre
|
||||
son achat. Food Knowledge reste permanent après apprentissage. Les compétences,
|
||||
les prix et les découvertes ne changent pas. Les effets de gameplay sont
|
||||
contrôlés côté serveur ; les aides d'interface utilisent le choix serveur.
|
||||
Active Bond contrôle l'usage des pouvoirs de travail, pas les techniques de
|
||||
combat, les pouvoirs passifs ou l'équipement du familier. Une action déjà
|
||||
lancée se termine normalement ; les nouvelles activations sont refusées.
|
||||
|
||||
## Persistance et compatibilité
|
||||
|
||||
L'attachement additif `sanctuary:aptitude_preferences` conserve un entier de
|
||||
0 à 2047 : un bit par aptitude désactivée, dans l'ordre immuable names, atlas,
|
||||
sorting, swimming, resting, active_bond, familiar_study, catalogue, zoom,
|
||||
enchanting, alchemy.
|
||||
L'absence de cet attachement équivaut à zéro : toutes les aptitudes acquises
|
||||
gardent leur comportement actuel. Il est copié à la mort et conservé au New
|
||||
Game+. Deux attachements booléens additifs `sanctuary:enchanting_learned` et
|
||||
`sanctuary:alchemy_learned` conservent leurs nouveaux achats ; leur absence
|
||||
équivaut à false et ils sont copiés à la mort et conservés au New Game+.
|
||||
Aucun schéma ou contenu des achats existants n'est réécrit. Ce contrat
|
||||
est limité à cet attachement ; aucun monde personnel n'est ouvert ou modifié.
|
||||
|
||||
Une requête transmet la cible, le choix et le masque attendu ; le serveur
|
||||
vérifie l'achat, la session, l'état du joueur et le masque courant. Un choix
|
||||
inconnu, Food Knowledge, une aptitude non acquise ou une requête périmée est
|
||||
refusé sans XP dépensée. Un état distinct est renvoyé avant le snapshot de
|
||||
progression. La capacité réseau `aptitude_preferences_v1` exige les versions
|
||||
compatibles sur client et serveur sans changer les paquets existants.
|
||||
|
||||
Désactiver Swimming interrompt le sprint aquatique ; désactiver Rest arrête
|
||||
la récupération. World Map masque son entrée et refuse les nouvelles lectures
|
||||
personnelles ; les relevés continuent d'être conservés et l'outil opérateur
|
||||
reste disponible. Catalogue masque l'aide personnelle JEI et la consultation
|
||||
complète de Discovery, sans toucher aux recettes ni aux découvertes.
|
||||
|
||||
Un ancien mod ignore ces trois nouveaux attachements et retrouve son ancien
|
||||
accès aux postes. Il peut perdre les attachements inconnus en sauvegardant :
|
||||
conserver une sauvegarde avant un retour arrière. Le schéma 9 de progression
|
||||
et les preuves des aptitudes antérieures restent identiques.
|
||||
|
||||
## Vérifications
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=aptitudes236,progression,movement,sorting,recipes,foodknowledge \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryAptitudes236ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
```
|
||||
|
||||
Première passe serveur : `check build assemblePack` réussi en 3 min 13 s,
|
||||
**33 GameTests requis réussis**, dont cinq scénarios APT-236. Contrôles purs
|
||||
du dépôt réussis. Le banc Atlas existant évite le conflit de génération du
|
||||
chemin par défaut déjà documenté en beta.232. Monde de développement neuf.
|
||||
Log : `build/aptitudes236-check-build-pack.log`.
|
||||
|
||||
- Onze choix indépendants, refus des requêtes inconnues, non acquises,
|
||||
périmées et de Food Knowledge ; conservation exacte de l'XP et des preuves
|
||||
d'achat. Achat à 3 niveaux refusé, à 4 accepté une seule fois.
|
||||
- Aller-retour des nouveaux attachements dans le NBT joueur natif, copie à
|
||||
la mort, conservation lors de la remise à zéro des compétences du cycle.
|
||||
- Swimming arrête le sprint aquatique et interdit les flags de mouvement
|
||||
directs ; Rest arrête la récupération ; tri falsifié et lectures Atlas
|
||||
personnelles refusés. Réactivation du tri contrôlée avec la même requête.
|
||||
Active Bond refuse une nouvelle activation avant toute planification.
|
||||
- Table d'enchantement native refusée avant acquisition, ouverte ensuite ;
|
||||
**une épée diamant est réellement enchantée**. Désactiver ferme le menu,
|
||||
refuse sa réutilisation et son bouton d'enchantement sans dépense d'XP.
|
||||
Alambic natif refusé puis ouvert, fermeture et invalidation à la désactivation,
|
||||
ingrédients partagés conservés et réouverture après réactivation.
|
||||
|
||||
Parcours client final réussi en **52 s**, Minecraft 26.3, Vulkan confirmé par
|
||||
MoltenVK 1.4.2 / Apple M1. Log : `build/aptitudes236-client-vulkan.log`, marqueur
|
||||
`APTITUDES236_PASS` ; douze captures dans `build/aptitudes236-screenshots/`.
|
||||
|
||||
- FR/EN, GUI 2/3/4, fenêtre 1280 × 960 : cinq thèmes dans l'ordre, les douze
|
||||
aptitudes présentes, Food Knowledge permanent et sans interrupteur.
|
||||
- Achat des deux arts depuis les véritables boutons de Progression : huit
|
||||
niveaux au total. **66 paires désactivation/réactivation** via les widgets
|
||||
et le réseau, état serveur contrôlé, XP et progression finale identiques.
|
||||
- Libellés d'état entièrement contenus dans les boutons ; défilement et
|
||||
position conservée au redimensionnement 1344 × 1008 ; Terminé revient à
|
||||
Pause. Une première passe a trouvé le libellé permanent trop large en GUI 4 :
|
||||
retour à la ligne ajouté. Les interrupteurs affichent un état court et
|
||||
expliquent leur action gratuite dans l'infobulle.
|
||||
|
||||
Les essais concernent les sauvegardes de développement. Pas de validation
|
||||
Windows ou multijoueur distant. L'automatisation des alambics et les pouvoirs
|
||||
déjà lancés restent les limites explicites du contrat ; la forgerie attend
|
||||
son prochain ticket.
|
||||
|
||||
## Livraison locale
|
||||
|
||||
Build final `check build assemblePack` réussi en **2 min 24 s**, 136 tâches,
|
||||
33/33 GameTests requis et contrôles purs réussis après les derniers réglages
|
||||
d’interface. Log : `build/aptitudes236-check-build-pack-final.log`.
|
||||
|
||||
Versions du mod, du pack et du manifeste alignées sur **beta.236**.
|
||||
[MRpack local](../build/Sanctuary-beta.236.mrpack) vérifié : 12797046 octets,
|
||||
intégrité ZIP, Minecraft 26.3 / Fabric Loader 0.19.5, un seul JAR Sanctuary
|
||||
identique au build final, sans classe de test ni monde ni module de laboratoire.
|
||||
Les deux PNG fournis sont identiques octet pour octet aux originaux dans le JAR.
|
||||
Reçu : `build/aptitudes236-artifact.json`.
|
||||
|
||||
- SHA-256 JAR : `21a4411ebed223a1d9f9d204dc9d7300af0d5b946416e39bb138f5c575bf5847`.
|
||||
- SHA-256 MRpack : `9d3eca559805d451e8c653cca1d59186ae46e3c6964147b9fc072b9da832f921`.
|
||||
|
||||
La branche reste indépendante du chantier Pause beta.235 ; leur intégration
|
||||
reste à effectuer. Aucune publication distante, mise à jour du canal packwiz
|
||||
ou synchronisation d’instance personnelle.
|
||||
@@ -0,0 +1,99 @@
|
||||
# APT-237 — achats permanents et intégration du menu Pause
|
||||
|
||||
Branche `codex/progression-aptitudes`. Intégration des commits beta.235
|
||||
`a7bdfe6` et `00d175c`, avec les aptitudes beta.236 `1c8e643`.
|
||||
|
||||
## Contrat avant implémentation
|
||||
|
||||
Seuls World Map et Mob Names disposent d'un interrupteur gratuit après achat.
|
||||
Swimming, Rest, Inventory Sorting, Catalogue, Active Bond, Familiar Study,
|
||||
Zoom, Enchantement, Alchimie et Food Knowledge restent acquis et utilisables
|
||||
sans désactivation. Les prix et les conditions d'achat restent identiques.
|
||||
Enchantement et Alchimie exigent toujours leur achat avant l'accès personnel
|
||||
au poste natif. Les achats, l'XP et les preuves existantes sont conservés.
|
||||
|
||||
Le menu Pause reprend la disposition beta.235 : deux colonnes Aventure et
|
||||
Communauté avant World Map, une colonne à gauche avec la carte. Le choix
|
||||
personnel de masquer World Map suit aussi cette disposition.
|
||||
|
||||
## Contrat de migration des préférences beta.236
|
||||
|
||||
L'identifiant `sanctuary:aptitude_preferences`, son codec entier 0–2047 et
|
||||
l'ordre historique des onze bits restent stables. Les bits 0 (Mob Names) et
|
||||
1 (World Map) restent effectifs. Les bits 2 à 10 deviennent inertes et sont
|
||||
retirés de cet attachement lors de sa prochaine synchronisation serveur.
|
||||
Ainsi un ancien masque 2047 devient 3 : les deux aides restent masquées et
|
||||
les neuf autres aptitudes achetées retrouvent automatiquement leur usage.
|
||||
Le chargement accepte encore les anciennes valeurs ; les lectures et effets
|
||||
ignorent immédiatement leurs bits désormais inertes. Aucune preuve d'achat,
|
||||
aucun format de progression, aucun monde ou terrain n'est réécrit.
|
||||
|
||||
Les requêtes de désactivation des aptitudes permanentes sont refusées même
|
||||
si elles proviennent d'un ancien client. Les paquets v1 restent inchangés ;
|
||||
une capacité additive `sanctuary:aptitude_permanent_v1` impose un client avec
|
||||
cette règle côté serveur. Les nouvelles interfaces sont traduites FR/EN.
|
||||
Le retour à une ancienne version nécessite comme auparavant une sauvegarde,
|
||||
car cette version ne peut restaurer les anciennes désactivations effacées.
|
||||
|
||||
## Vérification et livraison
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=aptitudes236,menus,progression,movement,sorting,recipes,foodknowledge \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryAptitudes236ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
```
|
||||
|
||||
Les suites APT-236 sont actualisées pour vérifier la nouvelle règle et la
|
||||
migration ; leurs noms Gradle restent stables. `check build assemblePack`
|
||||
réussi en **2 min 34 s**, **37 GameTests requis réussis**, dont six scénarios
|
||||
aptitudes. Contrôles purs du dépôt réussis. Le banc Atlas évite le chemin de
|
||||
génération par défaut déjà documenté en beta.232. Log :
|
||||
`build/aptitudes237-check-build-pack.log`.
|
||||
|
||||
- Les deux choix personnels sont gratuits ; refus des requêtes périmées,
|
||||
inconnues, non acquises et des désactivations d'aptitudes permanentes.
|
||||
Prix des nouveaux achats vérifié à trois/quatre niveaux, achat unique.
|
||||
- Ancien masque 2047 rechargé dans le NBT natif, interprété en 3 puis
|
||||
normalisé sans changement d'XP ni de preuve d'achat. Conservation des
|
||||
choix et des achats à la mort et au New Game+.
|
||||
- Avec d'anciens bits désactivés : sprint aquatique, Rest et tri restent
|
||||
utilisables ; Active Bond suit son contrôle normal de familier équipé.
|
||||
World Map conserve son contrôle d'accès et sa réactivation gratuite.
|
||||
- Enchantement et Alchimie refusés avant achat, puis disponibles lors des
|
||||
visites suivantes. Une épée diamant est réellement enchantée. Une requête
|
||||
de désactivation refusée ne ferme ni n'invalide les menus acquis ; ingrédients
|
||||
partagés de l'alambic conservés. Accès vanilla hors progression conservé.
|
||||
|
||||
Parcours client réussi en **32 s**, Minecraft 26.3, Vulkan / MoltenVK 1.4.2
|
||||
sur Apple M1. FR/EN, GUI 2/3/4, fenêtre 1280 × 960 : cinq thèmes, douze
|
||||
aptitudes, dix achats permanents, **12 paires désactivation/réactivation**
|
||||
réelles des deux aides. Deux achats des arts via les boutons natifs de
|
||||
Progression, huit niveaux au total. Libellés contenus dans leurs boutons,
|
||||
XP et preuves conservées, défilement conservé au redimensionnement et retour
|
||||
Terminé vers Pause.
|
||||
|
||||
La même suite réutilise les assertions Pause du collègue : disposition,
|
||||
ordre clavier, marges, titres et libellés de navigation vérifiés après achat
|
||||
de World Map, avec son choix personnel désactivé puis activé. Les deux
|
||||
colonnes et la colonne près de la carte sont conservées. Les captures de
|
||||
Pause portent sur la disposition ; les relevés et fils commencent à charger.
|
||||
Log `build/aptitudes237-client-vulkan.log`, marqueur `APTITUDES237_PASS` ;
|
||||
**24 captures** dans `build/aptitudes237-screenshots/`. Inspection des captures
|
||||
Arts FR GUI 3, Pause sans carte FR GUI 4 et Pause avec carte EN GUI 3.
|
||||
|
||||
Versions alignées sur **beta.237**. [MRpack local](../build/Sanctuary-beta.237.mrpack)
|
||||
vérifié : 12797901 octets, intégrité ZIP, Minecraft 26.3 / Fabric Loader 0.19.5,
|
||||
un seul JAR Sanctuary identique au build final, sans tests ni monde ni module
|
||||
de laboratoire. Les deux icônes fournies restent identiques octet pour octet
|
||||
aux originaux. Reçu `build/aptitudes237-artifact.json`.
|
||||
|
||||
- SHA-256 JAR : `7ac741c6a15b8ab05a909cf0132c9d605b863723c0742a92d8b60c741fd760a6`.
|
||||
- SHA-256 MRpack : `7635e9e7a425cbd7a7f6d020f9bb2bcced8cc1287967093346295e4b4b2250e9`.
|
||||
|
||||
Les anciens artefacts beta.236 sont conservés. Tests dans des mondes de
|
||||
développement neufs ; Windows et multijoueur distant non testés. Les
|
||||
alambics autonomes et pouvoirs déjà lancés gardent le contrat beta.236.
|
||||
La forgerie, les enclumes et la table de forge attendent leur prochain ticket.
|
||||
Aucune publication, avancée du canal ni synchronisation d'installation personnelle.
|
||||
@@ -0,0 +1,137 @@
|
||||
# Audit du support naturel des berges — beta.165
|
||||
|
||||
## Verdict
|
||||
|
||||
L’échec initial est une **attente de test antérieure aux ouvertures de berges
|
||||
alpha.30**, avec une confiance très forte. La cellule signalée n’est pas une
|
||||
terrasse sèche avec sédiments : c’est la deuxième ouverture `Kind.OUTLET` du
|
||||
plan régional. Son absence de fondation est intentionnelle. Aucune modification
|
||||
de génération n’est recommandée pour faire passer cette assertion.
|
||||
|
||||
Ce diagnostic ne démontre pas que le reste du test passe : celui-ci échoue dès
|
||||
la préparation, avant sa vérification des blocs après décoration et ticks.
|
||||
Aucun monde, chunk, fichier de production ou test partagé n’a été modifié pour
|
||||
cet audit. Aucun serveur ni JVM supplémentaire n’a été lancé.
|
||||
|
||||
## Preuves et chaîne de traitement
|
||||
|
||||
1. `build/beta165-check-build.log:962` signale, au tick 0 :
|
||||
`Cell[x=-141, z=-86, waterY=-1, bedY=238, carveTop=241, material=STONE,
|
||||
featureId=15307446929, sedimentDepth=0]`.
|
||||
2. `PopulationHydrologyRuntime.regionPlan` construit un plan classique admis,
|
||||
puis applique `BankOutlets30.openBanks` pour les réglages `unified_5/10/20`.
|
||||
La densité vient du même `finalDensity` et du même `RandomState` que le
|
||||
diagnostic, via un mémo de signe. Les coordonnées locales sont translatées
|
||||
avec l’origine régionale. Dans la région `(0,0)`, cette translation est nulle.
|
||||
3. `BankOutlets30.java:30–45` cherche le vide à 1–5 blocs d’un bassin et crée
|
||||
des cellules sèches de profondeur de sédiments zéro, classées `OUTLET`.
|
||||
Ces cellules n’ajoutent ni roche ni eau : elles décrivent la coupe de la berge.
|
||||
4. Recalcul indépendant des opérations entières 64 bits en Python, sans moteur
|
||||
Minecraft : pour graine 0 et région `(0,0)`, la graine régionale non signée vaut
|
||||
`12661893618221475390`; la base des identifiants de sorties vaut
|
||||
`15307446928`. L’identifiant en échec vaut exactement base + 1, donc la
|
||||
deuxième sortie (index 1). Ce calcul renforce l’identification par
|
||||
`sedimentDepth=0`, au lieu de la supposer depuis le nom du test.
|
||||
5. `PopulationHydrologyRuntime.apply` exclut explicitement `plan.isOutletCell`
|
||||
de la validation des deux couches de support. Sa boucle de sédiments ne fait
|
||||
aucune écriture avec profondeur zéro ; la boucle de coupe supprime les blocs
|
||||
entre `bedY+1` et `carveTop`. L’eau se propage ensuite par les ticks vanilla.
|
||||
6. `PopulationDiagnostics.checkOwnership:333–344` applique au contraire la
|
||||
densité positive à **toutes** les cellules, donc impose ici une fondation à
|
||||
Y237 et Y238. C’est précisément la contrainte absente du contrat des sorties.
|
||||
7. Le contrat publié dans `docs/generation-alpha30.md`, section Hydrologie,
|
||||
autorise une chute dans le vide et précise l’absence de fondation ou de
|
||||
colonne d’eau artificielle. `River30Smoke.java:23–24` vérifie déjà profondeur
|
||||
zéro et absence de nouvelle source. Ce smoke a passé dans le journal beta.165
|
||||
(lignes 453–454).
|
||||
|
||||
La documentation Java de `PopulationHydrology.Cell:53` décrit encore seulement
|
||||
les cellules sédimentaires : elle mérite une clarification future pour le cas
|
||||
OUTLET, mais ne prévaut pas sur le contrat alpha.30 ni son implémentation dédiée.
|
||||
|
||||
## Adaptation ciblée proposée
|
||||
|
||||
Le patch préparé dans `build/audit-berges.patch` ne change que
|
||||
`PopulationDiagnostics.checkOwnership`. Il conserve les assertions de région
|
||||
et d’appartenance de toutes les cellules. Pour une cellule **explicitement
|
||||
classée OUTLET**, il exige :
|
||||
|
||||
- aucune source d’eau, aucun sédiment, un intervalle de coupe positif ;
|
||||
- un déversement terminal déclaré avec le même identifiant.
|
||||
|
||||
Les autres cellules conservent intégralement l’assertion de densité naturelle des
|
||||
sédiments et des deux couches de support. Ne pas remplacer ce contrôle par une
|
||||
exception générale pour toutes les cellules sèches ou de profondeur zéro.
|
||||
|
||||
Le patch reste isolé et non appliqué pour intégration par l’agent principal.
|
||||
|
||||
## Reproduction et validation minimales
|
||||
|
||||
Le défaut de contrat se reproduit sans monde avec le témoin existant
|
||||
`River30Smoke` : la côte synthétique est solide à x≤4 ; la brèche atteint x=5,
|
||||
qui est du vide. Exiger un support positif sous cette cellule ferait échouer
|
||||
une ouverture intentionnelle que le smoke valide.
|
||||
|
||||
Pour confirmer le témoin réel, rejouer le GameTest
|
||||
`UnifiedWorldGameTests.retainedHydrologySurvivesNativeDecoration` après application
|
||||
ciblée, dans le **monde jetable de tests**, graine 0, population 10, diamètre 724.
|
||||
Conserver les vérifications de blocs FULL, de sédiments, de coquille et de ticks.
|
||||
La commande et l’ordonnancement seront assurés par l’agent principal pour ne pas
|
||||
saturer les 8 Go du Mac. Aucun passage de ce test n’est revendiqué ici.
|
||||
|
||||
## Points à surveiller après la première correction
|
||||
|
||||
- `verifyFinishedShell:460` impose sédiments 3–5 à ses cellules sélectionnées.
|
||||
La sélection normale porte sur lac/étang/terrasse et exclut les OUTLET ; son
|
||||
fallback prend la première feature. Si une ouverture est sélectionnée à
|
||||
l’avenir, elle nécessitera son propre contrôle de coupe, sans support imposé.
|
||||
- Le contrôle de paroi humide reconnaît `isSpillOpening`, qui ne contient que
|
||||
la position terminale. Une ouverture de trois blocs de large peut également
|
||||
créer une paroi ouverte avant ce point. Si cette assertion échoue ensuite,
|
||||
vérifier le voxel contre une cellule OUTLET déclarée et son intervalle exact
|
||||
de coupe ; ne pas désactiver le contrôle de toutes les parois.
|
||||
- Le test complet n’a pas encore atteint ses contrôles finaux avec ce patch.
|
||||
Les éventuels nouveaux échecs doivent être diagnostiqués séparément.
|
||||
- Les plafonds historiques à Y384 restent présents dans certaines inspections
|
||||
naturelles alors que la dimension atteint Y640. Ils ne causent pas l’échec
|
||||
ici à Y237/238, et ne sont pas modifiés dans ce patch ciblé.
|
||||
|
||||
## Fichiers examinés
|
||||
|
||||
- `mods/sanctuary/src/main/java/fr/koka/sanctuary/worldgen/BankOutlets30.java`
|
||||
- `mods/sanctuary/src/main/java/fr/koka/sanctuary/worldgen/PopulationHydrology.java`
|
||||
- `mods/sanctuary/src/main/java/fr/koka/sanctuary/worldgen/PopulationHydrologyRuntime.java`
|
||||
- `mods/sanctuary/src/main/java/fr/koka/sanctuary/worldgen/PopulationIslandDensity.java`
|
||||
- `mods/sanctuary/src/main/java/fr/koka/sanctuary/worldgen/IslandCapacity.java`
|
||||
- `mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/PopulationDiagnostics.java`
|
||||
- `mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/River30WorldGameTests.java`
|
||||
- `mods/sanctuary/src/test/java/fr/koka/sanctuary/worldgen/River30Smoke.java`
|
||||
|
||||
## Complément : contrôle précis de la paroi ouverte
|
||||
|
||||
Un second patch non appliqué, `build/audit-berges-shell.patch`, est disponible
|
||||
**uniquement si l’exécution atteint un échec de paroi correspondant à une
|
||||
ouverture réelle**. Il ajoute un cas au contrôle des parois de
|
||||
`verifyFinishedShell`, après ses exceptions existantes pour l’eau planifiée et
|
||||
le voxel terminal du spill.
|
||||
|
||||
Le voxel doit appartenir au plan de sa propre position X/Z, à une cellule
|
||||
explicitement `OUTLET`, sans eau planifiée ni sédiments, associée par son
|
||||
identifiant à un spill terminal. Son Y doit être **strictement supérieur à
|
||||
bedY et inférieur ou égal à carveTop**. Le bloc final doit alors être de l’air
|
||||
ou de l’eau vanilla ; un bloc solide ou de la lave fait toujours échouer le test.
|
||||
Les couches sous la coupe, les voisins latéraux hors emprise, les autres types
|
||||
de cellules et les voxels au-dessus de la coupe conservent leur contrôle normal.
|
||||
|
||||
Le patch parcourt `cellsAt` plutôt que de se fier seulement à `cellAt(x,y,z)` :
|
||||
ce dernier inclut aussi les couches de support dans sa sélection, ce qui aurait
|
||||
créé une exception trop large. Les assertions sur les sédiments sélectionnés
|
||||
restent inchangées. La suite en cours doit décider si ce patch est nécessaire ;
|
||||
aucun résultat d’exécution n’est anticipé.
|
||||
|
||||
## Résultat de l’intégration
|
||||
|
||||
Le patch proposé a ensuite été intégré aux tests par l’agent principal.
|
||||
Le rejeu complet `build/test-refresh-full.log` termine avec 252/252 GameTests
|
||||
réussis et `check build` réussi. Aucun code de production ni monde existant modifié.
|
||||
Voir [la validation consolidée](actualisation-tests-beta165.md).
|
||||
@@ -0,0 +1,98 @@
|
||||
# Audit ciblé — construction groupée sur dalle et coffre
|
||||
|
||||
Audit du 24 septembre 2026, sources beta.165. Aucun changement de production,
|
||||
aucun monde lancé ou modifié, aucune nouvelle exécution de GameTest dans cet audit.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Les deux refus initiaux ont une explication commune de **fixture hors portée**, avec
|
||||
une confiance forte : le rayon de visée s’arrête à 3,5 blocs avant la surface réelle.
|
||||
Ils ne démontrent ni une fusion de dalle cassée, ni une altération du contenu du coffre.
|
||||
Les assertions suivantes restent à rejouer ; elles ne sont pas déclarées réussies.
|
||||
|
||||
Le contrat beta.009 utilisait la portée native, tandis que le contrat actuel
|
||||
[beta.081](build-reach-beta081.md) fixe le rang 1 à 3,5 blocs. Le même point de vue
|
||||
atteint encore un cube plein, mais pas les surfaces plus basses.
|
||||
|
||||
## Chaîne de refus
|
||||
|
||||
- `Building009GameTests.java:107–113` : plan 3×3 de dalles basses ; joueur au rang 1 ;
|
||||
`aim` place ses pieds en `(0,5 ; 1 ; −2,5)` par rapport à l’origine, puis vise
|
||||
`(0,5 ; 0,5 ; 0,5)`.
|
||||
- `Building009GameTests.java:165–170` : coffre central et pierre autour ; même position,
|
||||
mais `aim` conserve la cible d’un cube plein `(0,5 ; 1 ; 0,5)`.
|
||||
- `BuildReach.java:13–21` et `BuildingLimits.java:6` : portée 3,5 ; le contrôle préalable
|
||||
de proximité utilise l’AABB du **bloc entier**, pas la forme de la dalle/coffre.
|
||||
- `BuildSelection.java:40–44` : `player.pick(3.5, 1, false)` doit réellement toucher
|
||||
le bloc d’origine. Un MISS ou un autre bloc donne `null`.
|
||||
- `BuildingSession.java:26–30` : ce `null` empêche de créer la session, avant tout
|
||||
placement, fusion ou usage du coffre.
|
||||
- Le journal existant `build/beta165-check-build.log:1105–1138` confirme les refus
|
||||
à `start`, lignes 113 et 170 des tests, au tick 0.
|
||||
|
||||
## Géométrie vérifiée
|
||||
|
||||
Les constantes natives ont été inspectées par `javap -c -p` dans le JAR local exact
|
||||
Minecraft 26.3 : `Avatar` définit les yeux debout à 1,62 ; `SlabBlock` utilise
|
||||
`column(16,0,8)` pour la dalle basse ; `ChestBlock` utilise `column(14,0,14)` pour
|
||||
le coffre simple. Traces dans `build/audit-construction-avatar-bytecode.txt` et
|
||||
`build/audit-construction-native-bytecode.txt`. Aucun serveur/JVM Minecraft lancé.
|
||||
|
||||
Les yeux sont donc en **E=(0,5 ; 2,62 ; −2,5)**. Calculs Python indépendants du jeu :
|
||||
|
||||
| Surface et visée actuelle | Premier impact géométrique prévu | Distance yeux-impact |
|
||||
|---|---|---:|
|
||||
| Cube plein témoin | `(0,5 ; 1 ; 0,5)` | 3,409457 |
|
||||
| Dalle basse, visée corrigée sur son dessus | `(0,5 ; 0,5 ; 0,5)` | **3,673472** |
|
||||
| Coffre, visée restée au dessus d’un cube plein | `(0,5 ; 0,875 ; 0,731481)` | **3,672533** |
|
||||
|
||||
Le coffre occupe horizontalement `[1/16 ; 15/16]`, donc ce point est bien dans son
|
||||
dessus. Les cubes de pierre voisins ne coupent pas ce rayon avant lui : à `y=1`,
|
||||
le rayon est déjà au centre de la cellule d’origine. Les autres dalles basses ne
|
||||
coupent pas davantage le rayon avant `y=0,5`. Le précontrôle AABB entier passe,
|
||||
avec une distance minimale de 2,978993 : il ne garantit pas que le rayon atteigne
|
||||
la forme réelle.
|
||||
|
||||
L’écart d’environ 0,173 bloc dépasse largement les arrondis float de la direction
|
||||
et de la hauteur des yeux. Ces calculs expliquent le refus dans les deux fixtures ;
|
||||
une trace native reste utile pour confirmer explicitement le MISS en exécution.
|
||||
|
||||
## Correction recommandée, limitée aux tests
|
||||
|
||||
Patch proposé, **non appliqué** : `build/audit-construction.patch`.
|
||||
|
||||
Le helper dédié `aimInsetTop` rapproche les pieds à `z=−1,5`, conserve `y=1` et
|
||||
vise le centre du dessus réel (`y=0,5` pour la dalle, `14/16` pour le coffre).
|
||||
Les distances deviennent respectivement **2,914515** et **2,654247** blocs.
|
||||
Le joueur reste hors du plan 3×3 (son bord proche est vers `z=−1,2`, le plan
|
||||
commence à `z=−1`) afin de ne pas exclure une pose par sa propre collision.
|
||||
Une assertion explicite vérifie que le rayon atteint la face UP avant le démarrage.
|
||||
|
||||
Toutes les assertions métier existantes restent : neuf consommations/fusion,
|
||||
dalles de plafond, exclusion de la vache, trois diamants conservés, menu fermé,
|
||||
refus des objets à placement particulier. Aucun changement de portée de production,
|
||||
aucune suppression de test, aucun passage en créatif pour masquer le problème.
|
||||
|
||||
## Protocole ciblé restant
|
||||
|
||||
1. Relire/appliquer le patch de tests sur une branche de correction coordonnée.
|
||||
2. Rejouer la famille `building` dans un monde GameTest jetable, avec le filtre
|
||||
du dépôt `-PsanctuaryFocusedTests=building`, après libération de la mémoire du
|
||||
laboratoire. Ne pas exécuter en parallèle plusieurs serveurs sur le Mac 8 Go.
|
||||
3. Si un refus subsiste, tracer yeux, portée, `player.pick(...)`, bloc/face/distance,
|
||||
`BuildSelection.aimed`, puis nombre de cibles : ne pas augmenter arbitrairement
|
||||
la portée ou neutraliser une validation.
|
||||
4. Confirmer les assertions suivantes : une fois la première barrière levée, des
|
||||
défauts secondaires peuvent devenir visibles. Garder un scénario séparé de refus
|
||||
hors portée à la limite, sans le confondre avec fusion ou conservation d’objets.
|
||||
|
||||
Risque du patch faible et limité à la géométrie de test. Risque de modifier la
|
||||
production maintenant inutilement élevé : cela modifierait le contrat de portée
|
||||
pour contourner un scénario préparé avec l’ancien contrat.
|
||||
|
||||
## Résultat de l’intégration
|
||||
|
||||
Le patch proposé a ensuite été intégré aux tests par l’agent principal.
|
||||
Le rejeu complet `build/test-refresh-full.log` termine avec 252/252 GameTests
|
||||
réussis et `check build` réussi. Aucun code de production ni monde existant modifié.
|
||||
Voir [la validation consolidée](actualisation-tests-beta165.md).
|
||||
@@ -0,0 +1,79 @@
|
||||
# Audit dragon — beta.165
|
||||
|
||||
## Verdict
|
||||
|
||||
L’échec de `Companion019GameTests.creatureProfilesActuallyMove` est expliqué par
|
||||
une simulation incomplète du cycle natif de l’entité. Il ne démontre pas un
|
||||
blocage du dragon en jeu. Aucune correction de locomotion ne se justifie avant
|
||||
le rejeu du scénario avec son horloge d’entité effective.
|
||||
|
||||
## Chaîne causale confirmée
|
||||
|
||||
1. [Le test](../mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion019GameTests.java)
|
||||
appelle `pet.tick()` 120 fois immédiatement, au tick GameTest 0. Le journal
|
||||
`build/beta165-check-build.log` confirme l’assertion de déplacement échouée au tick 0.
|
||||
2. Dans Minecraft **26.3**, `ServerLevel.tickNonPassenger(Entity)` appelle
|
||||
**`Entity.commonTick()` puis `Entity.tick()`**. L’incrément `tickCount++` se trouve
|
||||
dans `commonTick`, avec la mise à jour des anciennes positions et du délai
|
||||
d’invulnérabilité ; il ne se trouve pas dans `Entity.tick()` ou `baseTick()`.
|
||||
Vérification directe du bytecode du JAR natif local par `javap -c -p` :
|
||||
`build/audit-dragon-serverlevel.txt` (méthode `tickNonPassenger`),
|
||||
`build/audit-dragon-entity.txt` (méthode `commonTick`).
|
||||
3. Au premier tick, [FamiliarEntity.configureMotion](../mods/sanctuary/src/main/java/fr/koka/sanctuary/cosmetics/FamiliarEntity.java)
|
||||
choisit `FlyingPathNavigation`, `FlyingMoveControl`, désactive la gravité et
|
||||
appelle `stopRoaming()`.
|
||||
4. [FamiliarRoam.reset](../mods/sanctuary/src/main/java/fr/koka/sanctuary/familiar/FamiliarRoam.java)
|
||||
fixe `nextChoice = pet.tickCount + 20`. L’errance lit **pet.tickCount**, pas
|
||||
`level.getGameTime()`. Les 120 appels directs laissent donc `now = 0` et
|
||||
`nextChoice = 20`. La condition `if(now < nextChoice) return` interdit toute
|
||||
première destination.
|
||||
5. Le familier apparaît déjà près du joueur, à environ +2 blocs en Y grâce à
|
||||
`teleportNearOwner`. Il n’atteint pas le seuil de retour vers le propriétaire
|
||||
qui pourrait contourner cette attente. Aucun déplacement vers une destination
|
||||
n’est donc engagé dans ce scénario.
|
||||
|
||||
L’hypothèse initiale d’une simple dépendance au temps du monde était trop vague :
|
||||
la cause directe est l’absence de **commonTick**, et donc le compteur d’entité figé.
|
||||
|
||||
## Correction de test recommandée
|
||||
|
||||
Pour ce test synchrone de locomotion, remplacer les appels de simulation par
|
||||
`h.getLevel().tickNonPassenger(pet)` ; cela reproduit le préambule natif complet,
|
||||
contrairement à un simple `pet.tickCount++`. Conserver les assertions sur le profil,
|
||||
le déplacement supérieur à un bloc, l’altitude et l’absence de collision.
|
||||
Ajouter une assertion du nombre de ticks réellement avancés afin d’éviter une
|
||||
régression de la fixture. Rejouer les vérifications Ghast et Wither, masquées
|
||||
jusqu’ici par l’échec dragon.
|
||||
|
||||
Le correctif proposé est disponible dans `build/audit-dragon.patch`, sans avoir
|
||||
été appliqué aux sources par cet audit. Cette boucle reste synchrone : le temps
|
||||
du monde, les hooks serveur et le propriétaire ne progressent pas. Elle vérifie
|
||||
le cycle de locomotion de l’entité, pas une séance complète de suivi en jeu.
|
||||
|
||||
Un scénario supplémentaire de suivi en ticks réels est utile si ce premier rejeu
|
||||
échoue : propriétaire déplacé sans dépasser le seuil de téléportation, personnage
|
||||
et graine d’errance fixés, trajet effectivement parcouru contrôlé. Il doit vivre
|
||||
dans un monde de test jetable, jamais dans la sauvegarde du laboratoire.
|
||||
|
||||
## Aléa et limites
|
||||
|
||||
Le tempérament provient du UUID du lien, créé aléatoirement. Les rayons d’errance
|
||||
sont 2,5 / 4 / 5 blocs et les pauses 100–139 / 25–64 / 50–89 ticks. Ces pauses
|
||||
sont intentionnelles : ne pas imposer un mouvement à chaque tick. Pour une
|
||||
reproduction déterministe, fixer la graine du générateur de l’entité et le
|
||||
tempérament dans les données du test, ou tester explicitement les trois.
|
||||
|
||||
Les destinations nécessitent des chunks chargés, une autorisation de mouvement,
|
||||
un volume libre et un chemin accessible. Aucun de ces refus n’a été démontré
|
||||
ici : l’ancien scénario s’arrêtait **avant** leur évaluation.
|
||||
|
||||
Audit statique et lecture du bytecode terminés. À ce stade, aucun serveur de test
|
||||
supplémentaire lancé, aucune source de jeu modifiée, aucune sauvegarde touchée.
|
||||
Le passage effectif du test corrigé reste à confirmer dans l’exécution coordonnée.
|
||||
|
||||
## Résultat de l’intégration
|
||||
|
||||
Le patch proposé a ensuite été intégré aux tests par l’agent principal.
|
||||
Le rejeu complet `build/test-refresh-full.log` termine avec 252/252 GameTests
|
||||
réussis et `check build` réussi. Aucun code de production ni monde existant modifié.
|
||||
Voir [la validation consolidée](actualisation-tests-beta165.md).
|
||||
@@ -0,0 +1,100 @@
|
||||
# Audit des 23 échecs GameTest — socle beta.165
|
||||
|
||||
Audit initial du 24 septembre 2026, code `dbb9e34` (tag beta.165).
|
||||
|
||||
Suite : [actualisation des tests et validation](actualisation-tests-beta165.md).
|
||||
|
||||
## Portée et méthode
|
||||
|
||||
Lecture des 23 messages du dernier journal `build/beta165-check-build.log`, des
|
||||
méthodes de test et des chemins de production concernés. La liste a été comparée
|
||||
à beta.164 : mêmes 23 identifiants. Recompte local des JSON de collections.
|
||||
Aucun test désactivé, aucune correction de code, aucune modification du monde,
|
||||
aucun nouveau lancement Minecraft pendant cet audit. Le laboratoire reste disponible.
|
||||
|
||||
Il s’agit d’un diagnostic statique étayé par l’exécution précédente, pas d’une
|
||||
preuve que les tests passeront après adaptation. Un échec à la première assertion
|
||||
masque potentiellement des problèmes dans la suite de la même méthode.
|
||||
|
||||
## Conclusion
|
||||
|
||||
**19 échecs ont une explication étayée dans le scénario de test ou un ancien
|
||||
contrat ; 4 nécessitent encore une reproduction ciblée.** Ce ne sont donc pas
|
||||
23 bugs joueurs démontrés. Inversement, la stabilité de la liste ne prouve pas
|
||||
l’absence de bugs. Les objectifs des tests restent majoritairement pertinents.
|
||||
|
||||
| Famille | Nombre | Lecture principale |
|
||||
| --- | ---: | --- |
|
||||
| Placement simple / empreinte / tombe | 5 | Positions de test hors portée |
|
||||
| Menus d’inventaire | 3 | Constructeur incompatible avec les menus étendus |
|
||||
| Bonus de familiers | 6 | Mode travail absent des fixtures |
|
||||
| Invulnérabilité et poisson familier | 2 | Anciennes règles remplacées par le système de combat |
|
||||
| Collections, permissions, hauteur du monde | 3 | Attentes historiques à remettre à jour |
|
||||
| Construction dalle/coffre | 2 | Raycast et portée à instrumenter |
|
||||
| Déplacement du dragon | 1 | Ticks réels et navigation à reproduire |
|
||||
| Hydrologie | 1 | Contrat de support naturel à examiner |
|
||||
|
||||
## Inventaire exhaustif
|
||||
|
||||
| Test | Verdict | Preuve et limite | Suite pertinente |
|
||||
| --- | --- | --- | --- |
|
||||
| [BlockKnowledgeGameTests.placementCountsConfirmedStatesAndRejectsFailure](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/BlockKnowledgeGameTests.java:44) | Test mal positionné — forte confiance | Joueur en (5,5 ; 3 ; 5,5), support en (1 ; 1 ; 1) : la distance horizontale seule dépasse 5,65 blocs. Le mixin de placement applique la portée réelle (vanilla ou progression), avant les assertions métier. | Rapprocher le joueur et viser la face réelle ; conserver les assertions de compteurs, événements et empreinte. Ajouter/conserver un cas hors portée refusé. |
|
||||
| [BlockKnowledgeGameTests.listenersReceiveUpdatedProgressionAndStockChanges](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/BlockKnowledgeGameTests.java:220) | Test mal positionné — forte confiance | Joueur en (5,5 ; 3 ; 5,5), support en (1 ; 1 ; 1) : la distance horizontale seule dépasse 5,65 blocs. Le mixin de placement applique la portée réelle (vanilla ou progression), avant les assertions métier. | Rapprocher le joueur et viser la face réelle ; conserver les assertions de compteurs, événements et empreinte. Ajouter/conserver un cas hors portée refusé. |
|
||||
| [MaterialActivityGameTests.nativeActionsProduceDatedDeltasWhileObservationsProduceNone](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/MaterialActivityGameTests.java:39) | Test mal positionné — forte confiance | Joueur en (5,5 ; 3 ; 5,5), support en (1 ; 1 ; 1) : la distance horizontale seule dépasse 5,65 blocs. Le mixin de placement applique la portée réelle (vanilla ou progression), avant les assertions métier. | Rapprocher le joueur et viser la face réelle ; conserver les assertions de compteurs, événements et empreinte. Ajouter/conserver un cas hors portée refusé. |
|
||||
| [Demeure006GameTests.confirmedGesturesAndPersonalAtlasBoundary](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Demeure006GameTests.java:20) | Test mal positionné — forte confiance | Joueur en (5,5 ; 3 ; 5,5), support en (1 ; 1 ; 1) : la distance horizontale seule dépasse 5,65 blocs. Le mixin de placement applique la portée réelle (vanilla ou progression), avant les assertions métier. | Rapprocher le joueur et viser la face réelle ; conserver les assertions de compteurs, événements et empreinte. Ajouter/conserver un cas hors portée refusé. |
|
||||
| [GravesFood038GameTests.ordinaryPlacementAndCreativeBreakPreserveGrave](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/GravesFood038GameTests.java:120) | Test mal positionné — forte confiance | Joueur novice à 3 blocs horizontalement du clic, yeux au-dessus : distance supérieure aux 3 blocs de portée initiale. Le test échoue avant la conservation des composants et la casse créative. | Remettre le clic à portée, puis vérifier impérativement les 8 diamants après pose et casse ; le résultat actuel ne prouve aucune perte d’objets. |
|
||||
| [Inventory010GameTests.machineQuickMovesAndMounts](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Inventory010GameTests.java:77) | Initialisation de test incompatible — certaine | Boucle sur tout BuiltInRegistries.MENU et appel create(id, inventory). Des menus Sanctuary sont ExtendedMenuType et exigent des données supplémentaires ; exception avant les comparaisons. | Séparer menus vanilla et menus étendus ; fournir les données requises aux menus Sanctuary, garder les tests de conservation et de shift-clic. |
|
||||
| [Inventory010GameTests.everyNativeContainerKeepsItsIndices](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Inventory010GameTests.java:58) | Initialisation de test incompatible — certaine | Boucle sur tout BuiltInRegistries.MENU et appel create(id, inventory). Des menus Sanctuary sont ExtendedMenuType et exigent des données supplémentaires ; exception avant les comparaisons. | Séparer menus vanilla et menus étendus ; fournir les données requises aux menus Sanctuary, garder les tests de conservation et de shift-clic. |
|
||||
| [Inventory012GameTests.nativeAndExtraRowsHaveIdenticalMachinePriorities](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Inventory012GameTests.java:38) | Initialisation de test incompatible — certaine | Même boucle sur tous les menus et même constructeur sans données réseau. | Même adaptation commune ; comparer les destinations et reliquats des lignes natives et supplémentaires. |
|
||||
| [Companion019GameTests.switchingEggRemovesPassiveAndActive](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion019GameTests.java:45) | Contrat du scénario périmé — forte confiance | L’attribut de chute du chat n’est pas actif dans le mode de combat par défaut. Le helper equip règle l’attunement, mais FamiliarBattle.prepare initialise workMode=false ; CompanionService.passive renvoie alors null. | Préparer explicitement le mode travail par le chemin prévu, puis tester aussi l’absence de bonus en mode combat. Rejouer le reste du scénario : ses assertions suivantes restent non validées. |
|
||||
| [Companion019GameTests.poisonDurationAndMilkUseNativeHooks](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion019GameTests.java:53) | Contrat du scénario périmé — forte confiance | La réduction de poison est attendue sans sélectionner le mode travail. Le helper equip règle l’attunement, mais FamiliarBattle.prepare initialise workMode=false ; CompanionService.passive renvoie alors null. | Préparer explicitement le mode travail par le chemin prévu, puis tester aussi l’absence de bonus en mode combat. Rejouer le reste du scénario : ses assertions suivantes restent non validées. |
|
||||
| [Companion019GameTests.cropCyclesStopAfterOwnerLeaves](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion019GameTests.java:152) | Contrat du scénario périmé — forte confiance | La préparation BEE n’active pas le mode travail nécessaire au bonus de culture. Le helper equip règle l’attunement, mais FamiliarBattle.prepare initialise workMode=false ; CompanionService.passive renvoie alors null. | Préparer explicitement le mode travail par le chemin prévu, puis tester aussi l’absence de bonus en mode combat. Rejouer le reste du scénario : ses assertions suivantes restent non validées. |
|
||||
| [Companion019GameTests.furnaceBonusConsumesFuelAndKeepsOneOutput](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion019GameTests.java:163) | Contrat du scénario périmé — forte confiance | La préparation BLAZE n’active pas le mode travail nécessaire au bonus de cuisson. Le helper equip règle l’attunement, mais FamiliarBattle.prepare initialise workMode=false ; CompanionService.passive renvoie alors null. | Préparer explicitement le mode travail par le chemin prévu, puis tester aussi l’absence de bonus en mode combat. Rejouer le reste du scénario : ses assertions suivantes restent non validées. |
|
||||
| [Companion032GameTests.axolotlFoodDurationAndGolemKnockbackUseNativeHooks](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion032GameTests.java:77) | Contrat du scénario périmé — forte confiance | Le bonus de durée de consommation est attendu hors du mode autorisant les anciens passifs. Le helper equip règle l’attunement, mais FamiliarBattle.prepare initialise workMode=false ; CompanionService.passive renvoie alors null. | Préparer explicitement le mode travail par le chemin prévu, puis tester aussi l’absence de bonus en mode combat. Rejouer le reste du scénario : ses assertions suivantes restent non validées. |
|
||||
| [GravesFood038GameTests.familiarSaturationPreviewUsesActualServerPassive](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/GravesFood038GameTests.java:130) | Contrat du scénario périmé — forte confiance | L’assertion passive(p)==species échoue avant de comparer l’aperçu et la consommation. Le helper equip règle l’attunement, mais FamiliarBattle.prepare initialise workMode=false ; CompanionService.passive renvoie alors null. | Préparer explicitement le mode travail par le chemin prévu, puis tester aussi l’absence de bonus en mode combat. Rejouer le reste du scénario : ses assertions suivantes restent non validées. |
|
||||
| [Accessory018GameTests.familiarIsHarmlessAndEscapesWalls](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Accessory018GameTests.java:82) | Ancien contrat invulnérable — forte confiance | Le test exige que genericKill ne cause aucun dégât. hurtServer délègue désormais à FamiliarBattle.hurt ; le système possède santé et K.-O. depuis beta.054. | Remplacer l’invulnérabilité universelle par les règles actuelles : dégâts autorisés, coups amicaux, K.-O., œuf préservé. Conserver les vérifications de collisions, sortie de mur et non-duplication. |
|
||||
| [Companion019GameTests.aquaticPetFlopsAndThenSwims](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion019GameTests.java:113) | Ancien contrat de déplacement — forte confiance | Le test exige une vitesse ≤ 0,06 sur terre. configureMotion réserve le mode poisson ralenti aux familiers aquatiques sans profil de combat actif ; sinon la vitesse vient du profil. | Tester séparément le profil actuel sur terre et la transition dans l’eau. Ne pas rétablir automatiquement l’ancien poisson ralenti. |
|
||||
| [Companion019GameTests.creatureProfilesActuallyMove](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Companion019GameTests.java:104) | À isoler — navigation | Le profil aérien est reconnu ; c’est le déplacement > 1 et l’altitude > propriétaire + 0,5 qui échouent. Le test appelle pet.tick 120 fois sans faire avancer normalement le monde ; l’errance actuelle dépend de destinations sûres, du pathfinding et comporte des pauses. | Reproduire dans un monde de test avec ticks réels, graine/personnalité fixées, propriétaire déplacé, cible et chemin enregistrés. Si l’immobilité persiste, corriger la navigation. |
|
||||
| [Collections035GameTests.exhaustiveCatalogueMatchesLoadedVanilla](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Collections035GameTests.java:17) | Constantes périmées — certaine | Le dernier comptage attend 1658 items / 1286 blocs / 1815 identifiants distincts. Recompte des 67 JSON : 1780 / 1374 / 1937. Les 2042 recettes uniques sont toujours présentes ; le test a déjà passé les contrôles précédents des identifiants et recettes. | Comparer la couverture aux registres et au contrat de collections ; documenter les nombres actuels, éviter qu’un total historique soit l’unique preuve d’exhaustivité. |
|
||||
| [Progression003GameTests.serverCustomNameConfiguration](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Progression003GameTests.java:120) | Permission testée au mauvais niveau — certaine | Le test exige que toute la racine /sanctuary soit inaccessible aux joueurs. intro et community link sont maintenant publics ; names et community admin portent leur propre condition opérateur. | Tester un joueur ordinaire et un opérateur sur chaque sous-commande sensible. Vérifier names reload en particulier ; ne pas rebloquer toute la racine. |
|
||||
| [UnifiedWorldGameTests.populationTerrainAndNaturalSpawnRemainPresent](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/UnifiedWorldGameTests.java:56) | Hauteur historique périmée — certaine | Attend minY=0 et hauteur=384. La dimension Sanctuary actuelle déclare hauteur et logical_height=640, minY=0 ; le test client de création attend lui aussi 640. | Actualiser le contrat de hauteur, puis rejouer les assertions suivantes sur le spawn naturel. Ne pas modifier la dimension ni les mondes existants. |
|
||||
| [Building009GameTests.slabMergingCeilingAndEntityCollisions](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Building009GameTests.java:107) | À isoler — construction groupée | Échec au premier start (ligne 113), avant fusion des dalles. Le fixture vise le centre d’une dalle basse depuis une position conçue pour un cube plein ; la portée au rang 1 est 3,5 et le point visé sur la dalle est plus éloigné. | Journaliser hit réel, bloc touché, distance, portée et raison de refus ; reproduire à portée courte puis à la limite. Conserver fusion, plafond et exclusion des entités. |
|
||||
| [Building009GameTests.containerSupportsAndUnsupportedItems](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/Building009GameTests.java:165) | À isoler — construction groupée | Échec au premier start sur coffre (ligne 170), avant toute vérification du contenu. Le coffre n’a pas la collision d’un cube plein ; le raycast peut toucher le support voisin ou dépasser la portée. | Même diagnostic que la dalle ; vérifier que le coffre ne s’ouvre pas et garde ses 3 diamants. Ne pas assimiler l’échec à une corruption d’inventaire. |
|
||||
| [UnifiedWorldGameTests.retainedHydrologySurvivesNativeDecoration](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/UnifiedWorldGameTests.java:39) | À isoler — génération, priorité haute | Échec dans PopulationDiagnostics.checkOwnership sur la densité naturelle du support à x=-141, z=-86, bedY=238, sedimentDepth=0, waterY=-1 (terrasse sèche). Ce contrôle survient avant la vérification finale des blocs décorés ; son nom ne prouve donc pas une fuite d’eau en jeu. | Comparer l’admission de cette cellule et la densité réellement utilisée, puis les blocs finaux dans un monde jetable, graine 0 / 10 joueurs / diamètre 724. Le contrat Cell annonce un support naturel : ne pas supprimer cette assertion sans explication. |
|
||||
|
||||
## Priorités proposées
|
||||
|
||||
1. **Remettre les tests en mesure de vérifier leur sujet** : placements à portée,
|
||||
construction correcte des menus, sous-commandes protégées, inventaire de
|
||||
collections et hauteur 640. Changements de tests ciblés, sans affaiblir leurs
|
||||
vérifications métier. Les tombes et transferts d’inventaire sont prioritaires
|
||||
parce qu’ils protègent les objets des joueurs.
|
||||
2. **Isoler dalle/coffre et hydrologie** : les deux premiers concernent une action
|
||||
courante ; le dernier touche la génération et exige un monde jetable, jamais
|
||||
une régénération de la sauvegarde de test actuelle. Aucun changement de
|
||||
génération n’est autorisé implicitement par cet audit.
|
||||
3. **Actualiser les scénarios familiers** selon le mode travail/combat, puis
|
||||
reproduire le vol du dragon avec une horloge de monde réelle. Garder les
|
||||
contrôles d’anti-duplication, de ressources consommées et d’annulation.
|
||||
4. Rejouer les familles corrigées, puis la suite complète. Toute nouvelle
|
||||
assertion atteinte doit être réévaluée ; ne pas annoncer « 19 réglés » avant cela.
|
||||
|
||||
La correction des fixtures et constantes paraît contenue. Les quatre cas à
|
||||
reproduire ne permettent pas encore une estimation fiable. Aucune suppression de
|
||||
fonctionnalité ni suppression de test n’est recommandée à ce stade.
|
||||
|
||||
## Points d’entrée dans le code
|
||||
|
||||
- [BlockPlacementReachMixin](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/mixin/BlockPlacementReachMixin.java:14)
|
||||
- [BuildingLimits](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/building/BuildingLimits.java:6)
|
||||
- [CompanionService](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/companion/CompanionService.java:71)
|
||||
- [FamiliarBattle](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/familiar/FamiliarBattle.java:125)
|
||||
- [FamiliarEntity](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/cosmetics/FamiliarEntity.java:262)
|
||||
- [FamiliarRoam](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/familiar/FamiliarRoam.java:16)
|
||||
- [Statuary](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/plans/Statuary.java:39)
|
||||
- [Multiblocks](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/multiblock/Multiblocks.java:36)
|
||||
- [ProgressionService](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/progression/ProgressionService.java:178)
|
||||
- [PopulationDiagnostics](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/gametest/java/fr/koka/sanctuary/gametest/PopulationDiagnostics.java:333)
|
||||
- [PopulationHydrology](/Users/koka/Documents/sanctuary/sanctuary-community-beta154/mods/sanctuary/src/main/java/fr/koka/sanctuary/worldgen/PopulationHydrology.java:56)
|
||||
|
||||
Contrat fonctionnel des familiers : [beta.054](familiar-combat-beta054.md).
|
||||
+331
@@ -1,5 +1,336 @@
|
||||
# Backlog Sanctuary
|
||||
|
||||
## HELLO-264 — Menu central et sol commun — livré localement
|
||||
|
||||
Sur `codex/hello-world-menu`, socle beta.263. Colonne centrale de 182 pixels,
|
||||
choix regroupés par section, noms au-dessus des aperçus et familiers bébé
|
||||
miniatures alignés avec les pieds du personnage. Espèce, rareté et description
|
||||
au survol ; Retour séparé et Entrer dans Sanctuary dans le pied de page natif.
|
||||
Build, 13 GameTests serveur et parcours Vulkan FR/EN GUI 2/3/4 réussis ;
|
||||
44 modèles bébé, création, reconnexion et code d'accès vérifiés.
|
||||
Pack local beta.264 exporté et contrôlé.
|
||||
[Disposition et vérifications](hello-layout-beta264.md).
|
||||
|
||||
## HELLO-263 — Aperçus des bébés familiers — livré localement
|
||||
|
||||
Sur `codex/hello-world-menu`, socle beta.262. Modèles et textures bébé, échelles
|
||||
d'âge natives et cadrage adapté. Les 44 aperçus sont comparés aux proxies
|
||||
réels après `Mob.setBaby(true)` ; parcours Vulkan FR/EN GUI 2/3/4 réussi.
|
||||
Build, 13 GameTests serveur et pack local vérifiés.
|
||||
[Correction et vérifications](hello-baby-familiars-beta263.md).
|
||||
|
||||
## HELLO-262 — Personnage, couleurs et familier — livré localement
|
||||
|
||||
Branche `codex/hello-world-menu`, socle beta.261. Menu à trois colonnes, blocs
|
||||
centraux de même hauteur et colonnes latérales de même largeur. Palette serveur
|
||||
paginée par neuf avec la texture native de hotbar et les flèches du pseudo.
|
||||
Fond texturé uniforme ; personnage et familier en 3D suivent la souris.
|
||||
Biographie et nom au centre. Les règles et sauvegardes serveur sont conservées.
|
||||
Build, 13 GameTests serveur et parcours Vulkan FR/EN GUI 2/3/4 réussis ;
|
||||
44 modèles de départ, admission, reconnexion et code d’accès vérifiés.
|
||||
[Contrat et vérifications](hello-world-menu-beta262.md).
|
||||
|
||||
## SHADER-258 — Ombres des falaises et musique différée — livré localement
|
||||
|
||||
Branche `codex/zenith-shadows-beta258`, socle beta.257. Comparaison de profondeur
|
||||
au vrai centre des texels, correction du cas rasant autour du zénith et ombres
|
||||
des surplombs conservées ; budgets de carte inchangés. Musique du menu différée
|
||||
de trois secondes après chargement, absente dans Hello World et l’introduction.
|
||||
Build, six GameTests serveur et contrôles Windows Vulkan/8 Gio réussis : falaise
|
||||
à quinze positions solaires, horloge civile 10 h–14 h et midi solaire ±30 s,
|
||||
ancres caméra, feuilles et véritable flux audio. Particules mobiles exclues
|
||||
uniquement des captures de mesure ; tolérances d’image conservées.
|
||||
Packs normal/Test assemblés et vérifiés ; aucune publication ni mise à jour Prism.
|
||||
[Contrat, vérifications et limites](zenith-shadows-beta258.md).
|
||||
|
||||
## MODS-257 — Mods client séparés et sun shafts à 20 % — livré localement
|
||||
|
||||
Branche `codex/external-mods-beta257`, socle beta.256. JEI Sanctuary et Sound
|
||||
Physics sortis du JAR principal, facultatifs avant lancement ; Sodium déjà
|
||||
séparé devient également facultatif dans packwiz. Pont JEI, progression serveur
|
||||
et fabrication manuelle conservés. Menus et message d’absence FR/EN.
|
||||
Profils et valeurs neuves des rayons à 20 %, SSR en Moyen conservé.
|
||||
Build, 8 GameTests serveur sans JEI/Sound Physics et quatre combinaisons client
|
||||
Vulkan/8 Gio réussis. Transfert réel JEI, options audio et rayons à 20 % vérifiés.
|
||||
Packs normal/Test assemblés et contrôlés ; aucune publication ni mise à jour Prism.
|
||||
[Contrat et vérifications](external-mods-beta257.md).
|
||||
|
||||
## SHADER-256 — Volume solaire, Sodium et déplacement — livré localement
|
||||
|
||||
Branche `codex/ambiance-volume-performance-beta256`, socle beta.255.
|
||||
Rayons à pas fin, intensité neuve de 10 %, portée indépendante et densité
|
||||
dans Atmosphère, FR/EN et import/export. Carte d’ombres réutilisée,
|
||||
reconstructions CPU réparties, recensement serveur activé à la demande.
|
||||
Sodium 0.9.2+mc26.3 ajouté au pack client ; émissions et PBR corrigés pour
|
||||
ses sections visibles. SSR conservé en Moyen et aucun preset à 256 blocs.
|
||||
Mesure native Grand/32 chunks/1080p/8 Gio : Moyen 135 → 321 FPS en mouvement,
|
||||
Personnalisé lourd 72 → 113, avec des pauses restantes. Build, six GameTests,
|
||||
effets et pack vérifiés ; pas de minimum 144/240 FPS annoncé.
|
||||
[Contrat, méthode, mesures et limites](ambiance-volume-performance-beta256.md).
|
||||
Ciel différé ; lancement de test fenêtré, plein écran exclusif non validé.
|
||||
|
||||
## SHADER-255 — Feuilles, menus et rayons Ambiance — livré localement
|
||||
|
||||
Branche `codex/ambiance-leaves-menus-beta255`, socle beta.254. Alpha réel des
|
||||
feuilles, ombres visibles en Faible/Moyen, sous-menus FR/EN et import/export
|
||||
des profils complets, préférences d'eau par défaut comprises. Sun shafts plus
|
||||
visibles en Moyen avec le même budget ; rendu retenu par le créateur.
|
||||
Build, quatre GameTests serveur, suites natives Vulkan RX 9070 XT et pack
|
||||
beta.255 vérifiés. Surcoût mesuré sur canopée dense : Moyen 0,035–0,047 ms,
|
||||
Faible 0,035–0,061 ms, hors FPS de jeu.
|
||||
[Contrat et validation](ambiance-leaves-menus-beta255.md).
|
||||
Dégradés du ciel : passe suivante à la demande du créateur.
|
||||
|
||||
## SHADER-254 — Profils et optimisation Vulkan — livré localement
|
||||
|
||||
Branche `codex/vulkan-shader-optimization`, base beta.253. Shader **Ambiance**,
|
||||
cinq profils FR/EN, SSR inclus dans Moyen, carte d'ombres commune conservée
|
||||
entre les mises à jour,
|
||||
budgets SSGI/SSR/volume et émission limitée en portée. Choix existants conservés,
|
||||
configuration neuve préparée en Moyen avec activation volontaire.
|
||||
[Contrat, profils, mesures et limites](shader-vulkan-optimization.md).
|
||||
Build, quatre GameTests serveur, suites natives Vulkan Windows RX 9070 XT
|
||||
et MRpack beta.254 vérifiés. Moyen avec SSR : 1,56 ms statique, 1,52 ms soleil
|
||||
mobile contre 2,19/2,44 ms pour l'ancien ensemble dans le test à 1080p.
|
||||
Temps de rendu/soumission, hors comparaison de FPS de jeu. Feuillage
|
||||
procédural conservé ; canal public et instance personnelle inchangés.
|
||||
|
||||
## WAY-241 — Ascenseurs séparés, recherche et tarif administrable — livré localement
|
||||
|
||||
Branche `codex/waystones-menu-beta241`, base beta.240. Colonnes d’ascenseur
|
||||
exclues du réseau horizontal, recherche par nom, boutons centrés sans Y,
|
||||
distance et prix uniquement au survol, R pour renommer. Commande de tarif
|
||||
persistant côté serveur, défaut 1 point / 16 blocs ; FR/EN et jump/sneak.
|
||||
[Contrat et essais](waystones-menu-beta241.md). Avec 10 niveaux sur Grand
|
||||
graine 0 : 29 trajets de quartier, 10 longs ou 160 déplacements d’étage.
|
||||
Build, 9 GameTests ciblés, deux tests Grand, client Vulkan FR/EN GUI 2/3/4
|
||||
et MRpack beta.241 vérifiés.
|
||||
|
||||
## WAY-240 — Waystones : 1 XP / 16 blocs — livré localement
|
||||
|
||||
Branche `codex/waystones-tarif-beta240`. Nouveau tarif horizontal et vertical,
|
||||
arrondi au supérieur conservé, rappel FR/EN alimenté par la règle serveur.
|
||||
[Comparaison et vérifications](waystones-tarif-beta240.md) sur les mêmes maisons
|
||||
du Grand neuf graine 0 : 29 trajets de quartier, 10 longs et 46 mixtes pour
|
||||
160 points. Build, 7 GameTests ciblés, deux tests natifs Grand, client Vulkan
|
||||
FR/EN GUI 2/3/4 et MRpack beta.240 vérifiés.
|
||||
|
||||
## WAY-239 — maisons et étages par Waystones — livré localement
|
||||
|
||||
Branche `codex/waystones-beta239`, base consolidée avec Forgerie beta.238 et
|
||||
Pause restauré. Texture originale 26.2, nom éditable, XP en points selon la
|
||||
distance 3D : 1 / 8 blocs arrondi au supérieur. Découverte horizontale
|
||||
personnelle ; Saut / S'accroupir pour les étages inconnus. Carte M et marqueurs
|
||||
dans les deux cartes. [Contrat, données et mesures](waystones-beta239.md).
|
||||
Grand natif graine 0, huit maisons et deux étages : 15 visites de quartier,
|
||||
4 longs trajets, 26 mixtes pour 10 niveaux sans regain d'XP. Tests serveur,
|
||||
Vulkan et assemblage réussis, MRpack beta.239 vérifié ; aucune installation
|
||||
personnelle.
|
||||
|
||||
## PAUSE-236 — Atlas plein écran derrière Pause — essai annulé
|
||||
|
||||
Le créateur annule uniquement la carte derrière le menu. Le commit de
|
||||
disposition `5ea7950` est inversé ; affichage beta.235 restauré, Story et
|
||||
raccourci M (`94fefc0`) conservés. [Historique et annulation](pause-map-layer-beta236.md).
|
||||
L'ancien pack local est retiré des artefacts actifs. Cette annulation ne publie
|
||||
aucune nouvelle version et ne modifie pas la branche des aptitudes/Forgerie.
|
||||
|
||||
## APT-238 — Forgerie — livré localement
|
||||
|
||||
Branche `codex/forgerie-beta238`, base beta.237. Aptitude permanente des Arts
|
||||
et métiers ; quatre niveaux pour les trois variantes d'enclume et la table
|
||||
de forge, y compris les postes portés. [Contrat et persistance](forgerie-beta238.md).
|
||||
Réparations, noms, améliorations et ornements gardent leurs règles natives.
|
||||
Build, 21 GameTests requis, Vulkan FR/EN GUI 2/3/4 et MRpack vérifiés.
|
||||
|
||||
## APT-237 — achats permanents et intégration Pause — livré localement
|
||||
|
||||
Branche `codex/progression-aptitudes`, travaux beta.235 et beta.236 réunis.
|
||||
Cinq thèmes, douze aptitudes ; seuls World Map et Mob Names ont un interrupteur.
|
||||
Enchantement et Alchimie restent à acheter avant l'accès personnel au poste.
|
||||
[Contrat et migration](aptitudes-beta237.md) des préférences antérieures,
|
||||
avec conservation des achats et de l'XP. Build, 37 GameTests requis,
|
||||
Vulkan FR/EN GUI 2/3/4 et MRpack local vérifiés. La forgerie attend ses précisions.
|
||||
|
||||
## PAUSE-235 — groupes côte à côte avant Atlas — essai livré localement
|
||||
|
||||
Branche `codex/pause-columns-beta235`, base beta.234. Avant Atlas : Aventure à
|
||||
gauche, Communauté à droite et Game juste dessous, bloc centré. Avec Atlas :
|
||||
une colonne étroite à gauche dans l'ordre Communauté → Aventure → Game,
|
||||
carte centrale et fils à droite. [Contrat et vérifications](pause-columns-beta235.md),
|
||||
parcours Vulkan Pause et Story FR/EN GUI 2/3/4, build, quatre GameTests ciblés
|
||||
et MRpack local vérifiés ; rendu à apprécier.
|
||||
Commit de disposition `a7bdfe6` séparé des métadonnées pour permettre son retour.
|
||||
|
||||
## STORY-234 — recueil personnel avec recherche — livré localement
|
||||
|
||||
Branche `codex/story-beta234`, base beta.233. Story sous Progression dans
|
||||
Aventure ; 100 histoires inconnues, barre de recherche et filtre de découverte.
|
||||
Cadre commun avec Discovery, état de recherche et défilement conservés au
|
||||
redimensionnement, accès avant et après Atlas. [Résultat et vérifications](story-beta234.md) :
|
||||
build, quatre GameTests requis et parcours Vulkan FR/EN GUI 2/3/4 réussis.
|
||||
[Modèle Markdown](story/TEMPLATE.md) pour les textes de l'auteur.
|
||||
Les récits et leurs conditions de découverte restent des tickets suivants ;
|
||||
aucun moteur de quête, format persistant ou déploiement ajouté.
|
||||
|
||||
## WG-RESTORE-191 — annuler les plateaux et leurs affleurements
|
||||
|
||||
La visite beta.190 ne valide pas le relief corrigé. [Retour exact à la base
|
||||
beta.188](restore-relief-beta191.md), pour la densité et la géologie naturelle.
|
||||
Conserver les aménagements indépendants ; réserver les futures singularités
|
||||
de relief à quelques endroits. Nouveau profil `original` ; 134 480 densités
|
||||
comparées à l’identique, génération/réouverture et 265 GameTests réussis.
|
||||
|
||||
## WG-NATURE-190 — revenir au relief organique
|
||||
|
||||
Retour beta.189 : [contrat beta.190](natural-refinement-beta190.md). Relief local
|
||||
adouci, sortie d’étang large et proche, coffres de fer enchanté dans les ruines.
|
||||
Profil neuf de laboratoire ; génération, réouverture, 265 GameTests et assemblages
|
||||
validés. Solo Vulkan ouvert à 32 chunks.
|
||||
|
||||
## Réserve d’expansion — grandes surfaces ciselées
|
||||
|
||||
Conserver la variante de terrasses beta.189 comme piste pour une autre expansion :
|
||||
grands plateaux, falaises étagées, profondeurs et verticalité variables selon
|
||||
l’identité de l’île. Ne plus appliquer ces niveaux partout sur Sanctuary Island.
|
||||
Aucune expansion activée. Le portail à remplissage avec ressource renouvelable
|
||||
reste à concevoir ; les perles d’Ender sont une possibilité, pas une décision.
|
||||
|
||||
## WG-ECO-177 — écologie liée au relief
|
||||
|
||||
Branche `codex/relief-ecology-beta177`. Nouveau solo à 32 chunks demandé
|
||||
après la visite beta.176 : plateau forestier/fleuri, vallées automnales,
|
||||
hauteurs à cerisiers, cavités humides arborées, retrait de la neige et de
|
||||
la mangrove, pierres mêlant strates et gisements. Profil de labo distinct ;
|
||||
[contrat et vérifications](relief-ecology-beta177.md).
|
||||
|
||||
## WG-ECO-176 — strates, biomes et mares locales
|
||||
|
||||
Branche `codex/island-ecology-beta176`. Le créateur autorise la mise à
|
||||
l’essai des [retours de visite](worldgen-retours-beta175.md). Nouveau monde
|
||||
de labo, relief conservé ; géologie continue, larges régions automne et
|
||||
cerisiers, récifs humides et mares bornées. Aucun mineshaft ni village
|
||||
natif. Prototype jouable, mesures natives validées sur trois graines.
|
||||
[Contrat, résultats et réserve sur la suite générale](island-ecology-beta176.md).
|
||||
|
||||
## WG-SKY-175 — récifs rares et ressources de l’île
|
||||
|
||||
Suite du labo rapide : l’île principale est conservée, les anciennes masses
|
||||
flottantes sont remplacées et la bande 512–640 reste libre pour l’ISS. Le
|
||||
créateur demande des relevés scientifiques, puis précise la répartition
|
||||
des minerais et la présence de deepslate. Nouveau monde de labo uniquement.
|
||||
[Contrat et résultats](sky-fragments-beta175.md).
|
||||
|
||||
## WG-LAB-174 — worldgen rapide en laboratoire
|
||||
|
||||
**Priorité demandée pendant la séance du 29 septembre.** Profil de relief
|
||||
réservé aux nouveaux mondes de labo, sans plans d'hydrologie ni structures,
|
||||
avec une référence complète séparée et des mesures reproductibles. La
|
||||
génération normale reste inchangée. [Contrat et mesures](worldgen-lab-beta174.md).
|
||||
Ce lot précède les maquettes de halte du Storyquest : l'outil d'itération
|
||||
permet de reprendre d'abord les formes et la géographie de Sanctuary Island.
|
||||
|
||||
**Livré localement en beta.174 :** profil relief, lanceur protégé, comparaison
|
||||
à froid/réouverture, graines 0/42/173 et client Vulkan vérifiés. `check build`
|
||||
et les deux assemblages réussis ; génération normale conservée. L'optimisation
|
||||
des algorithmes complets reste le travail suivant.
|
||||
|
||||
## SQ-173 — Refonte Storyquest et géographies indépendantes
|
||||
|
||||
**Direction actualisée le 29 septembre 2026.** Branche `codex/storyquest-beta173`,
|
||||
issue de beta.172 (`55c745a`), avec prototype local beta.173 livré depuis.
|
||||
Le [fil rouge courant](storyquest-fil-rouge.md) fait autorité pour les priorités ;
|
||||
le [cadrage général](storyquest-beta173.md) conserve les autres intentions.
|
||||
Le créateur abandonne le palais souterrain, ses accès et ses raccordements.
|
||||
La refonte concerne Sanctuary Island, l'île de départ.
|
||||
|
||||
Ordre de travail proposé, à ajuster après chaque visite :
|
||||
|
||||
1. Un parcours extérieur arrivée → halte → ancre, comparé dans deux ambiances.
|
||||
2. Une première conséquence territoriale réelle, sous contrat de nouveaux mondes.
|
||||
3. Une préparation utile au parcours : familier, produit ou plan constructible.
|
||||
4. Un premier accès vertical, puis la déclinaison des lieux qui fonctionnent.
|
||||
|
||||
Chaque étape croise géographie, récit, retour d'information et ambiance. Les
|
||||
critères d'essai sont dans le fil rouge ; cet ordre n'est pas un verrouillage
|
||||
de progression joueur. Pas de nouveau code ni de carte de terrain livré par
|
||||
cette révision documentaire. Les autres sujets — menus, Friends, PNJ, cuisine,
|
||||
économie, ISS, créatures et communauté — restent dans la réserve de conception.
|
||||
|
||||
## PALAIS-173 — prototype livré ; architecture abandonnée le 29 septembre
|
||||
|
||||
Première implémentation dans un laboratoire neuf : un palais par seed, huit
|
||||
ancres extérieures, huit matériaux distincts et huit couleurs indépendantes
|
||||
sur le bloc originel. [Contrat, essai et validation](palais-prototype-beta173.md).
|
||||
Le code et le laboratoire sont conservés comme preuve technique. **Le placement
|
||||
du palais sous l'île n'est plus prévu.** Les mécaniques d'ancres et du bloc
|
||||
originel peuvent alimenter le nouveau parcours ; leur intégration indépendante
|
||||
et l'ouverture effective d'une expansion restent à réaliser.
|
||||
|
||||
## HORDE-170 — Objet-carte natif et langage de particules
|
||||
|
||||
[Contrat de la carte native](horde-map-native-beta170.md). L'objet créatif
|
||||
vierge découvre une identité stable et différente à sa première prise en main.
|
||||
Toutes les étapes des invasions par carte sont signalées visuellement, sans chat.
|
||||
La distribution en survie depuis les campements reste un ticket futur : aucune
|
||||
génération existante n'est modifiée dans cette livraison.
|
||||
|
||||
## HORDE-169 — Cartes inconnues et invasion accélérée
|
||||
|
||||
[Contrat de l'invasion](horde-invasion-beta169.md). La prise en main révèle la
|
||||
difficulté et le contenu. Les nouvelles cartes remplacent les vagues par un flux
|
||||
de 12, 18 ou 27 monstres de plus en plus rapide, avec jusqu'à dix espèces et des
|
||||
butins généreux correspondants. Les cartes beta.168 restent lisibles et jouables.
|
||||
|
||||
## FAMILIERS-COMBAT — Refonte à définir après essai de horde
|
||||
|
||||
Retour du créateur : les familiers ne lui semblent pas utiles au combat. Examiner
|
||||
leurs comportements réels et définir une contribution perceptible avant de modifier
|
||||
leurs statistiques. Tester avec joueurs sur une horde. Intention consignée, non implémentée.
|
||||
|
||||
## HORDE-168 — Cartes consommables et participation spontanée
|
||||
|
||||
Branche `codex/cartes-horde-beta168`. [Contrat du labo](horde-cartes-beta168.md).
|
||||
Trois cartes natives illustrées, invocation immédiate sans socle, vagues ouvertes
|
||||
et butins sur les monstres ramassables librement. L’ancien cercle est conservé
|
||||
pour les futurs donjons. Suite générale 254/254, puis validation ciblée serveur
|
||||
et client Vulkan des derniers ajustements réussies.
|
||||
|
||||
## HORDE-167 — Premier essai de carte d'épreuve en laboratoire
|
||||
|
||||
Branche `codex/communaute-economie-beta167`. [Contrat et vérifications](horde-lab-beta167.md).
|
||||
Prototype local vérifié sur son parcours serveur et client Vulkan : arène ronde, bloc central, carte réutilisable,
|
||||
inscriptions et trois vagues coopératives. Aucun gain d'XP ou de butin de récompense.
|
||||
La simplification du tableau, la BDD et les autres cartes restent à réaliser.
|
||||
La suite complète reste à 252/253 : un échec de déplacement des familiers,
|
||||
reproduit au rejeu ciblé, est signalé dans le contrat de livraison.
|
||||
|
||||
## Direction de travail — communauté, économie et aventures
|
||||
|
||||
[Cadrage du 25 septembre 2026](ecosysteme-communaute-economie.md) : décisions
|
||||
du créateur, état beta.166, propositions et questions ouvertes. Conception
|
||||
uniquement ; branche `codex/communaute-economie-beta167`, basée sur le dernier
|
||||
`main` beta.166. Le prototype beta.167 a été intégré sur `main` localement.
|
||||
|
||||
Dernière orientation de conception : cartes de découverte, cartes d'épreuve,
|
||||
clés/reliques, avec une piste de cartes collectionnables générées. Imaginer une
|
||||
arène ronde de laboratoire et son nouveau bloc central pour une carte de horde
|
||||
de zombies par vagues. Le [prototype beta.167](horde-lab-beta167.md) fait maintenant
|
||||
l'objet d'une réalisation séparée ; les autres familles restent en conception.
|
||||
|
||||
Ordre proposé : tableau à message général → statistiques existantes en BDD et
|
||||
premier rapport quotidien → première bounty physique jouable → navets et machine
|
||||
du dimanche avec suivi économique → huit structures et ancres d'expédition.
|
||||
Le contrat de ballast doit être livré avant les Backrooms ; site et Discord
|
||||
prolongent progressivement ces parcours. Aucun de ces nouveaux lots n'est livré.
|
||||
|
||||
## COMM-154 — Communauté dans le menu pause et sur le site
|
||||
|
||||
Branches `codex/community-beta154` (mod) et `codex/community-contract` (site).
|
||||
Résultat : Gazette, tableau et intendance avec lecture, publication, réponses,
|
||||
droits serveur et comptes liés ; fichier autonome ou MariaDB partagée.
|
||||
[Contrat](community-contract-v1.md), [livraison locale](community-beta154.md).
|
||||
|
||||
## STAT-03 — Atelier d’argile et hotbar — beta.112
|
||||
|
||||
Branche `codex/clay-workshop-hotbar-beta112`. [Contrat et vérifications](clay-workshop-hotbar-beta112.md).
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# UNI-WG-204 — Sanctuary autonome et Nord Peaks
|
||||
|
||||
Branche `codex/sanctuary-base-peaks-beta204`, depuis beta.203 (`454d9a5`).
|
||||
|
||||
Demande : absorber Demeure dans Sanctuary, rendre le terrain validé du laboratoire
|
||||
accessible avec le mod normal seul, puis remplacer la nappe nordique par le
|
||||
générateur Peaks existant en conservant taïga géante, glaces et igloos.
|
||||
|
||||
## Contrat
|
||||
|
||||
- Demeure interne : même chemin `data/demeure/footprints-v1.json`, schéma 1,
|
||||
mêmes règles serveur et attribution. Aucun transfert de données.
|
||||
- Nouveau preset public Sanctuary, trois tailles ; types vanilla conservés.
|
||||
Introduction normale conservée ; diagnostics et raccourcis de labo facultatifs.
|
||||
- Codecs et ressources historiques `sanctuary:*` et `sanctuary_test:*` conservés.
|
||||
Le transfert de module ne renomme pas ces identifiants.
|
||||
- Nouveau profil 204 uniquement pour le Nord Peaks, diamètre 1024. L'île de
|
||||
départ reprend les paramètres 203 ; aucun terrain déjà créé régénéré.
|
||||
- Essais sur mondes de développement neufs et copies de développement seulement,
|
||||
graines 0, 42 et 4736390610738281858 ; publication/installation non demandée.
|
||||
|
||||
## Réalisation
|
||||
|
||||
### Mod normal
|
||||
|
||||
Demeure n'est plus un JAR Fabric imbriqué : ses quatre classes, son mixin de
|
||||
placement, ses tests et son attribution sont intégrés à Sanctuary. Le service
|
||||
s'enregistre une seule fois depuis l'initialisation principale. Un ancien JAR
|
||||
Demeure séparé est refusé pour éviter deux installations des mêmes hooks.
|
||||
|
||||
Le terrain validé restait dans `sanctuary-test` ; le preset public du mod normal
|
||||
ne pointait donc pas vers ce terrain. Le runtime de l'île, ses ressources,
|
||||
ses mixins et son écran de taille sont désormais dans Sanctuary : biomes,
|
||||
grottes, minerais, bassins, mines, ruines, ancres, rosace, station et expansions.
|
||||
Les variantes historiques restent enregistrées pour lire leurs identifiants,
|
||||
mais une seule entrée Sanctuary apparaît dans le menu, à côté des types vanilla.
|
||||
Small/Medium/Large sélectionnent les nouveaux paramètres `sanctuary:island204_*`.
|
||||
|
||||
Le module Test conserve uniquement ses outils : diagnostics, visites guidées de
|
||||
développement, monde plat, commandes et raccourcis d'essai. Il ne fournit plus
|
||||
de mixin ou de ressource indispensable au monde normal. Le nom du package Java
|
||||
`fr.koka.sanctuarytest` et les anciennes clés `sanctuary_test:*` restent inchangés
|
||||
dans le runtime déplacé afin de limiter la portée du transfert.
|
||||
|
||||
### Nord
|
||||
|
||||
Pour les nouveaux profils 204, le Nord 1024 utilise directement la densité Peaks
|
||||
du moteur d'expansion, avec son épaisseur et son amplitude verticales normales.
|
||||
La coque de plateaux `NorthShape203` n'intervient plus. L'écologie s'appuie sur
|
||||
des colonnes mesurées dans cette densité, mises en cache sur une grille de huit
|
||||
blocs : vallées, taïga, vieux épicéas, roche, neige, pics et glaciers dépendent
|
||||
du relief. Les épicéas géants 203 et les formations de glace vanilla sont repris.
|
||||
La glace des cavernes reste conditionnée à une couverture rocheuse suffisante.
|
||||
|
||||
Les cinq igloos cherchent des épaules enneigées suffisamment soutenues, sans
|
||||
aplatir toute la montagne ; un seul possède le laboratoire de guérison. L'arrivée
|
||||
et le relais évitent les bâtiments. Les deux bassins imposés dans les anciens
|
||||
profils nordiques ne sont pas transposés : ils reformaient des plateformes dans
|
||||
le nouveau relief. Les autres directions et les profils 200–203 ne changent pas.
|
||||
|
||||
## Vérifications — 4/5 octobre 2026
|
||||
|
||||
- `./gradlew check build assemblePack assembleTestPack
|
||||
-PsanctuaryFocusedTests=base204,demeure,menus,operator,realtime
|
||||
-PsanctuaryAtlasOnly=true` : succès, tests de logique et 13 GameTests natifs
|
||||
ciblés. Ces GameTests vérifient notamment l'absence de Test et de Demeure
|
||||
séparé, les presets publics/historiques, les empreintes Demeure et l'amplitude
|
||||
Peaks réservée au Nord 204. La suite native historique entière n'a pas été rejouée.
|
||||
- `:sanctuary:runClientGameTest -PsanctuaryClientTests=true
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryShared196ClientTests=true` :
|
||||
`SHARED196_CLIENT_PASS`, sans Test chargé. FR/EN, tailles, Annuler/Échap,
|
||||
relecture des paramètres sauvegardés et éditeur Plat vanilla vérifiés.
|
||||
- Création sur le classpath de production sans Test, heap 2048 Mio : Small
|
||||
graine 42, Medium graine 0 et Large graine 4736390610738281858. Les trois
|
||||
serveurs atteignent l'état prêt et placent le spawn sur l'île. Journaux dans
|
||||
`build/base204-standalone/`. Ce ne sont pas des mesures comparatives de performance.
|
||||
- Nord natif Small 42, profil 204 : offrande réelle, rejet des mauvaises offres
|
||||
et doublons, interruption puis reprise du journal, arrivée/relais et cinq
|
||||
igloos dont une cave vérifiés. Centre de l'expansion `(-128, -944)` ; arrivée
|
||||
`(-112, 308, -1056)`. L'annonce SGA est émise après préparation.
|
||||
- Échantillonnage du Nord : sommets Y=103–455, épaisseur maximale 381 blocs ;
|
||||
prairie, taïga, forêt ancienne, neige, pics, glacier et roche présents.
|
||||
Dans les chunks inspectés autour de `(-256, 283, -848)`, le plus grand tronc
|
||||
mesure 60 blocs. Glace et air vérifiés dans une caverne ; glacier vérifié
|
||||
autour de `(-80, 303, -1120)`. Reçus `build/worldgen-lab/north204-a/small/42/`.
|
||||
- MRpack normal `Sanctuary-beta.204.mrpack` exporté et ZIP vérifié : Minecraft
|
||||
26.3, Loader 0.19.5, Fabric API 0.160.5+26.3 ; ni JAR Test ni Demeure séparé.
|
||||
SHA-256 : `8c90090a784bd7c799849e916be2e3e36214a3dbf6ce8b4925d31a9fca8c5086`.
|
||||
|
||||
## Limites et livraison
|
||||
|
||||
Les essais natifs du nouveau Nord couvrent la graine 42. Son aspect reste à
|
||||
évaluer en visite, et la recherche d'un village n'a pas été vérifiée sur toutes
|
||||
les graines. Ces résultats macOS/Vulkan ne constituent pas une validation Windows.
|
||||
L'hydrologie du Nord reste à reprendre sur son relief Peaks si l'on souhaite
|
||||
rétablir de grands lacs. Aucun ancien monde, chunk ou format de sauvegarde n'a
|
||||
été migré ; les nouvelles formes nécessitent un nouveau profil 204.
|
||||
|
||||
Artefact local dans `build/` et copie dans `~/Downloads/`. Une copie indépendante
|
||||
du monde de test est ouverte pour la visite `north204-visit`, en créatif,
|
||||
commandes autorisées et vue 32 chunks (`NORTH204_VISIT_OPEN`, Vulkan confirmé).
|
||||
Aucun packwiz public, serveur personnel
|
||||
ou instance Prism n'a été mis à jour par ce chantier.
|
||||
@@ -0,0 +1,101 @@
|
||||
# CLAIM-03 — Chunks et protection temporaire, beta.272
|
||||
|
||||
Branche `codex/inhabitant-property`. Contrat du 24 octobre 2026, avant changement des données.
|
||||
|
||||
Un claim est un chunk entier de 16 × 16 blocs du monde principal, sur toute
|
||||
sa hauteur. L'admission Hello World donne accès au menu, sans terrain attribué.
|
||||
Les cinq premiers chunks sont gratuits ; le sixième coûte 100 points d'XP,
|
||||
le septième 200, puis +100 par chunk. Limite technique : 256 chunks par joueur,
|
||||
10 000 par monde. Les chunks peuvent être séparés. Aucun abandon ni transfert
|
||||
n'est proposé dans ce lot.
|
||||
|
||||
Chaque chunk peut recevoir sept jours de protection contre **64 saphirs**.
|
||||
Le propriétaire mine alors à ×2 et les autres à ×0,5. Sans protection : ×1.
|
||||
L'effet suit le bloc effectivement miné, même dans une sélection groupée.
|
||||
La pose, l'utilisation, les explosions, fluides et autres mécanismes gardent
|
||||
leurs règles normales. Le claim demeure après expiration. Le renouvellement
|
||||
est manuel et ajoute sept jours à la durée restante, sans prélèvement automatique.
|
||||
|
||||
Le temps compte en millisecondes monotones de serveur démarré, y compris sans
|
||||
propriétaire connecté. Il ne dépend ni du calendrier ni du nombre de ticks.
|
||||
L'arrêt normal sauvegarde l'horloge ; la relance reprend sa valeur sans compter
|
||||
l'arrêt. Sauvegarde toutes les 60 secondes et à chaque achat : un arrêt brutal
|
||||
peut restituer au plus le temps depuis le dernier point de sauvegarde (environ
|
||||
60 secondes, ou davantage si la boucle serveur est bloquée).
|
||||
|
||||
## Contrat de sauvegarde et migration
|
||||
|
||||
Nouveau registre séparé `<monde>/sanctuary/chunk-claims-v1.json`, schéma 1,
|
||||
lié à la graine. Il contient l'horloge serveur, une révision, les chunks, les
|
||||
transactions en attente et les UUID ayant volontairement quitté l'ancien modèle.
|
||||
Écritures atomiques vérifiées ; format invalide conservé et mutations suspendues.
|
||||
Un reçu persistant natif joueur `sanctuary:chunk_purchase_receipt_v1` relie le
|
||||
débit XP/saphirs ou le remboursement à la validation du registre. Une transaction
|
||||
réservée sans reçu sauvegardé est annulée ; un reçu durable la valide une seule fois.
|
||||
|
||||
L'ancien `properties-v1.json` reste dans son format exact. Ses volumes et leurs
|
||||
droits restent actifs tant que le propriétaire ne confirme pas la migration.
|
||||
La migration retire volontairement les droits de son volume et rembourse les
|
||||
extensions : 100, 300, 600 ou 1 000 XP selon le palier. Aucun chunk n'est créé
|
||||
à partir du volume : le joueur choisit ensuite ses chunks, dont cinq gratuits.
|
||||
Les achats anciens en attente sont résolus avant cette migration. Un nouveau
|
||||
chunk ne peut recouvrir l'emprise horizontale d'un volume ancien encore actif.
|
||||
Aucun bloc, terrain, génération, seed ou sauvegarde personnelle n'est modifié.
|
||||
|
||||
Un **clic droit directement sur la carte** ouvre un petit panneau sur le chunk :
|
||||
propriétaire, tarif, durée et bouton Revendiquer ou Protéger. Le prix apparaît
|
||||
avant l'action ; le clic sur ce bouton réalise l'achat sans quitter la carte.
|
||||
Échap ou un clic ailleurs ferme ce panneau. Aucun menu de grille séparé et aucun
|
||||
mode à activer pour le clic droit de l'Atlas ordinaire.
|
||||
|
||||
Habitant → Propriété et `/sanctuary property` ouvrent cette carte directement.
|
||||
Avant l'aptitude Atlas, elle montre uniquement le terrain déjà chargé et envoyé
|
||||
au joueur, à huit chunks au plus, sans conserver un historique supplémentaire.
|
||||
Les échantillons sont bornés à quatre tuiles par joueur et par tick, dans un
|
||||
budget global de 2 ms, sans charger de chunks. L'Atlas complet garde ses
|
||||
prérequis ; une fois débloqué, les tuiles découvertes peuvent aussi être choisies.
|
||||
Le serveur contrôle la portée, la frontière, la réserve de départ de 32 blocs,
|
||||
les fonds et la révision. La migration de l'ancien volume requiert une seconde
|
||||
confirmation explicite dans le panneau, avec le remboursement indiqué.
|
||||
|
||||
## Validation
|
||||
|
||||
Les **58 vérifications indépendantes** du registre passent : cinq claims gratuits,
|
||||
prix suivants, conflits, révision périmée, reprise avec ou sans reçu, horloge,
|
||||
trente jours d’arrêt simulés, renouvellement, expiration, migration et refus de
|
||||
JSON invalide ou d’une graine différente.
|
||||
|
||||
Le parcours client **Vulkan**, en **FR/EN GUI 2/3/4**, réussit en **54 s** :
|
||||
admission réelle, carte proche avant aptitude Atlas, recentrages rapides,
|
||||
clic sur un chunk voisin (9, 8 alors que le joueur est en 8, 8), premier claim,
|
||||
débit d’un stack de saphirs, puis clic droit dans l’Atlas ordinaire, panneau
|
||||
compact et Échap conservant la carte. Les huit captures finales sont dans
|
||||
`build/claims272-screenshots/` ; les formats FR GUI 2/4 et EN GUI 4 ont été
|
||||
inspectés. La fermeture ne reproduit plus l’exception de parcours des sessions
|
||||
Blocodex : le flush parcourt désormais un instantané stable.
|
||||
|
||||
Les tests natifs ciblent les paiements XP et saphirs, les reçus sauvegardés dans
|
||||
le joueur, les vrais `getDestroyProgress`, la frontière du chunk, la hauteur,
|
||||
les interactions libres, la migration remboursée et les refus terrain inconnu / spawn.
|
||||
Le lot couvre aussi les anciens volumes, le minage, les menus et l’overview.
|
||||
`check build assemblePack` réussit : **25 tests natifs ciblés**, en 2 min 44 s
|
||||
pour la commande complète. Le MRpack beta.272 est exporté et vérifié : ZIP,
|
||||
Minecraft 26.3, Loader 0.19.5 et octets des deux JAR locaux identiques aux builds.
|
||||
Les archives beta.270 et beta.271 gardent leurs hashes antérieurs.
|
||||
La validation finale et le MRpack sont consignés dans
|
||||
`build/claims272-validation.json`.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=claims272,property270,mining,overview271,menus \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryClaims272ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
Le multiplicateur s’applique à la progression native ; les blocs instantanés,
|
||||
le Créatif et la granularité des ticks conservent leur fonctionnement Minecraft.
|
||||
Abandon, transfert, partage de droits et protection contre les mécanismes
|
||||
indirects restent hors de ce lot. Aucun serveur ou instance personnelle déployé.
|
||||
@@ -0,0 +1,120 @@
|
||||
# CLAIM-278 — Duel Battle consenti pour une propriété
|
||||
|
||||
Branche `codex/claim-battle-duels`, demande du 25 octobre 2026.
|
||||
Le créateur confirme que cette étape vise les propriétés déjà revendiquées.
|
||||
|
||||
## Contrat du duel
|
||||
|
||||
Depuis le clic droit sur un claim, un autre habitant peut proposer de le disputer.
|
||||
Le challenger doit avoir atteint le seuil d’habitation Demeure sur ce chunk ;
|
||||
la priorité d’influence ne lui est pas nécessaire pour une proposition consentie.
|
||||
Le propriétaire garde ses droits acquis, même sans preuve Demeure rétroactive.
|
||||
Les deux joueurs doivent avoir Carte active et être disponibles pour Battle.
|
||||
|
||||
Le challenger valide une proposition explicite ; le propriétaire accepte ou
|
||||
refuse celle-ci. Le chunk, les deux participants, le temps de protection restant
|
||||
et les règles sont affichés. Une acceptation ne vaut que pour cette proposition.
|
||||
Une modification du claim avant acceptation invalide la proposition.
|
||||
|
||||
L’acceptation crée un Battle privé à deux joueurs : joueurs seuls, rayon de
|
||||
48 blocs autour du lieu annoncé par le challenger, cinq minutes, nourriture,
|
||||
potions et perles autorisées, mise d’entrée nulle. Les deux joueurs doivent
|
||||
être dans ce périmètre. Chacun valide ensuite Prêt dans Battle ; le challenger
|
||||
lance la préparation native de dix secondes. Aucun troisième participant ne
|
||||
peut rejoindre ce duel. Les morts, tombes, abandons et déconnexions pendant
|
||||
le combat suivent les règles Battle existantes. Elles sont rappelées avant
|
||||
l’accord. Pas de téléportation ni terrain créé automatiquement.
|
||||
|
||||
Le vainqueur devient propriétaire du seul chunk annoncé. Le défenseur gagnant
|
||||
conserve son claim. L’échéance absolue de protection est conservée : aucun temps
|
||||
n’est ajouté, retiré ou remboursé. Couleur, nom et multiplicateurs de minage
|
||||
suivent le nouveau propriétaire. Aucun coût XP ou saphir supplémentaire n’est
|
||||
prélevé pour transférer un claim déjà acheté.
|
||||
|
||||
Refus, annulation avant lancement, expiration d’invitation, égalité ou interruption
|
||||
du serveur sans résultat enregistré : aucune mutation de propriété. Un abandon
|
||||
ou une déconnexion après lancement vaut défaite selon Battle. Les autres claims
|
||||
et les duels ordinaires restent indépendants.
|
||||
|
||||
## Contrat de persistance et reprise
|
||||
|
||||
Aucune modification des schémas de Demeure, des claims, des mises Arena ou des
|
||||
reçus joueurs. Aucun monde personnel, chunk ou génération n’est modifié par les
|
||||
essais. Le transfert met à jour uniquement le propriétaire d’un claim existant,
|
||||
dans le schéma 1 de `sanctuary/chunk-claims-v1.json`, par écriture atomique.
|
||||
|
||||
Nouveau journal indépendant `sanctuary/claim-duels-v1.json`, schéma 1, lié à la
|
||||
graine. Il enregistre les deux accords sur le chunk et son état initial avant
|
||||
la création du Battle, puis le vainqueur avant toute mutation de propriétaire.
|
||||
Le résultat est appliqué par comparaison de l’état attendu, puis clôturé. Une
|
||||
reprise après interruption entre l’écriture du résultat et sa clôture applique
|
||||
ce transfert une seule fois. Les accords sans résultat durable sont annulés
|
||||
au redémarrage ; les mises Battle suivent leur propre journal de remboursement.
|
||||
|
||||
Les mutations du claim sont bloquées pendant un accord actif ou un résultat à
|
||||
régler. Les limites de propriété sont vérifiées avant accord ; les participants
|
||||
inscrits à Battle ne peuvent acheter d’autres claims pendant celui-ci. Les
|
||||
fichiers invalides ou modifiés extérieurement sont conservés et les nouveaux
|
||||
duels sont refusés. Une erreur avant écriture durable du vainqueur ne transfère
|
||||
pas la propriété ; une erreur après cette écriture garde le résultat à reprendre.
|
||||
Terminer les duels et solder le journal avant retour à une version antérieure.
|
||||
|
||||
## Vérification
|
||||
|
||||
`check build assemblePack` réussit en **2 min 55 s**, avec **40 tests serveur
|
||||
ciblés**. Les six nouveaux scénarios vérifient l’absence de transfert ou de
|
||||
combat sans le deuxième accord, les refus du challenger et des tiers tentant
|
||||
d’accepter à la place du propriétaire, le refus du propriétaire, la relecture
|
||||
de la proposition la plus récente, les validations Prêt natives, la mort réelle
|
||||
résolvant Battle et transférant le chunk exact, la conservation de son échéance,
|
||||
l’abandon après lancement, l’annulation avant lancement, l’égalité native au
|
||||
délai écoulé et l’invalidation d’un enjeu modifié ou expiré. Une arène publique
|
||||
ordinaire accepte toujours un troisième inscrit ; y gagner ne donne aucun claim.
|
||||
|
||||
Les **26 vérifications pures** du journal couvrent le consentement durable,
|
||||
les identités et chunks réservés, le refus d’un gagnant tiers, le redémarrage
|
||||
sans résultat, le résultat enregistré avant transfert, la reprise après mutation
|
||||
avant clôture, l’idempotence, la victoire du défenseur, les conflits de propriétaire
|
||||
ou de protection, la limite de 256 claims, la graine, les nombres JSON stricts
|
||||
et les fichiers corrompus ou modifiés extérieurement. Les **63 contrôles du
|
||||
registre de claims**, Demeure et les scénarios historiques ciblés passent aussi.
|
||||
|
||||
Le parcours **Vulkan FR/EN GUI 2/3/4** réussit en **53 s**, avec **18 captures**.
|
||||
Il ouvre le dossier depuis le clic droit de l’Atlas, lit les conséquences et
|
||||
les boutons d’acceptation/refus dans les deux langues aux trois tailles, refuse
|
||||
par le vrai paquet client, puis accepte une nouvelle proposition. L’enjeu est
|
||||
présent dans Battle avant Prêt. Une victoire native du propriétaire conserve
|
||||
son terrain. Après le délai de sortie de combat existant, le client devient
|
||||
challenger d’une autre propriété ; son propriétaire accepte indépendamment,
|
||||
les deux valident Prêt et le client lance réellement Battle. La mort native du
|
||||
défenseur transfère le claim et son échéance exacte. La carte déjà ouverte
|
||||
reçoit le nouveau propriétaire/couleur et raccorde le CTM au claim voisin sans
|
||||
réouverture. Captures : `build/claims278-screenshots/` ; inspections des écrans
|
||||
FR GUI 4 d’accord, FR GUI 2 de Battle et de la carte après transfert.
|
||||
|
||||
La réouverture d’un dossier n’est pas limitée par le délai anti-double-action :
|
||||
les lectures peuvent changer immédiatement de proposition, tandis que les
|
||||
mutations restent temporisées. Le panneau d’accord dispose d’un fond lisible
|
||||
et son compteur n’oblige pas à revenir en haut du défilement chaque seconde.
|
||||
Les combattants de ce parcours sont à l’air libre dans un monde plat ignoré.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=claims278,claims277,menu275,claims273,claims272,property270,mining,overview271,menus,map,demeure \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryClaims278ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
MRpack beta.278 exporté et vérifié : intégrité ZIP, Minecraft 26.3, Loader 0.19.5,
|
||||
versions/libellés, nouveaux contrôleurs présents et deux JAR identiques aux
|
||||
builds locaux. Les huit archives beta.270 à beta.277 gardent leurs empreintes.
|
||||
Reçu : `build/claims278-validation.json`. Aucun déploiement de serveur, monde
|
||||
personnel ou instance Prism, ni publication de canal.
|
||||
|
||||
Le lot porte sur un seul chunk déjà revendiqué et un Battle entre joueurs.
|
||||
Les familiers/modes mixtes, ensembles de claims, transferts sans combat ou
|
||||
attributions de terrains encore libres ne sont pas ajoutés. Les reprises sont
|
||||
éprouvées aux étapes du journal, sans simulation d’une panne physique du disque.
|
||||
@@ -0,0 +1,80 @@
|
||||
# CLAIM-276 — Contours CTM et protection à huit saphirs
|
||||
|
||||
Branche `codex/inhabitant-property`, demande du 25 octobre 2026.
|
||||
|
||||
## Résultat demandé
|
||||
|
||||
Toutes les propriétés doivent apparaître sur l’Atlas et son aperçu de Pause.
|
||||
Les claims d’un même propriétaire forment un contour continu, sans traits
|
||||
internes entre chunks adjacents. Une propriété sans protection garde uniquement
|
||||
son contour ; un chunk protégé ajoute un fond à la couleur du propriétaire.
|
||||
La protection coûte désormais **8 saphirs par chunk pour trois jours de serveur
|
||||
en marche**. Un arrêt du serveur suspend toujours le compteur ; une déconnexion
|
||||
ne le suspend pas. Les multiplicateurs de minage ×2 / ×0,5 restent identiques.
|
||||
|
||||
## Rendu et accès
|
||||
|
||||
- Contour d’un pixel de carte, directement dans les textures de terrain et de
|
||||
calque, avec les mêmes coordonnées et le même échantillonnage que la carte.
|
||||
- Raccords par propriétaire sur les quatre côtés et les angles rentrants ;
|
||||
la protection d’un voisin ne crée pas de frontière intérieure de propriété.
|
||||
- Fond uniquement sur les chunks encore protégés. À expiration, le contour
|
||||
reste visible et la propriété demeure attribuée.
|
||||
- Toute arrivée, suppression ou modification de claim recalcule aussi ses
|
||||
voisins, y compris les diagonales. Les achats actualisent la carte ouverte.
|
||||
- Couleur persistante du personnage, même hors ligne ; légende compacte pour
|
||||
tous les propriétaires visibles, survol et masquage conservés.
|
||||
- Aucun pixel de brouillard ou de vide n’est coloré. Seules les métadonnées des
|
||||
tuiles effectivement transmises sont acceptées. L’aptitude Carte achetée et
|
||||
active reste obligatoire pour ouvrir et gérer les propriétés.
|
||||
- Demeure et la disposition Habitant / Pause de beta.275 sont conservés.
|
||||
|
||||
## Contrat de conservation
|
||||
|
||||
Le schéma 1 de `sanctuary/chunk-claims-v1.json` et les reçus natifs restent
|
||||
identiques. Aucune réécriture automatique d’échéance, conversion de terrain,
|
||||
remise à zéro, attribution depuis Demeure ou régénération n’est effectuée.
|
||||
Les protections de sept jours déjà payées gardent leur échéance exacte.
|
||||
Une transaction de sept jours préparée par beta.272–275 reste récupérable :
|
||||
son reçu de paiement natif valide sa durée d’origine ; sans reçu, elle est
|
||||
annulée comme avant, sans retirer la couverture antérieure. Le lecteur accepte
|
||||
les deux périodes préparées, trois et sept jours ; les nouvelles réservations
|
||||
créées par beta.276 utilisent uniquement trois jours. Chaque renouvellement
|
||||
ajoute trois jours à l’échéance en cours si elle est encore active, sinon au
|
||||
temps serveur courant, contre huit saphirs. Aucun remboursement rétroactif
|
||||
n’est appliqué aux achats antérieurs.
|
||||
|
||||
## Vérification
|
||||
|
||||
`check build assemblePack` réussit en **2 min 38 s**, avec **30 tests serveur
|
||||
ciblés** et **63 vérifications du registre**. Les achats natifs refusent sept
|
||||
saphirs sans mutation, consomment exactement huit saphirs répartis sur plusieurs
|
||||
piles, couvrent un seul chunk pour trois jours et ajoutent exactement trois
|
||||
jours lors d’un renouvellement. La reprise avec/sans reçu d’une ancienne période
|
||||
de sept jours et le renouvellement de cette couverture après redémarrage sont
|
||||
vérifiés. Les protections et multiplicateurs restent applicables sans Carte.
|
||||
|
||||
Le parcours **Vulkan FR/EN GUI 2/3/4** réussit en **50 s**, avec **19 captures**.
|
||||
Il achète réellement Carte et une protection, contrôle les pixels du contour et
|
||||
du fond, le raccord en L et carré, les frontières entre propriétaires, le nom et
|
||||
la couleur du propriétaire hors ligne, l’arrivée d’un voisin sans réouverture,
|
||||
l’expiration dans le modèle, les paquets périmés et la borne du monde, le
|
||||
masquage/réaffichage et les pixels de l’aperçu de Pause. Les libellés montrent
|
||||
huit saphirs et trois jours. Captures dans `build/claims276-screenshots/` ;
|
||||
inspection des vues carte FR GUI 2, contexte FR GUI 4 / EN GUI 2 et Pause GUI 4.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=menu275,claims273,claims272,property270,mining,overview271,menus,map,demeure \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryClaims276ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
MRpack beta.276 exporté et vérifié : intégrité ZIP, Minecraft 26.3, Loader 0.19.5,
|
||||
versions et libellés FR/EN, deux JAR embarqués identiques aux builds locaux.
|
||||
Les six archives beta.270 à beta.275 gardent leurs empreintes. Reçu :
|
||||
`build/claims276-validation.json`. Aucun déploiement personnel ni publication
|
||||
de canal n’est effectué.
|
||||
@@ -0,0 +1,98 @@
|
||||
# CLAIM-277 — Habitation et influence avant revendication
|
||||
|
||||
Branche `codex/claims-demeure`, demande du 25 octobre 2026.
|
||||
Le créateur confirme le seuil existant de Demeure et précise qu’un autre joueur
|
||||
peut revendiquer le terrain s’il prend plus d’influence avant le premier claim.
|
||||
|
||||
## Règles
|
||||
|
||||
Une simple visite ne permet plus de revendiquer un chunk. Demeure doit y
|
||||
reconnaître un habitant : influence totale d’au moins 0,8, dont au moins 20 %
|
||||
pour un joueur, selon les seuils déjà utilisés par sa lecture du territoire.
|
||||
Aucun compteur de minutes, nuits ou délai supplémentaire n’est introduit.
|
||||
|
||||
Sur un chunk libre, l’habitant avec le plus d’influence effective actuelle peut
|
||||
revendiquer. À égalité (tolérance numérique 10⁻⁹ pour les arrondis), l’ordre
|
||||
persisté des premières contributions acceptées départage les habitants.
|
||||
Ainsi, le premier garde la priorité jusqu’à ce qu’un autre le dépasse. Les
|
||||
contributions peuvent précéder l’achat de Carte. Une identité hors ligne peut
|
||||
rester prioritaire ; les autres joueurs peuvent la dépasser par leur activité.
|
||||
La décroissance native de Demeure continue de s’appliquer aux terrains libres.
|
||||
|
||||
Le clic droit sur la carte explique la condition manquante ou nomme l’habitant
|
||||
prioritaire ; l’action est désactivée si la condition n’est pas remplie. Le
|
||||
panneau d’un terrain libre s’actualise. Commande et paquets d’action vérifient
|
||||
la même priorité côté serveur, au moment de l’achat, avant toute réservation
|
||||
ou dépense. Aucun duel ou transfert automatique n’est ajouté.
|
||||
|
||||
Une fois revendiqué, le claim reste attribué malgré les variations d’influence.
|
||||
Tous les claims antérieurs et leurs durées de protection sont conservés, sans
|
||||
exiger de preuve rétroactive. Leur protection reste renouvelable même si Demeure
|
||||
est indisponible. Cinq claims gratuits puis XP, huit saphirs pour trois jours de
|
||||
serveur, contours CTM et accès par Carte achetée et active restent inchangés.
|
||||
|
||||
## Contrat de conservation
|
||||
|
||||
Aucun nouveau fichier ni changement de schéma. `data/demeure/footprints-v1.json`
|
||||
et `sanctuary/chunk-claims-v1.json` restent identiques. L’ordre des premières
|
||||
traces est déjà conservé par la liste des influences et son rechargement ; on
|
||||
ne prétend pas reconstituer une date de franchissement du seuil absente des
|
||||
anciennes données. La requête de priorité est une lecture des empreintes,
|
||||
indépendante de leur tri visuel par influence et de l’UUID des joueurs.
|
||||
|
||||
Demeure conserve la responsabilité des traces, des budgets, des seuils, de la
|
||||
décroissance et de leur persistance. Sanctuary applique ses conditions de
|
||||
revendication. Les empreintes sont sauvegardées atomiquement avant de réserver
|
||||
ou débiter un nouveau claim. Une lecture ou écriture refusée empêche cet achat
|
||||
sans effacer le fichier ; les propriétés déjà acquises restent valables.
|
||||
|
||||
Un paquet de lecture `sanctuary:claim_residency_v1` fournit l’état et le nom/couleur
|
||||
prioritaire pour le seul chunk sélectionné et accessible. Les anciens codecs
|
||||
et identifiants restent inchangés. Aucun état d’habitation n’est transmis pour
|
||||
un terrain inaccessible ou avant Carte. Aucun monde personnel ni génération
|
||||
n’est modifié par les essais.
|
||||
|
||||
## Vérification
|
||||
|
||||
`check build assemblePack` réussit en **2 min 52 s**, avec **34 tests serveur
|
||||
ciblés**. Les quatre nouveaux tests couvrent les activités natives nécessaires,
|
||||
le refus d’un passage ou d’un achat sans habitation, cinq claims gratuits puis
|
||||
le coût du sixième, l’égalité et le dépassement avant revendication, l’acquisition
|
||||
par le nouvel habitant prioritaire, l’absence de transfert après achat et le
|
||||
renouvellement sans domination Demeure. Les propriétés anciennes sans preuve
|
||||
rétroactive restent protégées ; le paquet de lecture est testé, ainsi que le
|
||||
refus de divulguer les habitants d’un chunk inaccessible ou avant Carte.
|
||||
|
||||
Les tests purs Demeure ajoutent **14 scénarios d’habitation, priorité et point
|
||||
de sauvegarde**, dont l’ordre conservé après rechargement, indépendamment du tri
|
||||
visuel et des UUID, la décroissance, les dimensions et l’intégrité du fichier
|
||||
même quand le modèle en mémoire n’a pas changé. Les **63 vérifications du registre
|
||||
de claims** et les scénarios historiques ciblés passent aussi. Les montages de
|
||||
paiement et de migration préparent leurs traces d’habitation indépendamment des
|
||||
tentatives de claim : un clic refusé ne crée aucune influence.
|
||||
|
||||
Le parcours **Vulkan FR/EN GUI 2/3/4** final réussit en **51 s**, avec **28 captures**.
|
||||
Il passe par Hello World et l’achat de Carte, constate le bouton désactivé avant
|
||||
habitation, le refus d’un simple passage, le changement de priorité quand Nora
|
||||
prend plus d’influence et son retour au joueur lorsque celui-ci la dépasse.
|
||||
Un autre spot libre est réellement revendiqué par Nora après dépassement.
|
||||
Le nom/couleur prioritaire et le bouton désactivé sont vérifiés dans les deux
|
||||
langues aux trois tailles ; les contextes d’achat et de protection, les contours
|
||||
CTM, le masquage et l’aperçu de Pause restent valides. Captures dans
|
||||
`build/claims277-screenshots/`, avec inspection des panneaux FR GUI 4 et EN.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=claims277,menu275,claims273,claims272,property270,mining,overview271,menus,map,demeure \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryClaims277ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
MRpack beta.277 exporté et vérifié : ZIP, Minecraft 26.3, Loader 0.19.5,
|
||||
versions et libellés FR/EN, octets des deux JAR embarqués identiques aux builds
|
||||
locaux. Les archives beta.270 à beta.276 restent identiques. Reçu :
|
||||
`build/claims277-validation.json`. Aucune publication de canal ni synchronisation
|
||||
d’installation personnelle n’est effectuée.
|
||||
@@ -0,0 +1,71 @@
|
||||
# CLAIM-04 — Couleurs et état des claims sur la carte, beta.273
|
||||
|
||||
Branche `codex/inhabitant-property`, demande du 24 octobre 2026.
|
||||
|
||||
Chaque chunk revendiqué porte la couleur persistante de son propriétaire,
|
||||
choisie dans Hello World. Le nom et la couleur restent disponibles hors ligne.
|
||||
Un claim protégé a une teinte plus présente, une bordure pleine et un bouclier ;
|
||||
un claim sans protection a une teinte légère et une bordure en pointillés.
|
||||
Le survol donne le propriétaire, l’état et la durée restante ; une légende
|
||||
rappelle les deux styles. Le clic droit continue à ouvrir le panneau existant.
|
||||
|
||||
Un bouton **Propriétés : oui/non** masque ou réaffiche la teinte, les bordures,
|
||||
les boucliers, la légende et les infobulles de claims. Le choix est partagé
|
||||
avec l’aperçu de Pause et conservé tant que le client reste ouvert, y compris
|
||||
après fermeture de la carte. Le clic droit et les protections restent actifs ;
|
||||
les données continuent de se mettre à jour pour un réaffichage immédiat.
|
||||
Ce choix de session n’ajoute aucun fichier ni format de sauvegarde.
|
||||
|
||||
Les apparences sont envoyées automatiquement avec les tuiles de la carte,
|
||||
pour la vue proche comme pour l’Atlas. Aucun clic préalable n’est nécessaire.
|
||||
Seules les tuiles déjà transmises au joueur reçoivent leurs claims ; aucun
|
||||
terrain inconnu n’est révélé. Une acquisition ou un renouvellement actualise
|
||||
la tuile affichée. L’expiration change le style depuis la durée serveur restante,
|
||||
sans retirer la propriété. Les réponses d’une ancienne requête sont ignorées. Les achats diffusent aussi
|
||||
une mise à jour ponctuelle des cellules déjà observées, indépendante d’un
|
||||
rafraîchissement en cours ; aucune cellule inconnue n’est acceptée côté client.
|
||||
|
||||
Ce lot ajoute un paquet de présentation borné. Les identifiants existants,
|
||||
registres, reçus, règles, prix, durées et formats de sauvegarde restent identiques
|
||||
à beta.272. Aucune migration ni modification de terrain.
|
||||
|
||||
## Validation
|
||||
|
||||
Le parcours **Vulkan FR/EN, GUI 2/3/4**, passe en **62 s** sur un nouveau monde
|
||||
plat de graine 273. Il conserve l’admission et les achats réels de beta.272,
|
||||
puis compare quatre chunks contigus appartenant à deux propriétaires : chacun
|
||||
a un chunk protégé et un chunk sans protection. L’un des propriétaires n’est pas
|
||||
connecté. Les couleurs distinctes, le nom hors ligne, les deux styles, les
|
||||
mises à jour après achat, les requêtes rapides, le clic droit, Échap et l’aperçu
|
||||
de Pause sont vérifiés. Le masquage, sa conservation après fermeture, le clic
|
||||
droit sous masquage et le réaffichage sont contrôlés, avec captures de la carte
|
||||
et de l’aperçu de Pause sans propriétés. **19 captures** sont conservées dans
|
||||
`build/claims273-screenshots/`, avec inspection FR GUI 2/4, EN GUI 4 et Pause.
|
||||
|
||||
Le cache est également vérifié avec une horloge contrôlée : expiration sans
|
||||
perte de propriété, réponse périmée ignorée, mise à jour d’achat pendant un
|
||||
rafraîchissement, cellule inconnue refusée et remplacement par une tuile vide.
|
||||
Le test serveur ajouté couvre le nom et le RGB persistants d’un propriétaire
|
||||
hors ligne, la durée et le codec du paquet, avec refus hors des cellules
|
||||
transmises et au-delà de 64 cellules. Les registres conservent leurs 58
|
||||
vérifications indépendantes de beta.272.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=claims273,claims272,property270,mining,overview271,menus \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryClaims273ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
`check build assemblePack` réussit en **2 min 41 s**, avec **26 tests serveur
|
||||
ciblés** et les 58 vérifications indépendantes du registre. Le MRpack beta.273
|
||||
est exporté et vérifié : ZIP, Minecraft 26.3, Loader 0.19.5 et octets des deux
|
||||
JAR locaux identiques aux builds. Les archives beta.270 à beta.272 restent
|
||||
inchangées.
|
||||
|
||||
Le reçu final de build et de distribution est dans
|
||||
`build/claims273-validation.json`. Aucun serveur, canal packwiz, monde ou
|
||||
instance personnelle déployé. Aucun changement du comportement de protection.
|
||||
@@ -0,0 +1,112 @@
|
||||
# LIGHT-140 — Lumières colorées portées et distance
|
||||
|
||||
Socle beta.139 `c05c338`, branche `codex/colored-dynamic-beta140`.
|
||||
Minecraft 26.3 / Java 25. Livraison beta.140.
|
||||
|
||||
## Contrat
|
||||
|
||||
Relier les couleurs aux vraies sources de lumière dynamique : mains, tête,
|
||||
cosmétiques, objets au sol et feu, selon le système existant. Renforcer la
|
||||
teinte et activer les lumières colorées par défaut à 30 %. Ajouter une distance
|
||||
d'affichage de 8, 16, 32 ou 64 blocs (16 par défaut), indépendante de la portée
|
||||
native de chaque source. Augmenter la distance coûte davantage en mémoire et
|
||||
calcul ; aucun chargement forcé de chunk. Les choix sauvegardés sont conservés.
|
||||
|
||||
Sources portées actualisées avec le système dynamique, sans reconstruire tout
|
||||
le champ statique à chaque mouvement. Aucun changement de monde ou de règle
|
||||
serveur. Vérifications natives OpenGL et Vulkan, puis construction et archives.
|
||||
|
||||
## Couleurs et fondus
|
||||
|
||||
Torches ordinaires : température native par défaut ; option « Torches chaudes »
|
||||
pour retrouver l'orangé. Glowstone jaune, lave jaune-rouge, redstone rouge saturé,
|
||||
cuivre vert (posé, en main ou sur la tête). Le cuivre est reconnu avant les
|
||||
familles génériques de torches et lanternes. Les palettes explicites restent
|
||||
indépendantes des packs ; le repli des autres matériaux suit leurs textures.
|
||||
|
||||
Le rendu s'atténue sur le dernier quart de la distance choisie. Le champ précédent
|
||||
reste disponible pendant un fondu de 300 ms vers le nouveau champ ; l'activation
|
||||
et les sources dynamiques ont aussi un fondu. Le changement de distance est
|
||||
interpolé. Les sources mobiles utilisent la même sélection bornée et les mêmes
|
||||
intensités que la lumière dynamique existante, avec interpolation visuelle des
|
||||
positions et couleurs. Elles héritent de sa propagation radiale, y compris de
|
||||
ses limites d'occultation ; les blocs posés conservent leur propagation avec murs.
|
||||
|
||||
Le volume varie réellement selon la distance (56, 72, 104 ou 168 blocs de côté,
|
||||
avec marge de propagation). Les grandes distances augmentent la mémoire et le
|
||||
délai de reconstruction ; la construction reste répartie entre les images.
|
||||
Deux champs coexistent brièvement pour le fondu. Seuls les chunks déjà chargés
|
||||
sont lus. La portée lumineuse native des torches n'est pas allongée.
|
||||
|
||||
## Frontières de saturation
|
||||
|
||||
Le stockage beta.139 tronquait les canaux faibles séparément en fin de portée :
|
||||
un bleu pouvait perdre son rouge avant son vert, puis devenir plus saturé sur
|
||||
une frontière visible. Le stockage logarithmique conserve maintenant une marge
|
||||
sous le niveau lumineux natif zéro. Le shader applique la coupure à l'énergie
|
||||
globale en conservant les rapports RGB. La réponse devient linéaire près du noir,
|
||||
sans amplification par racine quatrième des très faibles contributions.
|
||||
|
||||
La transition des champs interpole le résultat colorimétrique rendu, pas une
|
||||
énergie ensuite amplifiée. Les sources mobiles ont une atténuation de fondu
|
||||
compensée pour la même réponse. Le test contrôle les rapports rouge/bleu et
|
||||
vert/bleu d'une torche des âmes de 1 à 9 blocs, jusqu'au bord de sa portée.
|
||||
|
||||
## Vérifications natives
|
||||
|
||||
Minecraft 26.3 / Java 25 sur Apple M1, mondes de test neufs de graine 122 :
|
||||
|
||||
- OpenGL 4.1 Metal : **2 min 40 s**, `build/colored140-opengl.log`.
|
||||
- Vulkan / MoltenVK 1.4.2, profondeur 0–1 et transparence améliorée :
|
||||
**2 min 26 s**, `build/colored140-vulkan.log`.
|
||||
|
||||
Les deux exécutions passent `COLORED139_PASS` et `COLORED140_PASS` :
|
||||
propagation avec murs, sources hors champ, lampes allumées/éteintes, retrait,
|
||||
rechargement des ressources, cache, déplacement/retour de caméra, OFF/zéro,
|
||||
préférences et traductions FR/EN. Les nouveaux contrôles couvrent la teinte
|
||||
bleue jusqu'à neuf blocs, la torche native inchangée, l'option chaude, le cuivre
|
||||
vert et le rouge saturé, les deux mains et le cosmétique de tête, la position
|
||||
en troisième personne, les quatre distances et un fondu sans dépassement.
|
||||
|
||||
Dans la même scène contrôlée, la somme d'écarts OFF/torche chaude à 30 % vaut
|
||||
3 926 093 / 3 926 092 sur OpenGL/Vulkan, contre 2 025 577 en beta.139 à 35 %.
|
||||
Cette mesure vérifie l'accentuation demandée, pas la performance. Le test fige
|
||||
uniquement le scintillement de la lightmap native ; cette sonde et les tests
|
||||
client ne sont pas distribués. Les captures finales sont conservées sous
|
||||
`build/colored140-opengl-screenshots/` et `build/colored140-vulkan-screenshots/`.
|
||||
Comparatif autonome : `build/Shader-beta.140-comparaison.html`.
|
||||
|
||||
Pas de validation des pilotes Windows de l'utilisateur revendiquée. Les
|
||||
limites de beta.139 pour le rendu sous l'eau/lave et les panoramas restent
|
||||
ouvertes. Les sources dynamiques gardent l'occultation du système existant.
|
||||
Aucun monde personnel ouvert ni modifié.
|
||||
|
||||
## Construction et archives
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
|
||||
réussit en **2 min 22 s**, 126 tâches. Le GameTest serveur dédié reste exclu
|
||||
conformément au refus EULA antérieur ; les tests clients ci-dessus sont exécutés
|
||||
séparément. Log : `build/shader140-build.log`.
|
||||
|
||||
La comparaison avec beta.139 trouve **18 entrées de production modifiées**,
|
||||
limitées aux lumières dynamiques/colorées, options et aides FR/EN. Les sources
|
||||
des JAR correspondent aux fichiers du dépôt. Les archives normale/Test contiennent
|
||||
le même JAR Sanctuary ; la version, les dépendances exactes, les textures de
|
||||
gemmes et de la clé de Steve, l'absence de classes de test et le template complet
|
||||
sont vérifiés. Reçu : `build/shader140-artifact.json`.
|
||||
|
||||
SHA-256 du JAR : `853284c1a61c7fce12edd2f7763717321eef56977290eb0e7c5db5e30bff442f`.
|
||||
|
||||
- Sanctuary-beta.140.mrpack : `1b366746e4d6bebfbe0115c849524bdeb81c14eee89a2510f9dbe18808974d6a`.
|
||||
- Sanctuary-Test-beta.140.mrpack : `50c3cdf759117bb5286d41b4535fde15d9d84deaac833b7f8f61c4a0d29b72e7`.
|
||||
|
||||
## Livraison
|
||||
|
||||
[Release beta.140](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.140)
|
||||
publiée sur le commit source `6e1b3b71088437fe57cf2b9b979b6d62711628d3` ; canal stable
|
||||
`2c360a0759d4a164f82c89ac2bef04ff69d50875` vérifié après publication.
|
||||
Deux synchronisations isolées puis deux dans la même instance Sanctuary Beta
|
||||
réussissent. Les **923 fichiers personnels** suivis gardent leurs hashes.
|
||||
Sauvegarde préalable : `sanctuary-backups/before-beta.140/`. Aucun monde personnel
|
||||
ouvert. Reçus : `build/shader140-isolated.json` et `build/shader140-prism.json`.
|
||||
Archives normale/Test/template et comparaison copiées dans `sanctuary-beta/build/`.
|
||||
@@ -0,0 +1,107 @@
|
||||
# LIGHT-139 — Lumières colorées
|
||||
|
||||
Socle beta.138 + vérification Vulkan `9d84a02`, Minecraft 26.3 / Java 25.
|
||||
Branche `codex/colored-lights-beta139`, livraison beta.139.
|
||||
|
||||
## Contrat
|
||||
|
||||
Option locale « Lumières colorées » avec intensité. Les vrais blocs émetteurs
|
||||
teintent discrètement leurs environs, y compris hors champ. Torches/lanternes,
|
||||
lave et feu chauds ; sources des âmes bleues ; redstone active rouge ;
|
||||
froglights par variante ; sources Sanctuary selon leur texture/matière.
|
||||
Les blocs éteints n'émettent pas. Le bloom et les inclusions émissives des
|
||||
minerais restent indépendants ; aucune lumière de gameplay n'est ajoutée.
|
||||
|
||||
Propagation RGB dans un volume local de blocs chargés, obstacles et formes
|
||||
natives, construction répartie entre les images, cache des couleurs de
|
||||
matériaux. Aucun chargement forcé de chunk, accès aux mondes personnels,
|
||||
changement de sauvegarde, réseau ou règles serveur.
|
||||
|
||||
## Réalisation
|
||||
|
||||
Dans les options du shader : « Lumières colorées », désactivées initialement,
|
||||
et une intensité de 0 à 100 %, réglée à 35 %. Zéro ou OFF libère les ressources.
|
||||
Les préférences existantes sont conservées. Libellés et aides FR/EN.
|
||||
|
||||
Les familles vanilla demandées ont une palette dédiée. Les autres émetteurs,
|
||||
y compris ceux de Sanctuary, utilisent la couleur des pixels lumineux de leurs
|
||||
textures de modèle, calculée puis mise en cache. Ce repli suit les packs de
|
||||
ressources ; les palettes dédiées vanilla restent constantes. Une texture
|
||||
illisible ou sans pixels exploitables utilise du blanc. Les blocs purement
|
||||
émissifs du bloom, sans émission lumineuse native, ne deviennent pas des lampes.
|
||||
|
||||
Le champ couvre un cube de 64 blocs de côté autour de la caméra. Une marge de
|
||||
14 blocs réserve la propagation aux sources présentes dans le volume ; le rendu
|
||||
s'atténue progressivement sur 4 blocs à sa périphérie. C'est donc un effet de
|
||||
proximité, pas une illumination de tous les chunks visibles. Les formes et
|
||||
l'opacité natives règlent le passage de la lumière. Les canaux utilisent des
|
||||
maxima indépendants, sans addition illimitée des sources superposées.
|
||||
|
||||
Le calcul CPU est réparti avec un budget visé de 2 ms par image, plus les
|
||||
allocations et chargements ponctuels de matériaux ; aucun chiffre de FPS n'est
|
||||
garanti. Un monde immobile réutilise son champ. Les changements rapides et les
|
||||
déplacements peuvent présenter un bref retard, le temps de publier un champ
|
||||
complet. Aucun chargement forcé de chunk. Une texture 512 × 512 contient le champ.
|
||||
La passe GPU teinte les surfaces visibles, atténue l'effet au soleil et dans le
|
||||
brouillard, puis laisse agir le SSGI et le bloom. Les sources tenues, entités,
|
||||
particules et le rendu sous l'eau/lave ne sont pas couverts par cette option.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Essais client natifs réussis dans des mondes neufs (graine 122) sur Apple M1 :
|
||||
|
||||
- OpenGL 4.1 Metal : **1 min 46 s**, `build/colored139-opengl.log`.
|
||||
- Vulkan / MoltenVK 1.4.2, profondeur 0–1 et transparence améliorée :
|
||||
**1 min 30 s**, `build/colored139-vulkan.log`.
|
||||
|
||||
Les deux journaux contiennent `COLORED139_PASS` et le backend réellement actif.
|
||||
Torche et torche des âmes hors champ, trois froglights, pierre lumineuse dont
|
||||
la couleur vient de sa texture, intensité 35/100, cache statique, déplacement
|
||||
et retour de caméra, mur fermé puis ouvert, lampe redstone allumée puis éteinte,
|
||||
retrait de source, rechargement des ressources et OFF/zéro vérifiés.
|
||||
Les préférences persistantes et les libellés FR/EN sont contrôlés ; une dernière
|
||||
capture active conjointement PBR, SSGI, bloom, ombres, highlights et rayons.
|
||||
|
||||
Les sommes d'écart entre OFF et 35 % sont presque identiques entre backends :
|
||||
torche 2 025 577 / 2 025 576 ; âmes 964 200 / 964 201. Il s'agit de mesures
|
||||
sur les pixels de cette scène, pas d'un indice de performance.
|
||||
Comparatif autonome : `build/Shader-beta.139-comparaison.html`.
|
||||
Pas de validation du pilote Vulkan Windows de l'utilisateur revendiquée.
|
||||
Le test fige uniquement le scintillement vanilla des torches afin de comparer
|
||||
les images ; cette sonde est exclue du JAR distribué. Aucun monde personnel ouvert.
|
||||
|
||||
## Diagnostic des essais
|
||||
|
||||
La première comparaison de stabilité détectait le scintillement natif de la
|
||||
lightmap des torches, même avec un champ coloré inchangé. La sonde de test
|
||||
stabilise ce seul facteur ; aucune désactivation de scintillement en production.
|
||||
La pièce d'essai est désormais construite après le chargement de ses chunks,
|
||||
et l'absence de lumière du ciel est vérifiée avant les captures.
|
||||
|
||||
## Construction et archives
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
|
||||
réussit en **2 min 22 s**, 126 tâches. Le serveur GameTest dédié reste exclu
|
||||
conformément au refus EULA antérieur. Log : `build/shader139-build.log`.
|
||||
La comparaison à beta.138 trouve **13 entrées de production** modifiées,
|
||||
limitées au shader, à son menu et aux aides FR/EN. Les sondes de test sont
|
||||
absentes du JAR distribué. Sources, archives normale/Test et template complets
|
||||
vérifiés ; textures des gemmes et clé de Steve conservées à l'identique.
|
||||
Reçu local : `build/shader139-artifact.json`.
|
||||
|
||||
JAR SHA-256 : `7b958f6576adbabb2b1af589b866cb52b1a65600ea2fa505b05dd283f8d595df`.
|
||||
|
||||
- `Sanctuary-beta.139.mrpack` : 10450317 octets ; SHA-256 `13f3a283c260876d28ce0c6504615b4a8f4d575906badfbb2b39558f312e9fbb`.
|
||||
- `Sanctuary-Test-beta.139.mrpack` : 10469244 octets ; SHA-256 `c1e0b684dc2650950a0925c4625ef5eb4b78fb5f1c5680f5e302550424fa6d81`.
|
||||
|
||||
## Publication et instance
|
||||
|
||||
[Release beta.139](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.139)
|
||||
publiée depuis `dc33ffa54697f61cd8f579235e7cebdbf0765f7c`, tag exact `beta.139`.
|
||||
Canal packwiz : `9f10167b6acfece9c045573580e186aa72bc91dc`.
|
||||
Deux synchronisations isolées puis deux synchronisations de la même instance
|
||||
Prism réussissent. Un seul JAR Sanctuary beta.139 actif, empreinte identique
|
||||
à l'archive vérifiée ; les **923 fichiers personnels suivis** conservent leurs
|
||||
empreintes. Sauvegarde des fichiers gérés dans
|
||||
`sanctuary-backups/before-beta.139/`. Aucun monde personnel ouvert.
|
||||
Reçus : `build/shader139-isolated.json`, `build/shader139-prism.json`.
|
||||
@@ -0,0 +1,115 @@
|
||||
# COMM-154 — Communauté et conversations, beta.154
|
||||
|
||||
Livraison locale préparée sur `codex/community-beta154`, depuis beta.151
|
||||
`b97ec6c9e820bed7693e75f200a02b16af01cf89`. Le site est préparé sur
|
||||
`codex/community-contract`, depuis `4af93d1e42ba6084ecd654967ad6d8f317a5d3ef`.
|
||||
Contrat identique dans les deux dépôts : [communauté v1](community-contract-v1.md).
|
||||
|
||||
## Résultat
|
||||
|
||||
Gazette à gauche et tableau à droite du menu pause, intendance au-dessus ;
|
||||
accès compacts lorsque la largeur GUI ne permet pas trois colonnes.
|
||||
Lire, publier et répondre, modifier son texte, masquer et clôturer une annonce.
|
||||
Modération autorisée côté serveur et comptes Web liés par code confirmé en jeu.
|
||||
|
||||
Les discussions montrent les visages Minecraft, le pseudo, la date et chaque
|
||||
message dans un bloc de conversation. Les actions secondaires sont regroupées
|
||||
sous « ⋯ » ; la réponse se saisit directement sous le fil. Même présentation
|
||||
sur le site, avec rendu des visages par UUID via son prestataire existant.
|
||||
|
||||
Fichier JSON atomique par défaut ; MariaDB optionnelle partagée avec Laravel.
|
||||
Le serveur exécute la persistance hors du thread de jeu. Brouillons conservés
|
||||
en cas de refus ; aucun repli silencieux vers un fichier après une panne SQL.
|
||||
Aucun changement des shaders, de leurs réglages, de la génération ou des
|
||||
sauvegardes existantes. Le delta part exactement du shader beta.151.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Environnement : macOS Apple M1, Java Temurin 25, Minecraft 26.3,
|
||||
Fabric Loader 0.19.5, Fabric API 0.160.5+26.3, Vulkan/MoltenVK 1.4.2.
|
||||
Site : PHP 8.5.10, Laravel 13.32.0, PHPUnit 12.5.35. MariaDB locale 12.3.3,
|
||||
Connector/J 3.5.10 imbriqué dans le mod.
|
||||
|
||||
- Scénario de stockage commun réussi sur fichier et MariaDB : persistance,
|
||||
redémarrage, exact retry, conflits de révision, auteurs, opérateurs,
|
||||
fermeture/réouverture, masquage, pagination, texte Unicode et isolation.
|
||||
Codes expirés, consommés et tentative de réattribution d’identité refusés.
|
||||
`build/community-client-database-final.log`, marqueurs FILE_PASS et SQL_PASS.
|
||||
- Aller-retour réel Java → HTTP Laravel → Java réussi : article, création d’un
|
||||
code Web, liaison côté Java, modification Web et réponse relues par Java.
|
||||
`build/community-interop-{seed,claim,verify}.log` ; deux phases PHPUnit,
|
||||
3 puis 6 assertions. Migration Laravel sur les tables déjà créées par le SQL
|
||||
du mod réussie ; création depuis Laravel également testée par les tests HTTP.
|
||||
- Tests client Vulkan réussis en FR/EN, GUI 2/3 (panneaux et mode compact),
|
||||
publication, réponse intégrée, clôture, actions contextuelles, visages,
|
||||
brouillon refusé et réponse tardive après fermeture.
|
||||
Fichier : `build/community-conversation-client.log`.
|
||||
MariaDB : `build/community-conversation-database.log`, mode explicitement
|
||||
vérifié par le client. Captures dans `mods/sanctuary/build/run/clientGameTest/screenshots/`.
|
||||
- Panne SQL testée avec une adresse locale sans service : erreur visible,
|
||||
brouillon conservé, aucune création de fichier de repli.
|
||||
`build/community-client-outage.log`, marqueur COMMUNITY154_OUTAGE_PASS.
|
||||
- Web : **12 tests / 60 assertions** communautaires réussis, comprenant
|
||||
validation, identité non falsifiable, restrictions du staff, auteur,
|
||||
XSS/texte échappé, formulaires, pagination, compte lié et rejet CSRF réel.
|
||||
Pint réussi. Rendu des pages et visages vérifié dans le navigateur local,
|
||||
navigation accueil → discussion et FR/EN. Aucune erreur console applicative ;
|
||||
avertissement THREE.Clock hérité du panorama.
|
||||
- Suite Web complète : **55 réussites, 1 échec, 1 test optionnel ignoré** sur
|
||||
57. L’échec existant de PlayerModerationTest attend « Nommer admin », alors
|
||||
que ViewUser affiche déjà « Nommer staff » dans le commit de départ.
|
||||
- `./gradlew check build --continue` exécuté : **229/252 GameTests réussis**,
|
||||
**23 échecs strictement identiques à beta.151** (comparaison des identifiants).
|
||||
`build/community-check-build.log`, `build/community-server-failures.json`.
|
||||
Ce passage a aussi rencontré un `ClassNotFoundException` temporaire dans
|
||||
seasonal105Smoke pendant des compilations concurrentes de vérification.
|
||||
Le contrôle final est relancé seul, avec la tâche GameTests exclue (les 252 cas ont été exécutés lors du premier passage).
|
||||
|
||||
Le contrôle complet reste rouge : cette livraison ne prétend pas réparer les
|
||||
23 GameTests historiques ni l’ancienne assertion de libellé Web. Les parcours
|
||||
communautaires sont validés indépendamment.
|
||||
|
||||
## Rejouer les tests ciblés
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:community154Smoke
|
||||
./gradlew :sanctuary:runClientGameTest \
|
||||
-PsanctuaryClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryCommunity154ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
```
|
||||
|
||||
Pour le même scénario en base, préparer une MariaDB de développement vide
|
||||
avec `src/main/resources/community/schema-v1.sql`, puis définir
|
||||
`SANCTUARY_COMMUNITY_TEST_JDBC` (URL JDBC),
|
||||
`SANCTUARY_COMMUNITY_CLIENT_DATABASE=true` et
|
||||
`SANCTUARY_COMMUNITY_DB_PASSWORD`. Ces fixtures de développement utilisent
|
||||
`root` sans mot de passe, uniquement dans la MariaDB locale isolée de test.
|
||||
Ne jamais les lancer sur une base personnelle ou de production.
|
||||
|
||||
L’aller-retour utilise une autre base isolée, également migrée par Laravel :
|
||||
`community154Interop -PcommunityInteropPhase=seed`, puis CommunityInteropTest
|
||||
avec `SANCTUARY_COMMUNITY_INTEROP_PHASE=link`, Java `claim`, PHP `write`, Java
|
||||
`verify`. Les deux programmes reçoivent le même chemin absolu
|
||||
`SANCTUARY_COMMUNITY_INTEROP_FILE` vers un JSON dans un dossier ignoré.
|
||||
Le test PHP reçoit les paramètres DB_CONNECTION/DB_HOST/DB_PORT/DB_DATABASE
|
||||
pointant exclusivement vers cette base. Sans cette variable, il est ignoré.
|
||||
|
||||
## Limites de livraison
|
||||
|
||||
Code et artefacts locaux ; aucun déploiement Web, serveur personnel, canal
|
||||
packwiz ou instance Prism. Validation Windows et connexion Discord réelle sur
|
||||
le domaine de production à faire lors du déploiement. Le compte Web utilisé
|
||||
dans les essais est fictif, la liaison passe cependant par le vrai stockage.
|
||||
Pas de pièces jointes, de notification poussée ou d’import fichier → base.
|
||||
Les anciens JAR encore présents sont conservés.
|
||||
|
||||
## Artefacts vérifiés
|
||||
|
||||
Export packwiz réussi. ZIP, versions Minecraft/Fabric, JAR unique, pilote JDBC
|
||||
imbriqué, licence, absence des tests et égalité octet pour octet des 29 fichiers
|
||||
shader avec beta.151 vérifiés. Reçu : `build/community-artifacts.json`.
|
||||
|
||||
- `mods/sanctuary/build/libs/sanctuary-beta.154.jar` — SHA-256 `07e7419cb3e814d59a6b6f130a1b05b4f65c2407a0ffbd00b194ba97614923ad`.
|
||||
- `build/Sanctuary-beta.154.mrpack` — SHA-256 `fbc007fe59777b0c52b30b6e461b09fe0636fb0b86d254b9e98952856b7f6c8a`.
|
||||
|
||||
Site : commit local `32d804a` sur `codex/community-contract`.
|
||||
@@ -0,0 +1,98 @@
|
||||
# beta.158 — cartes communautaires et demandes suivies
|
||||
|
||||
## Contrat v3 et migration
|
||||
|
||||
Les règles de génération et les inventaires Minecraft ne changent pas. Les coffres
|
||||
sont des sélections descriptives : aucun objet n'est prélevé, réservé, livré ou
|
||||
créé. Les échanges et la répartition des récompenses sont organisés entre joueurs.
|
||||
Il n'y a ni gagnant automatique ni validation automatique d'une livraison.
|
||||
|
||||
Une annonce peut porter `task` : position facultative (dimension, x/y/z), liste
|
||||
`materials` de 27 identifiants d'objets et quantités (1 à 999999), participation
|
||||
`shared` ou `single`, récompense `none`, `items` (27 sélections) ou `custom` (240
|
||||
caractères). Les catégories info/work/need/event gardent leurs identifiants.
|
||||
Le serveur Minecraft valide aussi les objets et dimensions contre son registre.
|
||||
Les données du site sont descriptives et restent lisibles si un objet manque côté
|
||||
client ; les identifiants inconnus ne créent jamais d'objet.
|
||||
|
||||
Les abonnements sont authentifiés, idempotents, au plus 16 par joueur et 64 par
|
||||
annonce. Une annonce single accepte un seul abonné. L'auteur ne s'abonne pas à sa
|
||||
propre annonce. Fermeture et masquage retirent le suivi actif ; réouvrir autorise
|
||||
à nouveau l'abonnement. Les abonnements existants ne sont pas supprimés par la
|
||||
fermeture : un joueur peut se désabonner. Changer shared vers single est refusé
|
||||
si plusieurs abonnés sont présents. La liste côté HUD est issue du serveur ; les
|
||||
notifications affichent les trois suivis ouverts les plus récents, avec le lieu
|
||||
et un rappel des matériaux. La fermeture est annoncée, sans attribuer de gain.
|
||||
|
||||
Fichier : ajout du champ task et de la collection followers ; lecture v1/v2 sans
|
||||
écriture. À la première écriture, backup exact `.v1.bak` ou `.v2.bak` sans
|
||||
écrasement puis écriture atomique en v3. Le plafond 64 Mio reste appliqué. Aucun
|
||||
monde personnel n'est migré pendant le développement. Retour arrière : serveur
|
||||
arrêté, restauration du backup et de la version logicielle correspondante.
|
||||
|
||||
MariaDB : arrêter les écritures du mod et du site, sauvegarder, appliquer la
|
||||
migration v2→v3 (SQL livré ou Laravel), puis mettre à jour les deux applications.
|
||||
Colonne task nullable, tables followers et subscribers (verrous par joueur).
|
||||
Aucune migration automatique par le mod ; aucune suppression des anciens posts.
|
||||
Les anciens articles et annonces restent lisibles. Rollback uniquement par
|
||||
restauration explicite ; pas de suppression automatique des nouvelles données.
|
||||
|
||||
La Gazette et le tableau utilisent une grille à deux colonnes. Les aperçus de
|
||||
photo sont bornés à 6 Kio binaires par carte ; les listes ne diffusent pas les
|
||||
photos complètes. L'intendance reste affichée dans l'en-tête, sans accès public
|
||||
à son historique ni à son éditeur ; sa gestion est réservée au panneau admin.
|
||||
Le panneau Web est complété par `/sanctuary community admin` côté jeu, réservé
|
||||
aux opérateurs par le serveur, notamment pour les installations en mode fichier.
|
||||
Les métadonnées de l’article (visage, nom, date) sont sur la rangée du bouton
|
||||
« … », juste sous l’encadré photo/texte. La galerie est plafonnée à 420 unités
|
||||
de largeur et 180 de hauteur ; l’aperçu du formulaire est limité à 160 × 72.
|
||||
Le bouton de liaison du compte Web disparaît des écrans communautaires en jeu.
|
||||
Les sondages restent une piste, sans fonctionnalité livrée dans cette version.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Vérifications ciblées du 23 septembre 2026 :
|
||||
|
||||
- Stockage fichier et MariaDB : métadonnées, inscription exclusive concurrente,
|
||||
idempotence, limite de 16 suivis, fermeture/réouverture, désabonnement,
|
||||
refus shared→single occupé, masquage et redémarrage. Migration v1/v2 avec
|
||||
conservation exacte des backups.
|
||||
- Client natif Vulkan : français/anglais, échelles GUI 2/3/4, grilles de deux
|
||||
colonnes, défilement et chargement des cartes suivantes sans retour en haut,
|
||||
galerie compacte, photo obligatoire, publication, coffre de sélection,
|
||||
position courante, récompense personnalisée, abonnement et HUD.
|
||||
- Vérification du déplacement visage/nom/date sous l’article, à côté de « … ».
|
||||
- Accès opérateur au panneau d’intendance en jeu : refus au joueur ordinaire,
|
||||
ouverture et publication après activation des permissions natives.
|
||||
- Régression du menu pause : colonnes, boutons, carte, défilements indépendants,
|
||||
longs articles/annonces et réponse, sous Vulkan en FR/EN et GUI 2/3/4.
|
||||
- Site : 23 tests / 131 assertions, dont droits, migrations v3 sans perte ni
|
||||
rétrogradation, validation des matériaux et inscription exclusive.
|
||||
- Interopérabilité MariaDB réelle Java→PHP→Java : photo, édition, réponse,
|
||||
identité vérifiée, demande et abonnement Web relus par le mod (18 assertions PHP).
|
||||
- Ressources de shaders : 29 fichiers identiques au JAR beta.157, qui conservait
|
||||
le socle beta.151. Les anciens JAR et MRpack sont conservés.
|
||||
|
||||
Suite générale : `./gradlew check build assemblePack` exécuté ; 252 GameTests,
|
||||
229 réussites et les mêmes 23 échecs identifiés dans la beta.157, aucun nouvel ID.
|
||||
Comparaison conservée dans `build/cards158-server-failures.json`. Les autres
|
||||
contrôles, le build et l’assemblage passent avec cette suite déjà vérifiée exclue :
|
||||
`./gradlew check build assemblePack :sanctuary:runClientGameTest -x :sanctuary:runGameTest`
|
||||
avec les propriétés client Cards158/Vulkan et la base MariaDB de développement.
|
||||
Le dernier parcours confirme aussi le refus des quantités invalides et la
|
||||
conservation des 17 bûches et 3 diamants réels après publication descriptive.
|
||||
|
||||
Export packwiz réussi ; version interne beta.158 et JAR embarqué vérifiés.
|
||||
Captures finales : `build/cards158-database-screens/` ; captures fichier :
|
||||
`build/cards158-file-screens/`. Les grilles, la galerie et le pied d’article
|
||||
ont été inspectés visuellement. Journaux : `build/beta158-*.log`.
|
||||
|
||||
Site local : commit `0dcab21` sur
|
||||
`codex/community-quests`. Aucun déploiement dans une installation personnelle,
|
||||
aucune publication du canal packwiz ni modification d’un monde existant.
|
||||
|
||||
|
||||
## Artefacts locaux
|
||||
|
||||
- `mods/sanctuary/build/libs/sanctuary-beta.158.jar` — SHA-256 `0590320dcece7f94543ab17e99fb23ac37cc3e2578499aa6e80ad801212675e8`.
|
||||
- `build/Sanctuary-beta.158.mrpack` — SHA-256 `9c1e556ddce3094febf92631c8a1c8cc0ec56971b332cd9c2d7448f2f9931b89`.
|
||||
@@ -0,0 +1,240 @@
|
||||
# Communauté Sanctuary — contrat v1
|
||||
|
||||
> Depuis beta.158, le schéma actif est la v3 : photos et demandes suivies.
|
||||
> Appliquer les migrations avant de connecter les deux applications.
|
||||
|
||||
Ticket beta.154, branche `codex/community-beta154`, socle beta.151 `b97ec6c`.
|
||||
Ce contrat décrit le comportement cible et les échanges implémentés par ce ticket.
|
||||
La note de livraison indique séparément les vérifications effectivement réussies.
|
||||
Les shaders de beta.151 sont conservés sans modification.
|
||||
|
||||
## Périmètre
|
||||
|
||||
Gazette (`article`), tableau (`notice`), intendance (`bulletin`) et réponses
|
||||
(`reply`). Contenus texte brut : titre 120 caractères Unicode, corps 4 000,
|
||||
réponse 1 000. Aucune interprétation HTML, Markdown ou commande Minecraft.
|
||||
Catégories stables : `info`, `work`, `need`, `event`. Photos et pièces jointes
|
||||
sont hors de cette première livraison.
|
||||
|
||||
La pause présente la Gazette à gauche, les actions natives au centre, le tableau
|
||||
à droite et l'intendance au-dessus. À faible largeur GUI, accès compacts vers
|
||||
les mêmes écrans. Publication et réponses disponibles dès cette version.
|
||||
|
||||
## Autorité et identité
|
||||
|
||||
Le client passe exclusivement par le serveur Minecraft. L'auteur vient de la
|
||||
session serveur, jamais d'un UUID fourni par le client. Chaque installation
|
||||
possède un `serverId` UUID stable, également configuré sur le site. Chaque
|
||||
requête SQL inclut ce serveur. Les sauvegardes du monde restent indépendantes.
|
||||
|
||||
Tous les joueurs connectés peuvent publier et répondre. L'auteur peut modifier
|
||||
ou masquer son contenu et clôturer/réouvrir son annonce. Un opérateur Minecraft
|
||||
ou membre du staff Web disposant de `users.moderate` peut masquer des contenus, épingler les publications et
|
||||
publier l'intendance ; il ne réécrit pas le texte d'un autre auteur.
|
||||
Le site exige un compte connecté lié à l'UUID Minecraft : code aléatoire à usage
|
||||
unique créé sur le site, valable 10 minutes, confirmé en jeu. Seul le hash SHA-256
|
||||
est conservé. La confirmation nécessite un serveur authentifié (`online-mode`).
|
||||
Une identité déjà liée ne peut être réattribuée automatiquement.
|
||||
|
||||
## Stockage
|
||||
|
||||
`config/sanctuary-community.json` sélectionne `file` (défaut) ou `database`.
|
||||
Le fichier du monde `data/sanctuary-community.json` est remplacé atomiquement
|
||||
après synchronisation disque. Une corruption ou modification externe est une
|
||||
erreur : aucune réinitialisation silencieuse.
|
||||
|
||||
En mode base, MariaDB utilise les tables `sanctuary_community_*`, utf8mb4,
|
||||
InnoDB. Les nouvelles tables sont additives. Le schéma SQL v1 livré peut être
|
||||
installé par l'administrateur ; Laravel possède la migration équivalente.
|
||||
Le mod vérifie la version et ne lance jamais de migration au démarrage.
|
||||
Une seule application du schéma suffit avant de démarrer les deux applications.
|
||||
Les évolutions futures auront une migration explicite commune.
|
||||
|
||||
Aucun basculement automatique base → fichier lors d'une panne. Les lectures en
|
||||
cache restent signalées comme anciennes ; une écriture n'est confirmée qu'après
|
||||
commit. Les brouillons restent côté client durant la session. Les requêtes SQL
|
||||
s'exécutent hors du thread de jeu, avec délais et file d'attente bornés.
|
||||
Le passage fichier ↔ base nécessite un export/import explicite ; changer le mode
|
||||
ne migre ni ne fusionne les données. La v1 ne fournit pas cet importateur.
|
||||
|
||||
## Enregistrements et concurrence
|
||||
|
||||
Les entrées portent : serveur, UUID, parent éventuel, type, catégorie, UUID et nom
|
||||
d'auteur, titre, corps, état (`open`, `closed`, `hidden`), épingle, révision,
|
||||
date de création et date de modification (millisecondes Unix UTC).
|
||||
Une réponse a un parent article/annonce du même serveur ; pas de réponses imbriquées.
|
||||
Masquer un parent masque également sa discussion dans toutes les lectures.
|
||||
|
||||
Chaque création utilise un UUID d'opération stable. La répétition exacte rend le
|
||||
même résultat ; une réutilisation avec d'autres données est un conflit. Chaque
|
||||
modification exige la révision courante. La transaction verrouille le parent
|
||||
avant de répondre, empêchant la course avec une clôture ou un masquage.
|
||||
Les listes sont paginées (10 entrées), épingles puis date/id décroissants ; les
|
||||
réponses sont ordonnées par date/id croissants. L'intendance montre le bulletin
|
||||
visible le plus récent. Les textes et le nombre de résultats sont bornés.
|
||||
|
||||
## Vérification attendue
|
||||
|
||||
Même scénario sur fichier et vraie MariaDB : publication, réponses, redémarrage,
|
||||
idempotence, conflits, droits, masquage, fermeture et isolation de deux serveurs.
|
||||
Aller-retour Java → PHP → Java sur les mêmes tables. Essais client Vulkan FR/EN,
|
||||
GUI 2/3, mode compact, publication/refus/brouillon et fermeture avant réponse.
|
||||
Tests HTTP du site : identité, CSRF (middleware), validation, permissions,
|
||||
échappement HTML, erreurs, pagination. `./gradlew check build` et `assemblePack`
|
||||
sont consignés avec leurs éventuels échecs hérités.
|
||||
|
||||
## Mise en service
|
||||
|
||||
### Serveur autonome (fichier, défaut)
|
||||
|
||||
Installer le JAR ou le pack beta.154. La première ouverture d’un panneau crée
|
||||
`config/sanctuary-community.json` et son `serverId`. La première publication
|
||||
crée uniquement le fichier communautaire du monde. Aucun service externe requis.
|
||||
Les joueurs utilisent Échap → Gazette/Tableau → Publier, puis Répondre dans
|
||||
une discussion. Le mode fichier n’est pas partagé avec le site Web.
|
||||
|
||||
Conserver le `serverId` et sauvegarder le fichier communautaire avec son monde.
|
||||
Ne pas éditer ce fichier pendant que le serveur tourne. La limite de la v1 est
|
||||
64 Mio par fichier communautaire ; une écriture qui la dépasse est refusée.
|
||||
|
||||
### Même MariaDB pour Minecraft et Laravel
|
||||
|
||||
1. Sauvegarder la base existante. Déployer le code Web puis appliquer sa migration
|
||||
`php artisan migrate --force`. Elle ajoute quatre tables sans modifier les
|
||||
données de jeu. Un schéma déjà installé par `schema-v1.sql` est reconnu.
|
||||
À l’inverse, ne pas rejouer le SQL brut sur des tables déjà créées par Laravel.
|
||||
2. Dans le `.env` du site, garder ses paramètres MariaDB et définir
|
||||
`SANCTUARY_COMMUNITY_SERVER_ID` avec le même UUID que le mod. Recharger
|
||||
la configuration Laravel (`php artisan config:cache` en production).
|
||||
3. Arrêter Minecraft et éditer sa configuration :
|
||||
|
||||
```json
|
||||
{
|
||||
"mode": "database",
|
||||
"serverId": "11111111-1111-4111-8111-111111111111",
|
||||
"jdbcUrl": "jdbc:mariadb://db.example.net:3306/sanctuary?sslMode=verify-full",
|
||||
"user": "sanctuary_game",
|
||||
"passwordEnv": "SANCTUARY_COMMUNITY_DB_PASSWORD"
|
||||
}
|
||||
```
|
||||
|
||||
L’UUID ci-dessus est un exemple : reprendre celui de votre installation.
|
||||
Définir `SANCTUARY_COMMUNITY_DB_PASSWORD` dans l’environnement du service Minecraft,
|
||||
puis le redémarrer. Utiliser un certificat TLS valide pour l’hôte de la base.
|
||||
Le compte de jeu a besoin de SELECT sur `sanctuary_community_schema`, SELECT,
|
||||
INSERT et UPDATE sur `sanctuary_community_entries`, SELECT et INSERT sur
|
||||
`sanctuary_community_identities`, SELECT et DELETE sur `sanctuary_community_links`.
|
||||
Il n’a besoin ni des tables de comptes Web, ni de droits de création de tables.
|
||||
Le compte Laravel conserve ses permissions habituelles et celles des migrations.
|
||||
|
||||
4. Sur le site : se connecter avec Discord, ouvrir Gazette, demander un code de
|
||||
liaison. En jeu : Gazette → Lier mon compte → saisir le code. La liaison
|
||||
exige `online-mode=true`. Recharger le site après confirmation ; les boutons
|
||||
Publier et Répondre deviennent accessibles.
|
||||
5. Modération : opérateur Minecraft ou staff Web autorisé à `users.moderate`,
|
||||
avec compte lié. Les fonctions de lecture seule du staff ne donnent aucun
|
||||
droit de masquage, épinglage ou publication officielle.
|
||||
|
||||
L’accueil du site conserve sa version de téléchargement beta.151 tant que le
|
||||
pack public n’est pas mis à jour. Ce ticket ne publie pas le site, le canal
|
||||
packwiz ou une installation Prism.
|
||||
|
||||
### Synchronisation et limites de la v1
|
||||
|
||||
Le menu pause recharge ses aperçus toutes les 5 secondes. Les pages de lecture
|
||||
ont un bouton Actualiser. Le site charge les publications à chaque navigation.
|
||||
Les brouillons Minecraft restent en mémoire jusqu’à déconnexion ; le site garde
|
||||
ses brouillons dans le stockage local du navigateur, par compte et serveur.
|
||||
Aucune notification poussée ni import automatique d’archives ou de fichier vers
|
||||
MariaDB. Les anciennes publications d’exemple du site étaient du texte statique,
|
||||
pas des données à migrer. Les pièces jointes et la réattribution d’un compte lié
|
||||
restent hors périmètre.
|
||||
|
||||
### Présentation des discussions et visages
|
||||
|
||||
Les réponses se lisent en conversation : visage Minecraft, pseudo et date,
|
||||
texte dans un bloc distinct, actions compactes derrière « ⋯ ». Le formulaire
|
||||
reste sous la discussion. Les listes et les aperçus du menu pause affichent
|
||||
également les visages. En jeu, les profils sont résolus par les widgets natifs
|
||||
Minecraft, avec leur texture de repli tant que le skin n’est pas disponible.
|
||||
Sur le site, le rendu par UUID utilise le prestataire mc-api.io déjà employé
|
||||
par la page de compte ; chargement différé, sans référent, initiale locale en
|
||||
cas d’erreur. Aucune image ni URL arbitraire n’entre dans le contrat des posts.
|
||||
Documentation du rendu : https://mc-api.io/docs (GET `/render/{uuid}?size=64`).
|
||||
|
||||
|
||||
## Évolution v2 (beta.157)
|
||||
|
||||
Le champ photo et sa migration explicite, avec conservation des anciens articles,
|
||||
sont décrits dans [Photos de Gazette](gazette-photos-beta157.md).
|
||||
Pour une nouvelle base partagée avec le site, utiliser les migrations Laravel.
|
||||
Pour une base autonome administrée par SQL, appliquer schema-v1.sql puis
|
||||
schema-v1-to-v2.sql avant de connecter le mod beta.157.
|
||||
|
||||
|
||||
## Évolution v3 — demandes suivies (beta.158)
|
||||
|
||||
Annonce : `task` contient `location` nullable (`dimension`, `x`, `y`, `z`),
|
||||
`materials` et `rewards` (27 objets maximum, `item` namespacé de 100 caractères
|
||||
maximum, `count` de 1 à 999999), `audience` shared/single, `reward` none/items/custom
|
||||
et `customReward` (240 caractères). Les coffres sont descriptifs : échanges
|
||||
et partage des récompenses entre joueurs, sans transaction d'inventaire.
|
||||
|
||||
Les tables `sanctuary_community_followers` et `sanctuary_community_subscribers`
|
||||
portent les abonnements et les verrous par joueur. Maximum 16 abonnements/joueur,
|
||||
64/annonce, un seul en mode single ; pas d'auto-abonnement de l'auteur.
|
||||
Le masquage supprime les abonnements ; la fermeture les conserve mais suspend
|
||||
le suivi actif. Un passage en single est refusé au-delà d'un abonné.
|
||||
|
||||
Arrêter les écritures et sauvegarder avant migration. Installation SQL neuve :
|
||||
schema-v1.sql, schema-v1-to-v2.sql, puis schema-v2-to-v3.sql du mod. Sur le site,
|
||||
`php artisan migrate` applique l'équivalent et reconnaît les tables déjà créées.
|
||||
Le compte JDBC nécessite SELECT/INSERT/DELETE sur followers et SELECT/INSERT
|
||||
sur subscribers, en plus des permissions v2. Aucun DDL automatique par le mod.
|
||||
|
||||
L'intendance se gère dans le panneau admin ; seul son dernier message reste
|
||||
public en en-tête. La liaison de compte se fait avec le code généré sur le site
|
||||
et `/sanctuary community link <code>` en jeu (serveur authentifié requis).
|
||||
Les anciens boutons de liaison et d'historique public de l'intendance disparaissent.
|
||||
|
||||
En mode fichier, le panneau d’intendance en jeu s’ouvre avec
|
||||
`/sanctuary community admin` ; le serveur exige les permissions opérateur.
|
||||
|
||||
## Évolution beta.159 — recherche et lecture de l’intendance
|
||||
|
||||
Le schéma reste **v3** : aucune migration de données. Cette évolution remplace
|
||||
la restriction de lecture publique de beta.158 : les onglets Gazette, Tableau
|
||||
et Serveur permettent de lire leurs historiques. La publication et la gestion
|
||||
de l’intendance restent dans l’administration, sans réponse ni abonnement.
|
||||
|
||||
`list` et `cards` acceptent une recherche facultative dans `Request.body` (120
|
||||
caractères maximum, vide par défaut). Le site utilise le paramètre GET `q`,
|
||||
conservé dans la pagination. Recherche littérale de sous-chaîne dans le nom de
|
||||
l’auteur, le titre **ou** le corps, sans distinction de casse, avant pagination.
|
||||
Les accents restent significatifs et `%` / `_` sont des caractères ordinaires.
|
||||
Le filtre reste limité au serveur et à la rubrique sélectionnés ; les contenus
|
||||
masqués restent exclus. Les épingles gardent leur priorité. Le client attend
|
||||
300 ms après la frappe et ignore les réponses correspondant à un ancien filtre.
|
||||
Les pages restent bornées à 10 publications ; aucune recherche dans les réponses.
|
||||
|
||||
Les dates des publications affichent l’année (UTC). Le menu pause affiche la date
|
||||
complète dans la langue et le fuseau local du joueur. La galerie utilise la
|
||||
surface disponible du GUI, adapte ses colonnes et conserve ses pages de 24
|
||||
captures défilantes. Le clic ouvre un aperçu dans cette surface, en conservant
|
||||
les proportions et les boutons Retour / Assigner. Le formulaire conserve son
|
||||
aperçu compact. Les PNG sources ne sont pas modifiés.
|
||||
|
||||
Les demandes suivies ouvertes qui ont une position affichent un `!` sur la carte
|
||||
de pause et le grand atlas, dans la dimension correspondante. Elles ne révèlent
|
||||
pas le terrain et ne chargent aucun chunk. L’infobulle montre titre, auteur,
|
||||
résumé, coordonnées, matériaux et récompense ; les listes longues sont abrégées
|
||||
pour rester dans le GUI. Le clic ouvre l’annonce. « Voir sur la carte » centre
|
||||
l’atlas sur son lieu dans la dimension courante, sans téléportation. Les repères
|
||||
suivent tous les abonnements, indépendamment des trois suivis visibles dans le
|
||||
HUD ; ils disparaissent au désabonnement, à la clôture ou au masquage. Un
|
||||
rafraîchissement des suivis reste actif lorsque la carte ou la pause est ouverte
|
||||
(période de cinq secondes, différée si une autre requête est en cours).
|
||||
|
||||
Le message réseau `following` ajoute `summary`, extrait littéral du corps limité
|
||||
à 240 caractères Unicode plus une ellipse. Le texte intégral et les photos ne
|
||||
sont pas diffusés dans ce message. Aucun champ persistant supplémentaire.
|
||||
@@ -0,0 +1,81 @@
|
||||
# beta.159 — recherche communautaire et galerie adaptable
|
||||
|
||||
Branche `codex/community-search-gallery-beta159`, socle beta.158.
|
||||
|
||||
## Résultat
|
||||
|
||||
Une barre de recherche filtre les publications par auteur, titre ou texte côté
|
||||
serveur, avant pagination. Le filtre accompagne les pages suivantes, conserve
|
||||
les épingles et se réinitialise en effaçant le champ. Les réponses aux anciennes
|
||||
recherches sont ignorées et le focus de saisie est conservé.
|
||||
|
||||
Les trois onglets Gazette / Tableau / Serveur donnent accès aux publications de
|
||||
chaque rubrique. L’en-tête d’intendance de la pause ouvre aussi son historique.
|
||||
La lecture est publique ; la publication et la gestion des messages du serveur
|
||||
restent réservées au panneau administrateur, même pour un opérateur visitant
|
||||
l’écran public. Les messages du serveur n’acceptent ni réponses ni abonnements.
|
||||
|
||||
L’année figure dans la date de pause et les métadonnées des publications. La
|
||||
galerie utilise l’espace disponible aux différentes échelles de GUI et tailles
|
||||
de fenêtre. Les captures restent paginées par 24 avec défilement. Cliquer une
|
||||
capture ouvre un grand aperçu avec les commandes de retour et d’assignation.
|
||||
La photo assignée reste compacte dans le formulaire et les brouillons sont
|
||||
conservés lors du retour. Aucune modification des PNG originaux.
|
||||
|
||||
Les annonces suivies géolocalisées portent un « ! » sur les deux cartes.
|
||||
L’infobulle fournit titre, auteur, résumé, coordonnées, matériaux et récompense
|
||||
sans ouvrir la discussion ; le clic reste disponible. Un bouton dans l’annonce
|
||||
centre le grand atlas sur sa position, dans la dimension courante. Aucune
|
||||
téléportation ni révélation du terrain : seules les coordonnées publiées sont
|
||||
projetées. Les annonces fermées, masquées, sans lieu ou non suivies ne portent
|
||||
pas de repère. Les longues infobulles sont abrégées pour tenir dans le GUI.
|
||||
|
||||
Le site suit le même contrat de recherche et de lecture. Schéma v3 inchangé,
|
||||
aucune migration de sauvegarde ni de base. Libellés français et anglais.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- Stockage fichier et MariaDB : recherche par auteur et corps, casse et accents,
|
||||
filtre avant pagination, épingles conservées, caractères `%` / `_` littéraux,
|
||||
rubrique et serveur isolés, contenus masqués exclus, borne de 120 caractères.
|
||||
- Client natif Minecraft 26.3 / Java 25 / Vulkan : galerie et aperçu en FR/EN,
|
||||
GUI 2/3/4 et fenêtres 1280×960 / 1920×1080 ; retour au brouillon, assignation,
|
||||
publication, listes défilantes et chargement des pages suivantes.
|
||||
- Recherche en jeu au-delà de la première page, filtre par joueur, effacement,
|
||||
conservation du focus et rejet d’une réponse correspondant à l’ancien filtre.
|
||||
- Lecture des messages serveur par un joueur ordinaire, aucun contrôle d’écriture
|
||||
dans les pages publiques, y compris pour l’opérateur ; administration inchangée.
|
||||
- Carte : projection dans la dimension correspondante, titre/auteur/résumé,
|
||||
matériaux et récompense au survol ; ouverture de la demande par clic sur les
|
||||
deux cartes ; retrait immédiat du repère après désabonnement.
|
||||
- Date avec année en FR/EN, GUI 2/3/4, sans chevauchement de l’intendance.
|
||||
- Site : 24 tests / 157 assertions sur SQLite puis MariaDB de développement,
|
||||
formatage Pint réussi. Commit local `e70e78d`, branche `codex/community-search`.
|
||||
|
||||
La commande complète `./gradlew :sanctuary:runClientGameTest check build assemblePack`
|
||||
avec les propriétés client Cards158, QuickTests et Vulkan a exécuté 252 GameTests :
|
||||
229 réussites et les mêmes 23 échecs que beta.158. Aucun test serveur supprimé
|
||||
ou modifié. La comparaison est conservée dans `build/search159-server-failures.json`
|
||||
et le journal dans `build/beta159-check-build.log`.
|
||||
|
||||
Les contrôles restants, la compilation et `assemblePack` passent avec la suite
|
||||
serveur déjà exécutée exclue (`-x :sanctuary:runGameTest`) : 133 tâches, journal
|
||||
`build/beta159-release.log`. Le parcours client final passe en mode MariaDB,
|
||||
puis en mode fichier (`build/beta159-file-client.log`). Les repères ont été
|
||||
vérifiés avec et sans terrain d’atlas débloqué ; les infobulles restent dans la
|
||||
fenêtre aux GUI 2/3/4. Captures représentatives inspectées :
|
||||
`build/search159-file-screens/` et `build/search159-database-screens/`.
|
||||
|
||||
L’export packwiz est vérifié : intégrité ZIP, version beta.159, JAR embarqué
|
||||
identique au JAR de livraison. Les 29 ressources de shaders sont identiques à
|
||||
beta.158, qui conserve le socle beta.151. Les anciens JAR et MRpack beta.154 à
|
||||
beta.158 restent présents. Aucun monde personnel, déploiement de serveur, canal
|
||||
packwiz ou instance Prism n’est modifié.
|
||||
|
||||
## Artefacts locaux
|
||||
|
||||
|
||||
|
||||
- `mods/sanctuary/build/libs/sanctuary-beta.159.jar` — SHA-256 `c30d57a5f37e0a5c9dbb387ca831ce9e5c15a1dfe4cb55af0af20a376e862576`.
|
||||
|
||||
- `build/Sanctuary-beta.159.mrpack` — SHA-256 `868932d88bc241bfb526a7c5e4054009e247658bd0784b7141d82017edcc2823`.
|
||||
@@ -0,0 +1,75 @@
|
||||
# MAP-CTM — Calque Demeure continu, beta.274
|
||||
|
||||
Branche `codex/inhabitant-property`. Demande du 24 octobre 2026, après beta.273.
|
||||
La [refonte des propriétés](property-demeure-refonte.md) reste un cadrage en
|
||||
attente ; la fiche Habitant est conservée. Le créateur a confirmé que les claims
|
||||
actuels doivent rester accessibles.
|
||||
|
||||
Le calque Demeure garde sa texture de 1 024 × 1 024 pixels alignée sur celle du
|
||||
terrain, mais retire les cadres de chunks. Deux cellules adjacentes ayant la
|
||||
même couleur et la même influence se raccordent sans couture interne, y compris
|
||||
aux coins. Il ne s’agit pas d’ajouter des textures CTM de blocs dans le monde.
|
||||
|
||||
La teinte est uniforme dans chaque cellule connue. Sa présence suit la **part
|
||||
relative d’influence** déjà calculée par Demeure, avec un alpha de 16 + 96 × part / 100
|
||||
(0 si la part est nulle). Ce pourcentage n’est pas un compteur de jours habités
|
||||
ou une preuve d’ancienneté. Le terrain, le brouillard et le vide gardent leurs
|
||||
pixels ; seuls les chunks modifiés sont repeints. Un changement de pourcentage
|
||||
actualise maintenant la teinte même si la couleur du personnage reste identique.
|
||||
|
||||
## Protections, dans le même calque pixel
|
||||
|
||||
Une protection active prend une couleur uniforme (alpha 64/255) dans la même
|
||||
texture que Demeure : plus de rectangles GUI par chunk, de cadres, de pointillés
|
||||
ou de boucliers. Les cellules voisines de même propriétaire se rejoignent sans
|
||||
trait intérieur. Un claim sans protection reste déclaré et accessible au clic
|
||||
droit, sans aplat de protection. Si les deux affichages sont activés, la couleur
|
||||
de protection est prioritaire sur l’influence Demeure.
|
||||
|
||||
La légende associe les couleurs aux personnages ayant une protection visible,
|
||||
avec trois noms au maximum puis un compteur. Le bouton de masquage reste partagé
|
||||
avec Pause. Le calque est invalidé par les achats, les données de Demeure, les
|
||||
changements d’affichage et l’expiration ; les cellules expirées sont repeintes
|
||||
une fois. L’aperçu de Pause compose la même teinte dans ses propres pixels de
|
||||
terrain, en conservant le masque du vide et du brouillard. Aucun dessin de
|
||||
bordure ne dépend de l’adjacence : le raccord résulte des pixels uniformes.
|
||||
|
||||
L’infobulle du bouton décrit la présence et l’influence d’habitation, sans
|
||||
« aucun claim ni protection ». Les règles, scores et formats de Demeure,
|
||||
les droits et données de propriété, la génération et les mondes personnels
|
||||
ne sont pas modifiés par cette correction d’affichage.
|
||||
|
||||
## Vérification
|
||||
|
||||
`check build assemblePack` réussit en **2 min 50 s** : **29 tests serveur ciblés**
|
||||
(claims, ancien modèle, minage, overview, menus, Atlas et Demeure). Les contrôles
|
||||
indépendants du registre restent réussis. Les deux parcours **Vulkan FR/EN,
|
||||
GUI 2/3/4** passent : **58 s / 19 captures** pour les propriétés et **29 s /
|
||||
8 captures** pour Demeure.
|
||||
|
||||
Les tests de pixels vérifient les bords, coins et corps identiques sur des
|
||||
cellules adjacentes, la teinte seule des protections actives, les propriétaires
|
||||
hors ligne, le changement de pourcentage sans changement de couleur, le vide,
|
||||
le brouillard et le retrait d’une empreinte. Le masquage, le réaffichage,
|
||||
l’expiration, le clic droit, la composition dans Pause et l’accès Habitant sont
|
||||
couverts. Captures dans `build/map274-screenshots/` et
|
||||
`build/demeure274-screenshots/` ; inspections FR GUI 4, EN GUI 3, Pause et Habitant.
|
||||
|
||||
Le MRpack beta.274 est exporté et vérifié : ZIP, Minecraft 26.3, Loader 0.19.5
|
||||
et octets des deux JAR locaux identiques aux builds. Les archives beta.270 à
|
||||
beta.273 gardent leur empreinte. Reçu : `build/map274-validation.json`.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=claims273,claims272,property270,mining,overview271,menus,map,demeure \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryMap274ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
# Pour le second parcours, remplacer sanctuaryMap274ClientTests par sanctuaryDemeure274ClientTests.
|
||||
```
|
||||
|
||||
Export local uniquement. La proposition de claim issue de l’habitation, le
|
||||
premier occupant, les duels, l’accord de partage et un tarif moins élevé restent
|
||||
à définir dans le cadrage de reprise ; aucun n’est annoncé comme implémenté.
|
||||
@@ -0,0 +1,114 @@
|
||||
# Diagonales : transitions, dessous et cavités — beta.227
|
||||
|
||||
Retour R045 sur beta.226, 5 octobre 2026. Branche `codex/diagonal-caves-beta227`,
|
||||
base `5fb1407`. Anciennes générations conservées ; nouveaux profils 227 uniquement.
|
||||
|
||||
- NE jardin pâle/marais : transitions d’étangs sans paliers brutaux, relief 3D
|
||||
plus présent à l’intérieur, fragmentation prononcée du pourtour, petites
|
||||
échappées d’eau admises mais pas de rideau d’eau massif.
|
||||
- SO : surface désert/savane appréciée ; retirer de l’épaisseur rocheuse inutile
|
||||
sous le plateau sans refaire sa surface.
|
||||
- SE : mangroves et silhouette validées ; ajouter de grandes régions de lush
|
||||
caves et dripstone caves dans les parties inférieures.
|
||||
- NO : grandes plaines validées ; commencer le grignotage 3D plus près du centre.
|
||||
|
||||
Captures consultées dans le labo 226 : `2026-10-05_21.05.12.png` et
|
||||
`2026-10-05_21.07.21.png`. Elles montrent des fonds d’étangs à transitions nettes.
|
||||
La profondeur binaire et le masque de protection des bassins dans 226 sont
|
||||
remplacés par des transitions continues. La photo seule ne prouve pas un
|
||||
problème de frontière de chunk ; les contrôles ci-dessous portent sur les
|
||||
transitions du champ et la décoration native.
|
||||
|
||||
## Réalisation
|
||||
|
||||
Les champs 225/226 restent figés. 227 s’appuie sur le champ 226 pour conserver
|
||||
la surface méridionale et la forme des récifs de mangrove. Aucun changement
|
||||
de sauvegarde, de génération existante ou de dimension.
|
||||
|
||||
NE : retrait du halo binaire autour des lacs ; profondeur interpolée, relief
|
||||
intérieur continu avant arrondi en blocs, rugosité 3D atténuée près de l’eau.
|
||||
La bordure entière peut être découpée, y compris les anciens abords protégés.
|
||||
L’eau n’est placée que sur les fonds encore présents ; pas de remplissage des
|
||||
grandes failles ouvertes. De petites échappées restent possibles. Il ne s’agit
|
||||
pas d’une simulation d’hydrologie ni d’un réseau de cascades.
|
||||
|
||||
SO : amincissement variable, environ 40 à 64 blocs sous le toit avec irrégularité
|
||||
3D du dessous. Les 24 blocs supérieurs restent sur le champ accepté. Sur les
|
||||
grilles de sondage 0/42, environ 49 à 51 % du volume rocheux échantillonné est
|
||||
retiré ; ce n’est pas un recensement exhaustif de toute l’île.
|
||||
|
||||
SE : densité et biomes de surface 226 conservés. Sous la surface, de larges
|
||||
régions de grottes luxuriantes et à concrétions reçoivent les features natives
|
||||
26.3 (mousse, lianes lumineuses, fleurs sporifères, argile, grandes concrétions,
|
||||
stalactites/stalagmites). Plages de placement adaptées à Y=40–320. Aucune
|
||||
nouvelle lave, forêt d’azalées de surface ou nouvelle distribution de minerais
|
||||
ajoutée par ces deux biomes de cavités. Les volumes existants servent de support,
|
||||
sans nouvelle excavation de la silhouette validée.
|
||||
|
||||
NO : le masque peut maintenant agir jusqu’à 340 blocs de distance interne
|
||||
au bord (contre 180), sans modifier le noyau de plaines restant. Le champ
|
||||
supplémentaire ne fait que retirer de la matière.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Six GameTests ciblés réussis : transitions NE et relief intérieur sur quatre
|
||||
graines, extension des découpes NO et centre conservé, surface SO intacte et
|
||||
volume réduit, champ SE identique et deux vastes biomes souterrains, trois
|
||||
presets publics, ordre des features, déterminisme après recompilation et
|
||||
anciens profils lisibles.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,diagonal227 -PsanctuaryAtlasOnly=true` réussit
|
||||
en 4 min 2 s (`build/diagonal227-build.log`).
|
||||
|
||||
Les premiers essais natifs 0/42 valident le NE, les arbres immergés et les
|
||||
décorations des deux types de caves au SE. Ils s’arrêtent sur un contrôle trop
|
||||
étroit des arbres de savane : un seul chunk de chaque biome, tous sans arbre
|
||||
complet. Lecture des chunks FULL sauvegardés : 11 troncs / 70 feuilles sur 0,
|
||||
24 troncs / 214 feuilles sur 42. L’instrumentation élargit désormais la recherche
|
||||
à d’autres chunks de savane, sans changer la production. Helper recompilé et
|
||||
exporté ; nouveaux essais isolés `diagonal227-final0` et `diagonal227-final42`
|
||||
réussis, processus terminés normalement. Les mondes du premier essai restent
|
||||
intacts. Le helper final est recompilé puis exécuté dans ces deux essais ;
|
||||
aucun changement de production après le build complet.
|
||||
|
||||
Les quatre offres réelles, leur coût, le refus d’un double paiement, la reprise
|
||||
après interruption et les quatre relais utilisables sont vérifiés sur chaque
|
||||
graine. Chaque activation prépare 49 chunks FULL. Les arbres natifs sont
|
||||
présents dans les quatre expansions ; 3 et 7 troncs enracinés dans les marais
|
||||
peu profonds ont été observés. Les sondages des cavités SE trouvent respectivement
|
||||
120/171 blocs de décoration lush et 34/30 de pointed dripstone. Ces comptages
|
||||
prouvent la décoration native dans les chunks examinés, pas sa densité globale.
|
||||
Les cannes à sucre de l’île principale restent présentes : 42 pieds sur 0,
|
||||
94 sur 42. Rapports ignorés sous `build/worldgen-lab/diagonal227-final{0,42}`.
|
||||
|
||||
## Distribution et visite
|
||||
|
||||
MRpack normal : `build/Sanctuary-beta.227.mrpack`, copie dans Downloads.
|
||||
Minecraft 26.3, Fabric Loader 0.19.5. Archive contrôlée, JAR conforme au build,
|
||||
trois tailles présentes, aucun module Test ni monde inclus. Les 398 ressources
|
||||
historiques de worldgen comparées sont identiques à 226 ; seul l’alias public
|
||||
Sanctuary pointe désormais vers les nouveaux profils.
|
||||
|
||||
- SHA-256 MRpack : `5ffa88d0a8d30b17276bda0e644e3406dd2a2bdc7727a27e546320a502adf547`.
|
||||
- SHA-256 JAR : `e759515e49cd254f41e9ab786478cba02613c560534f77d89b820f69ae384dee`.
|
||||
|
||||
Nouvelle visite isolée `diagonal227-final-visit`, monde
|
||||
`Sanctuary-Diagonal-227-0` : copie du nouveau monde de vérification arrêté,
|
||||
graine 0, île principale Petit, quatre expansions de 1024 prêtes, créatif avec
|
||||
commandes, distance 32 chunks et simulation 5. Départ au-dessus du relais NE.
|
||||
Ouverture confirmée le 5 octobre à 21:33:59 : `DIAGONAL227_VISIT_OPEN`,
|
||||
position `848, 384, -496`, backend Vulkan confirmé dans
|
||||
`build/diagonal227-solo.log`. Aucune validation OpenGL.
|
||||
|
||||
| Région | Relais X, Y, Z sur la graine 0 |
|
||||
| --- | --- |
|
||||
| NE jardin pâle/marais | 848, 336, -496 |
|
||||
| SE mangroves/cavités | 560, 377, 816 |
|
||||
| SO savane/désert | -832, 217, 512 |
|
||||
| NO plaines/taïga | -608, 238, -768 |
|
||||
|
||||
Le rendu reste à apprécier par le joueur, notamment les berges très découpées
|
||||
et l’étendue visible des cavités. Pas de visite complète Moyen/Grand, de mesure
|
||||
de fluidité ni d’essai Windows revendiqués. Aucun ancien monde modifié, aucun
|
||||
canal packwiz avancé et aucune installation Prism synchronisée.
|
||||
@@ -0,0 +1,100 @@
|
||||
# Diagonales climatiques et cannes à sucre — beta.225
|
||||
|
||||
## Contrat
|
||||
|
||||
Demande du 5 octobre 2026 : cannes à sucre près de l’eau de Sanctuary Island,
|
||||
puis quatre expansions diagonales de **1024 blocs** (512 remplacé pendant
|
||||
le chantier à la demande du joueur). Nord froid, Sud chaud,
|
||||
Est humide, Ouest sec. Branche `codex/diagonal-islands-beta225`, base `1388d8a`.
|
||||
|
||||
- Nord-Est : marais frais, jardin pâle, forêt sombre et taïga.
|
||||
- Nord-Ouest : meadow, prairies, taïga et bosquets froids.
|
||||
- Sud-Est : mangroves, jungle et bambou.
|
||||
- Sud-Ouest : désert, savane et prairies sèches.
|
||||
|
||||
Première variante : surfaces étendues, collines, dessous flottant irrégulier,
|
||||
zones humides fermées dans les dépressions du terrain. Végétation et faune
|
||||
des biomes natifs 26.3. Relais de continuation conservé. Les quatre cardinales
|
||||
restent en 1024 avec leur génération validée. Pas de nouvelle structure ici.
|
||||
|
||||
Nouveaux profils 225 seulement, dans les trois tailles Sanctuary. Les profils
|
||||
224 et antérieurs gardent leurs règles et leurs tailles d’expansion. Aucune migration ou régénération de sauvegarde.
|
||||
Les essais utilisent uniquement des mondes neufs de développement (42 et 0).
|
||||
Le message SGA et l’aide de visite réservée aux opérateurs sont conservés.
|
||||
|
||||
## Implémentation
|
||||
|
||||
Champ de relief déterministe, collines à grande échelle, bordure irrégulière et
|
||||
bruit 3D dans le dessous. Épaisseur variable, de neuf blocs sur les extrémités
|
||||
à 68 blocs à l’intérieur. Les dépressions humides ont un niveau commun Y=204,
|
||||
un fond protégé et une couronne de terrain ferme ; aucune simulation
|
||||
hydrologique supplémentaire. La sélection des biomes est continue dans les
|
||||
coordonnées du monde et utilise les végétations natives 26.3.
|
||||
|
||||
Les offres des ancres diagonales demandent un diamètre 1024 et conservent
|
||||
l’éventail de placement existant. Préparation limitée à 49 chunks autour du
|
||||
relais ; le reste se génère à l’exploration. Relais simple de continuation pour
|
||||
cette première variante. Les monuments régionaux des cardinales sont conservés.
|
||||
|
||||
Les cannes réutilisent le plan des berges de surface, après leur aménagement.
|
||||
Groupes de deux ou trois blocs, sur sol accepté par Minecraft et à côté d’une
|
||||
eau réellement présente. Écriture limitée au chunk décoré, sans dépendre de
|
||||
l’ordre de décoration des chunks voisins. Aucun nouveau bassin créé.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Six GameTests ciblés (`base204,diagonal225`) réussis : trois tailles publiques
|
||||
sans Test, lecture des anciens profils, biomes et étanchéité sur quatre graines,
|
||||
reproductibilité aux limites des chunks, éventail directionnel et absence de
|
||||
collision, conservation des matériaux du volcan, règles de survie des cannes.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,diagonal225 -PsanctuaryAtlasOnly=true`
|
||||
réussit en 3 min 57 s. Log : `build/diagonal225-build.log`.
|
||||
|
||||
L’essai natif 42 passe les quatre offres, le paiement, l’interruption/reprise,
|
||||
les relais et la végétation des quatre directions. 94 pieds de canne observés
|
||||
sur les berges de l’île principale. Le premier essai 0 a révélé une erreur
|
||||
**du contrôle** : son premier échantillon de mangrove était sur la berge sèche,
|
||||
ce qui ne prouvait rien sur l’eau de la dépression. Le contrôle cherche désormais
|
||||
une colonne réellement immergée et vérifie son fluide natif. Le nouvel essai 0 passe aussi les quatre activations et les contrôles natifs ;
|
||||
43 pieds de canne observés. La correction ne touche que l’instrumentation du
|
||||
module Test, recompilée et réassemblée ensuite ; le terrain livré est identique.
|
||||
|
||||
| Graine | Nord-Est X/Z | Sud-Est X/Z | Sud-Ouest X/Z | Nord-Ouest X/Z | Cannes |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 42 | 544 / -816 | 816 / 544 | -816 / 512 | -704 / -736 | 94 |
|
||||
| 0 | 848 / -496 | 560 / 816 | -832 / 512 | -608 / -768 | 43 |
|
||||
|
||||
Les huit expansions mesurent 1024 blocs et passent chacune par 49 chunks FULL
|
||||
préparés. Présence de bois/feuilles natifs dans les quatre directions, mangroves
|
||||
et bambou à l’Est, cactus dans le désert à l’Ouest. Ces relevés sont locaux,
|
||||
pas un inventaire exhaustif de chaque île. Reçus ignorés :
|
||||
`build/worldgen-lab/diagonal225-check42/small/42/{cold,warm}.json` et
|
||||
`build/worldgen-lab/diagonal225-wet-check0/small/0/{cold,warm}.json`.
|
||||
|
||||
## Distribution et limites
|
||||
|
||||
MRpack standard vérifié : archive intègre, JAR exact, dépendances 26.3/Loader
|
||||
0.19.5, trois tailles 225 et 382 ressources historiques de génération identiques
|
||||
à beta.224 (sauf alias public du preset). Aucun monde ni module Test inclus.
|
||||
SHA-256 : `b178c15d8a40a1627134c64b343d13d508f9e7c95f85d43a1a88c8769d8e8c0c`.
|
||||
|
||||
Le rendu reste à apprécier en jeu. Pas de campagne graphique ou Windows,
|
||||
ni de nouvelle exploration complète Medium/Large. Pas de changement du canal
|
||||
packwiz ni de l’installation Prism personnelle. Les mondes de contrôle restent
|
||||
dans les dossiers de développement ignorés.
|
||||
|
||||
|
||||
## Visite du 5 octobre 2026
|
||||
|
||||
À la demande du joueur, nouveau solo `Sanctuary-Diagonal-225-0`, graine 0,
|
||||
copie du serveur de contrôle arrêté. Les quatre diagonales sont déjà prêtes ;
|
||||
départ au Nord-Est en 848 / 254 / -496. Vulkan, rendu 32 chunks, simulation 5,
|
||||
créatif/vol et commandes autorisées. Le client confirme `DIAGONAL225_VISIT_OPEN`.
|
||||
|
||||
Ajout du nom Diagonal-225 à la liste du lanceur de visites et à son aide client
|
||||
optionnelle, compilée avec `:sanctuary-test:exportDuoLaunch`. L’identité des
|
||||
sources du contrôle a été vérifiée avant ce seul changement de lanceur ;
|
||||
génération et ressources de production identiques. Les anciens mondes et le
|
||||
MRpack beta.225 livré restent inchangés. La visite est une copie neuve isolée.
|
||||
@@ -0,0 +1,64 @@
|
||||
# Jardins pâles bas et roche jaune — beta.230
|
||||
|
||||
Retour R048 sur beta.229, 5 octobre 2026. Base `55df522`, branche
|
||||
`codex/lower-groves-beta230`. Nouveaux profils uniquement, aucune migration
|
||||
ou régénération des anciennes cartes.
|
||||
|
||||
NE : garder le relief validé et étendre les chênes pâles aux terrasses situées
|
||||
sous le niveau du plateau, y compris à ciel ouvert. Dripstone dans les parties
|
||||
inférieures ; marais et lucioles restent sur le plateau. Eau toujours
|
||||
facultative et conditionnée à une cuvette naturellement fermée.
|
||||
|
||||
SO : mêler la roche jaune existante à la pierre normale en masses continues,
|
||||
en conservant les minerais natifs et les cavités soufre/dripstone.
|
||||
SE mangroves et NO plaines validés par le joueur, champs de relief conservés.
|
||||
|
||||
Le seuil inférieur suit le plafond ondulé du terrain savane (Y=230 ± 18),
|
||||
avec une bande supérieure de 12 blocs laissée au marais. Il ne suit plus le
|
||||
sommet local de chaque colonne : une terrasse basse ouverte est désormais un
|
||||
sol de jardin pâle. Même support 2 × 2 et même dégagement pour les arbres.
|
||||
Les formations natives de dripstone sont ajoutées au biome pâle inférieur.
|
||||
Les buissons à lucioles restent exclusivement au-dessus de ce seuil.
|
||||
|
||||
La roche jaune est répartie par un bruit volumique lent, sans changer la
|
||||
forme de la savane. La substitution après décoration ne vise que Stone ;
|
||||
elle conserve les blocs de minerai, leur voisinage immédiat dans le chunk,
|
||||
les autres roches, le soufre et le cinabre. Aucune variante de minerai jaune
|
||||
ajoutée et aucun changement des tags minéraux globaux.
|
||||
|
||||
Neuf GameTests ciblés réussis : reliefs conservés, séparation des habitats,
|
||||
terrasses ouvertes et sols abrités, cuvettes fermées, cavités sèches SO,
|
||||
substitution réelle de pierre avec conservation des minerais, presets et
|
||||
ordre des features. Les grilles 0/42 trouvent 274/285 sites de chêne pâle,
|
||||
dont 216/245 ouverts ; ces chiffres ne sont pas un inventaire de l’île.
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,diagonal230 -PsanctuaryAtlasOnly=true` réussit
|
||||
en 2 min 38 s. Contrôles natifs réussis sur 0/42 : quatre activations réelles, paiements et
|
||||
refus des doubles offres, interruption/reprise, 49 chunks FULL par expansion,
|
||||
relais utilisables. Les nouveaux mondes de contrôle sont arrêtés normalement.
|
||||
|
||||
Au NE, dans les chunks sondés : 38/32 blocs de tronc pâle, quatre colonnes
|
||||
de racine à ciel ouvert sur chaque graine (un tronc de 2 × 2), 103/76 blocs
|
||||
de pointed dripstone et 7/1 buissons à lucioles supérieurs. Au SO : les deux
|
||||
roches sont présentes (462/1711 blocs jaunes et 7180/2707 Stone dans les
|
||||
échantillons), avec pics de soufre et dripstone. Ces comptes attestent la
|
||||
présence, sans mesurer la proportion globale sur chaque île.
|
||||
Rendu à apprécier en jeu.
|
||||
|
||||
MRpack normal vérifié, copie dans Downloads : Minecraft 26.3 / Fabric Loader
|
||||
0.19.5, trois tailles, JAR identique au build, aucun module Test ni monde.
|
||||
Les 432 ressources historiques de worldgen comparées à 229 sont identiques.
|
||||
SHA-256 pack : `b080b17d7e54427d3a6b89da2b009637e99a648752ba49068a274fa35499f8e4`.
|
||||
SHA-256 JAR : `c72cc0afea27e7d71c73d6f4edc4f874bc5fb665288eba243d7faafcba5e3276`.
|
||||
Reçu : `build/diagonal230-mrpack-receipt.json`.
|
||||
|
||||
Aucune publication de canal ni synchronisation Prism, aucune validation
|
||||
Windows ou mesure de fluidité.
|
||||
|
||||
|
||||
Nouvelle visite isolée `diagonal230-visit`, monde `Sanctuary-Diagonal-230-0`,
|
||||
copiée depuis le contrôle graine 0 arrêté. Île principale Petit et quatre
|
||||
expansions 1024 prêtes. Créatif avec commandes, 32 chunks, simulation 5 ;
|
||||
départ au relais NE (856, 273, -496). Ouverture Vulkan confirmée à 22:45:00
|
||||
le 5 octobre 2026, `DIAGONAL230_VISIT_OPEN` dans `build/diagonal230-solo.log`.
|
||||
Le rendu reste à apprécier par le joueur ; anciennes visites conservées.
|
||||
@@ -0,0 +1,110 @@
|
||||
# Reliefs distincts des diagonales — beta.226
|
||||
|
||||
Retour du 5 octobre 2026 sur beta.225. Biomes appréciés, silhouettes refusées :
|
||||
grands plateaux identiques, bords tranchés. Branche `codex/diagonal-relief-beta226`,
|
||||
base `e2b9ee7` et conservation des ajustements locaux du lanceur de visite 225.
|
||||
|
||||
- Nord-Est : garder les bassins, davantage de hauts reliefs émergés sans excaver
|
||||
leur intérieur ; marais moins profonds, arbres plus fréquents dans l’eau,
|
||||
quelques grands lacs conservés.
|
||||
- Nord-Ouest : grandes plaines et végétation validées ; bords rongés fortement
|
||||
en 3D, effet qui diminue en allant vers le centre, centre préservé.
|
||||
- Sud-Ouest : remplacer la base par un terrain flottant 3D natif, grandes
|
||||
surfaces de sable et roche, plateaux de savane, léger rehaussement local.
|
||||
- Sud-Est : relief très fragmenté, hauts et bas, récifs verticaux, davantage
|
||||
de mangroves ; boue, argile et calcite. Abandon de l’ambiance plate.
|
||||
|
||||
Diamètre 1024, Est humide/Ouest sec. Nouveaux profils 226 seulement. Île
|
||||
principale, cannes à sucre et quatre cardinales conservées. Pas de migration
|
||||
des mondes 225 ou antérieurs ; nouvelles visites isolées pour les essais.
|
||||
|
||||
## Réalisation
|
||||
|
||||
La révision 225 reste figée. Trois nouveaux profils 226 réutilisent exactement
|
||||
la génération de Sanctuary Island ; seules les diagonales passent au nouveau
|
||||
champ. Les anciennes ressources et leurs identifiants restent lisibles.
|
||||
|
||||
Le Nord-Ouest réemploie les colonnes et matériaux 225 à plus de 180 blocs de
|
||||
la bordure. À l’extérieur, deux échelles de bruit volumique découpent le bord
|
||||
et le dessous ; un masque continu réduit l’effet en approchant du centre.
|
||||
Le Nord-Est conserve les dépressions et leur enveloppe étanche, garde une
|
||||
partie des lacs profonds et relève les autres fonds à une ou deux couches
|
||||
d’eau. Des reliefs émergés ajoutés en 3D restent à distance des bassins. Les
|
||||
chênes de marais natifs reçoivent davantage de tentatives de plantation.
|
||||
|
||||
Le Sud-Ouest repart du champ flottant `PopulationIslandDensity`, sans le
|
||||
plateau commun 225, avec une limite haute légèrement ondulée pour les savanes.
|
||||
Le Sud-Est étire verticalement ce champ, ajoute des fractures et des récifs
|
||||
volumiques, et favorise les mangroves natives. Les différentes corniches
|
||||
exposées reçoivent du sol, pas seulement le sommet de la colonne ; les veines
|
||||
cohérentes de calcite et d’argile traversent la roche. Le sable repose sur une
|
||||
base solide. Les biomes de végétation natifs restent ordonnés et compatibles.
|
||||
|
||||
Les bassins 225 conservés concernent le Nord-Est. Le Sud-Est abandonne ses
|
||||
anciens bassins plats ; ses mangroves poussent sur les corniches de boue.
|
||||
|
||||
La préparation d’une expansion reste limitée à 49 chunks autour du relais.
|
||||
Pas de passe d’hydrologie ou de simulation supplémentaire, ni de nouvelle
|
||||
structure. Relais cherché sur un support réel ; le petit socle 3 × 3 existant est conservé,
|
||||
sans grande terrasse artificielle.
|
||||
|
||||
## Contrôles
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,diagonal226 -PsanctuaryAtlasOnly=true` réussit
|
||||
en 2 min 42 s (`build/diagonal226-build.log`). Six GameTests : trois profils
|
||||
publics et historiques, conservation du centre NO, bords rongés, bassins NE
|
||||
étanches et moins profonds sur quatre graines (0, 42, 2026, -9137), volumes
|
||||
natifs méridionaux, part des mangroves, déterminisme après recompilation,
|
||||
relais supportés, ordre des features et routage des cardinales validées.
|
||||
|
||||
Sur la grille de contrôle des deux graines 0/42, le NO perd plus de la moitié
|
||||
de ses colonnes de bord à leur ancienne hauteur, avec un centre strictement
|
||||
conservé. Le NE conserve des lacs profonds et 56 à 84 % de colonnes humides
|
||||
peu profondes sur les quatre graines. Les reliefs ajoutés dépassent localement
|
||||
85 blocs. Au SE, la mangrove couvre 67 à 73 % des colonnes émergées échantillonnées
|
||||
sur les graines de champ 0/42 ; les surfaces vont localement de Y=63 à Y=439.
|
||||
Ce sont des sondages de champs, pas des mesures exhaustives des mondes.
|
||||
|
||||
Deux mondes natifs neufs, graines **0 et 42**, passent les quatre offres réelles,
|
||||
le refus des paiements incorrects et doubles offres, l’interruption après
|
||||
réservation, la reprise, les relais utilisables et la décoration native.
|
||||
Chaque préparation reste à 49 chunks FULL. Trois troncs natifs enracinés
|
||||
sous le niveau de l’eau ont été constatés dans le marais de chaque monde
|
||||
(arrêt du contrôle dès trois arbres). Bois et feuilles présents sur les quatre
|
||||
îles, mangroves sur les corniches SE. Cannes de l’île principale : 42 pieds
|
||||
sur 0, 94 sur 42. Les relevés de plantes portent sur quelques chunks par biome ;
|
||||
un échantillon désert sans cactus ne constitue pas un inventaire de l’île.
|
||||
|
||||
Reçus ignorés :
|
||||
`build/worldgen-lab/diagonal226-check0/small/0/{cold,warm}.json` et
|
||||
`build/worldgen-lab/diagonal226-check42/small/42/{cold,warm}.json`.
|
||||
|
||||
## Distribution
|
||||
|
||||
MRpack standard beta.226 dans `build/` et `~/Downloads/`, contrôlé après
|
||||
assemblage : archive intègre, JAR construit exact, Minecraft 26.3 / Loader
|
||||
0.19.5, trois nouveaux profils et 388 ressources historiques de génération
|
||||
identiques à beta.225 (hors alias public). Aucun monde ou module Test inclus.
|
||||
SHA-256 : `c1ce5fc71a3e0417194d591d1ddd04b00dcef46565dfdb34ccd7ee2a01217e02`.
|
||||
|
||||
Pas de publication du canal packwiz, de push ou de modification de Prism.
|
||||
Les mondes existants restent sur leur révision. Rendu à apprécier par le joueur ;
|
||||
pas de campagne de screenshots, de validation Windows ou d’exploration complète
|
||||
Medium/Large. Les contrôles des trois tailles vérifient leurs registres et presets.
|
||||
|
||||
## Visite
|
||||
|
||||
Copie isolée du serveur 0 arrêté dans
|
||||
`build/worldgen-lab/diagonal226-visit/small/0/client/saves/Sanctuary-Diagonal-226-0`.
|
||||
Créatif, vol et commandes autorisés ; 32 chunks de rendu, simulation 5,
|
||||
mémoire 4 Gio. Départ NE à 848 / 270 / -496. Vulkan confirmé ; `DIAGONAL226_VISIT_OPEN` le 5 octobre à 20:32:59.
|
||||
Le joueur passe en Spectateur à 20:33:04.
|
||||
|
||||
Points d’observation libres, téléportation possible :
|
||||
|
||||
- NE : `/tp @s 848 270 -496`
|
||||
- SE : `/tp @s 560 425 816`
|
||||
- SO : `/tp @s -832 265 512`
|
||||
- NO : `/tp @s -608 286 -768`
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
# Diagonales : abaisser et ciseler — beta.228
|
||||
|
||||
Retour R046 sur beta.227, 5 octobre 2026. Base `70a34df`, branche
|
||||
`codex/diagonal-shaping-beta228`. Nouveaux profils uniquement.
|
||||
|
||||
Le jardin pâle monte trop haut entre les étangs. Conserver son pourtour 3D,
|
||||
abaisser fortement le relief et rendre les lacs lisibles. Les mangroves et
|
||||
leurs cavités conviennent, mais leurs volumes demandent des arêtes moins
|
||||
rondes. Même finition sur les bordures des plaines NO, plateau général
|
||||
conservé. L’épaisseur et la surface désert/savane SO sont validées et figées.
|
||||
|
||||
Captures consultées dans le labo 227 : `2026-10-05_21.36.56.png` et
|
||||
`2026-10-05_21.40.07.png` ; grandes buttes NE et découpe arrondie NO visibles.
|
||||
|
||||
## Réalisation
|
||||
|
||||
NE : comprimer les hauteurs émergées, réduire la surélévation et l’annuler sur
|
||||
les fonds aquatiques. SE/NO : fractures Voronoi à largeur modulée par du bruit
|
||||
3D ; calcul cellulaire mis en cache par colonne. Le noyau de plaines NO et le
|
||||
champ SO restent ceux de 227. Réutiliser les deux biomes de cavités 227 au SE.
|
||||
|
||||
La partie émergée du NE est comprimée à 55 % de sa hauteur au-dessus de l’eau.
|
||||
Les deux surélévations passent de 120 + 100 à 12 + 8 blocs, avec une transition
|
||||
continue qui les annule sur les fonds aquatiques. Le masque 3D du bord reste
|
||||
celui de 227. L’eau garde son niveau Y=204, sans nouvelle simulation hydrologique.
|
||||
|
||||
Le Voronoi SE/NO fournit la distance aux faces des cellules ; deux bruits 3D
|
||||
modulent la largeur des fractures à différentes échelles. Le calcul cellulaire
|
||||
est réutilisé sur la colonne entière. Au NO, l’action supplémentaire cesse
|
||||
à 280 blocs de distance interne au bord : le centre est exactement celui de
|
||||
227. Au SE, seules des découpes sont ajoutées ; les cavités existantes ne sont
|
||||
pas remplies. Les nouveaux rebords reçoivent les matériaux du terrain 226.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Sept GameTests ciblés réussis (`build/diagonal228-tests.log`). Sur les grilles
|
||||
NE de quatre graines, dont les deux graines d’expansion réellement visitées :
|
||||
sommets entre Y=228 et 237, baisse moyenne intérieure de 30 à 39 blocs,
|
||||
2,4 à 2,6 fois plus de colonnes en eau qu’en 227. Plus de 95 % des anciens fonds
|
||||
aquatiques 225 du centre sont de nouveau en eau. Ce sont des échantillons,
|
||||
pas une mesure exhaustive de la superficie des lacs.
|
||||
|
||||
Sur 0/42, environ 8–10 % de matière en moins au NO et 22 % au SE dans les
|
||||
grilles sondées ; centre NO conservé, deux biomes de caves présents, relais
|
||||
sur support, surfaces de mangrove préservées comme habitats. Le champ de
|
||||
densité et les matériaux SO sont identiques à 227 sur les échantillons.
|
||||
Déterminisme, trois presets publics et anciens identifiants contrôlés.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,diagonal228 -PsanctuaryAtlasOnly=true` réussit
|
||||
en 2 min 43 s (`build/diagonal228-build.log`), avec les sept GameTests.
|
||||
|
||||
Contrôles natifs réussis sur deux nouveaux mondes isolés, graines 0/42 :
|
||||
`diagonal228-check0` et `diagonal228-check42`. Paiements et refus des doubles
|
||||
offres, interruption/reprise, quatre expansions de 1024, 49 chunks FULL par
|
||||
activation et relais utilisables vérifiés. Les sondages trouvent des arbres
|
||||
dans chaque région, ainsi que des troncs enracinés dans l’eau au NE (3/7).
|
||||
Au SE, présence native des décorations lush (389/114 blocs échantillonnés) et
|
||||
pointed dripstone (38/76). Ces comptages ne mesurent pas leur abondance globale.
|
||||
Les deux processus se terminent normalement. Aucun ancien monde modifié.
|
||||
|
||||
## Artefact local
|
||||
|
||||
MRpack normal `build/Sanctuary-beta.228.mrpack`, copié dans Downloads.
|
||||
Archive et JAR vérifiés, Minecraft 26.3 / Fabric Loader 0.19.5, trois tailles,
|
||||
aucun module Test ni sauvegarde dans le pack. Les 415 ressources historiques
|
||||
de worldgen comparées à 227 sont identiques ; seul l’alias public est avancé.
|
||||
|
||||
- SHA-256 MRpack : `5e808121a2b1e3e358c58a2bb4616592521a4bd54cb18fe25c3ab68b05a4ee9d`.
|
||||
- SHA-256 JAR : `4a62259e1d941079de44237ed3a342a5a5e7fbe443fce07826fda76be2dd2a58`.
|
||||
|
||||
Nouvelle visite `diagonal228-visit`, monde `Sanctuary-Diagonal-228-0`, copiée
|
||||
depuis le nouveau monde de contrôle arrêté. Graine 0, île principale Petit,
|
||||
quatre expansions de 1024 prêtes, créatif avec commandes, 32 chunks et simulation
|
||||
5. Ouverture Vulkan confirmée le 5 octobre à 21:54:28 dans
|
||||
`build/diagonal228-solo.log` : `DIAGONAL228_VISIT_OPEN`, position 848, 267, -496.
|
||||
|
||||
| Région | Relais X, Y, Z sur la graine 0 |
|
||||
| --- | --- |
|
||||
| NE jardin pâle/marais | 848, 219, -496 |
|
||||
| SE mangroves/cavités | 560, 377, 816 |
|
||||
| SO savane/désert | -832, 217, 512 |
|
||||
| NO plaines/taïga | -608, 238, -768 |
|
||||
|
||||
Le rendu reste à apprécier par le joueur. Ces essais ne constituent pas une
|
||||
mesure de fluidité ni une visite exhaustive des tailles Moyen/Grand. Aucun
|
||||
essai Windows, aucune modification d’un ancien monde, aucune publication de
|
||||
canal packwiz ou synchronisation Prism dans ce chantier.
|
||||
@@ -0,0 +1,76 @@
|
||||
# Sous-bois pâles et visite des neuf îles — beta.231
|
||||
|
||||
Retours R049–R050 du 5 octobre 2026. Base `42e42fe`, branche
|
||||
`codex/pale-understory-beta231`. Correctif livré ; nouvelle visite ouverte.
|
||||
|
||||
Compléter les sols inférieurs du jardin pâle : herbes, fleurs natives
|
||||
(eyeblossoms), tapis et mousse suspendue sous les feuillages. Conserver les
|
||||
formes, arbres, dripstones, marais supérieurs et géologie de savane validés.
|
||||
L’eau reste facultative, seulement dans les cuvettes naturelles existantes.
|
||||
Nouvelle révision de génération, sans modifier les anciens profils ou mondes.
|
||||
|
||||
Préparer une nouvelle visite isolée sur la graine 0 : Sanctuary Island Grand
|
||||
(1024 blocs), huit expansions de 1024, toutes activées. Le joueur a choisi ensuite une ouverture immédiate,
|
||||
avec chargement des zones restantes pendant l’exploration. Créatif, commandes, Vulkan, distance 32 chunks. Aucun changement
|
||||
à la génération normale du rythme d’ouverture des expansions. Pas de
|
||||
publication de canal, ni modification de l’instance Prism personnelle.
|
||||
|
||||
Le correctif réutilise exactement le champ de terrain 230 et ses biomes.
|
||||
Une décoration supplémentaire parcourt les sols inférieurs réels du NE,
|
||||
à ciel ouvert ou abrités : herbe courte/haute, tapis de mousse pâle et fleurs
|
||||
fermées natives, avec leur transition jour/nuit. Petits rideaux de mousse
|
||||
sous le feuillage pâle. Les regroupements suivent des bruits lents ; aucune
|
||||
plante ne remplace eau, roche, tronc, dripstone ou végétation existante.
|
||||
|
||||
Cinq GameTests passent, dont support réel des plantes, double hauteur,
|
||||
protection des obstacles et conservation du champ accepté sur 0/42.
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,diagonal231 -PsanctuaryAtlasOnly=true` passe
|
||||
en 2 min 34 s. MRpack normal vérifié (Minecraft 26.3 / Loader 0.19.5), trois
|
||||
tailles, JAR exact, sans Test ni monde ; 439 ressources historiques identiques.
|
||||
SHA-256 pack : `3a9763cb81e088a0beeb4e4044dd35586a590c75f6c2f9a035937c8df4dee14c`.
|
||||
SHA-256 JAR : `8ba7b19428094e01ac9f3b6b3f8054343bc7a3df60f786260f01b487ee2f675a`.
|
||||
Copie `Downloads/Sanctuary-beta.231.mrpack`, reçu
|
||||
`build/diagonal231-mrpack-receipt.json`.
|
||||
|
||||
La préparation complète est explicite :
|
||||
`python3 scripts/worldgen_lab.py verify --run archipelago231-check0 --profile large
|
||||
--seed 0 --checks diagonal231 --all-islands --memory 2048`.
|
||||
Elle utilise les paiements natifs, conserve l’interruption/reprise du premier
|
||||
relais, puis charge les neuf emprises avec une limite de quatre chunks en
|
||||
cours. Chaque chunk doit atteindre FULL, tickets libérés au fur et à mesure.
|
||||
Rapport final et arrêt propre requis avant de copier la nouvelle visite.
|
||||
Sur la graine 0 en Grand, les quatre contrôles natifs des diagonales passent :
|
||||
NE, dans un chunk inférieur sondé, 75 blocs d’herbe, 24 fleurs, 37 tapis,
|
||||
8 mousses suspendues, 44 troncs pâles, 105 dripstones et 5 lucioles supérieures.
|
||||
Ces nombres attestent leur présence ; ils ne mesurent pas toute l’île.
|
||||
Savane : 7731 blocs jaunes et 101 de pierre dans les échantillons ; cavités
|
||||
soufre/dripstone présentes. Mangroves et plaines conservent leurs habitats.
|
||||
|
||||
Les huit activations réelles aboutissent, relais présents, journal relu :
|
||||
neuf îles de diamètre 1024 en état `ready`, génération 231, graine racine 0.
|
||||
La prégénération intégrale visait 41 458 chunks ; le joueur choisit de lancer
|
||||
le solo immédiatement. Arrêt demandé à 23:06:09, sauvegarde normale achevée,
|
||||
dernier jalon 256/41 458 (en plus des zones d’arrivée et échantillons).
|
||||
Ce contrôle interrompu volontairement n’est **pas** une prégénération complète
|
||||
réussie ; les zones restantes se chargent pendant l’exploration.
|
||||
Reçu : `build/worldgen-lab/archipelago231-check0/large/0/visit-readiness.json`.
|
||||
Anciennes visites conservées, aucune validation Windows ou mesure de fluidité.
|
||||
|
||||
|
||||
Visite `archipelago231-visit/large/0`, monde `Sanctuary-Diagonal-231-0`,
|
||||
créée depuis le serveur arrêté et ouverte à 23:07:33 le 5 octobre 2026.
|
||||
Vulkan confirmé, marqueur `DIAGONAL231_VISIT_OPEN`, départ (0, 320, 0),
|
||||
créatif/vol/commandes, rendu 32 chunks, simulation 5. Les données du labo
|
||||
restent dans `build/` ignoré. Aucun ancien monde modifié.
|
||||
|
||||
| Île | Centre X/Z | Commande de visite |
|
||||
| --- | --- | --- |
|
||||
| Nord | 32 / -1984 | `/sanctuary expansion visit r2yyuk27a85c8p` |
|
||||
| Nord-Est | 736 / -960 | `/sanctuary expansion visit r7vapqz7anv7c` |
|
||||
| Est | 1776 / -208 | `/sanctuary expansion visit r2zwcc9ktr14ds` |
|
||||
| Sud-Est | 960 / 736 | `/sanctuary expansion visit r3bswui5wc00kk` |
|
||||
| Sud | 0 / 1536 | `/sanctuary expansion visit r391kr4y3lwlzy` |
|
||||
| Sud-Ouest | -960 / 736 | `/sanctuary expansion visit rclt83rncgsv1` |
|
||||
| Ouest | -1792 / -192 | `/sanctuary expansion visit r3r7b6q184g2a1` |
|
||||
| Nord-Ouest | -736 / -960 | `/sanctuary expansion visit r81ebztggj346` |
|
||||
@@ -0,0 +1,97 @@
|
||||
# Marais étagé et cavités sèches — beta.229
|
||||
|
||||
Retour R047 sur beta.228, 5 octobre 2026. Base `b77d71b`, branche
|
||||
`codex/wetland-reset-beta229`. Nouveaux profils uniquement ; aucun ancien
|
||||
monde, chunk ou identifiant de génération migré.
|
||||
|
||||
## Contrat
|
||||
|
||||
Refaire entièrement le NE : même géométrie que la savane amincie validée,
|
||||
chênes pâles sur les sols abrités sous la roche, marais en haut. Lucioles
|
||||
uniquement dans le marais supérieur. Eau facultative, seulement quand le
|
||||
relief possède une dépression fermée ; abandon des lacs à niveau constant.
|
||||
SO : soufre et dripstone dans les parties inférieures, sans lush caves et
|
||||
sans changer la surface. SE mangrove entièrement validé ; NO conservé
|
||||
provisoirement malgré les réserves esthétiques, aucune retouche des deux.
|
||||
|
||||
## Implémentation
|
||||
|
||||
Le NE réutilise le champ de densité SO 228, avec la graine propre à cette
|
||||
expansion. Épaisseur variable et plateau restent ceux de ce champ ; seules
|
||||
les matières et les habitats changent. Sous les 12 derniers blocs du toit,
|
||||
biome jardin pâle ; en haut, biome marais. Plantation native des chênes pâles
|
||||
sur des sols naturels de 2 × 2 avec le dégagement nécessaire sous un surplomb.
|
||||
Les buissons à lucioles sont posés sur le sol supérieur réel, jamais sur des
|
||||
feuilles ni dans le jardin pâle inférieur.
|
||||
|
||||
Aucune simulation hydrologique ni construction de cuvette : une recherche
|
||||
locale bornée accepte seulement des dépressions d’un bloc de profondeur,
|
||||
avec deux blocs de fond solide et des murs naturels continus. Si une paroi
|
||||
manque, toute la mise en eau est abandonnée. Ces mares peuvent être rares
|
||||
ou absentes suivant la graine. Les biomes NE n’ajoutent aucune source native.
|
||||
|
||||
SO : régions de soufre/cinabre ou dripstone sous le plateau, dans les
|
||||
cavités du terrain existant. Formations natives de pics de soufre et de
|
||||
speleothèmes ; aucun creusement nouveau ni décor lush. Les deux autres
|
||||
champs et leurs décorations restent en révision 228.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Huit GameTests ciblés passent (`build/diagonal229-tests.log`). Sur les graines
|
||||
0/42, identité du champ NE avec le SO 228, habitats séparés en hauteur,
|
||||
65/46 emplacements de chênes pâles sur les grilles sondées, mares toutes
|
||||
bordées de matière naturelle, déterminisme, cavités SO et conservation des
|
||||
champs SE/NO contrôlés. Les nombres d’emplacements ne représentent pas un
|
||||
inventaire exhaustif des arbres de l’île.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,diagonal229 -PsanctuaryAtlasOnly=true` réussit
|
||||
en 2 min 38 s. Contrôles natifs 0/42 réussis, avec quatre offres réelles,
|
||||
refus des doubles offres, consommation correcte, interruption/reprise,
|
||||
49 chunks FULL par activation et relais utilisables.
|
||||
|
||||
Dans les chunks sondés au NE : 40/44 blocs de tronc pâle et 9/4 buissons à
|
||||
lucioles supérieurs ; racines sous des surplombs et aucune luciole basse.
|
||||
Au SO : 32/37 pics de soufre et 9/76 pointed dripstone ; aucun décor lush
|
||||
trouvé dans les cavités inspectées. Ces chiffres attestent la présence,
|
||||
pas l’abondance globale. Les cavités lush/dripstone SE restent présentes.
|
||||
|
||||
Lecture des deux sauvegardes arrêtées (`build/diagonal229-water-audit.json`) :
|
||||
52/51 chunks NE FULL, 36/12 colonnes de racines pâles, aucune cellule d’eau.
|
||||
Les rares mares du plan théorique n’étaient donc pas présentes dans cet
|
||||
échantillon natif ; leur fréquence visuelle reste à apprécier ailleurs.
|
||||
Aucun ancien monde n’a été modifié.
|
||||
|
||||
## Artefact local
|
||||
|
||||
MRpack normal `build/Sanctuary-beta.229.mrpack`, copie dans Downloads.
|
||||
Archive et JAR construits vérifiés, Minecraft 26.3 / Fabric Loader 0.19.5,
|
||||
trois tailles publiques, aucun module Test ni sauvegarde. Les 421 ressources
|
||||
historiques de worldgen comparées à 228 sont identiques ; seul l’alias public
|
||||
est avancé. Reçu : `build/diagonal229-mrpack-receipt.json`.
|
||||
|
||||
- SHA-256 MRpack : `788b3aa5898f12aed4570224beb4dd44505eb9e5cae89cefdef9fe7549c85f8b`.
|
||||
- SHA-256 JAR : `50fd7d6c04c9060abf3eca89bbaf936b39c6e9e82051d2d6559f197f425fdda9`.
|
||||
|
||||
Aucune validation Windows ni mesure de fluidité. Aucun ancien monde modifié,
|
||||
aucune publication du canal packwiz ni synchronisation Prism.
|
||||
|
||||
|
||||
## Visite
|
||||
|
||||
Nouvelle visite isolée `diagonal229-visit`, monde `Sanctuary-Diagonal-229-0`,
|
||||
copiée depuis le nouveau contrôle graine 0 arrêté. Île principale Petit,
|
||||
quatre expansions de 1024 prêtes, créatif avec commandes, vue 32 chunks,
|
||||
simulation 5. Ouverture Vulkan confirmée à 22:23:49 le 5 octobre 2026 :
|
||||
`DIAGONAL229_VISIT_OPEN` dans `build/diagonal229-solo.log`. Rendu à apprécier
|
||||
par le joueur.
|
||||
|
||||
| Région | Relais X, Y, Z sur la graine 0 |
|
||||
| --- | --- |
|
||||
| NE marais / jardin pâle inférieur | 856, 225, -496 |
|
||||
| SE mangroves / cavités | 560, 377, 816 |
|
||||
| SO savane / cavités sèches | -832, 217, 512 |
|
||||
| NO plaines / taïga | -608, 238, -768 |
|
||||
|
||||
Exemple de pied de chêne pâle observé dans la sauvegarde : 475, 174, -541.
|
||||
Le joueur démarre au-dessus du relais NE. Anciennes visites conservées.
|
||||
@@ -0,0 +1,127 @@
|
||||
# LIGHT-141 — Direction locale pour les normales PBR
|
||||
|
||||
Socle beta.140 `c9f5c56`, branche `codex/directional-lights-beta141`.
|
||||
Minecraft 26.3 / Java 25. Livraison beta.141.
|
||||
|
||||
## Contrat
|
||||
|
||||
Estimer une direction d'arrivée depuis les six voisins du champ lumineux,
|
||||
avec intensité et confiance. Conserver cette estimation dans une texture
|
||||
compacte reconstruite avec le champ, uniquement quand le PBR est actif.
|
||||
Les sources portées utilisent leurs positions déjà disponibles. Brancher ces
|
||||
directions sur les normales et reflets PBR existants, sans nouveau bouton.
|
||||
Les sources opposées doivent réduire la directionnalité, sans bascule brutale.
|
||||
Les champs précédent/courant gardent leur fondu et les obstacles restent pris
|
||||
en compte pour les blocs posés. Aucun changement de lumière de gameplay,
|
||||
de sauvegarde ou de génération ; aucune promesse de lancer de rayons exact.
|
||||
|
||||
## Programme de vérification
|
||||
|
||||
Contrôles natifs OpenGL/Vulkan : direction, sources opposées, murs, rendu de
|
||||
relief en intérieur, déplacement des sources, transitions et PBR OFF.
|
||||
Régression des lumières beta.139/140 puis check/build et assemblage. GameTest
|
||||
serveur dédié exclu selon le refus EULA antérieur. Aucun monde personnel ouvert.
|
||||
|
||||
## Réalisation
|
||||
|
||||
Le champ RGB conserve une texture directionnelle RGBA8 supplémentaire :
|
||||
les trois composantes codent la direction pondérée, l'alpha sa réponse lumineuse.
|
||||
Les voisins plus lumineux et accessibles contribuent à l'estimation ; les
|
||||
arrivées opposées s'annulent dans le vecteur, sans supprimer l'éclairage natif.
|
||||
Le shader interpole les moments pondérés avant normalisation, y compris entre
|
||||
les champs précédent et courant. La confiance réduit le relief quand aucune
|
||||
direction ne domine.
|
||||
|
||||
Cette texture est préparée dans le budget de reconstruction existant, avec
|
||||
un maximum de six voisins par cellule éclairée et une table d'énergie réutilisée.
|
||||
Aucune recherche de sources ni rayons par pixel pour les blocs posés. La
|
||||
lecture GPU interpole huit cellules par champ ; les deux champs sont utilisés
|
||||
pendant le fondu. Les sources mobiles réutilisent les positions, intensités et
|
||||
transitions déjà collectées, dans la limite existante de 128 sources.
|
||||
|
||||
Une texture directionnelle occupe environ 1,5 Mo à 16 blocs de distance et
|
||||
19 Mo à 64 blocs, par copie CPU/GPU ; deux champs coexistent lors des transitions.
|
||||
Le champ directionnel n'est construit que si PBR est actif avec une intensité
|
||||
non nulle. Sa désactivation libère les directions après la transition.
|
||||
Le coût est borné par ces réglages, sans garantie de FPS.
|
||||
|
||||
La passe PBR applique la différence entre normale de base et normale perturbée,
|
||||
puis un reflet GGX local. Elle garde sa portée de 32 blocs et les réglages PBR
|
||||
existants ; Lumières colorées doit être actif. Le soleil et la lune continuent
|
||||
à fonctionner lorsque les lumières colorées sont coupées. Les aides FR/EN
|
||||
expliquent cette dépendance.
|
||||
|
||||
C'est une direction dominante approximative : deux lumières colorées opposées
|
||||
ne produisent pas deux reflets indépendants. Les sources mobiles gardent la
|
||||
propagation radiale et les limites d'occultation existantes. Les normales PBR
|
||||
concernent les surfaces de blocs prises en charge, pas tous les modèles de mobs.
|
||||
Les exclusions existantes des panoramas et de l'immersion restent inchangées.
|
||||
|
||||
## Premier essai ciblé
|
||||
|
||||
L'essai natif OpenGL ciblé réussit en **1 min 12 s** : direction gauche/droite,
|
||||
annulation des sources opposées avec énergie conservée, occultation par un mur,
|
||||
relief sur la pierre en intérieur et avec une torche en main, stabilité au repos,
|
||||
libération des directions avec PBR OFF et maintien du chemin solaire avec
|
||||
Lumières colorées OFF. La somme d'écarts PBR OFF/ON sur la pierre vaut 878 114
|
||||
au réglage PBR 100 % ; c'est une comparaison de pixels, pas une mesure de FPS.
|
||||
Log : `build/directional141-focused.log`.
|
||||
|
||||
Les essais de préparation ont révélé un conflit de nom de matrice GLSL, corrigé,
|
||||
puis des erreurs de fixture (angle 180° normalisé par Minecraft, suppression
|
||||
d'entités alors que la sélection était vide, commande d'heure déjà à minuit),
|
||||
corrigées sans changer le rendu.
|
||||
|
||||
## Validation complète OpenGL
|
||||
|
||||
La chaîne complète réussit en **3 min 1 s** sur OpenGL / Apple M1 :
|
||||
`COLORED139_PASS`, `COLORED140_PASS` et `DIRECTIONAL141_PASS`.
|
||||
Elle réunit les contrôles de couleurs, objets portés, caméra, occultation,
|
||||
rechargement des ressources, préférences, distances/fondus et directions PBR.
|
||||
Le test ciblé est reproductible avec `-PsanctuaryDirectional141Only=true` ;
|
||||
la chaîne complète utilise `-PsanctuaryDirectional141ClientTests=true` avec
|
||||
les deux suites de lumières existantes.
|
||||
Log : `build/directional141-opengl.log`. Captures natives conservées dans
|
||||
`build/directional141-opengl-screenshots/`. Comparaison autonome sans retraitement :
|
||||
`build/Shader-beta.141-comparaison.html`.
|
||||
|
||||
## Validation complète Vulkan
|
||||
|
||||
La même chaîne réussit en **2 min 56 s** sur Vulkan / Apple M1, MoltenVK 1.4.2,
|
||||
profondeur 0–1 et transparence améliorée. Les trois marqueurs de réussite sont
|
||||
présents dans `build/directional141-vulkan.log`. L'écart PBR local OFF/ON vaut
|
||||
878 107, contre 878 114 sous OpenGL dans cette scène. Les captures natives sont
|
||||
conservées dans `build/directional141-vulkan-screenshots/`.
|
||||
Les deux moteurs vérifient la compilation, les chemins actifs et désactivés,
|
||||
le cache, les murs, les sources opposées et portées, ainsi que les régressions
|
||||
beta.139/140. Pas de validation des pilotes Windows de l'utilisateur revendiquée.
|
||||
|
||||
## Construction et archives
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
|
||||
réussit en **2 min 35 s**, 126 tâches. Le GameTest serveur dédié reste exclu
|
||||
selon le refus EULA antérieur. Les suites clientes ci-dessus ont été exécutées
|
||||
séparément. Log : `build/shader141-build.log`.
|
||||
|
||||
Comparaison à beta.140 : **8 entrées de production modifiées**, limitées au
|
||||
champ lumineux, à sa préparation avant le PBR, au shader PBR et aux aides FR/EN.
|
||||
Les archives normale/Test contiennent le même JAR Sanctuary, sans classes
|
||||
de test. Version, dépendances exactes, sources des JAR, textures de gemmes et
|
||||
de la clé de Steve, et template complet sont vérifiés.
|
||||
Reçu : `build/shader141-artifact.json`.
|
||||
|
||||
SHA-256 du JAR : `660f29c3fa77fee4de6a8db5673c61619985804494f70e961998da36f396d0f1`.
|
||||
|
||||
- Sanctuary-beta.141.mrpack : `08df23dac9e98fbfa2935f747345c38244bddc3a3d9371c6416f251e85a7eb19`.
|
||||
- Sanctuary-Test-beta.141.mrpack : `a300ef5bfff7b6990c9f5c2760e9c3a23d7a27aeb10b8f04d29db9a7409fa0e1`.
|
||||
|
||||
## Livraison
|
||||
|
||||
[Release beta.141](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.141)
|
||||
publiée sur le commit source `93ed5574a4f77bd3a083b254498f4994efe31179` ; canal stable
|
||||
`7e6c84400f80db24bf5204cd21d628194ae9f0f7` vérifié après publication.
|
||||
Deux synchronisations isolées puis deux dans la même instance Sanctuary Beta
|
||||
réussissent. Les **923 fichiers personnels** suivis gardent leurs hashes.
|
||||
Sauvegarde préalable : `sanctuary-backups/before-beta.141/`. Aucun monde personnel
|
||||
ouvert. Reçus : `build/shader141-isolated.json` et `build/shader141-prism.json`.
|
||||
Archives normale/Test/template et comparaison copiées dans `sanctuary-beta/build/`.
|
||||
@@ -0,0 +1,60 @@
|
||||
# Récap Discord — beta.130 à beta.160
|
||||
|
||||
Brouillon à relire avant publication. Les captures sont des scènes de test,
|
||||
pas des photos d'un serveur public. Aucune annonce envoyée automatiquement.
|
||||
|
||||
## Message 1 — l'image et la lumière
|
||||
|
||||
**Sanctuary — retour sur les beta.130 à 160**
|
||||
|
||||
On a d'abord beaucoup travaillé l'ambiance : bloom, minerais lumineux, rebonds
|
||||
de couleur, relief des matériaux, reflets, rayons du soleil et lumières portées.
|
||||
L'eau a reçu ses propres réglages, puis plusieurs passes de correction ont
|
||||
amélioré les transitions, les distances et les matières.
|
||||
|
||||
La version du shader conservée est celle du socle beta.151. Elle reste gourmande,
|
||||
mais on garde ce travail ! En beta.160, le shader devient **désactivé par défaut
|
||||
sur une nouvelle configuration**, et peut être réactivé dans les options.
|
||||
|
||||
Images : `01-minerais-bloom-beta130.png`, `02-eau-beta144.png`.
|
||||
|
||||
## Message 2 — la vie du serveur
|
||||
|
||||
Le chantier suivant rapproche Minecraft et le site Sanctuary : **Gazette,
|
||||
tableau d'affichage et intendance** partagent un contrat de publications.
|
||||
Le mod fonctionne avec des fichiers par défaut ; une base MariaDB permet de
|
||||
partager les données avec le site.
|
||||
|
||||
Le menu pause a été réorganisé autour des systèmes Sanctuary, de la carte et
|
||||
des publications. La Gazette accepte les articles avec une capture obligatoire,
|
||||
les réponses, les épingles et la recherche par joueur ou contenu.
|
||||
|
||||
Le tableau distingue les types d'annonces par couleur. Les demandes peuvent
|
||||
indiquer un lieu, des matériaux, une récompense et des participants. Ce sont
|
||||
des descriptions pour organiser les échanges entre joueurs : aucun coffre de
|
||||
dépôt ni paiement automatique. Une demande suivie apparaît avec un **! sur la
|
||||
carte**, et son résumé se lit au survol.
|
||||
|
||||
Images : `03-menu-et-quete-beta159.png`, `04-materiaux-beta158.png`.
|
||||
|
||||
## Message 3 — tester ensemble
|
||||
|
||||
Avec la beta.160, on prépare nos séances de test en binôme sur Mac : un petit
|
||||
serveur local, un seul Minecraft à l'écran et des personnages de laboratoire.
|
||||
Le but : vérifier les échanges côté technique pendant que les vrais essais en
|
||||
jeu nous montrent ce qu'il faut simplifier dans l'interface.
|
||||
|
||||
Des scènes courtes et des captures horodatées permettront de reprendre les
|
||||
moments où l'on hésite, cherche un bouton ou perd le fil. Le prochain chantier
|
||||
est l'ergonomie, dans le jeu comme sur le site.
|
||||
|
||||
## Sources et pièces jointes
|
||||
|
||||
Les images originales et leurs empreintes sont rassemblées dans
|
||||
`build/discord-beta130-160/` (ignoré par Git), avec `images.json` pour la provenance.
|
||||
Les captures anciennes illustrent leur version d'origine, sans revendiquer une
|
||||
nouvelle validation graphique. Les sondages restent une idée, pas une fonction livrée.
|
||||
|
||||
Références : `shader-beta130.md` à `nether-pbr-beta151.md`,
|
||||
`community-beta154.md`, `pause-redesign-beta155.md`, `gazette-photos-beta157.md`,
|
||||
`community-cards-beta158.md`, `community-search-beta159.md`, `duo-lab-beta160.md`.
|
||||
@@ -0,0 +1,155 @@
|
||||
# DUO-160 — laboratoire Mac et tests en binôme
|
||||
|
||||
Branche `codex/duo-lab-beta160`, base `beta.159`. Minecraft 26.3, Java 25,
|
||||
Fabric 0.19.5 ; mêmes dépendances. Validation graphique Vulkan uniquement.
|
||||
|
||||
## Contrat
|
||||
|
||||
Le shader natif est OFF quand sa préférence est absente. Un choix sauvegardé
|
||||
ON ou OFF reste respecté, ainsi que ses intensités. Aucun shader supprimé :
|
||||
les ressources beta.151 restent identiques. Le client du laboratoire reçoit
|
||||
explicitement `enabled:false`, indépendamment de l'installation personnelle.
|
||||
|
||||
Tout le laboratoire réside dans `build/duo/`, ignoré par Git. Le monde plat
|
||||
`duo-flat-160`, graine 160, sert aux interfaces et aux échanges ; il ne valide
|
||||
pas le terrain Sanctuary. Aucun monde personnel ouvert ou modifié.
|
||||
Le module `sanctuary-test` fournit les personnages uniquement avec
|
||||
`-Dsanctuary.duo=true`. Il ne fait pas partie du pack normal.
|
||||
|
||||
## Préparer et lancer
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary-test:exportDuoLaunch --max-workers=1 -Dorg.gradle.jvmargs=-Xmx1G
|
||||
python3 scripts/duo_lab.py prepare
|
||||
python3 scripts/duo_lab.py server
|
||||
# Dans un autre terminal :
|
||||
python3 scripts/duo_lab.py client
|
||||
```
|
||||
|
||||
L'export permet ensuite de lancer Java directement, sans conserver un processus
|
||||
Gradle pendant la séance. Préparer à nouveau ne remplace aucun fichier existant.
|
||||
Le client rejoint automatiquement `127.0.0.1:25575`. Au premier accès,
|
||||
choisir la couleur et le familier dans HELLO_WORLD puis entrer dans Sanctuary.
|
||||
Depuis la console serveur : `op KokaLab` donne les commandes au client de test.
|
||||
|
||||
Le serveur écoute seulement sur loopback et utilise des identités hors ligne
|
||||
pour ce laboratoire. Ce profil ne doit pas être exposé sur le réseau. La liaison
|
||||
authentifiée d'un compte web exige toujours un vrai serveur en mode en ligne ;
|
||||
elle n'est pas contournée par les outils du laboratoire.
|
||||
|
||||
Réglages de départ : serveur 256–768 Mio de heap, vue 4 chunks, simulation 3 ;
|
||||
client 512–2048 Mio, vue 6, simulation 4, 30 FPS, fenêtre 1280×720. La mémoire
|
||||
native, graphique et macOS s'ajoute au heap. Aucun engagement de tenir dans
|
||||
une consommation totale de 2,75 Gio. Ne pas exécuter la compilation en même
|
||||
temps qu'une séance. Augmenter seulement après mesure :
|
||||
|
||||
```sh
|
||||
python3 scripts/duo_lab.py server --memory 1024
|
||||
python3 scripts/duo_lab.py client --memory 2560
|
||||
```
|
||||
|
||||
Le mode fichier reste le défaut. Pour une préparation neuve avec le site local :
|
||||
|
||||
```sh
|
||||
python3 scripts/duo_lab.py prepare --storage database --server-id UUID_DU_SERVEUR \
|
||||
--jdbc jdbc:mariadb://127.0.0.1:33077/BASE_DE_TEST
|
||||
SANCTUARY_COMMUNITY_DB_PASSWORD='' python3 scripts/duo_lab.py server
|
||||
```
|
||||
|
||||
La base doit déjà avoir le schéma communautaire v3. Le site doit utiliser le
|
||||
même identifiant de serveur. Aucun schéma ni sauvegarde n'est migré ici.
|
||||
|
||||
## Personnages et séances
|
||||
|
||||
```text
|
||||
/duo spawn Alice
|
||||
/duo spawn Bob
|
||||
/duo list
|
||||
/duo remove Alice
|
||||
/duo trace start
|
||||
/duo trace stop
|
||||
```
|
||||
|
||||
Les personnages portent le préfixe `Lab_`, sont créatifs et apparaissent près
|
||||
de la source de commande. Limite de quatre, noms uniques de 1–12 caractères
|
||||
ASCII alphanumériques ou `_`. Ce sont des ServerPlayer sans transport réseau
|
||||
ni rendu, pas des IA et pas des clients réseau supplémentaires. On peut les
|
||||
cibler avec les commandes natives, par exemple `tp Lab_Bob ~2 ~ ~`.
|
||||
Ils ne valident pas seuls le protocole d'un deuxième client réel.
|
||||
|
||||
La trace consigne noms de test, dimension, positions et angles toutes les deux
|
||||
secondes dans `build/duo/server/duo-sessions/`. Activation explicite, arrêt au
|
||||
bout de cinq minutes maximum ou à la fermeture du serveur. Pas de frappe clavier,
|
||||
mot de passe, navigateur ou audio enregistré.
|
||||
|
||||
Pour la relecture visuelle, identifier la fenêtre Minecraft puis lancer :
|
||||
|
||||
```sh
|
||||
python3 scripts/duo_lab.py windows
|
||||
python3 scripts/duo_lab.py record --window ID_FENETRE_MINECRAFT --seconds 120
|
||||
```
|
||||
|
||||
Une séquence PNG horodatée toutes les deux secondes, un index HTML et une fiche
|
||||
de notes sont écrits dans `build/duo/sessions/`. Ctrl-C termine la capture ; limite
|
||||
de cinq minutes. macOS peut demander l'autorisation de capture. Cette version
|
||||
ne produit pas une vidéo continue et peut manquer une interaction très courte.
|
||||
On ne démarre une capture qu'au début d'une scène annoncée.
|
||||
|
||||
## Trois premières scènes
|
||||
|
||||
1. Ouvrir la Gazette, retrouver un auteur, lire un article et répondre. Vérifier
|
||||
que l'autre interface retrouve la réponse, puis noter les hésitations.
|
||||
2. Créer une demande avec lieu et matériaux, la suivre, lire son infobulle sur
|
||||
la carte, ouvrir la discussion puis arrêter le suivi.
|
||||
3. Afficher deux figurants, tester les interactions de proximité et comparer
|
||||
la fluidité à un seul joueur. Garder un véritable second client pour une
|
||||
vérification réseau ultérieure si nécessaire.
|
||||
|
||||
Le récap Discord se trouve dans `discord-beta130-160.md` ; les originaux des
|
||||
quatre illustrations sont copiés avec provenance dans `build/discord-beta130-160/`.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- `./gradlew check build assemblePack` : 252 GameTests, 229 réussites et les
|
||||
mêmes 23 échecs que beta.159. Aucun échec ajouté ; comparaison dans
|
||||
`build/duo160-server-failures.json`, log `build/beta160-check-build.log`.
|
||||
- Contrôles restants, compilation, pack et client natif Vulkan réussis avec la
|
||||
suite serveur déjà exécutée exclue (`-x :sanctuary:runGameTest`) : 137 tâches,
|
||||
`build/beta160-release.log`. Le test `ShaderDefaults160ClientChecks` vérifie
|
||||
préférence absente, objet vide, ON explicite, OFF enregistré et réactivation,
|
||||
avec intensité personnelle conservée. Marqueur `SHADER160_DEFAULTS_PASS`.
|
||||
- Module de test reconstruit après ajustement du transport sans réseau : build
|
||||
réussi. L'export de lancement inclut les arguments fournis par Loom et élimine
|
||||
son argfile imbriqué, que Java ne peut pas réinterpréter depuis un autre argfile.
|
||||
- Serveur réel à 768 Mio : démarrage sur loopback, monde plat neuf ; création de
|
||||
quatre acteurs, doublon et cinquième refusés, retrait et acteur absent vérifiés.
|
||||
Le journal produit 56 observations JSON valides puis s'arrête sur commande.
|
||||
- Client réel séparé, Vulkan, 2048 Mio, shader OFF : connexion jusqu'à l'écran
|
||||
HELLO_WORLD vérifiée visuellement. La création du profil et le parcours en jeu
|
||||
avec le joueur restent à faire ensemble ; aucune session ergonomique humaine
|
||||
terminée ni validation d'un deuxième client réseau revendiquée.
|
||||
- Mesure ponctuelle avant l'entrée du joueur : serveur ~313 Mio de heap utilisé,
|
||||
client au menu ~289 Mio. Ce ne sont ni des pics ni une mesure de RAM système
|
||||
totale. Les figurants ne possèdent ni sockets ni fenêtre graphique.
|
||||
- Capture ciblée macOS essayée sur quatre secondes : séquence PNG, manifeste,
|
||||
index HTML et fiche de notes créés. Aucun enregistrement continu ou micro.
|
||||
- Export MRpack : intégrité ZIP, version et JAR embarqué vérifiés. Les 29 ressources
|
||||
de shaders sont inchangées depuis beta.159. JAR et packs beta.154–159 conservés.
|
||||
- Skill personnel `sanctuary-session-notes` installé et validé séparément dans
|
||||
`~/.codex/skills/` pour classer les dictées en Markdown. Il ne change pas le
|
||||
modèle du tour courant ; Luna/low peut être choisi dans une tâche dédiée.
|
||||
|
||||
Le serveur local utilise la base de développement du site, schéma v3 déjà présent,
|
||||
sous le même scope. Aucune validation de liaison de comptes hors ligne : cette
|
||||
opération reste réservée au mode authentifié. Aucun déploiement public, canal
|
||||
packwiz, serveur personnel ou instance Prism modifié.
|
||||
|
||||
## Artefacts locaux
|
||||
|
||||
- `mods/sanctuary/build/libs/sanctuary-beta.160.jar` — SHA-256
|
||||
`4c19e620e989050488c9a96aaddaf897a74115a9fb4c5099e5518ae32db5b2e8`.
|
||||
- `build/Sanctuary-beta.160.mrpack` — SHA-256
|
||||
`272e3460f35c8d9a4de689d30e4d952c3121923ba5fe30a23c83b3e76bd23bac`.
|
||||
- `build/duo/Jouer.command` et `Serveur.command` : raccourcis locaux de séance.
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
# Est — cratère strié et arbres enracinés, beta.224
|
||||
|
||||
## Contrat du 5 octobre 2026
|
||||
|
||||
Retour après visite beta.223 : relief général, arbres et ravins appréciés.
|
||||
Arbres de jungle observés sur d’autres arbres ; cratère jugé trop camouflage.
|
||||
Conserver la géométrie et retravailler ses matériaux : lignes concentriques
|
||||
du fond vers le sommet, stries verticales/hachures qui s’estompent en hauteur,
|
||||
plus d’obsidienne, magma à proximité, transitions légèrement bruitées.
|
||||
Captures évoquées sans chemin fourni : aucune capture inspectée.
|
||||
Branche `codex/east-crater-beta224`, base `9063e16`.
|
||||
|
||||
## Portée
|
||||
|
||||
Nouveaux profils 224 uniquement. Le champ de densité, les hauteurs, ravins,
|
||||
cavités, lave et emplacements de monuments reprennent exactement 223 pour une
|
||||
même graine d’expansion. Habillage minéral de la surface et des sept blocs sous-jacents du
|
||||
cratère uniquement, sans nouvelle simulation ni passe de relief.
|
||||
Les grandes jungles utilisent les mêmes arbres avec un filtre de sol avant
|
||||
plantation, absent du placement custom 223. Tables natives de bambou, pandas
|
||||
et autres arbres conservées. Île principale, Nord, Sud et Ouest conservés.
|
||||
Anciennes sauvegardes et profils intacts ; essai dans un nouveau laboratoire.
|
||||
|
||||
## Vérifications ciblées
|
||||
|
||||
Java 25, Minecraft 26.3, Fabric Loader 0.19.5 et API 0.160.5+26.3.
|
||||
Sept GameTests réussis (`base204,east223,east224`) :
|
||||
|
||||
- Conservation exacte des hauteurs, densités, cavités et volumes de lave entre
|
||||
223 et 224 sur quatre graines d’expansion ; aucun déplacement des monuments.
|
||||
- Matériaux hors du traitement du cratère inchangés ; obsidienne plus abondante
|
||||
et magma présent sur la rive découverte, pas seulement sous la lave.
|
||||
- Admission du grand arbre refusée sur feuilles, troncs, air et pierre ;
|
||||
admise sur herbe, terre et podzol. Le tag natif `minecraft:dirt` de 26.3
|
||||
ne contient ni herbe ni podzol : le filtre utilise les sols explicites et
|
||||
la règle native de survie du jeune arbre, testés depuis le registre chargé.
|
||||
- Profils de création et anciens profils chargés, anciens contrôles Est 223
|
||||
et conservation de l’Ouest validé.
|
||||
|
||||
Deux serveurs natifs isolés à 2 Gio passent la demande par ancre, le refus du
|
||||
mauvais paiement, l’interruption/reprise et la préparation de 62 chunks.
|
||||
Même position et graine d’expansion qu’en 223 ; diamètres 1024 :
|
||||
|
||||
| Graine monde | Centre X/Z | Graine expansion | Tronc maximal | Pieds suspendus détectés |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 42 | 944 / 144 | 207124680538740498 | 41 blocs | 0 |
|
||||
| 0 | 944 / -144 | 118376680751547919 | 44 blocs | 0 |
|
||||
|
||||
La recherche de pieds suspendus porte sur 24 chunks par graine (huit par
|
||||
ambiance de jungle) : terre située plus de cinq blocs au-dessus du terrain
|
||||
avec un tronc dessus. Ce contrôle et le filtre de placement corrigent le cas
|
||||
identifié ; ils ne constituent pas une inspection exhaustive de tous les arbres.
|
||||
Les mêmes relevés comptent respectivement 840/1 565 bûches, 2 883/4 646 feuilles
|
||||
et 2 748/2 094 bambous. Deux coffres à butin et deux distributeurs dans chaque
|
||||
temple, relais complet, 919/957 colonnes de lave et 39 464/38 928 contrôles
|
||||
de parois sans fuite.
|
||||
|
||||
Reçus ignorés : `build/east224-gametest-passed.log` et
|
||||
`build/worldgen-lab/east224-checked{42,0}/small/{42,0}/{cold,warm}.json`.
|
||||
|
||||
## Livraison
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,east223,east224 -PsanctuaryAtlasOnly=true`
|
||||
réussit en 5 min 25 s. Log : `build/east224-build.log`.
|
||||
|
||||
MRpack normal vérifié et copié dans `~/Downloads` : archive intègre, JAR exact,
|
||||
trois tailles, filtre de plantation et 371 ressources de génération historiques
|
||||
strictement identiques à beta.223 (hors alias public du preset). Aucun monde ni
|
||||
module de test embarqué. Reçu : `build/east224-mrpack-receipt.json`.
|
||||
SHA-256 de `Sanctuary-beta.224.mrpack` :
|
||||
|
||||
```text
|
||||
01aed4e6a0d9e2965ed8201372eef3aaecab3b0c6dce3fb84586895ed9076885
|
||||
```
|
||||
|
||||
La visite neuve `Sanctuary-East-224-42` est ouverte le 5 octobre à 17:26:25,
|
||||
Vulkan natif, rendu 32 chunks, simulation 5, créatif/vol/commandes. Position
|
||||
initiale 547 / 351 / 144, face au volcan. Copie du serveur de contrôle arrêté,
|
||||
identité de sources vérifiée ; anciennes visites conservées.
|
||||
|
||||
Le rendu des stries reste à apprécier par le joueur. Pas de nouvelle campagne graphique Windows,
|
||||
ni d’exploration complète Medium/Large. Aucune modification d’ancien monde,
|
||||
publication de canal ou mise à jour Prism.
|
||||
@@ -0,0 +1,85 @@
|
||||
# Est — volcan flottant et jungles, beta.223
|
||||
|
||||
## Contrat du 5 octobre 2026
|
||||
|
||||
Après la livraison des déclinaisons de roche jaune (beta.222), le joueur valide
|
||||
l’Ouest 221 et demande le laboratoire Est. Volcan actif, lave dans le cratère,
|
||||
jungle sur les flancs ; la silhouette historique est explicitement rejetée.
|
||||
Il faut un vrai cône volcanique flottant, un temple de jungle, du bambou,
|
||||
des pandas et des jungles clairsemées ou denses avec de très grands arbres.
|
||||
Diamètre de premier essai : 1024 blocs, dans la direction de l’ancre Est.
|
||||
Branche `codex/east-volcano-beta223`, base `2d656d9`.
|
||||
|
||||
## Portée
|
||||
|
||||
Nouveaux profils 223 Small/Medium/Large uniquement ; aucun profil 222 de
|
||||
terrain n’existe (222 ajoutait uniquement des blocs). Île principale, Nord,
|
||||
Sud et Ouest conservent leurs générateurs validés. Les mondes et journaux
|
||||
historiques sont conservés. Nouveau laboratoire et nouvelle activation ;
|
||||
aucune expansion ajoutée à une sauvegarde personnelle.
|
||||
|
||||
Silhouette conique asymétrique, bouche décentrée et légèrement elliptique,
|
||||
ravines ramifiées par bruit cohérent, épaulement ancien et affaissement local
|
||||
du bord du cratère. Répartition des jungles par nappes de bruit, sans secteurs
|
||||
radiaux répétés. Couronne sommitale irrégulière et cuvette de lave
|
||||
fermée, dessous suspendu irrégulier. Roche volcanique au sommet, sol végétal
|
||||
sur les flancs. Biomes de jungle et bambou avec végétation native, dont une
|
||||
variante de grands arbres. Temple natif avec pièges et coffres, fondations
|
||||
locales. Relais sur le flanc extérieur, éloigné du cratère.
|
||||
Pas d’éruption animée ni de simulation géologique/hydrologique globale.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Le 5 octobre 2026, Java 25, Minecraft 26.3 et Fabric Loader 0.19.5 :
|
||||
|
||||
- `./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,east223,rock222 -PsanctuaryAtlasOnly=true`
|
||||
réussit en 3 min 34 s. Sept GameTests ciblés passent également lors du contrôle
|
||||
préalable : profils historiques et actuels, roche jaune, forme et lave sur
|
||||
quatre graines, direction Est, égalité du relief et des décors Ouest 221/223.
|
||||
- Deux serveurs natifs isolés, graines 42 et 0, mémoire 2 Gio : demande par ancre,
|
||||
refus du mauvais paiement, interruption à 0/62 chunks et reprise persistée.
|
||||
Les deux expansions deviennent disponibles avec 62 chunks préparés ; la suite
|
||||
est générée à l’exploration.
|
||||
- La cuvette est contrôlée dans les chunks réels : 919/957 colonnes de lave et
|
||||
39 464/38 928 vérifications de parois pour 42/0. Aucun débouché vers le vide
|
||||
détecté dans ces contrôles.
|
||||
- Chaque temple contient deux coffres à table de butin et deux distributeurs
|
||||
piégés ; 1 157 blocs de maçonnerie relevés. Le relais possède ses 2 069 blocs
|
||||
attendus et une offre utilisable.
|
||||
- Sur 24 chunks par graine, huit de chaque ambiance de jungle : 1 501/1 446
|
||||
bûches, 3 747/4 398 feuilles, 2 689/2 294 bambous ; tronc continu maximal de
|
||||
44 blocs sur les deux graines. Les tables natives du biome bambou comprennent
|
||||
les pandas ; leur nombre réel n’est pas une assertion de cette campagne.
|
||||
- MRpack vérifié : ZIP, JAR exact, versions, trois tailles, profils historiques,
|
||||
biomes Est, tables de pandas, grands arbres, temple et déclinaisons de roche
|
||||
jaune ; aucun monde ni module de laboratoire embarqué.
|
||||
|
||||
Les logs et reçus ignorés sont `build/east223-build-final.log`,
|
||||
`build/east223-natural-gametest.log`, `build/east223-mrpack-receipt.json` et
|
||||
`build/worldgen-lab/east223-checked{42,0}/small/{42,0}/{cold,warm}.json`.
|
||||
|
||||
| Graine du monde | Centre de l’expansion X/Z | Graine de l’expansion | Temple X/Y/Z |
|
||||
| --- | --- | --- | --- |
|
||||
| 42 | 944 / 144 | 207124680538740498 | 835 / 271 / 418 |
|
||||
| 0 | 944 / -144 | 118376680751547919 | 961 / 300 / 150 |
|
||||
|
||||
## Livraison et visite
|
||||
|
||||
`Sanctuary-beta.223.mrpack`, copié dans `~/Downloads`, SHA-256 :
|
||||
|
||||
```text
|
||||
ac31ff8203dca95265c7d0af545bab231697ad295b48eade2ee115090a9597e6
|
||||
```
|
||||
|
||||
La visite neuve `Sanctuary-East-223-42` est ouverte le 5 octobre à 17:09:45,
|
||||
Vulkan natif, rendu 32 chunks, simulation 5, créatif/vol/commandes. Position
|
||||
initiale 547 / 351 / 144, face au volcan. Copie du laboratoire arrêté,
|
||||
identité de sources vérifiée ; les anciennes visites sont conservées.
|
||||
La roche jaune, ses escaliers et dalles de beta.222 sont inclus.
|
||||
|
||||
Le rendu naturel reste à apprécier par le joueur : les contrôles numériques
|
||||
ne constituent pas une validation esthétique. Essais natifs Small sur deux
|
||||
graines ; Medium/Large sont assemblés et leurs profils vérifiés, sans nouvelle
|
||||
campagne d’exploration complète. Aucun essai Windows ni simulation d’éruption.
|
||||
Pas de publication du canal packwiz ni de mise à jour de l’instance Prism.
|
||||
@@ -0,0 +1,319 @@
|
||||
# Communauté, économie et aventures — cadrage du 25 septembre 2026
|
||||
|
||||
Statut : **cadrage de conception**. La réalisation du premier prototype d'arène
|
||||
autorisé ensuite est suivie séparément dans [beta.167](horde-lab-beta167.md) ;
|
||||
elle ne vaut pas livraison de l'ensemble des systèmes décrits ici. Cette note
|
||||
conserve la discussion du créateur et distingue ses décisions des propositions
|
||||
à éprouver. Base : dernier `origin/main` vérifié, beta.166 (`7979f33`).
|
||||
Le créateur demande finalement une branche dédiée, puis une intégration sur
|
||||
`main` à ne pas oublier. Branche : `codex/communaute-economie-beta167`.
|
||||
La prochaine livraison de code visée est **beta.167** ; ce numéro est désormais
|
||||
préparé dans les métadonnées du prototype, sans publication. On avance par petits résultats
|
||||
jouables, sans figer maintenant toute l'économie.
|
||||
|
||||
## Ce que l'on cherche à produire
|
||||
|
||||
Un serveur semi-anarchique dont l'État assure une administration forte, trace
|
||||
les événements, régule les prix du marché et pose des frontières. Les joueurs
|
||||
peuvent chercher leurs propres moyens de les franchir. Le système doit susciter
|
||||
la coopération, la multiplication, la fabrication, la destruction et la recherche.
|
||||
L'objectif est une émulation collective, avec des conséquences dans le monde.
|
||||
|
||||
Minecraft, le site et Discord prolongent la même vie communautaire. La BDD doit
|
||||
permettre d'analyser les activités à la journée et d'en rendre compte sur le site.
|
||||
Le serveur Minecraft conserve l'autorité sur les actions et récompenses de jeu.
|
||||
|
||||
## Décisions et intentions exprimées par le créateur
|
||||
|
||||
### Tableau et Gazette
|
||||
|
||||
- Le tableau propose **une seule sorte de message général**, sans les quatre
|
||||
catégories obligatoires actuelles. Annonce, demande, besoin, information,
|
||||
rendez-vous et découverte sont des usages de ce même message.
|
||||
- La Gazette accueille les récits, photos et discussions durables ; le tableau
|
||||
sert aux messages immédiats et à l'organisation. Les références Facebook et
|
||||
Twitter expriment ces usages, pas une demande de reproduire leurs fonctions.
|
||||
- Un message peut être associé à une quête donnant de l'XP aux autres joueurs.
|
||||
Une découverte peut être publiée pour organiser son exploration ensemble.
|
||||
Tout message n'a pas à devenir une quête.
|
||||
|
||||
### Quêtes canoniques, coopération et récompenses de prestige
|
||||
|
||||
- Les panneaux émeraude, rubis et saphir testés avec de vrais joueurs conviennent
|
||||
au gain d'XP solo, mais tendent à isoler les participants. Conserver un intérêt
|
||||
solo tout en développant des raisons concrètes de coopérer.
|
||||
- Le tableau accessible dans un menu et ses quêtes proposées pour une durée
|
||||
limitée sont une piste appréciée par le créateur.
|
||||
- Prévoir des quêtes canoniques reconnaissables, par exemple **chasse aux
|
||||
zombies**, avec XP selon les objectifs accomplis, quotas et paliers de
|
||||
récompenses. La référence aux passes de progression de jeux comme Rocket
|
||||
League concerne cette progression visible ; aucun modèle payant n'est demandé.
|
||||
- Des quêtes difficiles à obtenir ou à accomplir peuvent donner des **capes et
|
||||
familiers exclusifs**, recherchés pour leur valeur cosmétique et intrinsèque.
|
||||
Nature de l'exclusivité, disponibilité et capacités des familiers restent à
|
||||
préciser ; ne pas conclure que tous les familiers sont purement cosmétiques.
|
||||
- La discussion retient les deux usages dans une même quête : avancer seul
|
||||
pendant sa partie normale et rejoindre une horde collective déclenchée par
|
||||
bounty. Les zombies remplacent les squelettes comme première piste liée à
|
||||
l'île abandonnée ; aucun scénario d'ossuaire n'est retenu.
|
||||
|
||||
### Familiers comme incubateurs d'XP
|
||||
|
||||
Idée ajoutée par le créateur : les familiers **multiplient leur XP stockée au
|
||||
fil des blocs parcourus à pied, posés et cassés**. Ils servent d'**incubateurs
|
||||
d'XP**, avec une croissance modérée pour éviter un système trop puissant.
|
||||
Ce mécanisme peut donner un rôle aux familiers dans les quêtes.
|
||||
|
||||
« Multiplier » décrit ici l'intention de faire fructifier la réserve ; aucune
|
||||
formule, croissance exponentielle par action, valeur de rendement ou limite
|
||||
n'est décidée. L'origine de l'XP déposée, sa récupération et les conditions de
|
||||
présence du familier restent à choisir, ainsi que la personne dont les actions
|
||||
comptent. Cette idée est à concevoir, pas une nouvelle capacité livrée.
|
||||
|
||||
### État, navets et loterie
|
||||
|
||||
- L'État joue à la fois un rôle d'arbitre et d'acteur du monde. Ses contraintes
|
||||
doivent donner des occasions de jouer et de s'organiser.
|
||||
- Les navets s'achètent auprès d'un **PNJ le dimanche**. Ils se revendent pendant
|
||||
la semaine et **pourrissent après une semaine s'ils ne sont pas vendus**.
|
||||
Il ne s'agit pas d'une culture récoltée par les joueurs.
|
||||
- Des tickets trouvés ou achetés pendant la semaine servent à la loterie du
|
||||
dimanche, avec de **vraies machines manipulant des stocks d'objets**.
|
||||
- Ces machines peuvent notamment dupliquer ou diviser un stock. Les propositions
|
||||
précédentes de simples permis et réductions ne définissent pas ce mécanisme.
|
||||
Les privilèges temporaires restent une idée initiale possible, sans catalogue
|
||||
de récompenses approuvé.
|
||||
- Le rapport entre ces opérations et le **ballast des Backrooms** doit être
|
||||
pensé dès leur conception.
|
||||
|
||||
### Bounties, cartes et extensions
|
||||
|
||||
- Les bounties sont des **objets collectionnables que l'on utilise quand on est
|
||||
prêt**. Elles peuvent être offertes comme occasions d'aventure.
|
||||
- Réutiliser le système de cartes et en créer à la volée pour ces aventures.
|
||||
La forme exacte de la carte et son geste d'activation restent à choisir.
|
||||
- Prévoir **huit structures** permettant d'étendre les huit extensions de l'île
|
||||
principale, en lien avec un **bloc originel sur l'île**, puis des **ancres**
|
||||
permettant de générer des structures d'aventure.
|
||||
- Les objectifs évoqués comprennent primes, objets clés à retrouver et
|
||||
structures à détruire. L'ensemble doit aussi permettre la contrebande
|
||||
organisée et les initiatives des joueurs.
|
||||
- L'ordre de déblocage entre structures, extensions et bloc originel n'est pas
|
||||
encore fixé. Ne pas transformer cette intention en règle « huit sur huit ».
|
||||
|
||||
### Familles d'objets retenues et prochaine scène du labo
|
||||
|
||||
Le créateur retient le tableau fonctionnel suivant :
|
||||
|
||||
| Famille | Fonction |
|
||||
| --- | --- |
|
||||
| **Carte de découverte** | Indiquer un lieu existant à explorer ; transmettre une information. |
|
||||
| **Carte d'épreuve** | Déclencher une activité à l'activation : horde, défense, recherche… |
|
||||
| **Clé ou relique** | Ouvrir un accès ou activer un mécanisme précis dans le monde. |
|
||||
|
||||
Piste accessoire ajoutée : des **cartes collectionnables générées par le jeu**.
|
||||
Leur sujet, leur présentation, leur rareté et leur éventuel lien avec les cartes
|
||||
fonctionnelles restent ouverts. Ne pas leur attribuer automatiquement un pouvoir
|
||||
ou une récompense : collection et activation sont deux usages à distinguer.
|
||||
|
||||
La prochaine scène à **imaginer dans le laboratoire** est une **arène ronde
|
||||
avec un nouveau bloc interactif au centre**. La carte de horde est la première
|
||||
carte d'épreuve envisagée : elle fait apparaître un groupe de monstres par vagues.
|
||||
Le nom, l'apparence, les dimensions et les règles du bloc restent à concevoir.
|
||||
Cette décision portait initialement sur la conception. Le créateur a ensuite
|
||||
autorisé un premier essai jouable ; son état réel est dans le
|
||||
[contrat du prototype](horde-lab-beta167.md).
|
||||
|
||||
Parcours proposé pour ce prototype : présenter une carte au bloc → lire l'épreuve
|
||||
et ses récompenses → rejoindre le groupe → lancer explicitement → affronter les
|
||||
vagues → consulter le résultat. Une activation au clic droit, des apparitions
|
||||
réparties au bord du cercle et un état visuel du bloc sont des propositions.
|
||||
La consommation de carte, l'engagement des participants, les arrivées tardives,
|
||||
la défaite, la déconnexion et les récompenses seront précisés avant le code.
|
||||
|
||||
Le laboratoire doit utiliser une scène de développement neuve et isolée ; ne pas
|
||||
réécrire le monde du labo déjà conservé ni une sauvegarde personnelle. La forme
|
||||
transportable d'une balise d'épreuve reste une possibilité ultérieure. Ce bloc
|
||||
d'arène n'est pas encore assimilé au bloc originel ou à une ancre d'expansion.
|
||||
|
||||
### Données et liens entre les services
|
||||
|
||||
- Intégrer les statistiques du jeu à la BDD quand elles sont disponibles et
|
||||
raccorder progressivement les systèmes déjà en place.
|
||||
- Viser la traçabilité des échanges et événements, les analyses quotidiennes et
|
||||
les comptes rendus sur le site.
|
||||
- Exploiter le lien d'identité Discord/site/Minecraft pour de futures interactions
|
||||
personnelles, dont les notifications. Leur contenu et leur fréquence restent
|
||||
à définir ; cette discussion n'autorise aucun envoi de message.
|
||||
|
||||
## Ce qui existe réellement sur le socle beta.166
|
||||
|
||||
| Socle vérifié dans les sources et contrats | Limite actuelle |
|
||||
| --- | --- |
|
||||
| Gazette, photos, réponses, tableau, abonnements et repères de demandes ; stockage fichier ou MariaDB partagé | Quatre catégories `info/work/need/event` ; matériaux et récompenses descriptifs, sans livraison ni XP automatique |
|
||||
| Compteurs serveur publiés en base toutes les 30 secondes | Dernier instantané : durée de fonctionnement, morts, joueurs connectés, état ; pas un historique individuel quotidien complet |
|
||||
| Activité matérielle locale datée du Blocodex : minage, pose, fabrication, ramassage et jet | Agrégats journaliers sans distinction par joueur ou dimension ; ne prouvent ni échange, ni stock, ni ballast |
|
||||
| Cartes au trésor physiques et import de leurs repères dans l'atlas | Destinations provenant de plans existants ; aucun moteur de bounty activable ni de génération d'aventure à la demande |
|
||||
| Génération d'expansions et quatre anciennes expéditions ouvertes | Les huit nouveaux déblocages, le bloc originel et les ancres restent à concevoir |
|
||||
| Inscription web et reprise des codes d'accès ; lien aux identités Discord | Pas de service de notifications personnelles livré par ce chantier ; le dernier contrat conserve une validation OAuth réelle à terminer |
|
||||
|
||||
Références : [communauté](community-contract-v1.md),
|
||||
[compteurs beta.161](session-fixes-beta161.md),
|
||||
[activité datée](blocodex.md#relevés-datés--portée-de-lalpha23),
|
||||
[cartes beta.059](atlas-markers-beta059.md), [expansions](expansion.md),
|
||||
[inscription beta.166](inscription-web-beta166.md).
|
||||
Cet état décrit le dépôt, pas une vérification du déploiement public.
|
||||
|
||||
## Propositions de fonctionnement à valider
|
||||
|
||||
Pour les quêtes canoniques, la proposition discutée associe des **paliers
|
||||
personnels à un effort collectif**. Émeraude pourrait accueillir les contrats
|
||||
accessibles, rubis les opérations coordonnées, saphir les aventures rares et
|
||||
exigeantes. Cette répartition n'est pas une règle arrêtée.
|
||||
|
||||
Premier essai désormais envisagé : une chasse aux zombies avec paliers d'XP
|
||||
personnels, à laquelle contribue aussi une horde collective activée par carte.
|
||||
Une jauge commune et des préparatifs restent des options, sans scénario imposé.
|
||||
Les nombres 10/30 cités pendant la discussion sont illustratifs. Participation
|
||||
au-delà du dernier coup et conditions de maîtrise pour les trophées restent à définir.
|
||||
Un carnet pourrait présenter les objectifs et gains ; l'échéance de l'offre et
|
||||
le moment d'activation d'une bounty obtenue seraient distincts.
|
||||
|
||||
L'incubation d'XP pourrait accompagner ces parcours d'exploration, de construction
|
||||
et de minage. Avant tout essai, proposer puis mesurer un rendement et un plafond,
|
||||
en examinant les trajets répétitifs, les boucles pose/casse et le cumul de
|
||||
familiers. Ce sont des points d'équilibrage à décider, sans taux ni interdiction
|
||||
déjà validés. Toute future variation de réserve doit pouvoir être expliquée par
|
||||
les actions serveur enregistrées et rester cohérente avec les récompenses de quête.
|
||||
|
||||
Le message général pourrait recevoir des éléments facultatifs : lieu, rendez-vous,
|
||||
objectif et récompense. Le tableau rassemble les participants ; la Gazette garde
|
||||
le récit. La bounty peut être liée à une publication sans que poster un message
|
||||
crée automatiquement une aventure.
|
||||
|
||||
Parcours proposé : obtenir une carte → la conserver ou l'échanger → réunir un
|
||||
groupe → l'activer → accomplir l'objectif → recevoir la récompense. Conserver
|
||||
ensuite une carte souvenir portant le résultat et les participants est une option.
|
||||
Échangeabilité, perte, vol, copie et consommation de l'objet restent à décider.
|
||||
|
||||
Deux usages possibles des cartes : révéler un lieu existant, ou préparer une
|
||||
nouvelle aventure à l'activation dans une ancre. Une copie cartographique pourrait
|
||||
partager les indications sans multiplier les droits à récompense. Ce n'est pas
|
||||
encore un contrat implémenté. Les Backrooms conservent leur intention spécifique
|
||||
de découverte sans coordonnées ni carte automatique.
|
||||
|
||||
Exemple de machine, **sans valeur d'équilibrage approuvée** : un ticket et
|
||||
64 lingots engagés donnent 128 ou 32 lingots. Probabilités, stocks admissibles,
|
||||
fréquence, financement et comportement des objets uniques sont à définir.
|
||||
Conserver l'échéance d'origine des navets lors d'un transfert ou d'une duplication
|
||||
est proposé pour que ces opérations ne rajeunissent pas les lots.
|
||||
|
||||
Pour le ballast, une perte pourrait laisser un dépôt, une duplication une trace
|
||||
architecturale ou une anomalie. Aucune équivalence quantitative n'est décidée.
|
||||
Le [contrat cosmologique](cosmologie.md#le-ballast-de-léconomie) reste ouvert sur
|
||||
matière retirée, empreinte ou combinaison des deux. Une trace ne donne pas à elle
|
||||
seule le droit de créer des objets récupérables.
|
||||
|
||||
Boucle envisagée : **production et échanges → machine → ballast → lieu à
|
||||
explorer → bounty → expédition → trouvailles et nouveaux échanges**.
|
||||
Le lien automatique entre chaque étape est une proposition à éprouver.
|
||||
|
||||
## Ordre de travail proposé
|
||||
|
||||
**Dernière orientation : cadrer d'abord la scène d'arène ronde du labo et son
|
||||
bloc central**, pour rendre la carte d'épreuve concrète. Le tableau ci-dessous
|
||||
conserve les dépendances générales ; son ordre initial n'impose pas de terminer
|
||||
la BDD ou la simplification du tableau avant de concevoir cette scène.
|
||||
|
||||
| Étape | Résultat concret à obtenir | Ce qui doit être précisé juste avant |
|
||||
| --- | --- | --- |
|
||||
| 1. Simplifier le tableau | Publier et lire un message général en jeu et sur le site, retrouver les anciennes annonces et leurs suivis | Présentation des champs facultatifs ; compatibilité des anciennes catégories sans effacer l'historique |
|
||||
| 2. Observer l'existant | Produire un premier compte rendu quotidien depuis des données serveur réelles en BDD | Périmètre des statistiques, unités, identité joueur/monde, jours, visibilité et reprise après panne |
|
||||
| 3. Jouer une première bounty | Obtenir une carte, la garder, l'activer et terminer un objectif vérifié par le serveur, avec une seule attribution de récompense | Un objectif simple, par exemple une livraison ; rôle du groupe, financement et nature de l'XP |
|
||||
| 4. Éprouver l'économie du dimanche | Un PNJ vend des navets qui vieillissent ; une machine engage un stock et rend son résultat, chaque opération étant tracée | Cours et revente, échéance exacte, tickets, hasard et conversion en ballast |
|
||||
| 5. Relier les aventures au territoire | Définir les huit structures, puis éprouver une première activation et une expédition par ancre avant de décliner les huit | Articulation avec les quatre anciennes régions, emplacement, coûts, graine/version et protection des terrains existants |
|
||||
| 6. Faire vivre les prolongements | Alimenter les nouvelles régions des Backrooms avec le ballast validé ; ouvrir les notifications choisies et les récits du site | Contrat de ballast livré avant BR-01 ; règles de publication et préférences Discord |
|
||||
|
||||
Cet ordre est une proposition de départ, pas six grosses livraisons promises.
|
||||
Chaque étape peut être divisée selon les essais. Les rapports du site commencent
|
||||
à l'étape 2 ; les Backrooms et notifications sont des suites distinctes.
|
||||
Les nouveaux systèmes produisent leurs événements dès leur première livraison.
|
||||
Le premier parcours bounty peut utiliser un objectif existant sans attendre la
|
||||
génération des huit structures.
|
||||
|
||||
## Points à trancher au fil de ces premières étapes
|
||||
|
||||
1. **Récompenses** : quelle XP, payée par qui, attribuée à qui dans un groupe,
|
||||
pour quelle preuve d'accomplissement ?
|
||||
2. **Bounties** : carte physique liée à l'atlas ou autre présentation ; échange,
|
||||
copie, vol, perte, activation, abandon, échec et souvenir ?
|
||||
3. **Navets** : sept jours après achat ou échéance hebdomadaire commune ; horloge
|
||||
pendant les arrêts, cours de revente et devenir des navets pourris ?
|
||||
4. **Machines et ballast** : quels stocks, probabilités et résultats ; quelle
|
||||
part est une trace, une perte ou une matière récupérable ?
|
||||
5. **Territoire** : emplacement des huit structures, ordre d'ouverture et rôle
|
||||
du bloc originel ; frontières franchissables par quels moyens de jeu ?
|
||||
6. **Information** : ce que l'administration technique enregistre, ce que l'État
|
||||
sait dans la fiction, ce que le public voit et ce que Discord signale ?
|
||||
7. **Incubateurs d'XP** : dépôt initial, actions reconnues, croissance et plafond,
|
||||
familier porté ou présent, cumul, transfert/retrait et articulation avec les
|
||||
quêtes ? L'XP incubée et les récompenses directement attribuées doivent être
|
||||
distinguées pour éviter un double compte.
|
||||
|
||||
Ces distinctions doivent laisser exister secrets, découverte et contrebande.
|
||||
Un objet ramassé après un jet n'est pas automatiquement une vente. Les compteurs
|
||||
cumulés historiques ne permettent pas de reconstruire les journées antérieures.
|
||||
Une période non observée doit rester identifiable, sans inventer des zéros.
|
||||
|
||||
## Conditions de réalisation
|
||||
|
||||
Avant des écritures réelles : contrat de données additif, événements identifiés
|
||||
et datés, reprise sans double récompense ni double consommation, comportement
|
||||
explicite en cas de panne et séparation entre résultat tenté et résultat acquis.
|
||||
La BDD sert les analyses sans imposer des requêtes bloquantes au thread de jeu.
|
||||
Les frontières, prix, récompenses et pertes sont des règles serveur.
|
||||
|
||||
Aucune modification de monde, migration, régénération ou activation d'expansion
|
||||
n'est autorisée par cette note. Leurs futurs contrats doivent préserver les
|
||||
sauvegardes et secteurs existants. L'évolution des anciens contenus communautaires
|
||||
devra également être explicitée avant de changer leur stockage.
|
||||
|
||||
La première passe était documentaire. La réalisation autorisée ensuite porte
|
||||
uniquement sur le laboratoire de horde, selon son contrat propre. Les autres
|
||||
systèmes décrits comme futurs le restent.
|
||||
|
||||
### Retour sur main et prochaine version
|
||||
|
||||
- **À faire avant livraison : intégrer le travail validé sur `main`**, vérifier
|
||||
le résultat après intégration et reprendre le travail depuis cette base.
|
||||
- Le premier périmètre proposé était la simplification du tableau. La discussion
|
||||
se concentre maintenant sur la conception de l'arène du labo et du bloc central ;
|
||||
le périmètre de code de beta.167 est maintenant le prototype de horde du labo.
|
||||
L'ensemble de cette feuille
|
||||
de route n'est pas promis dans une seule version.
|
||||
- À la première livraison de code, revérifier le compteur disponible, synchroniser
|
||||
`mod_version`, `pack_version` et `packwiz/pack.toml`, puis exécuter les contrôles
|
||||
requis. Le prototype prépare désormais ces trois valeurs à beta.167.
|
||||
- Aucun tag, push, artefact public, canal packwiz ou déploiement personnel n'est
|
||||
effectué par cette prise de notes.
|
||||
|
||||
## Ajustement du 26 septembre — cartes de horde
|
||||
|
||||
La carte est consommable et invoque immédiatement des vagues là où on se trouve.
|
||||
Aucune inscription : on participe spontanément en arrivant sur le combat.
|
||||
Les monstres portent les butins spéciaux, ramassés librement par les joueurs.
|
||||
Chaque carte possède une illustration mappifiée (monstres, textures des butins),
|
||||
une identité et une difficulté lisible. Le décor circulaire reste une piste
|
||||
pour les futurs donjons. [Premier labo à trois cartes](horde-cartes-beta168.md).
|
||||
|
||||
## Retour de combat du 26 septembre — familiers et horde
|
||||
|
||||
Le créateur constate que les familiers ne sont pas utiles au combat : prévoir
|
||||
une refonte de leur contribution, à évaluer en combat réel contre une horde.
|
||||
Ce constat ne prouve pas une panne technique ; diagnostic des comportements,
|
||||
rôles et lisibilité encore à faire. Aucune refonte des familiers livrée dans ce lot.
|
||||
|
||||
Les [cartes beta.169](horde-invasion-beta169.md) restent inconnues avant leur
|
||||
prise en main. Elles ouvrent une invasion continue de monstres variés, dont la
|
||||
cadence accélère, avec butins propres aux espèces, rubis et saphirs. Apparition et
|
||||
mort réelle utilisent les runes SGA et les particules natives Minecraft.
|
||||
@@ -0,0 +1,85 @@
|
||||
# WG-ERODED-192 — couronnes et faces du massif
|
||||
|
||||
Branche `codex/eroded-massif-beta192`, Minecraft 26.3, graine de visite 42.
|
||||
Profil `eroded`, preset neuf `sanctuary_test:eroded_massif_v1`.
|
||||
|
||||
## Retour et résultat attendu
|
||||
|
||||
Après la restauration beta.191, les captures du 30 septembre à 22:02–22:05
|
||||
montrent des marches de terre et d’herbe sur les sommets arrondis. Le créateur
|
||||
souhaite de vrais changements de forme : quelques dessus plus plats sous les
|
||||
arbres, des faces plus franches, des creux d’érosion et des pentes conservées.
|
||||
Ne pas reproduire les terrasses périodiques 189 ou simplement peindre la roche.
|
||||
|
||||
## Variante
|
||||
|
||||
Trois couronnes sont choisies dans les points hauts du massif existant. Leur
|
||||
altitude dépend du terrain original. Les trois cerisiers réservés occupent ces
|
||||
couronnes, avec exclusion des points de plantation encore trop raides. Une coupe légèrement inclinée rabote le
|
||||
sommet ; une face plus raide regarde son versant descendant. Les empreintes
|
||||
ont des limites adoucies et irrégulières ; les petites entailles entre couronnes
|
||||
s’appuient sur la distance aux deux centres de Voronoï les plus proches.
|
||||
Les coupes retirent au plus 24 blocs du plafond géométrique local. Une cavité
|
||||
préexistante découverte par la coupe peut donner un sol visible plus bas.
|
||||
|
||||
C’est une érosion géométrique locale sur le bruit 3D existant, sans simulation
|
||||
physique. Pas de grille de niveaux Y, de remplissage des cavités ni de lissage
|
||||
global. Aucun changement de densité à Y≤240, dans les îlots aériens ou hors du
|
||||
massif central. Les formes originales restent la base sous le plafond sculpté.
|
||||
|
||||
La couverture végétale du massif n’est posée que sur les surfaces capables de
|
||||
la porter : les fortes pentes gardent la géologie réelle (stone, gisements,
|
||||
strates). Le gradient est mesuré sur des colonnes du massif en coordonnées
|
||||
monde, traversant les limites des chunks et ignorant les îlots aériens. Les
|
||||
hauteurs et pentes sont mises en cache dans un domaine borné. Cette variante
|
||||
n’utilise pas le solveur d’hydrologie ; les étangs et déversoirs existants restent
|
||||
responsables de l’eau.
|
||||
|
||||
Ancres, donjon, gemmes, soufre, ruines à coffres, galerie, rosace et palais sont
|
||||
conservés. La règle de roche historique garde son comportement lorsque son
|
||||
nouveau champ optionnel `slope` est absent. Les anciens presets gardent leurs
|
||||
paramètres ; aucun monde existant n’est modifié ou régénéré.
|
||||
|
||||
## Vérifications et limites
|
||||
|
||||
Génération native finale et réouverture réussies, graine 42 :
|
||||
`build/eroded192e-cold.json` et `build/eroded192e-warm.json`.
|
||||
Les hauteurs mesurées sont identiques après rechargement ; les trois troncs
|
||||
sont relus dans les chunks sauvegardés.
|
||||
|
||||
- 1 008 colonnes modifiées dans le relevé espacé de deux blocs ; 392 échantillons
|
||||
de sommet peu pentus. Trois couronnes et trois cerisiers contrôlés en blocs réels.
|
||||
- 39 366 densités profondes et aériennes identiques à la base ; comparaison
|
||||
supplémentaire hors du massif. Aucun niveau Y périodique réintroduit.
|
||||
- 1 545 échantillons rocheux contre 8 de terre/herbe parmi les fortes pentes
|
||||
contrôlées. Les plantations trouvent un sol de pente ≤0,75 dans leur chunk.
|
||||
- Ancres, 49 cartes/cadres, rosaces, galerie, quatre coffres de ruines, donjon,
|
||||
gemmes, soufre et étangs contrôlés. Cascade large et absence d’arbres dans
|
||||
les colonnes d’eau et de berge contrôlées conservées.
|
||||
|
||||
Démarrage final : 12,126 s à froid et 0,613 s à chaud, zéro région d’hydrologie ;
|
||||
83,610 s à froid et 18,501 s à chaud avec
|
||||
l’ensemble des contrôles et le remplissage de l’atlas. Ces contrôles ne tournent
|
||||
pas au lancement du solo. Les mesures intermédiaires pendant la compilation
|
||||
concurrente ne servent pas de référence de performance.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack` réussi en 9 min 9 s,
|
||||
265 GameTests réussis. Après ajustement du placement des cerisiers et de son
|
||||
contrôle de réouverture, `:sanctuary-test:check :sanctuary-test:build` réussi et
|
||||
pack de test réassemblé : 175 classes et 121 ressources vérifiées dans le JAR,
|
||||
identique à sa copie distribuée (`build/eroded192-pack-receipt.json`).
|
||||
|
||||
La validation technique ne vaut pas validation esthétique du créateur. Cette
|
||||
itération vise le massif central de la graine de visite ; elle ne remodèle pas
|
||||
les récifs aériens. Pas de publication ni de mise à jour de l’installation Prism.
|
||||
|
||||
## Visite
|
||||
|
||||
Nouveau solo `Sanctuary-Eroded-Massif-192-Solo`, run `visite192`, profil `eroded`,
|
||||
graine 42, vue 32 et simulation 12, spectateur et commandes autorisées.
|
||||
Position préparée (94,316,153), face au massif. Les 49 cartes et cadres ainsi
|
||||
que les huit ancres éteintes et l’origine sans relais ont été relus dans cette
|
||||
copie neuve. Options et shader repris du solo 191, fermé et sauvegardé à 22:14.
|
||||
Client Vulkan lancé et entrée dans le monde confirmée à 22:34 ; vue 32,
|
||||
simulation 12 et visibilité de l’ascension contrôlées dans
|
||||
`build/eroded192-solo.log`.
|
||||
@@ -0,0 +1,108 @@
|
||||
# MODS-257 — Mods client séparés et rayons à 20 %
|
||||
|
||||
Branche `codex/external-mods-beta257`, base `beta.256`, livraison `beta.257`.
|
||||
Minecraft 26.3 finale, Fabric Loader 0.19.5, API 0.160.5+26.3, Java 25.
|
||||
|
||||
## Livré localement
|
||||
|
||||
JEI et Sound Physics Remastered sortent du JAR Sanctuary ; Sodium était déjà
|
||||
séparé depuis beta.256. Ils restent fournis par défaut dans le pack client,
|
||||
mais chacun peut être désactivé avant le lancement. Aucun déchargement à chaud.
|
||||
Fabric API reste nécessaire au fonctionnement de Sanctuary.
|
||||
|
||||
JEI conserve le portage Sanctuary, révision `30.32.0-sanctuary.4` : ce n'est pas
|
||||
un remplacement arbitraire par un binaire upstream. Avec lui, le catalogue,
|
||||
les recettes apprises, les restrictions, les favoris et le transfert depuis
|
||||
l'inventaire étendu gardent leur pont. Sans lui, le bouton du catalogue est
|
||||
indisponible avec un texte FR/EN. La découverte, les connaissances et leur achat,
|
||||
les notifications, les règles serveur et la fabrication manuelle fonctionnent
|
||||
indépendamment. Aucun changement d'identifiant, génération ou format de sauvegarde.
|
||||
|
||||
Sound Physics officiel `1.5.1+26.3` est épinglé par version et SHA-512 dans
|
||||
`packwiz/mods/sound-physics-remastered.pw.toml`. Son écran Sanctuary n'apparaît
|
||||
que si le mod est présent. Le moteur reste désactivé sur une configuration
|
||||
neuve ; les réglages existants sont conservés. Le mixin de défaut est facultatif.
|
||||
Sodium officiel reste `0.9.2+mc26.3`, SHA-512 fixé, avec le pont de visibilité
|
||||
beta.256 pour le bloom et le PBR.
|
||||
|
||||
Les bibliothèques Java restent chez leur consommateur : MariaDB Connector/J
|
||||
avec Sanctuary, Baked Substring Index et Suffix Tree avec JEI. Ce sont des
|
||||
bibliothèques d'exécution, pas des mods de gameplay indépendants à désactiver.
|
||||
Aucun autre mod Fabric tiers n'est imbriqué dans Sanctuary.
|
||||
|
||||
Les profils et valeurs initiales des sun shafts passent à **20 %**, avec la
|
||||
qualité et les portées beta.256. Un réglage personnalisé explicitement enregistré
|
||||
reste prioritaire ; sélectionner à nouveau un profil applique 20 %.
|
||||
SSR conservé en Moyen ; aucune portée 256 n'est sélectionnée automatiquement.
|
||||
|
||||
## Distribution
|
||||
|
||||
Le pack local contient Sanctuary et JEI comme deux JAR séparés. JEI peut être
|
||||
décoché dans Prism ; le fork local non publié est un fichier override du MRpack.
|
||||
Sodium et Sound Physics ont des entrées packwiz facultatives, activées par défaut.
|
||||
Le canal publié utilisera aussi une entrée facultative `jei-sanctuary.pw.toml`,
|
||||
avec URL immuable et SHA-256 du fork. La publication doit joindre les **deux**
|
||||
JAR puis seulement avancer le canal ; `scripts/publish_pack.py` prépare ce contrat.
|
||||
|
||||
Une installation pilotée par packwiz doit mémoriser le choix dans les options
|
||||
de l'[installateur packwiz](https://packwiz.infra.link/tutorials/installing/packwiz-installer/) pour ne pas retélécharger un mod supprimé à la main. Une
|
||||
instance locale importée du MRpack permet de décocher les JAR dans Prism.
|
||||
Aucun canal public ni instance personnelle n'est mis à jour par ce ticket.
|
||||
|
||||
## Vérifications effectuées
|
||||
|
||||
- `./gradlew check build assemblePack assembleTestPack` avec
|
||||
`-PsanctuaryFocusedTests=recipes -PsanctuaryAtlasOnly=true`,
|
||||
`-PsanctuaryJeiRuntime=false -PsanctuarySoundPhysicsRuntime=false` ;
|
||||
compilation des contrôles client séparée. Le harnais serveur historique
|
||||
`unified` sans le fixture plat suppose encore un générateur remplacé dans
|
||||
le socle courant ; ces flags évitent son cast invalide, sans toucher la génération.
|
||||
- GameTests de recettes sans JEI ni Sound Physics à l'exécution.
|
||||
- Client Windows Vulkan, fenêtre, `-Xmx8G` : trois mods présents, tous absents,
|
||||
JEI seul et Sound Physics seul ; création de mondes de test neufs, recettes,
|
||||
progression, achat, autorisations et menus FR/EN.
|
||||
- Catalogue JEI et transfert réel, options Sound Physics et persistance.
|
||||
- Rayons à 20 % sur scène native, silhouettes, absence d'assombrissement parasite.
|
||||
- Archives locale/Test et préparation de publication hors ligne : versions,
|
||||
dépendances, notices, absence des trois mods dans le JAR Sanctuary.
|
||||
|
||||
Build complet et assemblages normal/Test réussis ; **8 GameTests serveur requis**
|
||||
passent sans JEI ni Sound Physics. Les contrôles client compilent avec Java 25.
|
||||
La suite Windows Vulkan utilise la RX 9070 XT, une fenêtre et `-Xmx8G` :
|
||||
|
||||
| JEI | Sound Physics | Sodium | Monde, recettes, achat, permissions et menus |
|
||||
| --- | --- | --- | --- |
|
||||
| Absent | Absent | Absent | Réussi |
|
||||
| Présent | Absent | Absent | Réussi |
|
||||
| Absent | Présent | Absent | Réussi |
|
||||
| Présent | Présent | Présent | Réussi |
|
||||
|
||||
Avec les trois mods, les contrôles ciblés valident les recettes apprises/cachées,
|
||||
l'ouverture réelle du catalogue et le paquet de transfert JEI : quatre planches
|
||||
consommées dans la sixième ligne, une planche dans chaque case de fabrication.
|
||||
Sound Physics valide défaut neuf OFF, préférence existante ON conservée,
|
||||
menus FR/EN en GUI 2/4, activation, sauvegarde/relecture et validation numérique.
|
||||
|
||||
À 1080p, Moyen à 20 % donne une hausse lumineuse p95 de **7 niveaux**, aucun pixel
|
||||
assombri et une erreur moyenne de **0,02574 niveau** par rapport aux 192 segments
|
||||
(densité doublée). Erreur p95 globale et aux silhouettes : zéro. La suite valide
|
||||
également le toit fermé, les feuilles, le déplacement/retour caméra, la portée,
|
||||
OFF/zéro/nuit, rechargement, redimensionnement et transitions météo.
|
||||
[Capture native à 20 %](../build/external257/medium20.png).
|
||||
|
||||
Les archives MRpack sont contrôlées octet par octet contre les deux JAR construits.
|
||||
Le JAR Sanctuary ne conserve que Connector/J comme dépendance imbriquée ; JEI
|
||||
conserve ses deux bibliothèques. Métadonnées de publication préparées et vérifiées
|
||||
sans envoi réseau ni avancement du canal. **4 161 fichiers** de sources, ressources,
|
||||
contrôles et construction correspondent au miroir Windows. La tâche de test
|
||||
planifiée a été supprimée après succès.
|
||||
|
||||
[Reçu, empreintes et journaux](../build/external257/validation.json).
|
||||
Pack normal : `b2ded25cdb17b56b65e6df556ed855571b75671e4dfb02baae48dfe421b76498` (SHA-256).
|
||||
Les scripts de préparation/publication sont compilés et le contrat à deux artefacts
|
||||
est vérifié hors ligne ; la publication effective reste hors de ce ticket.
|
||||
Le fixture serveur historique `unified` reste incompatible avec le socle actuel
|
||||
sans les flags de laboratoire indiqués ci-dessus ; il n'a pas été corrigé ici.
|
||||
|
||||
Les mesures de FPS beta.256 restent celles de cette livraison à 10 % ; aucune
|
||||
nouvelle mesure de gain de performances n'est promise par cette séparation.
|
||||
@@ -0,0 +1,73 @@
|
||||
# FAM-261 — Attaque et ordres sur Alt
|
||||
|
||||
Demande du 12 octobre 2026, branche `codex/familiar-alt-beta261`, Minecraft
|
||||
**26.3**, livraison **beta.261**. Le créateur précise que le maintien d’Alt
|
||||
doit ouvrir les ordres et que H doit être retiré des commandes du familier.
|
||||
|
||||
## Comportement
|
||||
|
||||
- **Alt gauche bref** : attaque rapide / suivi, avec le ciblage existant.
|
||||
- **Alt gauche maintenu** : ouvre les ordres du familier.
|
||||
- **G** : technique, avec son réglage existant.
|
||||
|
||||
L’appui bref est envoyé au relâchement. Le maintien ouvre le menu après environ
|
||||
0,4 seconde et consomme le geste : aucune attaque rapide n’est envoyée avant
|
||||
l’ouverture ou au relâchement. Un geste commencé dans un inventaire, pendant
|
||||
la mort ou sans fenêtre active est ignoré jusqu’au relâchement.
|
||||
|
||||
Une seule entrée des contrôles réunit attaque et ordres. Elle conserve la clé
|
||||
de réglage de l’attaque rapide beta.260, `sanctuary.familiar.quick_key`, avec
|
||||
Alt gauche par défaut ; une personnalisation existante de ce réglage s’applique
|
||||
aux deux gestes. L’ancien raccourci séparé des ordres n’est plus enregistré :
|
||||
son ancienne valeur H dans les options n’active aucune commande du familier.
|
||||
L’ancien marqueur F→H n’est plus utilisé. Le titre du menu et les aides ont
|
||||
leurs libellés FR/EN.
|
||||
|
||||
La correction de réapparition beta.260 est conservée. Ce changement est côté
|
||||
client ; règles serveur, œufs, progression et sauvegardes restent identiques.
|
||||
Le labo beta.259 reste fermé.
|
||||
|
||||
## Vérifications et artefacts
|
||||
|
||||
Le parcours natif réussit en **46 secondes**, sur **Vulkan / MoltenVK 1.4.2,
|
||||
Apple M1**, avec 8 Gio maximum. Il vérifie l’appui bref, le maintien sans attaque
|
||||
rapide avant l’ouverture ou au relâchement, H bref et maintenu inactifs, G
|
||||
inchangé, les deux gestes reconfigurés sur K, le blocage d’Alt tenu dans
|
||||
l’inventaire puis relâché après fermeture, les infobulles FR/EN et une véritable
|
||||
mort/réapparition suivie d’une attaque du loup.
|
||||
|
||||
Journal : `build/familiar261-client.log`, marqueur `FAMILIAR261_CLIENT_PASS`.
|
||||
Capture du menu après réapparition :
|
||||
`mods/sanctuary/build/run/clientGameTest/screenshots/0002_familiar261-orders-after-respawn.png`.
|
||||
Le scénario utilise un nouveau monde plat, graine **261**, avec serveur intégré.
|
||||
Les essais Windows et multijoueur distant restent ouverts.
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryQuickTests=true -PsanctuaryFamiliar260ClientTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
`check build assemblePack assembleTestPack` réussit en **2 min 43 s**, avec
|
||||
`-PsanctuaryFocusedTests=eggaudit,familiar,familiar260,accessories
|
||||
-PsanctuaryAtlasOnly=true` : **44 GameTests serveur requis réussis**.
|
||||
Journal : `build/familiar261-build.log`.
|
||||
|
||||
Les deux MRpacks sont exportés et vérifiés : intégrité ZIP, version beta.261,
|
||||
Minecraft 26.3, JAR embarqués identiques aux builds et classes identiques à la
|
||||
compilation. Sur les **2 520 classes** du mod normal, seule `FamiliarClient`
|
||||
change face à beta.260 ; les **88 classes** du module de labo restent identiques.
|
||||
Les aides FR/EN de la carte sont également actualisées pour Alt.
|
||||
Reçu et empreintes SHA-256 : `build/familiar261-validation.json`.
|
||||
|
||||
[Pack normal beta.261](../build/Sanctuary-beta.261.mrpack) ·
|
||||
[Pack Test beta.261](../build/Sanctuary-Test-beta.261.mrpack).
|
||||
Livraison locale ; la visite figée beta.259 reste fermée et conserve son binaire.
|
||||
|
||||
Le parcours natif de réapparition existant `Familiar260ClientChecks` est actualisé
|
||||
pour le raccourci unique : appui bref, maintien sans attaque, H inactif,
|
||||
reconfiguration des deux gestes, blocage dans l’inventaire, puis commandes et
|
||||
attaque réelle après réapparition. Son sélecteur Gradle conserve son nom
|
||||
`sanctuaryFamiliar260ClientTests`.
|
||||
@@ -0,0 +1,167 @@
|
||||
# FAM-LAB-259 — Arène des familiers
|
||||
|
||||
Demande du 12 octobre 2026, branche `codex/familiar-lab-beta259`, Minecraft
|
||||
**26.3**, version **beta.259**. Premier incrément : essayer les familiers actuels
|
||||
avant leur rework, choix confirmé par le créateur.
|
||||
|
||||
Les retours de cette séance sont traités dans [beta.260](familiar-respawn-beta260.md).
|
||||
Avec beta.260, l’attaque rapide passe sur Alt ; H maintenu conserve les ordres.
|
||||
Depuis [beta.261](familiar-alt-beta261.md), Alt bref et Alt maintenu réunissent
|
||||
attaque et ordres ; G garde la technique.
|
||||
La visite figée `review-02` garde son ancien binaire beta.259 et ne reçoit pas
|
||||
les correctifs.
|
||||
|
||||
## Carte de test
|
||||
|
||||
Le module facultatif `sanctuary-test` construit une scène neuve de 49 × 41 blocs,
|
||||
plancher Y=80, dans `build/familiars-259/<session>/server/familiars-flat-259`.
|
||||
Graine **259**, disposition **1**, monde plat de développement. La scène est
|
||||
indépendante du générateur Sanctuary ; aucun ancien chunk n'est remplacé.
|
||||
Le constructeur exige le dossier dédié, le générateur plat et une option JVM
|
||||
explicite. Une préparation incomplète est refusée et conservée.
|
||||
|
||||
- **Cinq coffres**, un par rareté : les **88 espèces** du catalogue de familiers,
|
||||
dragon, Wither, Warden et creeper compris. Les œufs natifs sont réapprovisionnés
|
||||
chaque seconde dans leurs emplacements vides. Prendre un œuf puis le placer
|
||||
dans la case **Familier** de l'inventaire. Nom, personnalité, taille, techniques,
|
||||
santé et comportement utilisent les règles actuelles ; pas de normalisation
|
||||
des individus ni de nouvelle forme d'œuf.
|
||||
- **À gauche : punching-ball zombie**, sans IA ni déplacement, ancré en
|
||||
`(-12,81,4)`. Il reçoit les dégâts natifs avec armure naturelle, immunité
|
||||
temporaire entre coups et animation de blessure. Sa vie est restaurée à
|
||||
chaque tick, avant la mort si le coup est létal. Le même zombie survit.
|
||||
Le tableau affiche coups acceptés, derniers PV perdus, total et attaquant.
|
||||
Les valeurs sont des dégâts après réduction, pas un DPS ; un coup dépassant
|
||||
la réserve de 1 024 PV ne mesure que les PV effectivement retirés.
|
||||
- **À droite : bouton « 1 hostile aléatoire »**. Chaque pression ajoute un
|
||||
adversaire avec IA native et cible le joueur. Deux apparitions consécutives
|
||||
ne sélectionnent pas la même espèce. Il est possible de former un groupe,
|
||||
jusqu'à **128 hostiles actifs**, avec refus si le point d'apparition est occupé.
|
||||
La liste contient 23 types adaptés à une arène terrestre, hors boss et
|
||||
créatures exigeant eau ou structures particulières.
|
||||
- **Bouton de nettoyage** : retire les hostiles de l'arène, leurs descendants
|
||||
(petits slimes, vex invoqués) et les projectiles locaux. Le familier et la
|
||||
cible sont conservés. **Bouton de remise à zéro** : efface seulement le compteur.
|
||||
|
||||
Les 23 hostiles : zombie, squelette, husk, stray, bogged, parched, araignée,
|
||||
araignée venimeuse, creeper, pillager, vindicator, sorcière, poisson d'argent,
|
||||
endermite, slime, cube de magma, breeze, blaze, wither squelette, piglin brute,
|
||||
zoglin, ravageur et evoker. Les attaques et déplacements restent natifs ;
|
||||
les squelettes/pillagers ont leurs armes et les morts-vivants sont protégés
|
||||
du soleil. Une couverture et des parois vitrées délimitent le terrain.
|
||||
|
||||
La difficulté est **Normale**, le personnage est en **Survie**, avec les blocs de la carte protégés, avec capacités
|
||||
de vie, faim et inventaire complètes, accès aux techniques, épée et armure en
|
||||
fer, nourriture et étiquettes. Ces facilités concernent seulement le personnage
|
||||
du laboratoire. Les coups des hostiles blessent réellement le joueur et le
|
||||
familier ; un K.-O. et les délais de récupération restent ceux du jeu actuel.
|
||||
Inventaire conservé à la mort, apparitions naturelles désactivées, terrain
|
||||
protégé des monstres, midi et ciel clair. Les ennemis de test sont exclus des
|
||||
sources de maîtrise des familiers. Les affichages ont leurs libellés FR/EN.
|
||||
|
||||
| Action | Commande ou geste |
|
||||
| --- | --- |
|
||||
| Désigner une cible | H bref en visant l'ennemi |
|
||||
| Ordres | H maintenu |
|
||||
| Technique | G |
|
||||
| Accueil et soins du joueur | `/familiers retour` |
|
||||
| Se placer devant le punching-ball | `/familiers cible` |
|
||||
| Ajouter un hostile | bouton ou `/familiers hostile` |
|
||||
| Nettoyer | bouton ou `/familiers nettoyer` |
|
||||
| Remettre le compteur à zéro | bouton ou `/familiers reset` |
|
||||
|
||||
`/familiars` est un alias. H/G sont les touches par défaut, configurables.
|
||||
Le rappel, le changement d'individu et les délais en combat restent contrôlés
|
||||
par le serveur ; attendre la fin du combat pour changer de familier.
|
||||
|
||||
## Lancement et reprise
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary-test:exportDuoLaunch
|
||||
python3 scripts/familiar_lab.py start --run review-03
|
||||
```
|
||||
|
||||
Le nom doit être neuf. Le client de développement est explicitement **Vulkan**,
|
||||
en français, avec 8 Gio de mémoire maximum et shaders Sanctuary désactivés pour
|
||||
cette inspection. Le serveur écoute seulement `127.0.0.1`, sur un port libre.
|
||||
Le formulaire de personnage de cette visite est rempli automatiquement avec
|
||||
une identité de laboratoire. Les fichiers de lancement sont figés pour éviter
|
||||
qu'un prochain build ne change une visite en cours.
|
||||
|
||||
```sh
|
||||
python3 scripts/familiar_lab.py stop --run review-02
|
||||
python3 scripts/familiar_lab.py server --run review-02
|
||||
python3 scripts/familiar_lab.py client --run review-02
|
||||
```
|
||||
|
||||
La réouverture conserve la carte et ses coffres ; les ennemis sont retirés et
|
||||
la cible/le compteur sont recréés. Chaque session possède ses journaux, PID
|
||||
et un manifeste. Aucun monde, JAR ou fichier de session n'est versionné.
|
||||
Il n'y a pas de publication de canal ni d'installation dans Prism.
|
||||
|
||||
## Suite demandée, non implémentée ici
|
||||
|
||||
- Arrivée au stade bébé pour les espèces concernées, croissance puis évolution.
|
||||
- Espèces spéciales qui arrivent directement sans stade bébé.
|
||||
- Creeper qui court vers l'adversaire et déclenche une petite explosion.
|
||||
|
||||
Les critères de croissance, les formes, les seuils, les exceptions et les coûts
|
||||
restent à décider après les essais. Le creeper conserve ses techniques actuelles.
|
||||
Cette carte ne change aucun format de sauvegarde, aucune identité `sanctuary:*`
|
||||
ni aucun comportement de familier du pack normal.
|
||||
|
||||
## Vérifications
|
||||
|
||||
`check build assemblePack assembleTestPack` réussit en **4 min 11 s**, avec
|
||||
`-PsanctuaryFocusedTests=eggaudit -PsanctuaryAtlasOnly=true` : **15 GameTests
|
||||
requis réussis**, dont les contrôles des 88 espèces. Aucun test graphique
|
||||
OpenGL n'a été lancé. Journal : `build/familiar259-build-delivery.log`.
|
||||
|
||||
Le contrôle natif dans `checks-05` réussit : 88 œufs uniques, quatre coups dont
|
||||
deux mortels (2 000 PV et `Float.MAX_VALUE`), même cible vivante, retour à son
|
||||
ancrage après déplacement forcé, 60 apparitions aléatoires sans doublon
|
||||
consécutif, IA et ciblage (y compris les mémoires Brain), boutons via le vrai
|
||||
callback d'interaction, nettoyage qui conserve une vache témoin et la cible,
|
||||
attaque réelle d'un loup attribuée au familier. Les entités invoquées sont
|
||||
exclues de la maîtrise. Journal :
|
||||
`build/familiars-259/checks-05/server.log`, marqueur
|
||||
`FAMILIARS259_CHECKS_PASS`.
|
||||
|
||||
La passe élargie `eggaudit,familiar` donne **32/33 tests réussis**. Le test
|
||||
historique `Familiar020GameTests.eggSizeSurvivesStorageAndChangesOfOwner`
|
||||
échoue au transfert vers un autre propriétaire : le familier attendu est null.
|
||||
Ce scénario et les classes de jeu du pack normal sont inchangés ; l'échec
|
||||
n'est ni corrigé ni désactivé dans les sources. Journal :
|
||||
`build/familiar259-build-final.log`. La première invocation avec le profil
|
||||
de monde par défaut échouait avant les tests sur un cast du générateur ; le
|
||||
profil AtlasOnly utilisé par les livraisons récentes permet leur exécution.
|
||||
|
||||
Les noms de session invalides et la préparation sur un dossier existant sont
|
||||
refusés. Le script Python compile. Les deux MRpacks ont été exportés avec
|
||||
packwiz et vérifiés : intégrité ZIP, version, JAR embarqués strictement
|
||||
identiques aux builds, 2 520 classes du mod normal et 88 du module Test.
|
||||
Toutes les classes du mod normal sont identiques à beta.258 ; seuls les
|
||||
libellés de laboratoire et la version changent dans ce JAR.
|
||||
Reçu et empreintes : `build/familiar259-validation.json`.
|
||||
|
||||
La visite **`review-02`**, fermée à la demande du créateur après les essais,
|
||||
a utilisé le même code que la livraison : client
|
||||
Vulkan/MoltenVK 1.4.2 sur Apple M1, 8 Gio maximum, connexion de KokaLab et
|
||||
arrivée enregistrées côté serveur. Journaux dans
|
||||
`build/familiars-259/review-02/`. Ce lancement ne constitue pas une inspection
|
||||
visuelle exhaustive des 88 familiers, ni un essai Windows ou multijoueur.
|
||||
|
||||
Artefacts locaux : [pack normal](../build/Sanctuary-beta.259.mrpack) et
|
||||
[pack Test](../build/Sanctuary-Test-beta.259.mrpack). Aucun tag ni canal public
|
||||
n'est avancé ; aucune instance Prism ou sauvegarde personnelle n'est touchée.
|
||||
|
||||
Contrôle natif reproductible, dans une autre session neuve :
|
||||
|
||||
```sh
|
||||
python3 scripts/familiar_lab.py check --run checks-06
|
||||
```
|
||||
|
||||
Le contrôle exige le marqueur `FAMILIARS259_CHECKS_PASS` et arrête son serveur
|
||||
de test après vérification des coffres, coups mortels, ancrage, boutons,
|
||||
hostiles variés, nettoyage et attaque native d'un loup familier.
|
||||
@@ -0,0 +1,107 @@
|
||||
# FAM-260 — Familiers après réapparition
|
||||
|
||||
Retours du 12 octobre 2026 sur l’arène beta.259, branche
|
||||
`codex/familiar-respawn-beta260`, Minecraft **26.3**, livraison **beta.260**.
|
||||
Le créateur demande de fermer le labo et de corriger les problèmes observés.
|
||||
|
||||
La disposition clavier de cette livraison est remplacée par
|
||||
[beta.261](familiar-alt-beta261.md) : Alt bref attaque, Alt maintenu ouvre les
|
||||
ordres, G garde la technique.
|
||||
|
||||
## Résultat attendu et correction
|
||||
|
||||
Après la mort, les ordres et l’attaque doivent fonctionner dès que le joueur
|
||||
réapparaît, avec son œuf conservé par keep inventory ou récupéré dans sa tombe.
|
||||
|
||||
Minecraft remplace l’objet `ServerPlayer`, conserve son ID d’entité et remet
|
||||
son compteur de ticks à zéro. L’égalité native des entités utilise cet ID :
|
||||
le cache des ordres retrouvait ainsi l’état de l’ancienne vie, dont les
|
||||
compteurs anti-spam dépassaient ceux du nouveau joueur. Les demandes restaient
|
||||
refusées jusqu’au rattrapage de l’ancien compteur. Une revendication d’individu
|
||||
pouvait également rester attachée à l’ancienne vie si aucun tick du joueur mort
|
||||
n’avait précédé la réapparition.
|
||||
|
||||
Le callback de réapparition annule les anciennes actions, termine l’éventuel
|
||||
duel, libère la revendication et retire l’ancien état d’ordres. Le visuel du
|
||||
familier est retiré puis recréé pour le nouveau joueur ; le service vérifie
|
||||
également l’identité de l’objet propriétaire avant de réutiliser un visuel.
|
||||
Les identifiants, composants de l’œuf, registre des individus et formats de
|
||||
sauvegarde restent identiques. La vie perdue, le K.-O., le rappel, les recharges
|
||||
et le verrou de combat restent conservés ; mourir ne soigne pas le familier.
|
||||
|
||||
**Alt gauche** déclenche l’attaque rapide, avec le comportement existant
|
||||
attaque/suivi selon la cible visée. **H maintenu** conserve les ordres et
|
||||
**G** conserve la technique. Un appui bref sur H ne donne plus l’attaque rapide.
|
||||
L’attaque et les ordres disposent de réglages distincts ; les personnalisations
|
||||
de la touche des ordres sont conservées. Les libellés et l’aide sont en FR/EN.
|
||||
|
||||
Dans l’inventaire, le texte « Familier — placer un œuf d’apparition » est retiré
|
||||
de l’infobulle d’un œuf déjà équipé. L’emplacement vide conserve son aide.
|
||||
La croissance, les évolutions et le nouveau creeper restent la suite du rework.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Les quatre nouveaux scénarios serveur utilisent une mort native et les vrais
|
||||
callbacks de réapparition, avec le même ID d’entité et un compteur remis à zéro :
|
||||
œuf conservé après une longue vie, extraction de l’œuf dans la tombe, libération
|
||||
de la revendication sans autoriser deux copies simultanées, conservation du
|
||||
K.-O. et du rappel. Avant correction, trois scénarios échouaient ; après
|
||||
correction les quatre réussissent, avec le contrôle de démarrage Fabric.
|
||||
Journaux : `build/familiar260-reproduction.log` et
|
||||
`build/familiar260-regression.log` (**5 tests requis réussis**).
|
||||
|
||||
Le test historique de taille/transfert beta.020 donnait au deuxième joueur une
|
||||
copie de l’œuf toujours équipé par le premier. Sa préparation effectue maintenant
|
||||
un transfert réel : retrait chez le premier, libération puis équipement chez le
|
||||
second. Le refus des copies concurrentes est vérifié séparément par le nouveau
|
||||
scénario ; aucune protection des individus n’est retirée.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack
|
||||
-PsanctuaryFocusedTests=eggaudit,familiar,familiar260,accessories
|
||||
-PsanctuaryAtlasOnly=true` réussit en **2 min 50 s**, avec **44 GameTests requis
|
||||
réussis**, dont le transfert historique corrigé. Journal :
|
||||
`build/familiar260-build.log`.
|
||||
|
||||
Le parcours client réussit en **41 s** sur **Vulkan / MoltenVK 1.4.2, Apple M1**,
|
||||
avec 8 Gio maximum. Il vérifie Alt natif, maintien H, G inchangé, Alt ignoré dans
|
||||
l’inventaire, reconfiguration vers K, absence du texte redondant dans les vraies
|
||||
infobulles FR/EN, puis mort native et bouton Réapparaître. Le joueur revient
|
||||
avec le même ID d’entité, un nouvel objet joueur et le même individu ; les ordres
|
||||
fonctionnent et le loup inflige réellement des dégâts au zombie. Journal :
|
||||
`build/familiar260-client.log`, marqueur `FAMILIAR260_CLIENT_PASS`.
|
||||
|
||||
Reproduction du parcours, dans un nouveau monde plat graine **260** :
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryQuickTests=true -PsanctuaryFamiliar260ClientTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
Captures de l’inventaire FR/EN et des ordres après réapparition dans
|
||||
`mods/sanctuary/build/run/clientGameTest/screenshots/000*_familiar260-*.png`.
|
||||
Le contrôle des infobulles utilise leur méthode native avec le slot équipé
|
||||
survolé ; les captures d’inventaire n’affichent pas cette infobulle. Cette passe
|
||||
couvre macOS Vulkan avec serveur intégré ; Windows et multijoueur distant
|
||||
restent à vérifier.
|
||||
|
||||
Les MRpacks normal et Test sont exportés et vérifiés : intégrité ZIP, version
|
||||
beta.260, Minecraft 26.3, JAR embarqués identiques aux builds, classes embarquées
|
||||
identiques aux sorties de compilation. Parmi les **2 520 classes** normales,
|
||||
seules les quatre classes du correctif changent face à beta.259 ; les **88
|
||||
classes** du module de laboratoire restent identiques. Reçu et SHA-256 :
|
||||
`build/familiar260-validation.json`.
|
||||
|
||||
[Pack normal beta.260](../build/Sanctuary-beta.260.mrpack) ·
|
||||
[Pack Test beta.260](../build/Sanctuary-Test-beta.260.mrpack).
|
||||
|
||||
## Séance et distribution
|
||||
|
||||
La visite beta.259 `review-02` est fermée, ses fichiers de développement sont
|
||||
conservés. Le carnet de séance et les transcriptions sont dans
|
||||
`/Users/koka/Documents/sanctuary/retours-sessions/2026-10-12_02-45_familiers-beta259/`.
|
||||
Les corrections sont livrées localement ; aucune publication de canal ni
|
||||
installation Prism n’est demandée. Les binaires figés de la visite beta.259
|
||||
ne sont pas remplacés.
|
||||
@@ -0,0 +1,83 @@
|
||||
# STEM-185 — ligne fine, portail de toiture et vitres reliées
|
||||
|
||||
Ticket du 30 septembre 2026, branche `codex/fine-stem-beta185`.
|
||||
Le créateur valide la fleur et le palais beta.184, ainsi que la galerie inférieure.
|
||||
Il demande de supprimer l'escalier, les paliers et la grosse colonne : une ligne
|
||||
d'un bloc doit guider visuellement le bateau-poule vers le palais. Compléments
|
||||
pendant la réalisation : incruster le portail horizontal au sommet du dôme,
|
||||
libérer l'espace au-dessus de la carte, fermer le jour sous les vitres supérieures.
|
||||
|
||||
## Contrat
|
||||
|
||||
Nouveau profil de labo `stem`, preset `sanctuary_test:fine_stem_v1`, réglages
|
||||
`sanctuary_test:fine_stem_v1_10`, graine de visite **42**, version **beta.185**.
|
||||
La dimension 1600, le champ de bruit 640, l'île et les eaux retenues restent
|
||||
ceux de beta.184. Aucun changement de format, d'ancien preset ou de sauvegarde.
|
||||
La visite beta.184 a été arrêtée proprement à la demande du créateur ; une
|
||||
nouvelle sauvegarde est préparée pour la relance.
|
||||
|
||||
## Résultat
|
||||
|
||||
- Rosace et Bugrock toujours en (0,640,0), palette et huit axes conservés.
|
||||
- **Une seule colonne de calcite en (0,Y,0)** au-dessus du dôme inférieur,
|
||||
de Y=652 jusqu'au départ de l'évasement à 1160. Pas de spirale, de marches,
|
||||
de plateforme intermédiaire, de balustrade ou de pont d'escalier.
|
||||
- Les huit nervures s'élargissent progressivement près du sommet, en partant
|
||||
du même bloc central. Fleur, balcon et pièce du palais à Y=1278 conservés.
|
||||
- Portail horizontal 7×7, ouverture 5×5, **incrusté à Y=1309 dans le dôme**.
|
||||
Son cadre remplace les vitres sommitales et touche la toiture sur tout son
|
||||
pourtour extérieur. Le passage central traverse la voûte ; plus de cadre
|
||||
suspendu au milieu de la salle, au-dessus des 49 cartes au sol.
|
||||
- Un soubassement de calcite ferme le bloc d'air sous les panneaux de verre.
|
||||
Les huit passages restent ouverts. Leur dégagement est vérifié avec les
|
||||
collisions natives, pour une coque standard de 1,375 bloc et son pilote.
|
||||
- Les moteurs du bateau-poule existant ne comportent pas de plafond fixe à
|
||||
640. Aucun changement de mécanique de vol ni de comportement de familier.
|
||||
|
||||
La révélation de la couronne en montant reprend beta.184. La galerie inférieure,
|
||||
son portail 5×5, le soufre, les secteurs miniers, les étangs et le donjon restent
|
||||
ceux validés. Les portails restent des infrastructures, sans voyage dimensionnel.
|
||||
|
||||
## Vérifications et visite
|
||||
|
||||
Contrôle natif final `solo185c/stem/42` réussi : **508 tranches d'un seul bloc**,
|
||||
16 approches libres (huit par lieu, coque et pilote légèrement au-dessus des
|
||||
tapis de mousse), 104 colonnes vitrées appuyées sur calcite, 24 blocs de cadre
|
||||
reliés à la toiture. Les 16 868 entrées du plan correspondent aux blocs générés.
|
||||
La voûte hors de l'ouverture centrale reste identique à beta.184. Aucune marche
|
||||
ni palier dans cette variante. Reçu : `build/stem185-quick-result.json`.
|
||||
|
||||
L'île conserve ses 567 échantillons de densité vérifiés, zéro région d'hydrologie,
|
||||
les trois cerisiers, cinq spawners, quatre wagonnets à butin, la galerie, le soufre
|
||||
et les trois secteurs de gemmes. Le serveur démarre en 5,2 s ; préparation avec
|
||||
sondages, atlas et contrôles en 42,3 s. Ce dernier temps inclut les tests.
|
||||
|
||||
Lecture NBT du monde arrêté : 49 cartes complètes et figées, cadres horizontaux
|
||||
et identifiants uniques. Ancien cadre suspendu en air, nouveau cadre de toiture
|
||||
en obsidienne, tige centrale isolée et soubassement du vitrage confirmés.
|
||||
Reçus : `build/stem185-saved-atlas.json`, `build/stem185-saved-blocks.json`.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch`
|
||||
réussi en **7 min 3 s**, **265/265 GameTests**. Journal :
|
||||
`build/stem185-check-build.log`. Le daemon de compilation a été arrêté pour
|
||||
libérer la mémoire avant le client Vulkan.
|
||||
|
||||
Solo Vulkan ouvert le 30 septembre à **07:32:51**. Nouveau monde
|
||||
`visite185/stem/42`, `Sanctuary-Fine-Stem-185-Solo`, créatif, commandes et vol,
|
||||
vue 32 chunks et simulation 12. Départ préparé dans le palais supérieur.
|
||||
Entrée confirmée en (6.5,1280,8.5), vue 32 et simulation 12 dans le journal
|
||||
`build/stem185-solo.log`. Vérification native du frustum réussie à 07:32:53 :
|
||||
couronne cachée depuis le sol, révélée en arrivant à la rosace. Inspection de
|
||||
la fenêtre du jeu : carte au sol présente et vitrages reliés au soubassement.
|
||||
L'ancienne sauvegarde beta.184 reste conservée. Aucun canal public ou instance
|
||||
Prism modifié ; seuls les artefacts locaux et le laboratoire sont livrés.
|
||||
Les contrôles de passage ne
|
||||
remplacent pas un trajet intégral piloté en bateau-poule.
|
||||
|
||||
| Lieu | Téléportation |
|
||||
| --- | --- |
|
||||
| Rosace du Bugrock | `/tp 0.5 639 5.5 180 -20` |
|
||||
| Palais et carte au sol | `/tp 6.5 1280 8.5 140 35` |
|
||||
| Portail dans la toiture | `/tp 0.5 1312 0.5 180 75` |
|
||||
| Liaison fine, vue extérieure | `/tp 24 920 24 135 -20` |
|
||||
| Portail inférieur | `/tp 0.5 177 7.5 180 30` |
|
||||
@@ -0,0 +1,95 @@
|
||||
# APT-238 — Forgerie
|
||||
|
||||
Branche `codex/forgerie-beta238`, base beta.237 (`5dee981`).
|
||||
|
||||
## Contrat avant implémentation
|
||||
|
||||
Une aptitude Forgerie est ajoutée dans Arts et métiers de Progression, avec
|
||||
l'icône `aptitudes_forgerie.png` fournie. Comme Enchantement et Alchimie,
|
||||
elle coûte quatre niveaux, est achetée une seule fois et reste acquise
|
||||
sans interrupteur. Elle débloque l'usage personnel de toutes les variantes
|
||||
d'enclume et de la table de forge. Avant l'achat, les menus natifs de ces
|
||||
postes sont refusés côté serveur, y compris les postes fonctionnels portés
|
||||
sur la tête. Les réparations, noms, améliorations et ornements natifs restent
|
||||
fonctionnels après achat. Équipements déjà obtenus et recettes conservés.
|
||||
|
||||
La meule, les fours et les autres postes restent sous leurs règles actuelles.
|
||||
Les deux aides World Map / Mob Names restent les seuls choix désactivables.
|
||||
Les interfaces ajoutées sont traduites en français et en anglais.
|
||||
|
||||
## Persistance et compatibilité
|
||||
|
||||
L'attachement booléen additif `sanctuary:smithing_learned` conserve l'achat.
|
||||
Absent : false. Copie à la mort et conservation au New Game+. Aucun schéma,
|
||||
aucune preuve ni aucun attachement existant n'est réécrit. Les personnages
|
||||
existants avec progression doivent aussi acquérir Forgerie. Les joueurs
|
||||
hors progression Sanctuary gardent l'accès vanilla. Aucun monde personnel,
|
||||
aucune génération ni aucun terrain n'est modifié.
|
||||
|
||||
La capacité `sanctuary:smithing_v1` et l'état `sanctuary:smithing_state_v1`
|
||||
transmettent l'achat sans modifier
|
||||
les paquets v1 existants. Le serveur exige un client compatible et contrôle
|
||||
la session, le joueur, la révision et les niveaux avant l'achat. Un retour
|
||||
à une version ancienne peut perdre cet attachement inconnu à la sauvegarde ;
|
||||
conserver une sauvegarde avant ce retour.
|
||||
|
||||
## Vérifications et livraison
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=forgerie238,aptitudes236,headblocks \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryAptitudes236ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
```
|
||||
|
||||
`check build assemblePack` réussi en **2 min 44 s**, **21 GameTests requis**
|
||||
réussis : cinq nouveaux scénarios Forgerie, six scénarios d'aptitudes et dix
|
||||
scénarios de postes portés. Contrôles purs du dépôt réussis. Le banc Atlas
|
||||
évite le chemin de génération par défaut déjà documenté en beta.232.
|
||||
Log `build/forgerie238-check-build-pack.log`.
|
||||
|
||||
- Achat refusé avec trois niveaux ou une révision périmée ; quatre niveaux
|
||||
dépensés une seule fois. Autres achats et preuves inchangés. Requête de
|
||||
désactivation refusée ; conservation native NBT, à la mort et au New Game+.
|
||||
- Trois variantes d'enclume refusées avant achat puis ouvertes après achat.
|
||||
**Réparation et renommage réels d'une épée diamant** sur chacune ; XP et
|
||||
diamant consommés selon le coût natif du menu.
|
||||
- Table de forge refusée avant achat puis ouverte : **épée netherite et
|
||||
plastron diamant avec ornement Sentry réellement produits**, entrées
|
||||
consommées une fois, coût d'XP natif conservé et accès aux visites suivantes.
|
||||
- Menus construits en dehors de l'ouverture normale : validité et prise de
|
||||
résultat refusées avant acquisition, sans dépense ni perte d'entrées.
|
||||
Joueurs sans progression Sanctuary autorisés comme en vanilla.
|
||||
- Enclumes et table de forge sur la tête : contrôle de l'achat du visiteur,
|
||||
indépendamment du porteur. La fixture générale des postes natifs possède
|
||||
explicitement les trois aptitudes des Arts avant de tester leurs menus.
|
||||
|
||||
Sources et bytecode du **Minecraft 26.3 local** vérifiés pour les méthodes
|
||||
héritées de `ItemCombinerMenu`, l'override de prise d'`AnvilMenu` et les recettes
|
||||
natives de forge. Aucun changement de recette ni de dépendance externe.
|
||||
|
||||
Parcours graphique en **34 s**, Vulkan / MoltenVK 1.4.2 sur Apple M1,
|
||||
FR/EN GUI 2/3/4. La suite d'aptitudes existante contrôle désormais treize
|
||||
aptitudes, dont onze achats permanents. Trois Arts achetés depuis les boutons
|
||||
natifs : douze niveaux au total, Forgerie synchronisée depuis le serveur et
|
||||
présentée comme acquise sans interrupteur. Deux seules aides désactivables,
|
||||
XP et progression conservées lors de douze paires de changement, disposition
|
||||
Pause intégrée, défilement et retour Terminé conservés. Log
|
||||
`build/forgerie238-client-vulkan.log`, marqueur `FORGERIE238_PASS`.
|
||||
Vingt-quatre captures dans `build/forgerie238-screenshots/` ; Arts FR GUI 3
|
||||
et EN GUI 4 inspectés, texte et icône contenus dans le cadre.
|
||||
|
||||
Versions du mod, du pack et du manifeste alignées sur **beta.238**.
|
||||
[MRpack local](../build/Sanctuary-beta.238.mrpack) vérifié : 12802487 octets,
|
||||
intégrité ZIP, Minecraft 26.3 / Fabric Loader 0.19.5, un seul JAR Sanctuary
|
||||
identique au build final, sans classe de test, monde ou module de laboratoire.
|
||||
Les trois icônes fournies des Arts sont identiques octet pour octet aux
|
||||
originaux dans le JAR. Reçu `build/forgerie238-artifact.json`.
|
||||
|
||||
- SHA-256 JAR : `e29ea6f7f56c57290d0307076f641f2e714ec72a80be858a5fd9c5f08e27eb8e`.
|
||||
- SHA-256 MRpack : `2fbd605acf555dd8b192c0c0ad7171414a13f5820e5d440ba54debcd4cb897a7`.
|
||||
|
||||
Tests dans des mondes de développement neufs. Pas de validation Windows ni
|
||||
multijoueur distant. Les sauvegardes et installations personnelles restent
|
||||
intactes ; aucune publication ni avancée du canal packwiz.
|
||||
@@ -0,0 +1,53 @@
|
||||
# Les quatre îles dans Sanctuary normal
|
||||
|
||||
## Validation du 5 octobre 2026
|
||||
|
||||
Le joueur valide le rendu beta.224 et demande que les quatre îles soient
|
||||
disponibles dans Sanctuary de base, sans Sanctuary Test.
|
||||
Branche de vérification : `codex/four-islands-base224`, base `4554ea1`.
|
||||
|
||||
L’audit confirme que cette intégration est déjà effective dans le mod et le
|
||||
MRpack normal beta.224. Aucun transfert supplémentaire de code n’est nécessaire.
|
||||
Cette livraison documentaire ne change ni les binaires ni leur version.
|
||||
|
||||
| Ancre | Expansion validée | Contenu principal |
|
||||
| --- | --- | --- |
|
||||
| Nord | Glaciale | Taïgas géantes, glace, améthyste, igloos et manoir |
|
||||
| Sud | Aride | Canyons colorés, forêts, sentiers et pyramide piégée |
|
||||
| Ouest | Océanique | Océan, monument, épaves et berges en roche jaune |
|
||||
| Est | Volcanique | Volcan actif, jungles, bambou et temple de jungle |
|
||||
|
||||
Créer un **nouveau monde Sanctuary**, avec le choix Petit/Moyen/Grand.
|
||||
Les expansions de 1024 blocs sont débloquées par leurs ancres cardinales
|
||||
et leurs demandes de matériaux ; elles ne sont pas toutes prégénérées au départ.
|
||||
Les anciens mondes conservent leur génération enregistrée.
|
||||
|
||||
## Contrôle de l’intégration
|
||||
|
||||
- Le preset public `sanctuary:sanctuary` utilise `island224_medium`. Le sélecteur
|
||||
du mod normal propose également les profils Small et Large de cette génération.
|
||||
- `SanctuaryMod` enregistre directement les générateurs, l’adaptateur d’expansion
|
||||
et les interactions des ancres. Aucun de ces chemins ne dépend de l’activation
|
||||
de `QuickTestMod`. Les anciens noms Java et identifiants `sanctuary_test:*`
|
||||
sont conservés pour la compatibilité ; ils ne constituent pas une dépendance
|
||||
au module optionnel.
|
||||
- Vérification du MRpack normal : générateurs, structures et biomes des quatre
|
||||
directions présents pour les trois tailles ; un seul JAR Sanctuary, aucune
|
||||
dépendance au module `sanctuary_test`, aucun monde ni JAR Sanctuary Test inclus.
|
||||
- La création conserve les types vanilla et une seule entrée publique Sanctuary.
|
||||
- Le build complet et les sept GameTests beta.224 ont déjà réussi, dont le
|
||||
chargement des profils sans le module de labo. Ils ne sont pas relancés pour
|
||||
cette modification documentaire. Les essais natifs des différentes îles sont
|
||||
décrits dans leurs tickets ; cet audit ne revendique pas une nouvelle partie
|
||||
complète avec les quatre îles simultanément.
|
||||
|
||||
Reçu local : `build/four-islands-base224-receipt.json`.
|
||||
Artefact standard : `build/Sanctuary-beta.224.mrpack`, copie identique dans
|
||||
`~/Downloads/Sanctuary-beta.224.mrpack`, SHA-256 :
|
||||
|
||||
```text
|
||||
01aed4e6a0d9e2965ed8201372eef3aaecab3b0c6dce3fb84586895ed9076885
|
||||
```
|
||||
|
||||
Cette validation ne migre aucun monde et ne modifie pas le canal packwiz ou
|
||||
l’installation Prism personnelle.
|
||||
@@ -0,0 +1,101 @@
|
||||
# WG-GALLERY-198 — création Large interrompue par la galerie centrale
|
||||
|
||||
Branche `codex/gallery-generation-beta198`, depuis beta.197. Minecraft 26.3,
|
||||
Fabric 0.19.5, Java 25. Retour R013 et journal `message-11.txt` fourni par le
|
||||
créateur : arrêt Windows à la création Large, graine `4736390610738281858`.
|
||||
|
||||
## Cause et correction
|
||||
|
||||
L'exception `No supported central gallery floor` dans `Cavern183.create`
|
||||
interrompt la décoration du premier chunk. Le repli beta.197 exige encore de
|
||||
la roche exactement en (0,0), sous la surface de cette même colonne. Sur cette
|
||||
graine, son sommet n'est qu'à Y=168 et presque toute la colonne traverse du
|
||||
vide, alors que les colonnes voisines possèdent des assises. L'erreur a été
|
||||
reproduite sur macOS avec la même graine avant modification. Ce journal ne
|
||||
montre pas une panne du pilote Vulkan ni un manque de mémoire.
|
||||
|
||||
Les nouveaux profils beta.198 conservent d'abord toutes les recherches
|
||||
existantes. Un dernier repli ne s'exécute que lorsqu'elles échouent : il compare
|
||||
l'assise et la couverture sur l'emprise de la chambre, de Y=32 à Y=276, sans
|
||||
condition éliminatoire sur la seule colonne centrale. Au plus 12 250 sondes,
|
||||
une seule planification mise en cache par source de biomes. Même un puits
|
||||
entièrement vide conserve la salle et sa fondation locale existante, plutôt
|
||||
que d'annuler la création du monde. Dans ce cas limite, la chambre peut être
|
||||
ouverte sur le vide : ce correctif ne prétend pas créer une cavité fermée dans
|
||||
une roche absente.
|
||||
|
||||
Le portail reste horizontal en X=0, Z=0. Les dimensions de la chambre,
|
||||
maçonnerie et règles du relief, de l’eau, des biomes et des minerais restent
|
||||
identiques.
|
||||
Aucun calcul régional d'hydrologie ajouté.
|
||||
|
||||
## Sauvegardes et distribution
|
||||
|
||||
`stable_gallery198` est un paramètre de codec additif, faux par défaut.
|
||||
Les trois nouveaux profils `shared_island198_{small,medium,large}` et le preset
|
||||
public Sanctuary l'activent. Les profils 196/197 restent présents et gardent
|
||||
leur comportement ; leur personnalisation conserve leur révision exacte.
|
||||
Les protections de spawn introduites en 197 restent actives en 197 et 198.
|
||||
|
||||
Le pack de test est destiné à un **nouveau monde**. Une création interrompue
|
||||
beta.197 ne migre pas automatiquement en beta.198 : recréer un nouveau monde
|
||||
avec la même graine et la taille souhaitée. Aucun monde personnel modifié,
|
||||
aucun chunk régénéré, aucune publication du canal ni installation Prism.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- Échec beta.197 reproduit dans `build/worldgen-lab/gallery198-baseline/`.
|
||||
- Tests synthétiques réussis : puits vide, appuis autour d'un centre vide,
|
||||
fine couche haute, roche pleine, déterminisme et borne de calcul.
|
||||
- Matrice native réussie : Small/Medium/Large, graines 0, 17, 42,
|
||||
`4736390610738281858` et `-9223372036854775808`. Plans répétés à l'identique ;
|
||||
toutes les galeries admises par beta.197 conservent exactement leur plan.
|
||||
Le nouveau repli s'active pour la graine du journal, dans les trois tailles.
|
||||
- Small, Medium et Large sur la graine fournie : création puis réouverture
|
||||
réussies. Portail en `(0,183,0)`, trois salles accessibles, respectivement
|
||||
1 927, 1 925 et 1 930 cellules accessibles ; géométrie et ornements identiques
|
||||
après reprise. Démarrages serveur à froid : 18,4 / 24,2 / 21,1 secondes ;
|
||||
ces mesures locales ne sont pas un temps de chargement garanti sous Windows.
|
||||
- Client intégré **Vulkan**, vue 8 chunks et mémoire Java 2 Gio : Large sur
|
||||
la graine exacte, arrivée réelle en `(-15.5,254,-15.5)`, huit recherches
|
||||
natives de spawn sur l’île. Parcours FR/EN des trois tailles, annulation,
|
||||
aller-retour disque et maintien des révisions historiques 196 et 197.
|
||||
Réussi en 1 min 2 s, trace `build/gallery198-client.log`.
|
||||
|
||||
Commande du contrôle ciblé, rejouable dans un nouveau dossier :
|
||||
|
||||
```sh
|
||||
python3 scripts/worldgen_lab.py verify --profile large \
|
||||
--seed 4736390610738281858 --run galerie-regression-neuve \
|
||||
--checks gallery198 --memory 2048
|
||||
```
|
||||
|
||||
Les traces finales sont dans `build/worldgen-lab/gallery198-targeted/`.
|
||||
Le mode normal `--checks full` conserve toutes ses assertions. Son premier
|
||||
passage dans `gallery198-fixed/` a démarré correctement puis s'est arrêté sur
|
||||
un **autre contrôle de laboratoire** : le secteur émeraude contient 171 blocs,
|
||||
dont 120 exposés, contre le minimum attendu de 200. Ce seuil est uniquement
|
||||
vérifié par le banc de test, pas pendant une partie ordinaire. Ni l'assertion
|
||||
ni les minerais ne sont modifiés ici. La vérification complète de toutes les
|
||||
décorations sur cette graine reste donc ouverte ; seuls les contrôles ciblés
|
||||
explicitement indiqués sont déclarés réussis.
|
||||
|
||||
Aucun essai effectué directement sous Windows ; le défaut du journal est
|
||||
reproduit avec le même générateur natif et la même graine sur cette machine.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack -PsanctuaryFocusedTests=menus`
|
||||
réussi en **4 min 27 s**, 139 tâches : contrôles purs dont le nouveau repli,
|
||||
quatre GameTests menus et assemblages. Journal : `build/gallery198-check-build.log`.
|
||||
Le parcours client utilise une instance de développement et ne produit pas de
|
||||
campagne de captures.
|
||||
|
||||
Export local **Sanctuary-Test-beta.198.mrpack**, **12 282 084 octets**.
|
||||
SHA-256 : `647498a0da3330ce0483e65fe6510ec8d09b6975365261fe59a57d61f3ef0688`.
|
||||
Archive ZIP, versions, dépendances et classes de chaque JAR vérifiées contre
|
||||
le build. Toutes les anciennes ressources de données restent identiques à
|
||||
beta.197, sauf le preset public qui sélectionne maintenant Medium beta.198.
|
||||
Les nouvelles ressources activent explicitement le correctif ; les anciens
|
||||
profils ne le font pas. Les tests natifs finaux correspondent à l'empreinte
|
||||
finale des sources de génération. Reçu : `build/gallery198-artifact.json`.
|
||||
Copie et guide dans `Downloads/`, sans sauvegarde, réglage personnel ni journal
|
||||
inclus dans l'archive.
|
||||
@@ -0,0 +1,96 @@
|
||||
# beta.157 — photo obligatoire et galerie de captures
|
||||
|
||||
## Contrat de migration communautaire v2
|
||||
|
||||
La génération, les chunks et les sauvegardes Minecraft ne changent pas.
|
||||
Seul le document communautaire évolue : champ `photo`, JPEG encodé en base64,
|
||||
48 Kio binaires maximum, dimensions de 1 × 1 à 960 × 540 pixels.
|
||||
Les captures originales ne sont jamais modifiées. Les copies destinées à la Gazette
|
||||
sont redimensionnées et réencodées, sans métadonnées, avant transmission.
|
||||
|
||||
Les nouveaux articles exigent une photo valide. Les articles v1 restent lisibles ;
|
||||
leur prochaine modification exige une photo. Avis, intendance et réponses restent
|
||||
textuels. La modération ne nécessite pas d'ajouter une photo à un ancien article.
|
||||
La photo est enregistrée atomiquement avec le texte, auteur et révision ; pas de
|
||||
référence à un chemin local, d'URL distante ou de média orphelin persistant.
|
||||
|
||||
Fichier : v1 est lu sans modification. À la première écriture réussie, une copie
|
||||
exacte `sanctuary-community.json.v1.bak` est créée sans écrasement, puis le document
|
||||
v2 est écrit atomiquement. Un backup différent bloque la migration. La limite de
|
||||
64 Mio du document reste appliquée, photos comprises. Un retour à beta.156 exige
|
||||
de restaurer la copie v1 et perd les changements communautaires postérieurs.
|
||||
Ne pas restaurer pendant que le serveur tourne.
|
||||
|
||||
MariaDB : arrêter les écritures du site et du serveur, sauvegarder la base, exécuter
|
||||
explicitement `community/schema-v1-to-v2.sql` ou la migration Laravel équivalente,
|
||||
puis lancer les deux applications v2. Migration additive : colonne `photo` nullable,
|
||||
aucune suppression ni réécriture des articles existants. Le mod n'exécute aucune
|
||||
migration SQL au démarrage. Les applications v1 refusent le schéma v2. Pas de
|
||||
rollback automatique destructif ; restaurer la sauvegarde avec les deux logiciels
|
||||
v1 si nécessaire. Aucun changement n'est appliqué aux bases ou mondes personnels
|
||||
par la préparation de cette livraison.
|
||||
|
||||
Réseau : canaux v1 conservés, action `photo` par fragments de 8 000 caractères,
|
||||
au plus 9 fragments et 65 536 caractères, accusés un par un. Une seule photo
|
||||
transitoire par joueur, liée à l'UUID de publication, expire après deux minutes ;
|
||||
limite globale de 128 transferts. Les listes ne transportent pas les photos ;
|
||||
seul le détail d'un article les contient. Le plafond des réponses
|
||||
passe à 262 144 caractères pour une photo et une discussion complète ; les
|
||||
clients et le serveur doivent être mis à jour ensemble vers beta.157. Les
|
||||
anciens clients ne peuvent plus créer d'article sans photo.
|
||||
|
||||
Galerie : grille de 2 ou 3 colonnes selon la taille d'interface, molette et barre
|
||||
native, 24 captures par page parmi les 4 096 PNG les plus récents par nom, lecture
|
||||
en arrière-plan. Aperçu puis assignation explicite ; Annuler conserve le brouillon.
|
||||
Les captures illisibles restent visibles mais désactivées. Limites sources :
|
||||
32 Mio, 8 192 pixels par axe et 32 millions de pixels. Textures libérées à la
|
||||
fermeture. Le site accepte PNG/JPEG et nécessite PHP GD ; le mod propose les PNG
|
||||
du dossier `screenshots` de son instance.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- Tests natifs Vulkan Minecraft 26.3 : galerie FR/EN aux échelles 2/3/4,
|
||||
molette, pagination, aperçu, annulation avec brouillon conservé, bouton Publier
|
||||
désactivé sans photo, envoi fragmenté, photo visible et relecture après
|
||||
réouverture de l'adaptateur. Parcours réussi en fichier et MariaDB.
|
||||
- Tests métier : photo manquante/invalide, révision, auteur, conservation après
|
||||
modification, reprise idempotente, redémarrage fichier/SQL, ancien article v1,
|
||||
copie de migration exacte, fragments hors ordre/incomplets/expirés.
|
||||
- Site : 17 tests HTTP, 97 assertions réussies ; photo obligatoire, faux fichier,
|
||||
dimensions refusées, réduction, lecture, isolement serveur, auteur, masquage,
|
||||
anciennes publications et conservation après modification.
|
||||
- Échange réel Java/PHP sur une MariaDB isolée : création en jeu lue par le site,
|
||||
modification et réponse Web relues en Java, article/photo du site décodés par
|
||||
Java. Migration Laravel et alternative SQL testées sur bases de développement.
|
||||
- `./gradlew check build assemblePack` : 252 GameTests serveur terminés en
|
||||
3,457 minutes, 229 réussis et les mêmes 23 échecs que la baseline beta.154/155
|
||||
(liste comparée intégralement, aucun nouvel identifiant en échec). La commande
|
||||
générale échoue donc après 6 min 59 s ; cette limite préexistante reste ouverte.
|
||||
- Régression native du menu pause : FR/EN, échelles 2/3/4, carte, défilements
|
||||
indépendants, pagination, article et avis longs, réponse, options et reprise :
|
||||
réussie avec les articles munis d'une photo.
|
||||
- Construction et assemblage séparés, sans relancer les 23 GameTests connus :
|
||||
`check build assemblePack -x :sanctuary:runGameTest` réussit (avec le parcours
|
||||
client natif du menu pause), 2 min 56 s.
|
||||
|
||||
Les captures d'essai sont des mires générées dans une instance de développement,
|
||||
sans accès aux captures ou sauvegardes personnelles. Pas de déploiement sur le
|
||||
site public, serveur personnel, canal packwiz ou Prism. Les JAR beta.154–156
|
||||
restent présents ; JAR et MRpack beta.156 gardent leurs empreintes antérieures.
|
||||
|
||||
|
||||
Le site correspondant est sur `codex/community-photos`, commits `e3ae3eb` et
|
||||
`9626e95`, sans push ni publication. Logs de développement :
|
||||
`build/photos157-client-file.log`, `build/photos157-client-database.log`,
|
||||
`build/photos157-interop-*.log`, `build/photos157-check-build.log` et
|
||||
`build/photos157-final-build.log`.
|
||||
|
||||
## Artefacts locaux
|
||||
|
||||
JAR `mods/sanctuary/build/libs/sanctuary-beta.157.jar` et pack
|
||||
`build/Sanctuary-beta.157.mrpack`, versions et JAR embarqué vérifiés.
|
||||
Les 29 ressources de shaders sont identiques à beta.156 (socle beta.151).
|
||||
Reçu complet : `build/photos157-validation.json`.
|
||||
|
||||
- SHA-256 mods/sanctuary/build/libs/sanctuary-beta.157.jar: `96ff6d22ab593eb113cde63239ff4839f6a75b9a165fbec93a0aaab3c09dee7c`.
|
||||
- SHA-256 build/Sanctuary-beta.157.mrpack: `b03da5f67a3dcf8051666641dccd379a52b8c3c09308e1654b00440a37693e96`.
|
||||
@@ -0,0 +1,26 @@
|
||||
# beta.165 — Gazette en article et conversation
|
||||
|
||||
Photo en tête, titre et description dessous dans le même conteneur sombre.
|
||||
Auteur, visage, date et actions sous le conteneur. Réponses à droite avec
|
||||
défilement indépendant et saisie fixe ; sur GUI étroit, réponses sous l’article.
|
||||
Retour et Actualiser restent en haut, comme pour le tableau.
|
||||
|
||||
Interface cliente uniquement, sans changement de stockage ni de monde.
|
||||
Test client Vulkan réussi en FR/EN aux échelles GUI 2, 3 et 4 :
|
||||
position du panneau de réponses, repli sous l’article, défilement disponible,
|
||||
brouillon conservé après redimensionnement et réponse envoyée puis relue.
|
||||
Le scénario existant du tableau et celui du menu pause passent également.
|
||||
Captures conservées dans `build/qa-beta165/` (image synthétique de test).
|
||||
Inspection visuelle FR GUI 2 et GUI 4 effectuée.
|
||||
Journal : `build/beta165-client.log`.
|
||||
|
||||
`check build assemblePack --continue` exécuté : mêmes 23 GameTests en échec
|
||||
qu’en beta.164, aucun nouvel échec. Comparaison enregistrée dans
|
||||
`build/session165-server-failures.json`. La vérification générale reste en échec.
|
||||
Assemblage séparé réussi avec `build assemblePack :sanctuary-test:exportDuoLaunch
|
||||
-x :sanctuary:check` après cette vérification.
|
||||
|
||||
JAR local : `mods/sanctuary/build/libs/sanctuary-beta.165.jar`.
|
||||
SHA-256 : `03a954caf68089862b1d237dcf1ebaa501e3ce3cfedb1f5184e9412e73fd711d`.
|
||||
Anciens JAR conservés ; aucune publication distante.
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
# GEM-01 — Gemmes, argile et découvertes — beta.126
|
||||
|
||||
Contrat du 17 septembre 2026, branche `codex/gems-beta126`, Minecraft 26.3.
|
||||
|
||||
Deux gemmes natives complètent l'émeraude : `sanctuary:ruby` et
|
||||
`sanctuary:sapphire`. Chaque famille comprend un bloc de stockage, un minerai
|
||||
ordinaire et un minerai des abîmes. Les huit PNG du créateur sont copiés à
|
||||
l'identique ; leurs empreintes figurent dans `tools/gems-textures-beta126.json`.
|
||||
Les noms des fichiers français `saphir` sont associés aux identifiants anglais
|
||||
stables `sapphire`, sans modifier les pixels. Les deux items utilisent les fichiers de remplacement
|
||||
`Desktop/ruby.png` et `Desktop/saphir.png` fournis en fin de livraison.
|
||||
|
||||
L'ordre créatif est émeraude, rubis, saphir : ingrédients, blocs de stockage,
|
||||
minerais ordinaires et minerais des abîmes dans leurs onglets natifs respectifs.
|
||||
Minage à la pioche de fer ou mieux, résistance et expérience comme l'émeraude,
|
||||
Fortune, Toucher de soie, cuisson/four à fusion et conversion 9 gemmes ↔ 1 bloc.
|
||||
Les blocs peuvent former un socle de balise et les gemmes servir de paiement.
|
||||
Les recettes rejoignent la collection actuelle de l'émeraude, sans ajouter de
|
||||
transactions de villageois. Libellés français et anglais, tags communs `c:`.
|
||||
|
||||
## Génération procédurale et contrat de compatibilité
|
||||
|
||||
Profil initial **gemmes 1 / beta.126** : quatre tentatives par chunk et par
|
||||
gemme, filons natifs de taille 3, hauteur uniforme Y0–256, probabilité de rejet
|
||||
au contact de l'air de 0,25. Ces nombres sont un réglage initial à équilibrer
|
||||
lors de la future refonte ; aucun quota de gemmes par chunk n'est garanti.
|
||||
Les variantes ordinaires remplacent les roches du tag vanilla
|
||||
`stone_ore_replaceables`, les variantes des abîmes celles de
|
||||
`deepslate_ore_replaceables`.
|
||||
|
||||
Les fichiers `worldgen/feature/ore_<gemme>.json`,
|
||||
`worldgen/placed_feature/ore_<gemme>.json` et les tags de biomes
|
||||
`has_ore/<gemme>` séparent les cibles, la forme, la fréquence, la hauteur et
|
||||
les régions. Un datapack peut les remplacer sans recompiler le mod. Le code
|
||||
réutilise `OreFeature` et le hasard natif issu de la graine ; il limite ces
|
||||
filons aux mondes utilisant `SanctuaryChunkGenerator`. Les biomes vanilla
|
||||
partagés avec Sanctuary restent compatibles sans ajouter les gemmes aux
|
||||
mondes vanilla, au Nether ou à l'End.
|
||||
|
||||
Cette évolution additive est autorisée pour les **nouveaux chunks uniquement**.
|
||||
Aucun remplissage rétrospectif, aucune régénération, aucun remplacement de chunk
|
||||
sauvegardé ni activation d'expansion. Les codecs du relief, les dimensions et
|
||||
le format des sauvegardes restent inchangés. Les filons suivent les protections
|
||||
existantes de la décoration native. Les anciens profils expérimentaux précédant
|
||||
le générateur Sanctuary unifié ne sont pas étendus.
|
||||
|
||||
## Argile spéciale dans le Clay Workshop
|
||||
|
||||
Le bloc d'argile vanilla conserve les couleurs échantillonnées sur le modèle
|
||||
original, animal découvert ou import GLB. Les argiles colorées et les autres
|
||||
blocs continuent à transférer leur palette de texture. Une même règle est
|
||||
appliquée à l'aperçu client et au résultat serveur. Le changement de matériau
|
||||
invalide le résultat même si les deux palettes sont identiques. Le texte de
|
||||
l'atelier explique l'exception en français et en anglais.
|
||||
|
||||
Une sculpture coûte toujours un bloc ; aucune recette, découverte, donnée de
|
||||
sculpture déjà fabriquée ni règle de placement n'est modifiée.
|
||||
|
||||
## Commande de découverte commune
|
||||
|
||||
`/sanctuary discovery all` découvre tous les blocs, objets et espèces enregistrés.
|
||||
Les variantes `blocks all`, `items all` et `mobs all` ciblent une catégorie ;
|
||||
`block <identifiant>`, `item <identifiant>` et `mob <identifiant>` ciblent une
|
||||
entrée avec la complétion native. Un sélecteur de joueurs en fin de commande
|
||||
est facultatif ; sans cible, elle s'applique au joueur qui l'exécute.
|
||||
|
||||
Exemples :
|
||||
|
||||
```mcfunction
|
||||
/sanctuary discovery all
|
||||
/sanctuary discovery mobs all
|
||||
/sanctuary discovery block minecraft:stone
|
||||
/sanctuary discovery item minecraft:diamond
|
||||
/sanctuary discovery mob minecraft:cow
|
||||
/sanctuary discovery all @a
|
||||
```
|
||||
|
||||
La permission suit « Autoriser les commandes » en solo et les droits opérateur
|
||||
sur serveur. La console doit préciser la cible. Les identifiants invalides,
|
||||
l'air et les types d'entités sans espèce découvrable sont refusés.
|
||||
|
||||
Les blocs passent par le registre de découvertes et son événement existant ;
|
||||
les objets passent par `RecipeService.discover`. Les collections et recettes
|
||||
sont ensuite recalculées normalement. Les espèces rejoignent `seen_mobs`,
|
||||
la même donnée que l'observation naturelle, consommée par les familiers,
|
||||
le Métabli et le Clay Workshop. Il n'existe aucun drapeau de déblocage parallèle.
|
||||
Les catalogues déjà ouverts sont à rouvrir après la commande.
|
||||
|
||||
La commande conserve les quantités possédées et les compteurs de combat,
|
||||
minage, pose et fabrication. Elle ne donne pas d'objets, n'achète pas les skills
|
||||
et n'attribue pas d'advancements. Les recettes réservées aux opérateurs gardent
|
||||
leurs règles. Les historiques personnels sont enrichis sans changer leur
|
||||
schéma ; la commande refuse les données illisibles plutôt que les remplacer.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Client natif Minecraft 26.3 / Java 25, `Gems126ClientChecks`, réussi en
|
||||
1 min 08 s. Les mondes sont jetables, sans sauvegarde personnelle ouverte :
|
||||
|
||||
- Les huit items et six blocs sont présents, avec les huit textures exactes.
|
||||
Quatre groupes créatifs respectent émeraude → rubis → saphir, sans doublons.
|
||||
- Douze recettes natives, découverte du bloc de stockage, outil fer minimum,
|
||||
Fortune III, Toucher de soie et balises passent les contrôles serveur.
|
||||
- Graine **126**, profil gemmes 1, 81 chunks autour de l'origine : 7 rubis dans
|
||||
la pierre et 8 dans la roche des abîmes ; 15 saphirs dans la pierre et 10 dans
|
||||
la roche des abîmes. La génération est refusée dans le monde plat vanilla.
|
||||
Les minerais persistent à la reconnexion, et un minerai retiré ne réapparaît pas.
|
||||
- L'argile conserve exactement les couleurs des voxels d'une vache et d'un GLB
|
||||
texturé. Bois et argile colorée transfèrent toujours leur palette. Le retour
|
||||
à l'argile, l'égalité aperçu/résultat et le coût d'un bloc en survie sont vérifiés.
|
||||
- La commande native respecte « Autoriser les commandes », accepte une cible
|
||||
et la console, refuse les identifiants invalides et permet une espèce, un
|
||||
bloc, un objet, toutes les espèces ou tout le contenu. Les recettes liées
|
||||
sont recalculées. La répétition est idempotente et les découvertes survivent
|
||||
à la reconnexion sans inventer de compteurs de combat ou de possession.
|
||||
|
||||
Logs et captures dans `build/gems126-client.log` et
|
||||
`mods/sanctuary/build/run/clientGameTest/screenshots/`. Le GameTest dédié
|
||||
reste exclu conformément au refus antérieur de son EULA. Le build complet et
|
||||
les archives sont vérifiés séparément avant publication.
|
||||
|
||||
|
||||
Build final `./gradlew check build assemblePack assembleTestPack
|
||||
-x :sanctuary:runGameTest` réussi en **2 min 10 s**, 126 tâches. Les contrôles
|
||||
natifs de gameplay précèdent uniquement le remplacement final des deux PNG
|
||||
d'items ; les huit fichiers livrés sont vérifiés à l'octet près contre les
|
||||
sources, tous en 16 × 16. Les JAR de sources correspondent aux sources courantes.
|
||||
L'audit entre les binaires beta.125 et beta.126 ne trouve que les 112 entrées
|
||||
de production prévues. Les archives normal/Test contiennent le même mod et
|
||||
le template reproduit exactement ses ressources exportables.
|
||||
|
||||
| Artefact | SHA-256 |
|
||||
| --- | --- |
|
||||
| `Sanctuary-beta.126.mrpack` | `716221ce24549781ab91f5437ad2310497b198a4b61c43c40c67a27984365ae5` |
|
||||
| `Sanctuary-Test-beta.126.mrpack` | `bbf22d7dd72e6746538b4ec28686f699225d4a59372304e5db42140a80e88bd1` |
|
||||
| `sanctuary-beta.126.jar` | `85dbe1b41d98751029bb62e87d259522f8609758896c797b1e02fa7656ec0342` |
|
||||
|
||||
## Publication et synchronisation
|
||||
|
||||
[Release beta.126](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.126)
|
||||
publiée depuis `99860af312a1737d938812f3515fcc4acb4291b2` ; artefacts
|
||||
immuables retéléchargés et vérifiés. Canal packwiz : `31749b95d21ce5bced6b9e5759499da6f8a67e6e`.
|
||||
Deux synchronisations isolées, puis deux synchronisations de l'instance existante
|
||||
**Sanctuary Beta** ont réussi. Un seul JAR Sanctuary beta.126, correspondant
|
||||
à l'empreinte ci-dessus. Les **923 fichiers personnels** suivis sont conservés,
|
||||
sauvegardes restées fermées ; copie préalable dans
|
||||
`sanctuary-backups/before-beta.126/`.
|
||||
|
||||
Packs normal/Test et template copiés et vérifiés dans
|
||||
`sanctuary-beta/build/`. Reçus locaux : `build/gems126-artifact.json`,
|
||||
`build/gems126-isolated.json`, `build/gems126-prism.json` et
|
||||
`build/gems126-publication.log`.
|
||||
@@ -0,0 +1,59 @@
|
||||
# HELLO-263 — Bébés familiers dans Hello World
|
||||
|
||||
Correction demandée le 16 octobre 2026 sur `codex/hello-world-menu`, après
|
||||
beta.262. Minecraft **26.3**, livraison locale **beta.263**.
|
||||
|
||||
La disposition est ensuite ajustée dans [HELLO-264](hello-layout-beta264.md) :
|
||||
colonne de la largeur de la hotbar et aperçus miniatures sur un sol commun.
|
||||
|
||||
Le familier est présenté dans sa forme bébé native, comme le proxy de rendu
|
||||
en jeu après `Mob.setBaby(true)`. Le choix concerne le modèle, les textures
|
||||
bébé et l'échelle d'âge ; le cadrage tient compte de la taille réduite.
|
||||
Les textures du chat et du loup sont explicitement remplacées par celles
|
||||
du chaton et du louveteau. Les espèces sans forme bébé native gardent leur
|
||||
apparence habituelle de familier miniature.
|
||||
Le chaton reprend la variante noire par défaut du proxy natif ; le poisson
|
||||
tropical reprend également son motif natif par défaut.
|
||||
|
||||
Le rendu reste utilisable avant la liaison des composants d'items et avant
|
||||
l'arrivée d'un monde client. Aucun changement des familiers remis, des règles
|
||||
serveur ou des sauvegardes. Hotbar de neuf couleurs, fond texturé, skin du
|
||||
personnage et suivi de la souris conservés.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Le parcours Hello World existant est étendu : après le contrôle à froid des
|
||||
44 modèles/textures, l'âge, l'échelle d'âge et la texture de chaque aperçu
|
||||
sont comparés à un vrai proxy natif créé dans un monde de développement
|
||||
neuf, puis passé par `Mob.setBaby(true)`. Ces proxies ne sont jamais ajoutés
|
||||
au monde ou simulés. Le personnage, la pagination, les saisies, l'admission,
|
||||
la reconnexion et le code d'accès restent couverts par le même parcours.
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryQuickTests=true -PsanctuaryHello262ClientTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=progression,starter,starter052 -PsanctuaryAtlasOnly=true
|
||||
```
|
||||
|
||||
Parcours client réussi en **1 min 26 s**, **Vulkan / MoltenVK 1.4.2 sur
|
||||
Apple M1**, avec 8 Gio maximum. Journal : `build/hello263-client-vulkan.log`,
|
||||
marqueurs `HELLO263_BABIES_PASS`, `HELLO262_MODELS_PASS` et
|
||||
`HELLO262_CLIENT_PASS`. Les 44 âges, échelles d'âge et textures correspondent
|
||||
aux proxies natifs ; la création, la reconnexion et le code d'accès passent.
|
||||
24 captures conservées dans `build/hello263-screenshots/` ; galerie à froid
|
||||
et poussin dans le menu inspectés.
|
||||
|
||||
`check build assemblePack` réussit en **3 min 4 s**, avec **13 GameTests
|
||||
serveur requis réussis**. Journal : `build/hello263-check-build-pack.log`.
|
||||
Le [pack local beta.263](../build/Sanctuary-beta.263.mrpack) est exporté et
|
||||
vérifié : intégrité ZIP, version, Minecraft 26.3, JAR identique au build et
|
||||
classes de test absentes. Face à beta.262, seule la classe de production
|
||||
`HelloFamiliarPreview` change. Reçu : `build/hello263-validation.json`.
|
||||
|
||||
Aucune publication ou installation personnelle effectuée. Les variantes
|
||||
visuelles restent celles par défaut ; Windows et serveur distant restent
|
||||
hors des essais.
|
||||
@@ -0,0 +1,74 @@
|
||||
# HELLO-264 — Colonne centrale et sol commun
|
||||
|
||||
Demande du 16 octobre 2026 sur `codex/hello-world-menu`, après beta.263.
|
||||
Minecraft **26.3**, livraison locale **beta.264**.
|
||||
|
||||
Le titre Hello World est retiré de l'affichage. Le menu central reprend les
|
||||
**182 pixels de la hotbar native**, avec neuf couleurs par page. La section
|
||||
Personnage contient le choix de couleur puis « Écris ta biographie ». Elle est
|
||||
suivie du choix parmi les trois œufs et du nom du familier. Les noms sont
|
||||
placés au-dessus des aperçus : pseudo coloré à gauche, nom saisi à droite.
|
||||
Les flèches restent dans la largeur de la colonne ; leur infobulle indique
|
||||
la page courante. Libellés français et anglais.
|
||||
|
||||
Les deux aperçus partagent la même hauteur de sol. Le familier garde sa forme
|
||||
bébé et une taille miniature ; son échelle ne cherche plus à remplir la zone.
|
||||
Le cadrage est limité à l'aperçu. Le personnage compense la rotation verticale
|
||||
pour garder ses pieds au sol. Les deux modèles suivent toujours la souris.
|
||||
L'espèce, la rareté et la description apparaissent uniquement au survol de
|
||||
l'œuf ou de l'aperçu, et ne prennent plus de place dans le formulaire.
|
||||
|
||||
Retour est placé en bas du contenu, séparé des sections. « Entrer dans
|
||||
Sanctuary » occupe un pied de page natif de 33 pixels, à la position du bouton
|
||||
Terminé des statistiques. Les deux boutons ont la largeur de la hotbar.
|
||||
Le fond légèrement texturé, les brouillons, la pagination, le verrouillage
|
||||
d'identité et le parcours de code d'accès sont conservés.
|
||||
|
||||
Les règles serveur, les sauvegardes et les familiers remis restent inchangés.
|
||||
Les variantes visuelles sont celles par défaut, comme dans beta.263.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Le parcours Vulkan vérifie FR/EN en GUI 2/3/4, la largeur et le centrage des
|
||||
champs, les boutons sans chevauchement et la place du pied de page natif.
|
||||
Il couvre aussi les neuf couleurs par page, la dernière page incomplète,
|
||||
les saisies après redimensionnement/refus serveur, l'identité verrouillée et
|
||||
le code d'accès. Les aides de saisie FR/EN sont raccourcies pour tenir dans
|
||||
la colonne, y compris lorsque les champs sont vides.
|
||||
|
||||
Les 44 modèles de départ sont rendus à froid et comparés aux vrais proxies
|
||||
natifs après `Mob.setBaby(true)`. Captures spécifiques du bébé zombie,
|
||||
du bébé chameau, du survol et des deux directions de souris. Admission avec
|
||||
nom, sauvegarde et reconnexion dans un monde de développement neuf, graine
|
||||
52 ; code d'accès avec réponse HTTP perdue, nouvel essai et admission unique
|
||||
dans un autre monde neuf, graine 166.
|
||||
|
||||
Parcours final réussi en **1 min 4 s**, sous **Vulkan / MoltenVK 1.4.2,
|
||||
Apple M1**, avec 8 Gio maximum. Les marqueurs `HELLO262_MODELS_PASS`,
|
||||
`HELLO263_BABIES_PASS`, `STARTER052_CLIENT_PASS`, `ACCESS166_CLIENT_PASS`
|
||||
et `HELLO262_CLIENT_PASS` figurent dans `build/hello264-client-vulkan.log`.
|
||||
**43 captures natives** conservées dans `build/hello264-screenshots/` ;
|
||||
menus FR/EN, zombie, chameau, suivi de souris, cadrage et infobulle inspectés.
|
||||
|
||||
`check build assemblePack` réussit en **3 min 9 s**, avec les **13 GameTests
|
||||
serveur requis réussis**. Journal : `build/hello264-check-build-pack.log`.
|
||||
Le [pack local beta.264](../build/Sanctuary-beta.264.mrpack) est exporté et
|
||||
vérifié : intégrité ZIP, version, Minecraft 26.3, JAR identique au build,
|
||||
classes de production identiques aux sorties compilées, traductions FR/EN
|
||||
identiques aux sources et classes de test absentes. Par rapport à beta.263,
|
||||
les seules classes de production modifiées sont `HelloWorldScreen` et ses
|
||||
classes internes, ainsi que `HelloFamiliarPreview`.
|
||||
Reçu : `build/hello264-validation.json`.
|
||||
|
||||
Aucune publication ou installation personnelle effectuée. Essais graphiques
|
||||
sur Apple M1 uniquement ; Windows et serveur distant hors des essais.
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryQuickTests=true -PsanctuaryHello262ClientTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=progression,starter,starter052 -PsanctuaryAtlasOnly=true
|
||||
```
|
||||
@@ -0,0 +1,96 @@
|
||||
# HELLO-262 — Menu de création du personnage et du familier
|
||||
|
||||
Demande du 16 octobre 2026, branche `codex/hello-world-menu`, socle beta.261,
|
||||
Minecraft **26.3**, livraison locale **beta.262**.
|
||||
|
||||
Les aperçus adultes de cette première version sont remplacés par les
|
||||
[formes bébé en beta.263](hello-baby-familiars-beta263.md).
|
||||
|
||||
## Menu
|
||||
|
||||
Trois colonnes centrées : personnage à gauche, formulaire au centre, familier
|
||||
à droite. Les colonnes latérales ont la même largeur ; le centre est partagé
|
||||
en deux blocs de même hauteur, personnage en haut et familier en bas.
|
||||
Aucun aplat de panneau : fond gris sombre légèrement texturé sur toute la page,
|
||||
avec la texture native de pierre teintée, proche du précédent `#171717`.
|
||||
|
||||
Le pseudo affiche la couleur choisie. Les flèches autour de lui parcourent
|
||||
**neuf couleurs serveur par page**. La barre reprend directement les sprites
|
||||
`minecraft:hud/hotbar` et `minecraft:hud/hotbar_selection`, sans texture dérivée.
|
||||
Aux petites tailles, elle se réduit proportionnellement tout en conservant ses
|
||||
neuf cases. La dernière page garde les emplacements vides inactifs. Noms des
|
||||
couleurs au survol et dans la narration ; libellés FR/EN.
|
||||
|
||||
Le personnage et le familier ont des **aperçus 3D qui suivent la souris**,
|
||||
sans devoir cliquer ou glisser. Le skin utilise le widget natif ; le familier
|
||||
utilise ses modèles et textures natifs. Les trois œufs restent les boutons de
|
||||
choix à droite. Le survol change l'aperçu ; sinon, le familier choisi est
|
||||
montré, ou le premier avant la sélection explicite.
|
||||
|
||||
Ces aperçus ne créent aucun `ItemStack`, entité ou monde de substitution.
|
||||
Les états graphiques sont construits directement avant l'admission. Les vaches,
|
||||
poules et cochons utilisent explicitement leurs variantes tempérées 26.3,
|
||||
sans lier ou remplacer les registres dynamiques du serveur.
|
||||
|
||||
La biographie et le nom du familier restent au centre. Le code d'accès apparaît
|
||||
lorsque le serveur l'exige. Pagination, redimensionnement et refus serveur
|
||||
conservent les saisies et le familier proposé ; une couleur devenue indisponible
|
||||
est retirée de la sélection. Une identité enregistrée reste verrouillée.
|
||||
Règles serveur, tirage, protocole et formats de sauvegarde inchangés.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Parcours client **Vulkan / MoltenVK 1.4.2, Apple M1**, 8 Gio maximum : FR/EN,
|
||||
fenêtre 1280 × 960, GUI 2/3/4, soit 640 × 480, 427 × 320 et 320 × 240.
|
||||
Toutes les couleurs sont accessibles sans doublon, dernière page comprise.
|
||||
Contrôles sans chevauchement, boutons Annuler/Entrer lisibles sans défilement,
|
||||
focus des flèches conservé, brouillons et sélection conservés au redimensionnement.
|
||||
Offres sans familier, palette vide et identité verrouillée couvertes.
|
||||
|
||||
Les **44 modèles de départ** communs/peu communs sont soumis au rendu natif
|
||||
et leurs textures vérifiées sur un client à froid, **avant la liaison des
|
||||
composants d'items**. La galerie est rendue en Vulkan. Les déplacements du
|
||||
curseur vérifient les deux axes du familier et du personnage ; captures
|
||||
comparées pour contrôler le sens de rotation.
|
||||
|
||||
Admission avec nom et reconnexion dans un monde plat neuf, graine **52**.
|
||||
Admission par code dans un autre monde plat neuf, graine **166**, avec une API
|
||||
HTTP locale contrôlée : réponse perdue, nouvel essai et admission unique.
|
||||
Configuration temporaire restaurée. Les parcours Starter052 et Access166 sont
|
||||
réutilisés ; les assertions historiques de disposition de Starter052 et
|
||||
Progression003 sont adaptées.
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryQuickTests=true -PsanctuaryHello262ClientTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=progression,starter,starter052 -PsanctuaryAtlasOnly=true
|
||||
```
|
||||
|
||||
Parcours client final réussi en **1 min 35 s**. Journal :
|
||||
`build/hello262-3d-client-vulkan-final.log`, marqueurs `HELLO262_MODELS_PASS`
|
||||
et `HELLO262_CLIENT_PASS`. **24 captures finales** conservées dans
|
||||
`build/hello262-final-screenshots/` ; vues FR/2, FR/4 avec accès, EN/4,
|
||||
galerie des 44 modèles et deux positions du curseur inspectées.
|
||||
|
||||
`check build assemblePack` réussit en **3 min 32 s**, avec **13 GameTests
|
||||
serveur requis réussis** et les contrôles purs du dépôt. Journal :
|
||||
`build/hello262-check-build-pack-final.log`. Mod et pack alignés sur beta.262.
|
||||
|
||||
[Pack local beta.262](../build/Sanctuary-beta.262.mrpack).
|
||||
Reçu et empreintes : `build/hello262-validation.json`.
|
||||
Le MRpack est vérifié après export : intégrité ZIP, Minecraft 26.3, version
|
||||
beta.262 et JAR Sanctuary identique au build ; classes de test absentes du mod.
|
||||
|
||||
## Limites
|
||||
|
||||
Aperçus avec les variantes visuelles par défaut, sans choix de variante.
|
||||
Aux petites tailles, la description latérale est abrégée par la place disponible ;
|
||||
l'infobulle garde le texte complet. La biographie conserve sa limite de
|
||||
256 caractères et son champ natif à défilement horizontal.
|
||||
Essais sur serveurs intégrés de développement ; Windows et serveur distant
|
||||
non testés. Aucune publication, modification du canal packwiz ou synchronisation
|
||||
d'une installation personnelle effectuée.
|
||||
@@ -0,0 +1,125 @@
|
||||
# ANCHORS-186 — rosaces ornementées et huit refuges
|
||||
|
||||
Ticket du 30 septembre 2026, branche `codex/hidden-anchors-beta186`.
|
||||
Retour sur beta.185 : retirer les barrières supérieures, conserver la silhouette,
|
||||
ajouter de fins liserés au verre et intégrer huit ancres dans le terrain de leur
|
||||
secteur de couleur, en surface, en grotte et sur les récifs.
|
||||
|
||||
## Contrat
|
||||
|
||||
Nouveau laboratoire `anchors`, preset `sanctuary_test:hidden_anchors_v1`,
|
||||
graine de visite 42, beta.186. Génération déterministe, recherche bornée dans
|
||||
le champ de densité existant et écritures limitées au chunk en décoration.
|
||||
Aucune régénération des visites précédentes ni modification des anciens presets.
|
||||
Les huit couleurs reprennent la palette du Bugrock, dans le même ordre
|
||||
que les rosaces. Les ancres conservent le bloc et ses propriétés existantes.
|
||||
|
||||
Les dépôts distincts restent locaux à ce prototype : ils allument l'ancre et
|
||||
sa gemme sur le Bugrock ; ils ne génèrent pas encore d'expansion. Les coûts
|
||||
sont des matériaux accessibles sur l'île, sans or ni redstone.
|
||||
|
||||
## Réalisation
|
||||
|
||||
Le balcon supérieur perd ses murets. Deux liserés alternent calcite et cuivre
|
||||
patiné sur chaque dôme, en remplaçant une mince bande de verre. Huit petits
|
||||
losanges ponctuent les grandes verrières. Le volume, les couleurs dominantes,
|
||||
la tige d'un bloc, le Bugrock à Y=640, le portail de toiture et l'atlas restent
|
||||
ceux de beta.185. Les passages sur les huit axes restent dégagés.
|
||||
|
||||
La recherche échantillonne une grille finie et les grands récifs existants.
|
||||
Elle exige une base rocheuse et un débouché naturel praticable. Deux secteurs
|
||||
aériens sont retenus lorsqu'ils disposent de récifs compatibles ; les autres
|
||||
privilégient alternativement une grotte ou la surface, avec repli sur un autre
|
||||
emplacement naturel admissible du même secteur. Le choix varie avec la graine.
|
||||
Le manque de site sûr fait échouer ce laboratoire explicitement plutôt que de
|
||||
fabriquer une ancre au-dessus du vide. Seule la graine de visite est certifiée.
|
||||
|
||||
Les refuges sont de petites poches irrégulières : sol légèrement ondulé,
|
||||
reliefs dans la roche présente, accès court décalé, crêtes érodées, mousse,
|
||||
azalées et verre de couleur au piédestal. Certains reliefs cachent une source
|
||||
de lumière, d'autres restent sombres. Les réservations évitent la galerie,
|
||||
le donjon, le soufre et les bassins connus. Elles empêchent aussi la décoration
|
||||
d'un chunk voisin de reboucher les volumes, sans bloquer les actions des joueurs.
|
||||
Aucun calcul d'hydrologie régionale ni recherche par tick n'est ajouté.
|
||||
|
||||
| Secteur | Couleur | Dépôt en main |
|
||||
| --- | --- | --- |
|
||||
| Nord | Bleu clair | 32 pierres |
|
||||
| Nord-est | Vert clair | 16 bûches de chêne |
|
||||
| Est | Vert | 16 blés |
|
||||
| Sud-est | Orange | 16 lingots de cuivre |
|
||||
| Sud | Rouge | 16 charbons |
|
||||
| Sud-ouest | Magenta | 8 éclats d'améthyste |
|
||||
| Ouest | Jaune | 8 lingots de fer |
|
||||
| Nord-ouest | Cyan | 16 verres |
|
||||
|
||||
Clic droit sur l'ancre : le serveur valide le site, le matériau et la quantité.
|
||||
Un dépôt exact allume l'ancre et le bit de couleur associé au Bugrock. Les
|
||||
états restent dans les propriétés natives des blocs ; aucune nouvelle base de
|
||||
progression ou migration. Les textes FR/EN existants sont réutilisés. Le
|
||||
profil 173 et ses anciens coûts ne sont pas modifiés.
|
||||
|
||||
## Vérification
|
||||
|
||||
Premier contrôle natif réussi sur `solo186b/anchors/42` : huit ancres, deux
|
||||
récifs aériens, deux grottes et quatre surfaces/flancs. Plan déterministe de
|
||||
8 650 entrées dans 26 chunks, calculé en 2,3 s. Huit dépôts vérifiés dans un
|
||||
ordre non séquentiel ; tous les bits sont indépendants, les mauvais dépôts et
|
||||
les répétitions conservent les objets. Les états initiaux sont restaurés après
|
||||
ce test, avant la sauvegarde de visite.
|
||||
|
||||
Palais : 144 murets retirés, 384 blocs de liserés/losanges incrustés,
|
||||
4 944 blocs de verre conservés, seize approches libres. Le volume et le cadre
|
||||
du portail restent inchangés. Les huit teintes existent dans les deux rosaces.
|
||||
|
||||
La première réouverture a révélé un ancien contrôle de cerisiers basé sur un
|
||||
compteur de génération en mémoire. Le contrôle lit désormais les troncs déjà
|
||||
sauvegardés lorsqu'il n'y a pas de compteur ; aucun arbre n'est régénéré.
|
||||
Validation finale sur `solo186c/anchors/42` réussie à froid puis après
|
||||
réouverture : 567 échantillons de densité conservés et zéro région d'hydrologie.
|
||||
Démarrage serveur 6,9 s à froid / 0,66 s à chaud ; prêt avec l'ensemble des
|
||||
sondages et contrôles en 44,7 s / 6,4 s. Le plan des huit refuges prend 2,28 s
|
||||
à froid. Ces mesures incluent du travail de vérification et ne constituent pas
|
||||
une promesse de temps de chargement du client.
|
||||
|
||||
Lecture de la sauvegarde arrêtée : huit ancres de secteurs 0 à 7, éteintes,
|
||||
Bugrock allumé avec masque de relais nul ; 49 cartes sauvegardées, complètes,
|
||||
figées, et cadres horizontaux uniques. Aucun dépôt de contrôle ne reste activé
|
||||
sur le monde proposé au créateur.
|
||||
|
||||
Reçus ignorés : `build/anchors186-quick-result.json`,
|
||||
`build/anchors186-warm-result.json`, `build/anchors186-saved-blocks.json`,
|
||||
`build/anchors186-saved-atlas.json`.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch`
|
||||
réussi en **6 min 49 s**, **265/265 GameTests**. Journal
|
||||
`build/anchors186-check-build.log`. Le daemon de compilation a été arrêté avant
|
||||
le client pour libérer la mémoire. Solo Vulkan ouvert le 30 septembre à **08:08:19**, vue 32 et simulation 12
|
||||
confirmées dans `build/anchors186-solo.log`. Contrôle de visibilité de la couronne
|
||||
réussi à 08:08:20. La fenêtre du jeu confirme le balcon sans murets et les
|
||||
vitrages reliés au soubassement. La visite est laissée au créateur sans téléportations d’inspection supplémentaires. L'aspect des huit
|
||||
refuges reste à apprécier ensemble en jeu. Aucun canal public ni instance
|
||||
Prism n'a été modifié.
|
||||
|
||||
## Visite — graine 42
|
||||
|
||||
Solo neuf `visite186/anchors/42`, `Sanctuary-Hidden-Anchors-186-Solo`,
|
||||
vue 32 chunks, simulation 12, créatif, vol et commandes ; départ dans le
|
||||
palais supérieur. Sauvegarde beta.185 conservée. Les emplacements suivants
|
||||
sont des raccourcis de test, pas des marqueurs visibles dans le jeu.
|
||||
|
||||
| Secteur | Milieu | Lumière du refuge | Accès de visite |
|
||||
| --- | --- | --- | --- |
|
||||
|
||||
|
||||
|
||||
| Nord | Surface / flanc | Lumineux | `/tp -71.5 243 -226.5 0 0` |
|
||||
| Nord-est | Surface / flanc | Sombre | `/tp 96.5 186 -82.5 0 0` |
|
||||
| Est | Récif aérien | Lumineux | `/tp 213.5 444 21.5 180 0` |
|
||||
| Sud-est | Surface / flanc | Sombre | `/tp 156.5 161 193.5 0 0` |
|
||||
| Sud | Grotte | Lumineux | `/tp -83.5 115 215.5 180 0` |
|
||||
| Sud-ouest | Surface / flanc | Sombre | `/tp -107.5 252 181.5 0 0` |
|
||||
| Ouest | Grotte | Lumineux | `/tp -96.5 223 24.5 90 0` |
|
||||
| Nord-ouest | Récif aérien | Sombre | `/tp -102.5 404 -171.5 90 0` |
|
||||
|
||||
Palais : `/tp 6.5 1280 8.5 140 -15` ; Bugrock : `/tp 0.5 639 5.5 180 -20`.
|
||||
@@ -0,0 +1,105 @@
|
||||
# beta.168 — laboratoire de trois cartes de horde
|
||||
|
||||
**Actualisation beta.169 :** les [nouvelles cartes à invasion continue](horde-invasion-beta169.md)
|
||||
se révèlent en main, mélangent les espèces et accélèrent leurs apparitions. Les
|
||||
cartes beta.168 conservent les règles historiques décrites ci-dessous.
|
||||
|
||||
Suite du [prototype beta.167](horde-lab-beta167.md), branche
|
||||
`codex/cartes-horde-beta168`. Minecraft 26.3, dépendances inchangées.
|
||||
|
||||
## Décision de séance
|
||||
|
||||
Le décor circulaire est conservé comme piste pour de futurs donjons. Le nouveau
|
||||
labo le reproduit **sans socle** : c'est la carte consommable qui invoque la horde
|
||||
à la position du joueur. Apparition immédiate, sans inscription, préparation,
|
||||
chef de groupe ni commande pour rejoindre. Les joueurs arrivent et combattent
|
||||
spontanément. Les récompenses sont des objets lâchés par les monstres : ramassage
|
||||
libre, sans attribution, partage automatique ni coffre final.
|
||||
|
||||
## Essai jouable
|
||||
|
||||
Trois cartes natives Minecraft, tenues à deux mains avec la main secondaire vide :
|
||||
|
||||
| Carte | Vagues de zombies | Butins possibles |
|
||||
| --- | --- | --- |
|
||||
| Errants | 3 / 5 / 7 | Fer, émeraude |
|
||||
| Meute | 4 / 6 / 8 | Or, émeraude |
|
||||
| Légion | 6 / 9 / 12, un zombie sur deux casqué | Diamant, émeraude |
|
||||
|
||||
Chaque exemplaire reçoit une graine et une illustration 128 × 128 persistante,
|
||||
verrouillée contre les mises à jour géographiques. Composition libre en palette de carte, sans cadre ni grille, à partir des
|
||||
visages texturés des zombies et des textures natives de butin. Positions continues,
|
||||
tailles et inclinaisons variées. Chaque visage correspond à **un monstre réel**
|
||||
sur les trois vagues : 15, 18 ou 27 visages ; les casques correspondent aux porteurs
|
||||
réels. Chaque icône de butin correspond aussi à un objet porté. La densité et les
|
||||
casques traduisent la difficulté. Ce rendu assemble des visages texturés, sans corps. Les trois familles ont des vagues fixes ; leur graine fait varier
|
||||
l'illustration, le choix des butins et leurs porteurs.
|
||||
|
||||
Au moins un porteur de butin par vague ; les autres ont une chance sur quatre
|
||||
d'en porter. Chaque porteur laisse un seul objet, choisi à parts égales dans la
|
||||
paire annoncée. Les casques ne sont pas du butin. Pas d'XP économique ajoutée.
|
||||
Les butins déjà lâchés restent au sol si la horde est interrompue.
|
||||
|
||||
Les joueurs dans les 15 blocs participent automatiquement ; partir ou mourir
|
||||
ne supprime pas la horde. Les nouveaux arrivants peuvent intervenir pendant
|
||||
n'importe quelle vague. Six secondes entre vagues, trois minutes maximum par
|
||||
vague ; disparition d'un monstre vivant ou sortie d'un monstre du périmètre
|
||||
interrompt et nettoie les survivants sans butin supplémentaire.
|
||||
|
||||
L'emplacement des trois vagues est contrôlé avant consommation : chunks chargés,
|
||||
sol, collisions, absence de fluide et frontière. Une horde voisine bloque une
|
||||
nouvelle invocation. Les cartes copiées gardent la même identité : le registre
|
||||
serveur des identités consommées empêche une seconde invocation. Il utilise la
|
||||
sauvegarde native du monde ; aucune garantie transactionnelle supplémentaire en
|
||||
cas de coupure brutale avant sauvegarde n'est revendiquée dans ce labo.
|
||||
|
||||
## Monde et lancement
|
||||
|
||||
Nouveau dossier `build/horde-168/`, monde `horde-flat-168`, graine **168**, génération
|
||||
de scène **ready-v1**, port **127.0.0.1:25578**. L'ancien laboratoire beta.167 et ses
|
||||
sauvegardes sont conservés. Aucun monde existant n'est converti. L'ancien identifiant
|
||||
`sanctuary:trial_pedestal` et la carte beta.167 restent enregistrés.
|
||||
Les cartes beta.168 sont des cartes natives avec données `sanctuary_horde_v1` ;
|
||||
le nouveau SavedData `sanctuary:horde_spent_v1` ne concerne que leurs consommations.
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary-test:exportDuoLaunch
|
||||
python3 scripts/horde_lab.py prepare
|
||||
python3 scripts/horde_lab.py server
|
||||
# Autre terminal
|
||||
python3 scripts/horde_lab.py client
|
||||
```
|
||||
|
||||
Trois cartes, équipement et vision nocturne de test à la première connexion. Clic droit dans le vide avec une
|
||||
carte près du centre du cercle. `/horde cartes` redonne trois nouveaux exemplaires
|
||||
hors combat ; `/horde retour` ramène et soigne hors combat. Pour cet essai,
|
||||
l'invocation est volontairement limitée au centre du labo enregistré, et le rayon
|
||||
d'apparition est de neuf blocs autour de l'utilisateur. Aucun usage dans les
|
||||
mondes ordinaires, aucune recette ni distribution économique de ces cartes.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- `check build assemblePack` et parcours client Vulkan réussis : **254/254**
|
||||
GameTests dans `build/horde168-validation.log`. Cette passe précède les derniers
|
||||
ajustements de composition libre et le verrouillage des anciennes commandes du socle.
|
||||
- Rejeu final sur ces ajustements : groupe `horde168`, deux tests serveur requis
|
||||
réussis, parcours client Vulkan sur les trois cartes, puis assemblage du pack :
|
||||
**BUILD SUCCESSFUL**, journal `build/horde168-final.log`. Le rejeu cible exclut
|
||||
`:sanctuary:check`, déjà exécuté dans la passe complète.
|
||||
- Serveur : refus sans consommation sur terrain bloqué, consommation immédiate,
|
||||
trois vagues de chaque difficulté, images déterministes par graine, copie épuisée
|
||||
refusée, anciennes commandes du socle inopérantes sur les cartes, nombre exact
|
||||
d'objets lâchés conforme à l'illustration, nettoyage sans butin en cas d'interruption.
|
||||
- Client réel : tenue native à deux mains, clic droit, consommation, arrivée/départ
|
||||
spontanés sans annulation de la horde, retour sans inscription, trois victoires,
|
||||
butins physiques. Marqueur `HORDE168_CLIENT_PASS` ; six captures dans
|
||||
`build/horde168-evidence/`. Inspection visuelle des cartes sans cadre ajouté.
|
||||
- Préparation du script répétée sans modifier ses fichiers existants ; Python compilé,
|
||||
libellés FR/EN et liens documentaires vérifiés. Nouveau serveur dédié démarré avec
|
||||
marqueur `ready-v1` dans le monde beta.168 ; l'ancien monde beta.167 est préservé.
|
||||
|
||||
L'équilibrage humain reste à essayer : le client automatisé est invulnérable.
|
||||
La suite générale a réussi lors de cette exécution ; cela ne constitue pas une
|
||||
correction du test de familier intermittent signalé en beta.167 (source inchangée).
|
||||
Pas de publication ni de mise à jour Prism pour cet essai.
|
||||
@@ -0,0 +1,87 @@
|
||||
# beta.171 — familles dominantes et chaos dimensionnel
|
||||
|
||||
> La beta.172 retire la restriction au laboratoire et permet de consommer ces
|
||||
> cartes directement en Survie ou en Créatif. Voir
|
||||
> [le contrat runtime beta.172](horde-runtime-beta172.md).
|
||||
|
||||
Suite de la [carte native beta.170](horde-map-native-beta170.md), branche
|
||||
`codex/horde-families-beta171`. Minecraft 26.3, dépendances inchangées.
|
||||
|
||||
## Profil mémorisé par la carte
|
||||
|
||||
La première prise en main fixe, côté serveur, la dimension de découverte et une
|
||||
famille dominante. Cette identité rejoint la difficulté et la graine dans les
|
||||
données de l'objet (`loot_version=3`) : déplacer ou cloner ensuite la carte ne
|
||||
peut pas relancer son tirage.
|
||||
|
||||
Les familles sont zombies, squelettes, creepers, arthropodes, pillards,
|
||||
cauchemars de surface, infernaux, piglins, flétris et créatures de l'End. Dans
|
||||
92 % des tirages, la famille appartient à la dimension de découverte ; une
|
||||
incursion complète étrangère reste donc exceptionnelle.
|
||||
|
||||
Chaque carte conserve au minimum 10/12, 13/18 ou 17/27 positions de sa famille
|
||||
dominante. Les autres positions sont mélangées de façon déterministe : monstres
|
||||
différents mais natifs de la dimension, puis intrus interdimensionnels plus
|
||||
rares. Errants peut ne recevoir aucun intrus, Meute en reçoit un et Légion deux ;
|
||||
les 8 % d'incursions étrangères constituent l'exception spectaculaire.
|
||||
|
||||
Le catalogue contient 34 créatures adaptées à une apparition dans le cercle :
|
||||
variantes de zombies et squelettes, creeper, slime, araignées, silverfish,
|
||||
sorcière, pillards, évocateur, ravageur, breeze, phantom, creaking, blaze,
|
||||
squelette Wither, cubes, piglins, hoglin, zoglin, ghast, enderman, endermite et
|
||||
shulker. Les boss et monstres strictement aquatiques ne sont volontairement pas
|
||||
invoqués : ils demanderaient un contrat d'arène différent. Piglins et hoglins
|
||||
de carte ne se transforment pas hors du Nether.
|
||||
|
||||
## Carte et récompenses
|
||||
|
||||
L'illustration 128 × 128 est divisée horizontalement. En haut, une piste en
|
||||
serpentin montre chaque monstre dans l'ordre exact où il jaillira. En bas, toutes
|
||||
les piles garanties sont affichées sans hiérarchie ; elles peuvent légèrement
|
||||
se chevaucher quand la récompense est dense.
|
||||
|
||||
Chaque espèce apporte une ressource cohérente et généreuse : poudre pour les
|
||||
creepers, bâtons de blaze, larmes de ghast, perles de l'End, carapaces de shulker,
|
||||
or des piglins, émeraudes des pillards, etc. Rubis et saphirs Sanctuary restent
|
||||
garantis sur chaque carte. Les butins natifs peuvent encore s'ajouter.
|
||||
|
||||
Les cartes beta.168 restent à trois vagues de zombies. Les cartes beta.169/170
|
||||
déjà découvertes gardent leur roster version 2. Seules les nouvelles cartes
|
||||
beta.171 emploient le profil dimensionnel version 3.
|
||||
|
||||
## Communication et essai
|
||||
|
||||
Aucun parcours Horde, y compris le socle beta.167, n'envoie désormais de texte
|
||||
dans le chat ou la barre d'action. Découverte, refus, brèche, arrivées,
|
||||
progression, morts et résultat passent par les connexions et glyphes de
|
||||
particules natifs décrits en beta.170.
|
||||
|
||||
Importer `Sanctuary-Test-beta.171.mrpack` dans Prism et créer un **nouveau** monde
|
||||
nommé exactement `horde-flat-168`. Le profil construit le cercle et donne trois
|
||||
cartes. Pour un tirage neuf, prendre « Carte de horde inconnue » dans **Outils et
|
||||
utilitaires**, la tenir en main, revenir en survie puis l'utiliser dans le cercle.
|
||||
|
||||
La distribution depuis les campements de survie reste un ticket futur. Ce
|
||||
chantier ne modifie aucune génération, aucun chunk, aucune sauvegarde, aucune
|
||||
instance Prism et aucun canal packwiz. L'objet suit le modèle des cartes
|
||||
d'exploration distinctes de Minecraft 26.3, dont la carte des campements
|
||||
abandonnés décrite dans les
|
||||
[notes officielles Minecraft Java 26.3](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-3).
|
||||
|
||||
## Vérifications
|
||||
|
||||
- GameTests `horde171` : majorité garantie, pondération par dimension, intrus
|
||||
possibles, large catalogue, profil versionné, image et récompenses exactes.
|
||||
- Régressions `horde167` à `horde170` : compatibilité des trois anciens contrats.
|
||||
- Parcours client Vulkan : découverte, trois cartes séparées, familles visibles,
|
||||
accélération, particules, morts, victoire et butins physiques.
|
||||
- Matrice complète `./gradlew check build` : 259/259 GameTests requis et
|
||||
compilation complète réussis.
|
||||
- Pack normal : `Sanctuary-beta.171.mrpack`, SHA-256
|
||||
`8f2642adfbcf499330889070b7c05efed09a181b82115e93da7023cdd5aee554`.
|
||||
- Pack laboratoire : `Sanctuary-Test-beta.171.mrpack`, SHA-256
|
||||
`2d64d6b046e265ccee4686aedc98d73d8ec8c012f5b5f6fd64e1a6180adfabbc`.
|
||||
- JAR Sanctuary embarqué dans les deux packs : SHA-256
|
||||
`0622cbd45cb20c763e3db9f351ebf26ea4869a3065655f01f66f97cc9c45d5c1` ;
|
||||
JAR laboratoire :
|
||||
`9c646a95a106680d34f05a4c4d77a9893153c04ab9ad8683f636a99eabc74016`.
|
||||
@@ -0,0 +1,114 @@
|
||||
# beta.169 — cartes de horde à invasion continue
|
||||
|
||||
> La [beta.170](horde-map-native-beta170.md) remplace ces cartes remplies par un
|
||||
> objet-carte Sanctuary natif et remplace les messages par un langage de
|
||||
> particules. La compatibilité avec les exemplaires beta.168/beta.169 demeure.
|
||||
|
||||
Suite du [laboratoire beta.168](horde-cartes-beta168.md), branche
|
||||
`codex/horde-interruption-beta169`. Minecraft 26.3, dépendances inchangées.
|
||||
|
||||
## Résultat jouable
|
||||
|
||||
Une nouvelle carte est **inconnue tant qu'un joueur ne la tient pas**. Son nom,
|
||||
sa difficulté, son contingent et son principe de butin se révèlent alors et
|
||||
restent attachés à cet exemplaire. Le dessin natif 128 × 128 existait déjà mais
|
||||
n'est visible en jeu qu'une fois la carte dépliée en main. Une copie non tenue
|
||||
reste inconnue ; toutes les copies gardent cependant la même identité de
|
||||
consommation.
|
||||
|
||||
Le clic droit consomme la carte et ouvre une invasion à la position du joueur.
|
||||
Il n'y a plus de vague, de pause ni de compte à rebours : le premier monstre
|
||||
jaillit immédiatement, puis les suivants arrivent un par un, chaque fois plus
|
||||
vite. Une victoire est accordée seulement quand tout le contingent est apparu
|
||||
et que tous ses membres ont réellement été vaincus.
|
||||
|
||||
| Carte révélée | Contingent | Espèces | Cadence d'arrivée |
|
||||
| --- | ---: | --- | --- |
|
||||
| Errants · accessible | 12 | zombie, zombie momifié | 2,9 s → 0,9 s |
|
||||
| Meute · périlleuse | 18 | précédents, noyé, squelette, araignée | 2,4 s → 0,5 s |
|
||||
| Légion · féroce | 27 | précédents, vagabond, embourbé, desséché, araignée venimeuse, sorcière, pillard | 2,1 s → 0,3 s |
|
||||
|
||||
La graine de chaque carte décale l'ordre du roster et détermine les quantités de
|
||||
butin et les gemmes bonus. Le dessin montre un œuf pour **chaque monstre réel**
|
||||
et les objets garantis qu'il apportera. Sa densité et sa variété rendent la
|
||||
difficulté lisible après révélation.
|
||||
|
||||
## Butin généreux et lié aux monstres
|
||||
|
||||
Chaque ennemi porte au moins une pile garantie, en plus de ses éventuels butins
|
||||
Minecraft natifs : chair putréfiée, sable, cuivre, flèches, ficelle, glace
|
||||
compacte, champignons, os, yeux d'araignée, redstone/poudre lumineuse ou
|
||||
émeraudes selon son espèce. Les quantités sont volontairement généreuses.
|
||||
|
||||
Le premier et le deuxième monstre garantissent respectivement un rubis et un
|
||||
saphir. Les suivants ont une chance sur cinq d'ajouter une gemme alternée. Les
|
||||
objets sont physiques, sans propriétaire : ils restent au sol, peuvent être
|
||||
ramassés par tous et les gains déjà obtenus survivent à une interruption.
|
||||
|
||||
Chaque apparition conserve la spirale de glyphes SGA natifs et chaque mort réelle
|
||||
disperse les runes avec une impulsion de fumée. Un nettoyage technique ne produit
|
||||
ni rune de mort ni récompense supplémentaire.
|
||||
|
||||
## Combat ouvert et sécurité
|
||||
|
||||
Les joueurs vivants dans les 32 blocs et 16 blocs de hauteur participent
|
||||
automatiquement. Partir, mourir ou revenir n'annule pas l'invasion. Les monstres
|
||||
peuvent dépasser l'ancienne limite du socle sans être supprimés ni compter comme
|
||||
morts. Une disparition réelle d'entité, un chunk central déchargé, un délai total
|
||||
de six minutes ou un futur point d'arrivée devenu impraticable interrompent la
|
||||
session avec un motif distinct.
|
||||
|
||||
Tous les emplacements prévus sont vérifiés avant consommation, sans chargement ni
|
||||
écriture de terrain. Au moment d'une arrivée, douze positions proches sont
|
||||
essayées afin qu'un joueur ou un autre monstre ne bloque pas artificiellement la
|
||||
brèche. Une horde voisine empêche toujours une seconde invocation.
|
||||
|
||||
## Compatibilité et laboratoire
|
||||
|
||||
Les cartes beta.168 sans `loot_version` restent en version 1 : trois vagues de
|
||||
zombies, dessin et récompenses historiques inchangés. Les nouvelles cartes sont
|
||||
en version 2 et utilisent l'invasion continue. Le registre sauvegardé
|
||||
`sanctuary:horde_spent_v1`, les identifiants et le monde
|
||||
`build/horde-168/server/horde-flat-168` sont conservés ; aucune conversion de
|
||||
monde ni régénération de chunk.
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary-test:exportDuoLaunch
|
||||
python3 scripts/horde_lab.py prepare
|
||||
python3 scripts/horde_lab.py server
|
||||
# Autre terminal
|
||||
python3 scripts/horde_lab.py client
|
||||
```
|
||||
|
||||
`/horde cartes` fournit trois cartes inconnues supplémentaires hors combat.
|
||||
`/horde retour` ramène et soigne hors combat. Le prototype reste limité au centre
|
||||
du labo : aucune recette ou distribution économique n'est encore ajoutée aux
|
||||
mondes ordinaires.
|
||||
|
||||
Pour l'essai le plus simple, importer `Sanctuary-Test-beta.169.mrpack` dans Prism,
|
||||
puis créer un **nouveau** monde nommé exactement `horde-flat-168`. Le profil de
|
||||
test présélectionne **Sanctuary — Test rapide** et reconnaît ce nom pour construire
|
||||
une seule fois le cercle, remettre les cartes et placer le joueur. Un autre nom
|
||||
crée un monde de test plat ordinaire ; le MRpack normal n'active pas ce laboratoire.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- `horde169` : 3/3 GameTests ciblés ; `horde167` et `horde168` restent verts
|
||||
dans la matrice de compatibilité.
|
||||
- Parcours client Vulkan : PASS sur les trois cartes, avec révélation en main,
|
||||
départ/retour, cadence accélérée, roster varié, victoire et butins physiques.
|
||||
- Matrice complète rejouée par l'assemblage : 256/256 GameTests requis, puis
|
||||
`check`, `build`, `assemblePack` et `assembleTestPack` réussis. Une première
|
||||
passe sous forte charge avait fait échouer le déplacement aérien historique
|
||||
`companion019` ; ses 21 tests isolés puis la seconde matrice complète passent.
|
||||
- Pack normal : [Sanctuary-beta.169.mrpack](../build/Sanctuary-beta.169.mrpack),
|
||||
SHA-256 `72fcf169004cc4dc7e1bb3caf72c1e66cc935c79ac16173de9db8ef86d66eaea`.
|
||||
- Pack laboratoire :
|
||||
[Sanctuary-Test-beta.169.mrpack](../build/Sanctuary-Test-beta.169.mrpack),
|
||||
SHA-256 `a162f7e9ce88a177ac99934d4c9a7061ac67be062a31a36965a191dd3eb0423a`.
|
||||
|
||||
Les deux manifestes exportés déclarent `beta.169`, Minecraft 26.3 et Fabric
|
||||
Loader 0.19.5. Le pack laboratoire contient en plus
|
||||
`sanctuary-test-beta.169.jar` ; aucun canal packwiz ni aucune instance Prism n'a
|
||||
été modifié.
|
||||
@@ -0,0 +1,120 @@
|
||||
# beta.167 — prototype de carte de horde et socle d'épreuve
|
||||
|
||||
Branche `codex/communaute-economie-beta167`, socle beta.166. Premier essai issu du
|
||||
[cadrage communautaire](ecosysteme-communaute-economie.md). Minecraft **26.3**,
|
||||
dépendances inchangées ; vérifications graphiques Vulkan uniquement.
|
||||
|
||||
## Contrat de ce prototype
|
||||
|
||||
Une arène ronde de laboratoire, diamètre extérieur 41 blocs, accueille un
|
||||
**socle d'épreuve** au centre (`sanctuary:trial_pedestal`). Une **carte d'épreuve ·
|
||||
Horde de zombies** (`sanctuary:horde_trial_card`) permet d'ouvrir les inscriptions.
|
||||
Ces identifiants sont nouveaux et stables. Le clic droit ouvre les contrôles.
|
||||
|
||||
De un à quatre joueurs s'inscrivent volontairement, passent prêts, puis l'hôte
|
||||
lance. Cinq secondes précèdent la première vague ; six secondes séparent les
|
||||
suivantes. Trois vagues : 4, 6 et 8 zombies en solo ; deux zombies supplémentaires
|
||||
par coéquipier et par vague. Chaque vague dispose de trois minutes. L'effectif
|
||||
est fixé au départ, sans renfort tardif. Tous les zombies doivent être vaincus.
|
||||
|
||||
Le socle passe du vert au bleu pendant l'attente, rouge pendant le combat, or
|
||||
après victoire, sombre après interruption. Un affichage indique la vague et les
|
||||
ennemis restants. La carte du prototype reste réutilisable : **aucun butin ni XP
|
||||
de récompense** n'est distribué. Les statistiques natives de combat continuent
|
||||
d'exister. Ni capes, ni familiers exclusifs, ni incubation d'XP ne sont livrés.
|
||||
|
||||
Quitter le rayon de 15 blocs, mourir, se déconnecter ou passer en créatif/spectateur
|
||||
retire de l'épreuve. Les autres participants peuvent continuer. Le départ de
|
||||
l'hôte avant lancement annule les inscriptions. Un groupe vide, un délai écoulé,
|
||||
une difficulté Paisible ou la disparition d'un ennemi vivant interrompt l'épreuve.
|
||||
Un ennemi disparu n'est jamais compté comme une victoire. Les zombies de test ne
|
||||
brûlent pas au soleil, ne ramassent pas d'objets et ne frappent que les participants.
|
||||
Le laboratoire désactive le PvP et conserve l'inventaire à la mort.
|
||||
|
||||
## Données, interruption et limites
|
||||
|
||||
Les sessions sont volontairement éphémères. Un arrêt interrompt la partie ; les
|
||||
zombies de l'épreuve sont retirés. Après un crash, leurs tags permettent de retirer
|
||||
les survivants au chargement. Aucune dette, récompense différée ou carte consommée
|
||||
n'existe à récupérer. Le socle est réarmé à la réouverture du labo.
|
||||
|
||||
Le socle et la carte n'ont pas de recette ni de génération naturelle. Un socle
|
||||
posé hors de la scène explicitement préparée ne lance rien. Le client ne peut
|
||||
ni installer une arène, ni choisir ses monstres, ni charger une région par paquet.
|
||||
Le serveur contrôle identité de session, révision, distance, inscription et état.
|
||||
|
||||
Le seul nouveau marqueur de scène est `horde-lab-167.txt`, dans le nouveau monde
|
||||
de développement : préparation réservée avant construction, état prêt après.
|
||||
Une préparation incomplète ou un socle manquant est conservé et refusé au
|
||||
redémarrage. Le volume entier doit être vide avant la première pose. Aucune
|
||||
ancienne sauvegarde, aucun chunk Sanctuary ni format de données existant n'est
|
||||
converti. Ne pas installer les nouveaux blocs dans un monde destiné à être
|
||||
rouvert avec beta.166 ; conserver le nouveau labo pour ce prototype.
|
||||
|
||||
Il reste à éprouver le rythme et la coopération avec des joueurs humains. Les
|
||||
cartes de découverte, clés/reliques, cartes collectionnables, quêtes quotidiennes,
|
||||
échanges, ballast et huit extensions restent de la conception.
|
||||
|
||||
## Essayer le laboratoire
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
|
||||
./gradlew :sanctuary-test:exportDuoLaunch
|
||||
python3 scripts/horde_lab.py prepare
|
||||
python3 scripts/horde_lab.py server
|
||||
# Dans un autre terminal :
|
||||
python3 scripts/horde_lab.py client
|
||||
```
|
||||
|
||||
Dossier neuf `build/horde-167/`, monde `horde-flat-167`, graine **167**, port
|
||||
loopback **25576**. Le script reprend seulement les arguments de lancement exportés,
|
||||
pas les sauvegardes ni paramètres du labo duo. Chaque connexion rejoint le cercle
|
||||
en aventure ; un équipement initial et des capacités de combat 10 cœurs/10 icônes
|
||||
de faim sont fournis à ce personnage de test. Hors épreuve, `/horde retour` ramène
|
||||
et soigne. L'ancien `build/duo/` et les installations personnelles sont préservés.
|
||||
|
||||
À l'accueil, créer son personnage si demandé. Au socle : **Présenter ma carte**,
|
||||
**Prêt**, puis **Lancer l'épreuve**. Les amis rejoignent et passent prêts depuis
|
||||
le même socle. Ce profil local hors ligne ne valide pas l'identité Discord et ne
|
||||
doit pas être exposé sur Internet.
|
||||
|
||||
## Vérifications et livraison
|
||||
|
||||
- `./gradlew check build assemblePack :sanctuary-test:exportDuoLaunch` exécuté :
|
||||
**252/253 GameTests réussis**, dont le scénario de horde. Le contrôle général
|
||||
échoue sur `Companion019GameTests.creatureProfilesActuallyMove` (déplacement
|
||||
aérien attendu). Journal : `build/horde167-full.log`.
|
||||
- Rejeu `check build` avec les groupes `companions,horde167` : **21/22 tests**,
|
||||
même échec de déplacement, horde réussie. Le code et le scénario de familier
|
||||
sont inchangés par ce chantier ; aucune conclusion de non-régression complète
|
||||
n'est revendiquée. L'[audit antérieur](audit-dragon-beta165.md) décrit notamment
|
||||
l'aléa du scénario. Journal : `build/horde167-focused-client.log`.
|
||||
- Validation finale ciblée : `runGameTest runClientGameTest assemblePack
|
||||
:sanctuary-test:exportDuoLaunch`, groupe `horde167`, client Horde167/Vulkan,
|
||||
avec `-x :sanctuary:check` pour ne pas rejouer les contrôles précédents.
|
||||
**BUILD SUCCESSFUL**, deux tests serveur requis réussis (dont le scénario
|
||||
horde), puis parcours client complet. Cette exclusion ne transforme pas le
|
||||
contrôle général précédent en réussite. Journal : `build/horde167-delivery.log`.
|
||||
- Serveur : deux personnages simulés, carte requise, consentement de chacun,
|
||||
lancement réservé à l'hôte, double lancement refusé, trois vagues adaptées
|
||||
à l'effectif, victoire, carte conservée, nettoyage à la sortie et interruption
|
||||
sur disparition d'un ennemi vivant. Une scène existante est refusée sans
|
||||
réécriture par le constructeur du labo.
|
||||
- Client natif Vulkan : clic droit réel sur le bloc, paquets d'inscription,
|
||||
préparation et lancement, trois vagues avec dégâts serveur natifs, victoire
|
||||
après 18 zombies en solo. Captures FR/EN, GUI 2/3 ; inspection visuelle de
|
||||
l'arène, du socle, des contrôles, du combat et du résultat. Marqueur
|
||||
`HORDE167_CLIENT_PASS`. Huit captures conservées dans `build/horde167-evidence/`.
|
||||
- Script Python compilé ; préparation répétée avec **cinq fichiers identiques**.
|
||||
Libellés FR/EN et liens locaux vérifiés. Démarrage dédié réel sur loopback,
|
||||
création de la nouvelle scène puis arrêt propre, journal
|
||||
`build/horde167-lab-server.log`. Redémarrage dédié réussi avec le marqueur
|
||||
`ready-v1` et le socle existant, sans reconstruire la scène ; journal
|
||||
`build/horde167-lab-restart.log`.
|
||||
- Packwiz assemblé et vérifié ; JAR interne beta.167 avec classes et ressources
|
||||
attendues. SHA-256 du JAR :
|
||||
`4d6cb640177d7904043c3eefe693a75fbdc4f4df48407adaae04cc7d632057e6`.
|
||||
|
||||
La coopération entre plusieurs clients humains et l'équilibrage restent à
|
||||
éprouver ; les personnages simulés ne les remplacent pas. Aucun artefact public,
|
||||
tag, canal packwiz ou instance Prism mis à jour. Prototype intégré localement sur `main`, conformément à la demande du créateur.
|
||||
@@ -0,0 +1,102 @@
|
||||
# beta.170 — carte de horde native et langage de particules
|
||||
|
||||
> La [beta.171](horde-families-beta171.md) ordonne les monstres et les butins sur
|
||||
> la carte, ajoute les familles dominantes et étend le silence visuel au socle.
|
||||
|
||||
Suite de l'[invasion continue beta.169](horde-invasion-beta169.md), branche
|
||||
`codex/horde-map-native-beta170`. Minecraft 26.3, dépendances inchangées.
|
||||
|
||||
## Objet et découverte
|
||||
|
||||
`sanctuary:horde_trial_card` est désormais une sous-classe de la carte native
|
||||
Minecraft, au lieu d'un objet ordinaire ou d'une carte remplie renommée. Son
|
||||
identifiant reste stable. Un exemplaire vierge est disponible dans l'onglet
|
||||
créatif **Outils et utilitaires** sous le nom « Carte de horde inconnue ».
|
||||
|
||||
Le premier passage en main lui attribue côté serveur :
|
||||
|
||||
- un identifiant de carte natif distinct ;
|
||||
- une difficulté parmi Errants, Meute et Légion ;
|
||||
- une graine propre, donc un ordre de monstres et des butins propres ;
|
||||
- une illustration verrouillée 128 × 128 correspondant au contenu réel.
|
||||
|
||||
Deux nouveaux exemplaires vierges découvrent deux identités différentes. Ranger
|
||||
puis reprendre le même exemplaire ne le relance jamais : son identité, son dessin
|
||||
et sa difficulté restent stables. Cette distinction évite de choisir sa
|
||||
difficulté en changeant simplement d'emplacement d'inventaire. Si plusieurs
|
||||
cartes créatives vierges sont empilées, seule celle tenue se découvre ; les
|
||||
autres retournent vierges dans l'inventaire et attendent leur propre prise en main.
|
||||
|
||||
La carte appartient à `#minecraft:clonable_maps`. La recette native 26.3 avec
|
||||
des cartes vierges peut donc dupliquer un exemplaire déjà découvert ; les copies
|
||||
conservent volontairement la même identité et la même consommation, comme les
|
||||
cartes d'exploration natives. Les cartes remplies beta.168 et beta.169 restent
|
||||
reconnues et jouables.
|
||||
|
||||
Cette approche s'inspire des cartes d'exploration devenues des objets distincts
|
||||
en 26.3, et notamment de la nouvelle carte des campements abandonnés. Sanctuary
|
||||
fait un choix différent sur un point : sa carte inconnue est volontairement
|
||||
accessible dans l'inventaire créatif pour le laboratoire. Voir les
|
||||
[notes officielles Minecraft Java 26.3](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-3).
|
||||
|
||||
## Langage visuel sans chat
|
||||
|
||||
Le parcours des cartes de horde n'envoie plus de message Sanctuary dans le chat
|
||||
ni dans la barre d'action. Toute l'information immédiate est spatiale :
|
||||
|
||||
| Moment | Signal visuel |
|
||||
| --- | --- |
|
||||
| Découverte | 1, 2 ou 3 connexions convergent vers la carte selon la difficulté, avec glyphes SGA |
|
||||
| Activation valide | un anneau de connexions converge vers la brèche centrale |
|
||||
| Arrivée | la brèche se relie au monstre qui jaillit, entouré de glyphes |
|
||||
| Invasion en cours | une pulsation relie chaque monstre vivant à la brèche toutes les secondes |
|
||||
| Mort réelle | les glyphes se dispersent avec une brève impulsion |
|
||||
| Victoire | douze connexions convergent avec une explosion de totems |
|
||||
| Interruption | les connexions se dispersent avec une fumée sombre |
|
||||
| Usage impossible | un filet de fumée descend de la carte vers le joueur |
|
||||
|
||||
Les connexions utilisent la particule native `minecraft:vault_connection` ; les
|
||||
glyphes restent ceux de `minecraft:enchant`, donc l'alphabet SGA fourni par le
|
||||
jeu. Aucune texture, interface ou canal réseau de HUD propre à la carte n'est
|
||||
nécessaire.
|
||||
|
||||
Les messages du vieux socle beta.167 sont conservés uniquement pour ce prototype
|
||||
historique. Ils ne font pas partie du parcours de la carte native.
|
||||
|
||||
## Essai dans le laboratoire
|
||||
|
||||
Importer `Sanctuary-Test-beta.170.mrpack` dans Prism, puis créer un **nouveau**
|
||||
monde nommé exactement `horde-flat-168`. Le profil de test construit le cercle
|
||||
et fournit les trois cartes déterministes de démonstration. Pour vérifier la
|
||||
découverte aléatoire, prendre « Carte de horde inconnue » dans **Outils et
|
||||
utilitaires**, la tenir en main, revenir en survie puis l'utiliser dans le cercle.
|
||||
|
||||
Le MRpack normal contient le même objet, mais la distribution en survie depuis
|
||||
les campements n'est pas encore activée. Ce chantier adopte leur modèle d'objet
|
||||
et de découverte sans modifier la génération, les chunks ou les sauvegardes.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- GameTests `horde170` : type natif, entrée créative vierge, découverte unique,
|
||||
stabilité à la reprise, diversité entre deux exemplaires, illustration et
|
||||
compatibilité avec la recette native de duplication.
|
||||
- Parcours client Vulkan : présence dans Outils et utilitaires, découverte en
|
||||
main, trois difficultés, accélération continue, signaux de particules, victoire
|
||||
et butins ; aucun message de jeu Sanctuary émis par les cartes.
|
||||
- Matrice complète : 257/257 GameTests requis, puis `check build` réussi.
|
||||
- `assemblePack assembleTestPack` réussi après cette matrice ; intégrité ZIP,
|
||||
version `beta.170`, Minecraft 26.3, Fabric Loader 0.19.5 et JAR embarqués
|
||||
vérifiés.
|
||||
- Pack normal : [Sanctuary-beta.170.mrpack](../build/Sanctuary-beta.170.mrpack),
|
||||
SHA-256 `e96ad55115074e898e94c3eccff983bd76301b0aa577c83b8a5e3feca0a719f8`.
|
||||
- Pack laboratoire :
|
||||
[Sanctuary-Test-beta.170.mrpack](../build/Sanctuary-Test-beta.170.mrpack),
|
||||
SHA-256 `d84aa95c230b6484c9282534245401de0dcf069e9d4e5c9d5e7d6238bb2f84e0`.
|
||||
|
||||
Le JAR Sanctuary embarqué correspond au build vérifié, SHA-256
|
||||
`c8cd436bdc65c8f97ea6383f6f4ae63836b4b6e7dbf35918b2be86152e38d344`.
|
||||
Le profil laboratoire contient en plus `sanctuary-test-beta.170.jar`, SHA-256
|
||||
`ddb1023285a39f47d4fccd8377aa4ec297f41b9750eab3f6fe2868abcb62da50`.
|
||||
|
||||
Aucun canal packwiz, serveur personnel, monde existant ou instance Prism n'est
|
||||
modifié par cette livraison locale.
|
||||
@@ -0,0 +1,46 @@
|
||||
# beta.172 — cartes de horde utilisables en jeu
|
||||
|
||||
Suite du profil dimensionnel [beta.171](horde-families-beta171.md). Le contenu
|
||||
des cartes, leurs familles et leur format sauvegardé ne changent pas.
|
||||
|
||||
## Contrat runtime
|
||||
|
||||
Le clic droit sur une carte révélée tente d'ouvrir la brèche à la position
|
||||
actuelle du joueur. Aucun cercle, socle, monde de test ou enregistrement de
|
||||
laboratoire n'est requis. Le pouvoir fonctionne en Survie et en Créatif ; le
|
||||
mode Spectateur et la difficulté Paisible restent refusés.
|
||||
|
||||
Après validation de toutes les apparitions, l'identité de carte est marquée
|
||||
comme dépensée et un exemplaire est retiré de la main côté serveur. L'inventaire
|
||||
est immédiatement resynchronisé, y compris en Créatif. Une copie de la même
|
||||
carte ne peut donc pas rejouer l'invasion. Si la préparation échoue, la carte
|
||||
reste intacte.
|
||||
|
||||
L'invasion n'écrit aucun bloc. Chaque arrivée essaie plusieurs angles autour du
|
||||
joueur et cherche un sol libre entre six blocs sous et six blocs au-dessus de la
|
||||
hauteur d'activation. Aucun chunk supplémentaire n'est chargé. Une zone trop
|
||||
encombrée, liquide, sans sol ou hors frontière refuse proprement l'ouverture par
|
||||
le glyphe de particules existant.
|
||||
|
||||
Les joueurs créatifs présents dans le rayon restent associés à l'invasion de
|
||||
carte. Leur invulnérabilité Vanilla n'est pas modifiée : la brèche demeure
|
||||
dangereuse pour les joueurs en Survie, les créatures et l'environnement alentour.
|
||||
Le vieux socle beta.167 conserve son inscription réservée aux joueurs en Survie.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- GameTests `horde172` : activation et consommation hors laboratoire en Créatif
|
||||
puis en Survie ; centre de session égal à la position du joueur.
|
||||
- Terrain étagé : préparation, consommation et première apparition à la hauteur
|
||||
du sol local, sans plancher de laboratoire.
|
||||
- Régressions `horde167` à `horde172` : 10/10 GameTests requis.
|
||||
- Matrice complète `./gradlew check build` : 261/261 GameTests requis et
|
||||
compilation complète réussis.
|
||||
- Pack normal `Sanctuary-beta.172.mrpack` : SHA-256
|
||||
`9e0cc6f07195b094963c03bce52c971ad7072990ac7976dff34f7647be176d7e`.
|
||||
- Pack laboratoire `Sanctuary-Test-beta.172.mrpack` : SHA-256
|
||||
`60565cd9bf28708f398a32da38f1fce05789a1d6bfc513aab94cfe90932d82df`.
|
||||
- JAR Sanctuary embarqué dans les deux packs : SHA-256
|
||||
`fb72d4d3efcd50d3ba67b0899faf9ffca5c2451150c5f169e2a0d030c9b6d7ae` ;
|
||||
JAR laboratoire :
|
||||
`67a7399372f05e384a03461c45730edc0459cbe342cf57bcb280c5c849086620`.
|
||||
@@ -0,0 +1,68 @@
|
||||
# RENDER-149 — Distances PBR et SSR indépendantes
|
||||
|
||||
Branche `codex/separate-reflection-distances-beta149`, socle beta.148 `6f87144`.
|
||||
|
||||
- Deux réglages : Distance PBR et Distance SSR, chacun à 64 blocs par défaut.
|
||||
Choix 16, 32, 64, 128, 256 blocs, enregistrés séparément.
|
||||
- Le PBR conserve son propre fondu et sa propre limite de portée. Le SSR
|
||||
utilise sa distance pour les surfaces réfléchissantes et sa recherche de
|
||||
paysage. Le maillage et la sélection des surfaces couvrent le maximum des
|
||||
deux portées actives, afin que réduire l’une ne coupe pas l’autre.
|
||||
- Ancien défaut commun 32 migré une fois vers PBR 64 ; nouveau réglage SSR 64.
|
||||
Les anciennes valeurs PBR différentes de 32 restent conservées. Après la
|
||||
migration, un choix explicite 32 est conservé comme les autres valeurs.
|
||||
- Option nommée exactement « SSR » en français et en anglais, sans la mention
|
||||
« expérimental ». Les autres options expérimentales du jeu sont inchangées.
|
||||
- Intensités PBR 50 % et SSR 20 %, rendu solaire diffus de beta.148 conservés.
|
||||
SSR conserve sa dépendance au PBR et les limites du paysage visible/chargé
|
||||
et du budget de maillage.
|
||||
|
||||
- Les feuilles (et fibres de laine, même profil entièrement mat) ne reçoivent
|
||||
plus de large éclat spéculaire blanc. Leur relief normal reste présent.
|
||||
La pierre et le bois retrouvent exactement leur poids spéculaire précédent,
|
||||
comme les surfaces polies, les métaux, l’eau et le verre. La suppression
|
||||
concerne les profils non métalliques de rugosité 0,98, avec transition 0,90–0,98.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Contrôles de persistance indépendante, valeurs par défaut et libellés FR/EN.
|
||||
Scènes graphiques avec PBR variable/SSR 256 puis PBR 256/SSR variable.
|
||||
- Suite PBR/préférences Vulkan réussie : deux défauts 64 et persistance
|
||||
indépendante sur 16/32/64/128/256 ; libellés FR/EN et nom SSR vérifiés.
|
||||
Journal : `build/beta149-pbr-vulkan.log`.
|
||||
- Suites SSR Vulkan et OpenGL réussies avec les portées dissociées, F5,
|
||||
intersections, eau/verre/métal, soleil/lune, OFF/zéro et rechargement.
|
||||
Journaux : `build/beta149-ssr-vulkan.log`, `build/beta149-ssr-opengl.log`.
|
||||
Ces passes précèdent l’ajustement final du profil entièrement mat.
|
||||
- Suite PBR Vulkan finale avec feuillage réussie : 170 172 pixels de feuilles
|
||||
contrôlés, saturation relative 1,00007, relief visible sur 63 236 pixels.
|
||||
Journal : `build/beta149-foliage-vulkan.log` ; captures correspondantes
|
||||
dans `build/evidence/beta149-foliage-vulkan/`.
|
||||
- Bois et briques après recentrage sur le feuillage : aucun pixel modifié
|
||||
par rapport à la capture précédant l’ajustement, sur les zones de contrôle
|
||||
de 26 304 et 40 896 pixels respectivement.
|
||||
- `./gradlew check build` exécuté dans l’instantané isolé : 252 tests serveur,
|
||||
229 réussis et 23 échecs, mêmes identifiants qu’en beta.148. Aucun nouvel échec.
|
||||
Journal : `build/beta149-check-build-isolated.log` ; comparaison :
|
||||
`build/beta149-server-failures.json`. L’ajustement final du feuillage concerne
|
||||
seulement le shader et son test client. Le contrôle global reste en échec.
|
||||
|
||||
- Suite PBR OpenGL finale réussie également : 170 199 pixels de feuilles,
|
||||
saturation relative 1,00001, relief visible sur 63 263 pixels.
|
||||
Journal : `build/beta149-foliage-opengl.log` ; captures correspondantes
|
||||
dans `build/evidence/beta149-foliage-opengl/`.
|
||||
- Assemblage final réussi : `./gradlew build assemblePack -x :sanctuary:check`,
|
||||
sans répéter les contrôles purs/serveur exécutés dans l’instantané.
|
||||
Journal : `build/beta149-build-pack.log`. Cette exclusion ne transforme
|
||||
pas le contrôle complet en réussite.
|
||||
|
||||
## Artefact
|
||||
|
||||
[Sanctuary-beta.149.mrpack](../build/Sanctuary-beta.149.mrpack), copié aussi dans
|
||||
`sanctuary-beta/build/` avec les autres versions. Archive vérifiée, un seul JAR
|
||||
Sanctuary beta.149 identique au JAR construit, shaders identiques aux sources,
|
||||
libellés SSR et deux portées FR/EN vérifiés. Minecraft 26.3 / Loader 0.19.5.
|
||||
Taille : 10 520 465 octets. SHA-256 :
|
||||
`ef5519d9a0e2006b865b62371a6f8712db02ab138aa9698339d6fdb02fb4befa`.
|
||||
Reçu : `build/beta149-artifacts.json`. Aucune installation Prism ni publication.
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
# MENU-271 — Habitant en deux colonnes et deux rangées
|
||||
|
||||
Demande du 24 octobre 2026, continuation de `codex/inhabitant-property`.
|
||||
Version locale `beta.271`, après le premier lot de propriété beta.270.
|
||||
|
||||
## Résultat demandé
|
||||
|
||||
- Pause retrouve **Combats / Battles** dans **Communauté**, sous Habitant.
|
||||
Story et Factions ne figurent pas dans ce menu.
|
||||
- Habitant présente une barre horizontale **Propriété — Factions — Familier**
|
||||
en haut, sur les mêmes boutons natifs que les catégories de Découvertes.
|
||||
- Le personnage et son nom occupent la cellule supérieure gauche, avec
|
||||
des marges autour de la silhouette. La biographie est en haut à droite.
|
||||
- Sous la biographie, un tableau de bord présente le temps joué, les blocs
|
||||
posés, les blocs cassés, les créatures tuées, les morts et les progrès obtenus.
|
||||
Son bouton Statistiques ouvre la page générale complète existante.
|
||||
- Sous le personnage, l’activité occupe tout le panneau inférieur gauche,
|
||||
jusqu’en bas du contenu. La liste affiche les dernières activités disponibles
|
||||
dans son propre défilement, et **Historique reste dans son pied de panneau**.
|
||||
Il ouvre les 24 dernières activités disponibles ; l’ancien journal des cycles
|
||||
et achats reste accessible dans cette page.
|
||||
- Aucun aperçu, nom ou réglage du familier ne figure dans Habitant. Son bouton
|
||||
ouvre la page dédiée avec l'aide alliée, le carnet, les choix en attente et
|
||||
les contrôles opérateur admissibles, en plus des commandes déjà présentes.
|
||||
- Propriété, Factions, Familier, Statistiques et Historique reviennent à
|
||||
Habitant ; Combats revient à Pause. Le pied de page natif est conservé.
|
||||
|
||||
Les textes FR/EN, nombres compacts et infobulles gardent les valeurs et titres
|
||||
complets accessibles dans les petits formats. Biographie, statistiques et
|
||||
activité défilent indépendamment, et conservent leur position à la mise à jour
|
||||
des données. Les hauteurs s’adaptent aux échelles GUI 2, 3 et 4 ; la silhouette
|
||||
garde de l’air autour d’elle dans la cellule supérieure gauche.
|
||||
|
||||
## Sources et contrat de données
|
||||
|
||||
L'aperçu est une **lecture personnelle côté serveur**, via l'acteur authentifié
|
||||
du protocole communautaire existant. Aucun UUID du joueur à consulter n'est
|
||||
accepté depuis le client. Les opérations de fichier ou JDBC restent dans le
|
||||
worker communautaire ; les données Minecraft sont copiées sur le thread serveur.
|
||||
|
||||
- Temps, minage, morts et créatures tuées : compteurs Minecraft existants.
|
||||
Le temps est celui des ticks de jeu Minecraft. Le minage suit les règles de
|
||||
comptage vanilla ; les destructions en Créatif ne sont pas inventées.
|
||||
- Pose : sommes des poses confirmées du Blocodex, y compris les identifiants
|
||||
sauvegardés d'un mod absent. Les usages d'objets ne sont pas assimilés à des
|
||||
poses. Une source endommagée est signalée indisponible, jamais remise à zéro.
|
||||
- Progrès : accomplissements natifs ayant un affichage public ; les recettes
|
||||
et critères incomplets ne sont pas présentés comme des achievements.
|
||||
La date est le moment où toutes les exigences deviennent satisfaites :
|
||||
un critère optionnel obtenu plus tard ne déplace pas cette date.
|
||||
- Activité : publications, annonces, réponses et bulletins personnels visibles,
|
||||
progrès achevés et achats/cycles/factions déjà datés dans les sauvegardes.
|
||||
Le contenu intégral des publications et leurs photos ne sont pas transmis.
|
||||
Les publications modérées et les réponses à un parent masqué sont exclues.
|
||||
- Tri décroissant par date avec identifiants stables pour les égalités,
|
||||
dédoublonnage et limite de 24. Les anciennes données sont lisibles sans
|
||||
journal supplémentaire. Une panne communautaire conserve l'aperçu natif
|
||||
et signale que les publications manquent temporairement.
|
||||
|
||||
Ce panneau n'enregistre pas le texte du chat, des messages privés ou toutes
|
||||
les actions du monde. Il réunit les événements déjà persistants et datés ci-dessus.
|
||||
Aucun format de sauvegarde, coût, droit, règle de jeu ou monde personnel ne
|
||||
change. Aucun familier n'est retiré de l'inventaire ni rappelé en ouvrant Habitant.
|
||||
Les artefacts beta.270 déjà exportés sont conservés.
|
||||
|
||||
## Vérifications
|
||||
|
||||
`check build assemblePack` réussit en **2 min 37 s**, avec **15 GameTests
|
||||
serveur ciblés**. Le parcours Vulkan FR/EN aux échelles GUI 2, 3 et 4 réussit
|
||||
en **45 s** et utilise un nouveau monde
|
||||
plat de graine 271. Il vérifie la barre supérieure, les deux colonnes et deux
|
||||
rangées, les marges du personnage, le panneau d’activité jusqu’en bas et son
|
||||
bouton Historique, la biographie et les statistiques à droite, les défilements
|
||||
et la conservation de leur position après rafraîchissement.
|
||||
|
||||
Des compteurs serveur connus (une heure de ticks ajoutée, deux poses et
|
||||
25 blocs minés), un progrès natif et une annonce réellement publiée dans le
|
||||
monde de développement sont relus par le réseau. Le parcours conserve aussi
|
||||
les retours Propriété/Factions/Familier/Historique, la modification du consentement
|
||||
à l’aide alliée et l’achat d’une extension de propriété.
|
||||
|
||||
Les tests serveur ciblés couvrent les données personnelles, les dates des
|
||||
critères OR, les statistiques sans double comptage, les publications masquées,
|
||||
les sources persistantes lues sans modification, les pannes communautaires et
|
||||
le dédoublonnage. Le test de fichier communautaire couvre l’isolation des auteurs,
|
||||
les réponses sous un parent masqué, l’ordre et la limite de 24.
|
||||
La requête MariaDB reste paramétrée et bornée ; aucun serveur SQL réel n’a été
|
||||
exercé pour cette livraison.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=overview271,property270,progression,menus \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryInhabitant271ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
Une exécution exploratoire de la suite supplémentaire `companions` a échoué
|
||||
sur `creatureProfilesActuallyMove` : « Native navigation produces an actual
|
||||
airborne displacement ». Les règles de déplacement ne sont pas modifiées ici ;
|
||||
ce comportement n’est pas validé ni corrigé par ce lot d’interface. Le contrôle
|
||||
Vulkan du bouton Familier et de son consentement est distinct de cet essai.
|
||||
Résumé conservé dans `build/inhabitant271-exploratory-navigation.txt`.
|
||||
|
||||
Journaux locaux ignorés : `build/inhabitant271-client-vulkan.log` et
|
||||
`build/inhabitant271-check-build-pack.log`. Les **32 captures** sont conservées
|
||||
dans `build/inhabitant271-screenshots/`. Les fiches Habitant FR/EN, les formats
|
||||
GUI 2/4 et la page d’activité ont été inspectés.
|
||||
|
||||
Export local vérifié : [Sanctuary-beta.271.mrpack](../build/Sanctuary-beta.271.mrpack),
|
||||
16 483 048 octets. Intégrité ZIP, versions Minecraft/Fabric, dépendances et JAR
|
||||
Sanctuary/JEI comparés aux builds. Le MRpack beta.270 reste identique par SHA-256.
|
||||
Reçu de validation : `build/inhabitant271-validation.json`.
|
||||
Aucune publication de canal ni synchronisation d’instance personnelle.
|
||||
@@ -0,0 +1,120 @@
|
||||
# beta.166 — inscription web et reprise de l’accueil
|
||||
|
||||
Intégration de la PR #1 de Chris (`8de569b`), avec son historique conservé par
|
||||
le merge `ad960ef`, sur beta.165 et ses 252 GameTests actualisés.
|
||||
|
||||
## Parcours
|
||||
|
||||
Le joueur ouvre son dossier `/candidature` sur le site, se connecte à Discord,
|
||||
dépose sa candidature et récupère le code après acceptation/parrainage. Le
|
||||
bouton **Récupérer mon code** de Hello World ouvre ce dossier, sur le site
|
||||
configuré par le serveur, avec la confirmation de lien native de Minecraft.
|
||||
Le code reste obligatoire avant la création du personnage. Gazette et tableau
|
||||
restent en consultation seule sur le site.
|
||||
|
||||
Sans configuration d’accès, le mod autonome garde l’accueil sans code.
|
||||
Avec une configuration partielle/invalide, l’accueil reste fermé. Un habitant
|
||||
déjà arrivé n’a pas à présenter de code ni à connaître le nouveau payload d’accès.
|
||||
Les autres contrôles de compatibilité Sanctuary restent appliqués.
|
||||
|
||||
## Contrat API de reprise
|
||||
|
||||
Les POST authentifiés `/api/v1/access-codes/verify` et `/redeem` reçoivent :
|
||||
`code`, `minecraft_username` et `admission_id` (UUID). Le serveur calcule cette
|
||||
admission à partir d’un identifiant de monde persistant et de l’UUID du joueur ;
|
||||
le client ne la choisit jamais. Un autre joueur ou un autre monde possède une
|
||||
admission différente, même à graine identique.
|
||||
|
||||
La consommation en base conserve `used_at` et `admission_id` dans la même
|
||||
transaction verrouillée. Une répétition de la même admission et du même pseudo
|
||||
retourne `valid: true, reason: resumed`, le pseudo, le Discord et l’admission.
|
||||
`verify` accepte aussi cette reprise ; le bouton de confirmation redevient
|
||||
accessible. Une autre admission retourne `already_used` sans identité. Un pseudo
|
||||
incorrect ou un code révoqué reste refusé. Les codes anciennement consommés sans
|
||||
reçu restent refusés ; leur récupération nécessite une réémission par le staff.
|
||||
|
||||
Le mod exige une réponse positive portant son admission exacte. Il n’accepte
|
||||
plus `already_used` sur la seule présence d’un pseudo et d’un Discord. Une
|
||||
réponse positive arrivée après déconnexion est quand même enregistrée, mais ne
|
||||
crée pas le personnage hors connexion. Si la réponse est entièrement perdue,
|
||||
le même code est vérifiable et consommable à nouveau au prochain accueil.
|
||||
Le reçu local sauvegardé permet de terminer une création déjà autorisée.
|
||||
Les erreurs réseau et de jeton proposent une nouvelle vérification.
|
||||
|
||||
## Migration et activation
|
||||
|
||||
1. Sauvegarder la base web et les fichiers de progression du serveur.
|
||||
2. Appliquer la migration additive web `add_admission_receipt_to_access_codes_table`
|
||||
(colonne UUID nullable, aucune donnée supprimée), puis déployer le service API.
|
||||
3. Installer beta.166 sur serveur et clients des nouveaux arrivants.
|
||||
4. Configurer `SANCTUARY_APP_URL` et `SANCTUARY_API_TOKEN`, ou
|
||||
`config/sanctuary/access.json` (`appUrl`, `token`). Le jeton reste serveur.
|
||||
Utiliser HTTPS hors du labo local et un serveur Minecraft en online-mode pour
|
||||
authentifier les UUID ; le labo offline ne prouve pas l’identité d’un compte.
|
||||
|
||||
Dans le monde, `data/sanctuary-admission-id` est créé atomiquement avant tout
|
||||
appel API et doit être sauvegardé avec `data/sanctuary-access.json`. Aucun code
|
||||
brut ni jeton n’est enregistré dans ces fichiers. Leur corruption ferme l’accès
|
||||
et conserve les preuves. Les formats habitants/starter et les chunks restent
|
||||
inchangés. Ne pas supprimer l’identifiant d’admission pour « réparer » un accès.
|
||||
|
||||
Retour arrière : conserver la colonne web et les reçus, désactiver explicitement
|
||||
l’accès si l’on revient à un ancien mod (cela réouvre l’accueil sans code).
|
||||
Ne pas exécuter le rollback de migration après consommation : il supprimerait
|
||||
les reçus nécessaires à la reprise. Pas de déploiement public implicite.
|
||||
|
||||
## Laboratoire
|
||||
|
||||
Le monde beta.160 existant est conservé. La reprise de l’introduction utilise
|
||||
un nouveau monde de développement ; les réglages graphiques et anciens JAR sont
|
||||
conservés. `scripts/duo_lab.py server --intro` joue la vraie introduction sur le
|
||||
monde plat ; sans cette option, le profil de test continue de la sauter.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- `check build assemblePack` réussit (10 min 12 s), avec **252/252 GameTests**.
|
||||
Trace : `build/access166-full.log`.
|
||||
- Smoke du contrat et du ledger : reprise, mauvais compte, mauvais reçu, absence
|
||||
de reçu, isolation entre mondes de même graine, persistance et corruption.
|
||||
- `access166Interop` réussit contre la vraie API PHP/MariaDB locale : réponse de
|
||||
consommation ignorée, nouveau ledger, nouvelle vérification et confirmation,
|
||||
refus d’un autre joueur et d’une autre admission (`build/access166-interop.log`).
|
||||
- Test client Vulkan : vrai handshake Hello World, endpoint HTTP contrôlé qui
|
||||
consomme puis répond 503, nouvelle vérification, confirmation et un seul reçu
|
||||
bound. Ce test n’utilise pas Discord et ne prétend pas vérifier OAuth.
|
||||
- Site : 12 tests inscription/candidature (68 assertions), puis 31 tests ciblés
|
||||
inscription/redirection Discord/communauté (258 assertions), tous réussis.
|
||||
Pint passe. Suite web entière : 74 réussis, 1 ignoré et 1 échec préexistant
|
||||
`PlayerModerationTest::test_an_administrator_can_open_a_player_profile`
|
||||
(ancien libellé « Nommer admin »). Reproduit dans un instantané de HEAD avant
|
||||
modification ; pas une régression de l’inscription.
|
||||
- Base locale sauvegardée avant la migration, puis migration additive appliquée.
|
||||
Le vrai OAuth Discord reste à valider avec les identifiants de l’application ;
|
||||
aucun contournement d’authentification ou compte de démonstration pour le joueur
|
||||
n’est installé. Un compte API jetable distinct sert uniquement à l’interop.
|
||||
- Aucun déploiement sur sanctuary-minecraft.net, aucun push/fusion distante,
|
||||
aucune modification de l’ancienne sauvegarde du labo ni des JAR archivés.
|
||||
|
||||
Après la passe complète, le retour immédiat de la vérification en cache a été
|
||||
ajusté pour qu’une nouvelle tentative ne reste pas sans réponse pendant la
|
||||
limite d’une seconde. Le scénario client exerce précisément cette reprise.
|
||||
`check build assemblePack` a ensuite réussi avec les 6 GameTests de progression
|
||||
ciblés (`build/access166-final.log`). La disposition compacte a été resserrée
|
||||
pour garder tous les contrôles dans un GUI de 240 pixels de haut ; ses captures
|
||||
FR/EN et assertions de limites sont vérifiées par le scénario client.
|
||||
|
||||
Le correctif web est enregistré dans `f36cc36`. Les identifiants OAuth fournis
|
||||
par l’utilisateur sont chargés depuis le `.env` privé et la redirection réelle
|
||||
vers Discord fonctionne avec le callback local. Le retour authentifié reste
|
||||
à confirmer après la connexion/autorisation de l’utilisateur.
|
||||
|
||||
La livraison finale et les captures compactes passent dans
|
||||
`build/access166-delivery.log` : scénario client Vulkan FR/EN et assemblage du
|
||||
pack. Cette dernière commande exclut `:sanctuary:check` pour éviter une troisième
|
||||
exécution générale après les deux contrôles réussis ci-dessus ; elle ne remplace
|
||||
pas ces résultats. La seule modification de jeu depuis le contrôle ciblé est
|
||||
la disposition compacte, couverte par ce dernier test client.
|
||||
|
||||
Le labo reste arrêté, configuré pour `duo-registration-166`. L'ancien
|
||||
`duo-flat-160` n'est pas modifié. Lancement prévu après connexion au dossier web :
|
||||
`python3 scripts/duo_lab.py server --memory 768 --intro`, puis le client habituel.
|
||||
@@ -0,0 +1,278 @@
|
||||
{
|
||||
"version": "beta.248",
|
||||
"retrieved": "2026-10-08",
|
||||
"encoding": "OGG Vorbis, mono, 32000 Hz, q4",
|
||||
"changes": "Trim, frequency filtering, mild noise reduction, loudness adjustment, 60 ms fades, mono re-encoding",
|
||||
"files": [
|
||||
{
|
||||
"species": "brown_cicada",
|
||||
"file": "cicada_brown.ogg",
|
||||
"title": "Aburazemi 07z7315.ogg",
|
||||
"author": "ISAKA Yoji (Cory)",
|
||||
"source": "https://commons.wikimedia.org/wiki/File:Aburazemi_07z7315.ogg",
|
||||
"download": "https://upload.wikimedia.org/wikipedia/commons/d/d2/Aburazemi_07z7315.ogg",
|
||||
"license": "CC BY 2.1 Japan",
|
||||
"license_url": "https://creativecommons.org/licenses/by/2.1/jp/",
|
||||
"input_sha256": "621f514c83e8096e1ee8f6c40e6a6cdeb4ea8227584e74f34c86724e18596471",
|
||||
"sha256": "083751d055c07086457fe8c0198be90429a0b487b6a0c458f2362a8e5c793e39",
|
||||
"start_seconds": 25,
|
||||
"duration_seconds": 4,
|
||||
"filters": "highpass=f=800,lowpass=f=8500,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=3.94:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "4.000000"
|
||||
}
|
||||
},
|
||||
"notes": "Graptopsaltria nigrofuscata, field recording"
|
||||
},
|
||||
{
|
||||
"species": "robust_cicada",
|
||||
"file": "cicada_robust.ogg",
|
||||
"title": "Hyalessa maculaticollis v01.ogg",
|
||||
"author": "Σ64",
|
||||
"source": "https://commons.wikimedia.org/wiki/File:Hyalessa_maculaticollis_v01.ogg",
|
||||
"download": "https://upload.wikimedia.org/wikipedia/commons/9/9b/Hyalessa_maculaticollis_v01.ogg",
|
||||
"license": "CC BY 3.0",
|
||||
"license_url": "https://creativecommons.org/licenses/by/3.0/",
|
||||
"input_sha256": "a43db3363bf829af3db9d4fbd576a778e20f47b1a2caf8cff8c7963ee5ea2547",
|
||||
"sha256": "c6117adf6dc03d83e12e66acf20221bead2fda1016cffe49ca78e1d81980cb30",
|
||||
"start_seconds": 12,
|
||||
"duration_seconds": 5.5,
|
||||
"filters": "highpass=f=800,lowpass=f=8500,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=5.44:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "5.482219"
|
||||
}
|
||||
},
|
||||
"notes": "Hyalessa maculaticollis, field recording"
|
||||
},
|
||||
{
|
||||
"species": "walker_cicada",
|
||||
"file": "cicada_walker.ogg",
|
||||
"title": "Meimuna opalifera v02.ogg",
|
||||
"author": "Σ64",
|
||||
"source": "https://commons.wikimedia.org/wiki/File:Meimuna_opalifera_v02.ogg",
|
||||
"download": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Meimuna_opalifera_v02.ogg",
|
||||
"license": "CC BY 3.0",
|
||||
"license_url": "https://creativecommons.org/licenses/by/3.0/",
|
||||
"input_sha256": "eb7b2383e79da540ad1f0b23d1c707b99adb8bfec258ff9b9d105c084dda3c61",
|
||||
"sha256": "d39420ab4b4ba5ed096cc78947e83b16e9d1897f6900429367f3b58a97826212",
|
||||
"start_seconds": 9,
|
||||
"duration_seconds": 6,
|
||||
"filters": "highpass=f=1200,lowpass=f=8500,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=5.94:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "6.000000"
|
||||
}
|
||||
},
|
||||
"notes": "Meimuna opalifera, Kawasaki 2011; new recording selected after mechanical noise was reported in the previous source; original 44.1 kHz"
|
||||
},
|
||||
{
|
||||
"species": "evening_cicada",
|
||||
"file": "cicada_evening.ogg",
|
||||
"title": "Higurashi 20180728 1902.ogg",
|
||||
"author": "あおもりくま (aomorikuma)",
|
||||
"source": "https://commons.wikimedia.org/wiki/File:Higurashi_20180728_1902.ogg",
|
||||
"download": "https://upload.wikimedia.org/wikipedia/commons/transcoded/b/bb/Higurashi_20180728_1902.ogg/Higurashi_20180728_1902.ogg.mp3",
|
||||
"license": "CC BY-SA 3.0",
|
||||
"license_url": "https://creativecommons.org/licenses/by-sa/3.0/",
|
||||
"input_sha256": "bc1b0270510393b3ee8831254847279f85e0e2382b4d09e12266b3d216587dc7",
|
||||
"sha256": "3f8f82412c9f6f22f5bce07464be7a4e0c6843d914c4cfa694dfe45fca5b6cdb",
|
||||
"start_seconds": 3.2,
|
||||
"duration_seconds": 6,
|
||||
"filters": "highpass=f=800,lowpass=f=8500,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=5.94:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "6.000000"
|
||||
}
|
||||
},
|
||||
"notes": "Tanna japonensis, public Commons MP3 transcode"
|
||||
},
|
||||
{
|
||||
"species": "cricket",
|
||||
"file": "cricket.ogg",
|
||||
"title": "Single cricket up close",
|
||||
"author": "ClaudeDebussy",
|
||||
"source": "https://freesound.org/people/ClaudeDebussy/sounds/428679/",
|
||||
"download": "https://cdn.freesound.org/previews/428/428679_5736710-hq.mp3",
|
||||
"license": "CC0 1.0",
|
||||
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
|
||||
"input_sha256": "43e0b17687da18dfe99e7e3940bf89f1ffff8b9263a5b9fef3c2f8ff6eaa6618",
|
||||
"sha256": "99c79279fffba00c52918a62468c16a2049d142c8164773a322ebc48ecc22e0c",
|
||||
"start_seconds": 1.4,
|
||||
"duration_seconds": 3,
|
||||
"filters": "highpass=f=1800,lowpass=f=8500,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=2.94:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "3.000000"
|
||||
}
|
||||
},
|
||||
"notes": "Single cricket up close; biological species unspecified; public HQ preview"
|
||||
},
|
||||
{
|
||||
"species": "bell_cricket",
|
||||
"file": "bell_cricket.ogg",
|
||||
"title": "Suzumushi 06z3310.ogg",
|
||||
"author": "ISAKA Yoji (Cory)",
|
||||
"source": "https://commons.wikimedia.org/wiki/File:Suzumushi_06z3310.ogg",
|
||||
"download": "https://upload.wikimedia.org/wikipedia/commons/b/b0/Suzumushi_06z3310.ogg",
|
||||
"license": "CC BY 2.1 Japan",
|
||||
"license_url": "https://creativecommons.org/licenses/by/2.1/jp/",
|
||||
"input_sha256": "6a3305fef82fc101a21dab2917899fcaa9bfe0bbf03deb826fefa500fc97476a",
|
||||
"sha256": "acb8481493ca69229e15e9332a7b2171c8a35c07d19c11aecc55b85427749b81",
|
||||
"start_seconds": 2,
|
||||
"duration_seconds": 4,
|
||||
"filters": "highpass=f=4300,lowpass=f=6000,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=3.94:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "4.000000"
|
||||
}
|
||||
},
|
||||
"notes": "Field recording with several insects; band limited bell cricket call, some insect background remains"
|
||||
},
|
||||
{
|
||||
"species": "mole_cricket",
|
||||
"file": "mole_cricket.ogg",
|
||||
"title": "Gryllotalpidae 06-15.ogg",
|
||||
"author": "YaCoUYaCoU",
|
||||
"source": "https://commons.wikimedia.org/wiki/File:Gryllotalpidae_06-15.ogg",
|
||||
"download": "https://upload.wikimedia.org/wikipedia/commons/8/84/Gryllotalpidae_06-15.ogg",
|
||||
"license": "CC BY 4.0",
|
||||
"license_url": "https://creativecommons.org/licenses/by/4.0/",
|
||||
"input_sha256": "2cd180f1e048819211607551ebe48215ff36957dd5d06ece9fb5db699fb65b69",
|
||||
"sha256": "54e5cd5de697f1987d51a51c6985822b6c53be9b31962672898a165b151f190e",
|
||||
"start_seconds": 2,
|
||||
"duration_seconds": 4,
|
||||
"filters": "highpass=f=600,lowpass=f=3500,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=3.94:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "4.000000"
|
||||
}
|
||||
},
|
||||
"notes": "Gryllotalpa gryllotalpa; family analogue, not an assertion of the Wild World biological species"
|
||||
},
|
||||
{
|
||||
"species": "fly",
|
||||
"file": "fly_flight.ogg",
|
||||
"title": "Fly_Buzzing_Edited.wav",
|
||||
"author": "AmberdeMeillon",
|
||||
"source": "https://freesound.org/people/AmberdeMeillon/sounds/443059/",
|
||||
"download": "https://cdn.freesound.org/previews/443/443059_8282799-hq.mp3",
|
||||
"license": "CC0 1.0",
|
||||
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
|
||||
"input_sha256": "3246954a2e9131d8b471af4a383603f2aba81e28d3288a06203bdac97a040da7",
|
||||
"sha256": "ab5cb6240b7b3a369700db052c6c7c0b10df8bbedd8435328fda374f2e6f130e",
|
||||
"start_seconds": 0.25,
|
||||
"duration_seconds": 3.2,
|
||||
"filters": "highpass=f=100,lowpass=f=3000,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=3.14:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "3.200000"
|
||||
}
|
||||
},
|
||||
"notes": "House fly buzzing against a window; public HQ preview"
|
||||
},
|
||||
{
|
||||
"species": "mosquito",
|
||||
"file": "mosquito_flight.ogg",
|
||||
"title": "Mosquito 1 Edit.wav",
|
||||
"author": "IanFSA",
|
||||
"source": "https://freesound.org/people/IanFSA/sounds/662970/",
|
||||
"download": "https://cdn.freesound.org/previews/662/662970_4287394-hq.mp3",
|
||||
"license": "CC0 1.0",
|
||||
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
|
||||
"input_sha256": "b664a9abef3ee7192ba3c0342ebc42ef3fb0fd133a5054a2b689c590fd54d571",
|
||||
"sha256": "090cfa519491b3fcc00f6aafda1af5bc088103d89a47c672150e8b7d5f6f5f87",
|
||||
"start_seconds": 3,
|
||||
"duration_seconds": 4,
|
||||
"filters": "highpass=f=200,lowpass=f=5000,afftdn=nr=8:nf=-35,loudnorm=I=-24:TP=-9:LRA=5,afade=t=in:st=0:d=0.06,afade=t=out:st=3.94:d=0.06",
|
||||
"format": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"codec_name": "vorbis",
|
||||
"sample_rate": "32000",
|
||||
"channels": 1
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"duration": "4.000000"
|
||||
}
|
||||
},
|
||||
"notes": "Mosquitos in a bathroom; public HQ preview"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# Insect audio — Sanctuary beta.248
|
||||
|
||||
These nine audio assets retain their individual licenses, separate from the GPL code.
|
||||
Adaptation by Sanctuary: excerpt, filtering, noise reduction, gain, mono OGG re-encoding and fades.
|
||||
No endorsement by the recording authors is implied.
|
||||
The adapted evening cicada recording is distributed under CC BY-SA 3.0.
|
||||
|
||||
| Asset | Recording / source | Author | License | Excerpt (seconds) |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `cicada_brown.ogg` | [Aburazemi 07z7315.ogg](https://commons.wikimedia.org/wiki/File:Aburazemi_07z7315.ogg) | ISAKA Yoji (Cory) | [CC BY 2.1 Japan](https://creativecommons.org/licenses/by/2.1/jp/) | 25–29 |
|
||||
| `cicada_robust.ogg` | [Hyalessa maculaticollis v01.ogg](https://commons.wikimedia.org/wiki/File:Hyalessa_maculaticollis_v01.ogg) | Σ64 | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/) | 12–17.5 |
|
||||
| `cicada_walker.ogg` | [Meimuna opalifera v02.ogg](https://commons.wikimedia.org/wiki/File:Meimuna_opalifera_v02.ogg) | Σ64 | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/) | 9–15 |
|
||||
| `cicada_evening.ogg` | [Higurashi 20180728 1902.ogg](https://commons.wikimedia.org/wiki/File:Higurashi_20180728_1902.ogg) | あおもりくま (aomorikuma) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/) | 3.2–9.2 |
|
||||
| `cricket.ogg` | [Single cricket up close](https://freesound.org/people/ClaudeDebussy/sounds/428679/) | ClaudeDebussy | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) | 1.4–4.4 |
|
||||
| `bell_cricket.ogg` | [Suzumushi 06z3310.ogg](https://commons.wikimedia.org/wiki/File:Suzumushi_06z3310.ogg) | ISAKA Yoji (Cory) | [CC BY 2.1 Japan](https://creativecommons.org/licenses/by/2.1/jp/) | 2–6 |
|
||||
| `mole_cricket.ogg` | [Gryllotalpidae 06-15.ogg](https://commons.wikimedia.org/wiki/File:Gryllotalpidae_06-15.ogg) | YaCoUYaCoU | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) | 2–6 |
|
||||
| `fly_flight.ogg` | [Fly_Buzzing_Edited.wav](https://freesound.org/people/AmberdeMeillon/sounds/443059/) | AmberdeMeillon | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) | 0.25–3.45 |
|
||||
| `mosquito_flight.ogg` | [Mosquito 1 Edit.wav](https://freesound.org/people/IanFSA/sounds/662970/) | IanFSA | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) | 3–7 |
|
||||
|
||||
Public HQ previews were used for the three Freesound recordings. The evening cicada uses the Commons public MP3 transcode.
|
||||
Original quality varies: the mole cricket source is 8 kHz; bell cricket retains some field insect background. The walker cicada source is 44.1 kHz.
|
||||
The cricket and European mole cricket are sound design analogues; no precise Wild World biological identification is claimed.
|
||||
Exact source URLs, input/output SHA-256 and transformations: `Insect-Audio-ASSETS.json`.
|
||||
@@ -0,0 +1,112 @@
|
||||
# INSECT-03 — Retours de la visite, beta.247
|
||||
|
||||
Demande du créateur le 8 octobre 2026, après inspection de beta.246.
|
||||
Branche `codex/insect-behaviour-beta247`.
|
||||
|
||||
## Résultat à vérifier
|
||||
|
||||
- Escargot posé sur sa fleur, sans espace visible sous ses pieds.
|
||||
- Clic droit au filet : espèce visible la plus proche à trois blocs, sans
|
||||
accroupissement obligatoire ni visée au pixel. Les obstacles et la fuite
|
||||
empêchent toujours la capture ; récompense unique côté serveur.
|
||||
- Observation immobile sans fuite. Marche vers l’insecte : alerte à deux
|
||||
blocs ; sprint : cinq blocs ; approche accroupie : 0,65 bloc.
|
||||
- Criquets long et migrateur et sauterelle : sauts plus hauts.
|
||||
- Grillon, grillon des prés, courtilière et cloporte : sprites au sol,
|
||||
sans sautillement. Fourmi conservée à plat.
|
||||
- Libellules : deux ailes synchronisées, rapides, corps central de deux
|
||||
colonnes visible de côté, orientation selon le vol et trajets progressifs
|
||||
entre points. PNG d’origine conservés.
|
||||
- Puce liée au villageois, sans fuite même si le joueur s’approche.
|
||||
- Bousier accompagné d’une boule de neige qui roule devant lui.
|
||||
- Papillons, mouche, moustique et espèces sur troncs conservés.
|
||||
|
||||
Sons reportés : préparer uniquement les fichiers à fournir et leurs usages.
|
||||
Conserver le filet 16 × 16, les saisons, habitats et captures silencieuses.
|
||||
Créer une nouvelle visite de développement ; aucun monde personnel modifié.
|
||||
|
||||
## Carte et détails
|
||||
|
||||
Nouvelle carte plate de développement `review-04`, graine **246**, disposition
|
||||
**v2** : le bousier dispose d’un carré de neige de 3 × 3 blocs, et le support
|
||||
de l’escargot utilise la hauteur native de la fleur. Le marqueur `ready-v2`
|
||||
refuse les visites v1 ; choisir une session neuve conserve les anciennes
|
||||
cartes. La génération Sanctuary et les sauvegardes personnelles ne changent pas.
|
||||
|
||||
Le filet conserve une portée de trois blocs depuis le joueur, choisit le plus
|
||||
proche dans la moitié avant et vérifie séparément la visibilité de chaque
|
||||
candidat. Les joueurs spectateurs, les espèces déjà enfuies et les cibles
|
||||
cachées par des blocs restent exclus. La détection de peur mesure les positions
|
||||
serveur successives : aucun mouvement horizontal vers l’insecte, aucune alerte.
|
||||
Les papillons, la mouche et le moustique gardent leurs modèles et déplacements.
|
||||
|
||||
Les trois libellules gardent les colonnes UV 7 et 8 pour le corps, dont deux
|
||||
faces verticales de 2 pixels de haut sur 16 de long et une face supérieure.
|
||||
Les deux quads d’ailes utilisent les colonnes 0–6 et 9–15, battent ensemble
|
||||
et suivent la direction du vol. Le serveur choisit des points dans un rayon
|
||||
horizontal de 1,8 bloc autour du support, avec ±0,3 bloc de hauteur, puis
|
||||
accélère et ralentit pendant chaque trajet. La géante est la plus rapide.
|
||||
Les chemins refusent les obstacles et les chunks non chargés.
|
||||
La boule du bousier est une géométrie arrondie texturée avec la neige native,
|
||||
sans nouveau bloc ni projectile ; sa rotation suit le déplacement serveur.
|
||||
|
||||
La [liste des sons](insect-sounds-plan.md) couvre les 47 parcelles. Neuf sons
|
||||
prioritaires, deux facultatifs ; aucune lecture audio ajoutée à cette livraison.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Les **13 GameTests requis passent** : les huit scénarios précédents, quatre
|
||||
scénarios de retours et l’environnement requis. Capture debout et hors axe,
|
||||
plus proche au sol, obstacles et fuite, observation immobile, approche accroupie,
|
||||
puce attachée, cinq espèces à plat, contact de l’escargot, saut plus haut,
|
||||
accélération de la libellule et rotation de neige synchronisée.
|
||||
Les étapes manuelles des tests avancent le compteur comme `ServerLevel` avant
|
||||
`Entity.tick` ; les premiers essais sans cette avance sont conservés dans
|
||||
le journal initial, mais ne représentent pas le déroulement normal du jeu.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack assembleTestPack \
|
||||
-PsanctuaryFocusedTests=insects245 -PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryInsects245ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
```
|
||||
|
||||
Contrôle **Vulkan** réussi : cinq chemins de rendu, 47 sprites d’inventaire
|
||||
FR/EN, clic droit natif **debout**, une capture et une usure, découvertes
|
||||
silencieuses. La scène de contrôle maintient seulement ses spécimens
|
||||
transitoires en inspection, car elle présente été et hiver ensemble.
|
||||
La présence du bousier et sa rotation synchronisée sont contrôlées au moment
|
||||
de l’image ; vision nocturne utilisée pour inspecter les formes.
|
||||
Aucune texture d’insecte manquante signalée.
|
||||
|
||||
Images : [libellule](../build/insects247/screenshots/0001_insects247-dragonfly.png),
|
||||
[bousier et boule](../build/insects247/screenshots/0002_insects247-snowball.png),
|
||||
[surfaces et escargot](../build/insects247/screenshots/0000_insects247-day-surfaces.png).
|
||||
Les 47 PNG d’origine et le filet 16 × 16 sont inchangés.
|
||||
|
||||
La visite **`review-04` est ouverte** en beta.247, Vulkan : 47 espèces
|
||||
et supports validés côté serveur ; client connecté, formulaire fermé,
|
||||
joueur à la première parcelle (7, 81, 2), 47 sprites et filet 16 × 16 vérifiés.
|
||||
Le serveur de la visite précédente a été arrêté après fermeture de son client.
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary-test:exportDuoLaunch
|
||||
python3 scripts/insect_lab.py start --run review-04
|
||||
```
|
||||
|
||||
Pour une autre visite, choisir un nom neuf. Les commandes `/insectes 1` à
|
||||
`47`, `suivant`, `precedent`, `observer`, `jouer` et `reset` sont conservées.
|
||||
**Clic droit debout** à portée suffit ; s’accroupir permet d’approcher davantage.
|
||||
Les modèles restent soumis au retour visuel du créateur.
|
||||
|
||||
`check build assemblePack assembleTestPack` réussit sur les sources finales,
|
||||
avec **13 GameTests requis** ; le contrôle Vulkan final réussit aussi.
|
||||
Intégrité ZIP, versions et JAR embarqués des deux MRpack vérifiés.
|
||||
219 fichiers déjà modifiés ou ajoutés avant ce ticket restent identiques ;
|
||||
15 autres sont prolongés pour ces corrections. Les calendriers, horaires,
|
||||
pics, habitats, tailles et identifiants sont comparés à beta.246 et inchangés.
|
||||
|
||||
Livraisons locales : [pack normal](../build/Sanctuary-beta.247.mrpack),
|
||||
[pack Test](../build/Sanctuary-Test-beta.247.mrpack),
|
||||
[reçu et empreintes](../build/insects247/validation.json).
|
||||
Aucune publication ni mise à jour Prism.
|
||||
@@ -0,0 +1,115 @@
|
||||
# INSECT-04 — Libellules en croix, sons et galerie au soleil, beta.248
|
||||
|
||||
Demande du créateur le 8 octobre 2026, après validation visuelle de beta.247.
|
||||
Branche `codex/dragonfly-cross-beta248`. Recherche d’enregistrements libres
|
||||
explicitement autorisée ; conditions de test demandées : jour et ciel dégagé.
|
||||
|
||||
## Résultat
|
||||
|
||||
Les deux plans verticaux du corps des libellules deviennent un seul plan
|
||||
centré en X=0. Il croise le plan supérieur et conserve les colonnes 7 et 8
|
||||
du sprite. Le matériau natif `entityCutout`, sans suppression des faces
|
||||
arrière, montre ce plan des deux côtés. Les deux ailes et le vol progressif
|
||||
entre points restent identiques.
|
||||
|
||||
La galerie conserve midi, horloge native 6000 suspendue, pluie et orage à zéro.
|
||||
Le module Test désactive l’horloge réelle et la météo dans ce seul serveur
|
||||
de développement, puis réapplique ces conditions chaque seconde pour couvrir
|
||||
l’ordre des callbacks de démarrage. La vision nocturne artificielle est retirée.
|
||||
Seuls les spécimens explicitement marqués pour inspection dans un monde plat
|
||||
de développement peuvent ignorer la pluie ; fleur/feuilles, espace libre et
|
||||
chunks déjà chargés restent obligatoires. L’escargot naturel exige toujours
|
||||
la pluie. Calendrier, habitats ordinaires, monde Sanctuary et sauvegardes
|
||||
personnelles ne sont pas modifiés.
|
||||
|
||||
## Audio
|
||||
|
||||
Neuf sons positionnels mono OGG Vorbis à 32 kHz : quatre cigales, grillon,
|
||||
grillon des prés, courtilière, mouche et moustique. Les autres espèces restent
|
||||
silencieuses selon le [plan audio](insect-sounds-plan.md). Les chants ont des
|
||||
pauses de quelques secondes entre les extraits ; les insectes volants utilisent
|
||||
un bourdonnement bouclé avec des fondus courts. Le son suit l’entité visible,
|
||||
s’arrête dès sa fuite/capture/disparition, et respecte le réglage Minecraft
|
||||
« créatures amicales ». Portée : 12 blocs pour les cigales, 10 pour les
|
||||
grillons/courtilière, 6 pour la mouche, 4 pour le moustique. Six voix proches
|
||||
au maximum par client ; phases décalées et volume discret. Pas de notification
|
||||
ni de son de découverte. Les sous-titres natifs facultatifs sont traduits FR/EN.
|
||||
|
||||
[Sources, auteurs, licences et découpes](insect-audio-credits.md) et
|
||||
[empreintes des originaux/extraits](insect-audio-assets.json) sont inclus
|
||||
également dans le JAR. Les ressources audio gardent leurs licences distinctes
|
||||
du code. L’extrait de cigale du soir reste distribué sous CC BY-SA 3.0.
|
||||
Les originaux et aperçus téléchargés sont conservés dans le dossier ignoré
|
||||
`build/insects248/audio-source`, aucun binaire de dépendance ajouté au dépôt.
|
||||
|
||||
Les prises sont naturelles : la courtilière provient
|
||||
d’une source 8 kHz ; l’extrait de grillon des prés contient encore un peu de fond
|
||||
d’autres insectes malgré le filtrage. Le grillon n’est pas identifié à une
|
||||
espèce biologique précise ; la courtilière européenne est un analogue sonore.
|
||||
Après le retour d’écoute signalant un bruit de caméra sur la Walker cicada,
|
||||
la prise de Koba-chan est remplacée par `Meimuna opalifera v02.ogg` de Σ64,
|
||||
enregistrée à Kawasaki en 2011 sous CC BY 3.0. L’original est à 44,1 kHz ;
|
||||
la découpe 9–15 s évite le début de la prise et filtre les basses sous 1,2 kHz.
|
||||
Le réglage final du timbre et du volume attend le retour d’écoute du créateur.
|
||||
Les sons du filet et de capture restent à faire si demandés.
|
||||
|
||||
## Vérification
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack` a réussi avec
|
||||
`-PsanctuaryFocusedTests=insects245 -PsanctuaryAtlasOnly=true` : les treize
|
||||
GameTests requis passent. Le contrôle client `runClientGameTest`, backend
|
||||
Vulkan exclusivement, réussit : 47 textures et traductions FR/EN, cinq modèles,
|
||||
corps de libellule en croix rendu, capture native debout, usure unique du filet,
|
||||
absence de notifications d’insectes, midi et ciel clair sans vision nocturne,
|
||||
escargot d’inspection au sec, neuf fichiers décodés par le lecteur OGG natif,
|
||||
bourdonnement positionnel du moustique et arrêt après fuite.
|
||||
|
||||
Le premier essai a révélé que `SavedData.setDirty()` ne synchronise pas à lui
|
||||
seul un changement d’horloge avec un client déjà connecté. Le réglage utilise
|
||||
maintenant le setter natif `ServerClockManager.setTotalTicks`, qui diffuse le
|
||||
paquet d’horloge. Un second démarrage de la suite s’est bloqué dans les barrières
|
||||
du framework Fabric avant les tests ; seul ce client de test a été arrêté.
|
||||
L’essai final réussit après correction, sans contourner l’assertion de lumière.
|
||||
|
||||
Le contrôle natif des neuf sons précède le changement de prise de la Walker.
|
||||
Après remplacement, les neuf OGG passent de nouveau le décodage FFmpeg ;
|
||||
le nouvel extrait garde le format mono Vorbis 32 kHz utilisé par le lecteur
|
||||
natif. L’écoute du nouveau timbre se fait dans la visite rouverte.
|
||||
|
||||
Logs : `build/insects248/check-build-pack-audio-revision.log` et
|
||||
`build/insects248/client-vulkan-final.log`. Les cinq captures sont copiées dans
|
||||
`build/insects248/screenshots/`. La reconstruction finale intègre le remplacement de la Walker cicada.
|
||||
|
||||
La visite `review-05` a été ouverte en beta.248 : serveur
|
||||
`127.0.0.1:51651`, seed 246, disposition v2, carte plate dédiée conservée dans
|
||||
`build/insects-246/review-05`. Le journal serveur atteste les 47 espèces avec
|
||||
`time=6000 rain=0.0 daylight=true` ; le journal client atteste
|
||||
`time=6000 weather=clear daylight=pass`, les 47 sprites et le filet 16 × 16.
|
||||
Les anciens dossiers de visite sont préservés ; Prism et les mondes personnels
|
||||
ne sont pas utilisés. Navigation : `/insectes 15` à `18` pour les cigales,
|
||||
`26`, `27`, `29` pour les grillons/courtilière, `45` et `46` pour moustique/mouche.
|
||||
|
||||
Le client `review-05` a planté pendant un build car son classpath lisait le
|
||||
JAR de sortie Gradle en cours de remplacement (`invalid LOC header`).
|
||||
Le lanceur copie désormais les JAR, classes, ressources et configuration
|
||||
de lancement du dépôt dans `runtime/<client|server>` propre à la visite.
|
||||
Les dépendances Gradle déjà stockées sous leur hash restent partagées.
|
||||
Une session réutilise sa copie de lancement ; les builds suivants ne
|
||||
remplacent plus les fichiers lus par cette session. Le contrôle de régression
|
||||
remplace le fichier source puis vérifie que JAR/configuration copiés et
|
||||
arguments de relance gardent leur contenu initial.
|
||||
|
||||
La visite `review-06` est rouverte en Vulkan avec la nouvelle prise :
|
||||
serveur `127.0.0.1:51826`, client PID 29306, serveur PID 29266. Les deux
|
||||
classpath du dépôt sont figés dans son dossier `runtime` ; leurs JAR
|
||||
correspondent aux empreintes finales. Les 47 espèces, midi, météo claire
|
||||
et sprites 16 × 16 passent dans les journaux de cette nouvelle visite.
|
||||
|
||||
Packs locaux : [Sanctuary beta.248](../build/Sanctuary-beta.248.mrpack) et
|
||||
[Sanctuary Test beta.248](../build/Sanctuary-Test-beta.248.mrpack).
|
||||
Archives ZIP, versions, JAR embarqués, neuf fichiers audio et crédits
|
||||
vérifiés ; les 47 PNG originaux et le filet 16 × 16 sont préservés.
|
||||
[Reçu final et empreintes](../build/insects248/validation.json).
|
||||
218 des 236 fichiers préexistants sont identiques ; les 18 autres sont
|
||||
étendus dans le périmètre de ce ticket. Aucun fichier préexistant retiré.
|
||||
Aucune publication ni mise à jour du canal packwiz stable.
|
||||
@@ -0,0 +1,77 @@
|
||||
# INSECT-07 — Habitats naturels et protection des maisons, beta.251
|
||||
|
||||
Retour du créateur le 8 octobre 2026 : trop de sauterelles/criquets et
|
||||
de libellules apparaissent sur les gisements de pierre de Sanctuary Island.
|
||||
Préserver leur présence dans les prairies, sans envahir les maisons.
|
||||
Branche `codex/insect-habitats-beta251`, base beta.250.
|
||||
|
||||
Contrat de cette passe :
|
||||
|
||||
- Les trois espèces sauteuses apparaissent sur une ouverture herbeuse,
|
||||
sans canopée dense : prairies ou clairières, indépendamment du nom du biome.
|
||||
Ni pierre, ni sable, ni sol construit. Mois, horaires et pics conservés.
|
||||
- Maximum deux insectes sauteurs, espèces confondues, à 32 blocs du nouveau
|
||||
point ; même plafond pour les libellules. Les poids des trois sauteurs sont
|
||||
divisés par deux sans supprimer une saison ni un pic.
|
||||
- Les libellules apparaissent sur l’herbe ouverte ou sur une berge de terre/
|
||||
sable près d’une eau douce ; aucune apparition sur la roche nue.
|
||||
- Le cloporte peut apparaître naturellement sur ou près des pierres, avec
|
||||
un plafond de deux à proximité ; frapper un rocher peut toujours le révéler.
|
||||
- Toute apparition naturelle est refusée sous un toit solide, même transparent.
|
||||
Les feuilles sont autorisées pour les insectes forestiers ; les trajectoires
|
||||
libres s’arrêtent à la limite d’un toit. Les spécimens du laboratoire
|
||||
gardent leur mode d’inspection explicite.
|
||||
|
||||
L’ouverture herbeuse demande un support d’herbe ou de mousse à ciel ouvert,
|
||||
avec au moins cinq colonnes herbeuses parmi les neuf échantillonnées dans
|
||||
un carré de 5 × 5 blocs, à deux blocs de différence de hauteur au maximum.
|
||||
La hauteur du terrain est lue directement : les feuilles comptent comme une
|
||||
canopée pour les sauteurs et les libellules, indépendamment du délai de mise
|
||||
à jour de l’éclairage. Les berges de libellules cherchent une source d’eau
|
||||
douce dans un rayon de six blocs et à trois blocs de hauteur au maximum.
|
||||
|
||||
Le contrôle des toits examine les collisions et les fluides dans la colonne
|
||||
chargée au-dessus du point réel de l’insecte, y compris pour une puce sur son
|
||||
villageois. Il bloque notamment bois, pierre, verre et dalles ; les feuilles
|
||||
sont ignorées pour conserver les habitats naturels sous les arbres. Un abri
|
||||
construit uniquement en feuilles conserve donc cette exception. Le support
|
||||
et la position sont revérifiés tous les 20 ticks : un toit ajouté ensuite,
|
||||
ou un villageois qui rentre avec une puce, fait retirer le spécimen naturel.
|
||||
|
||||
Le code utilise uniquement les chunks déjà chargés. Aucun bloc, biome,
|
||||
générateur ou format de sauvegarde n’est modifié. Pas de déploiement personnel.
|
||||
Vérifications réussies le 8 octobre 2026 sur Minecraft 26.3,
|
||||
Fabric Loader 0.19.5, Fabric API 0.160.5+26.3 et Java 25 :
|
||||
|
||||
- `./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=insects245 -PsanctuaryAtlasOnly=true` réussit :
|
||||
21 GameTests requis, compilation et contrôles de ressources passent.
|
||||
Les nouveaux cas vérifient les supports herbe/pierre/sable/sol construit,
|
||||
les berges d’eau douce, les canopées, les toits bois/verre/dalles, le vol
|
||||
devant une entrée sans porte, les plafonds mixtes de population, la place
|
||||
libérée après retrait et le cloporte dans la sélection ambiante. Aucun
|
||||
chargement du chunk témoin éloigné n’est provoqué.
|
||||
- La structure de test `sanctuary-gametest:insect_outdoors_251` mesure
|
||||
24 × 12 × 24, avec `skyAccess=true` : les scènes sont réellement dehors,
|
||||
au lieu du plafond invisible en barrières des anciennes structures.
|
||||
Ce fichier NBT est une ressource du mod de tests, sans effet sur la génération.
|
||||
- Client natif exclusivement Vulkan : apparition naturelle dans l’herbe,
|
||||
refus d’une nouvelle apparition sous un toit de verre et retrait du
|
||||
spécimen après pose du toit, reçus par les paquets réels. Déplacement et
|
||||
fuite des sauteurs, capture debout silencieuse, 47 sprites FR/EN, neuf sons,
|
||||
midi fixe et ciel dégagé passent également. Marqueur
|
||||
`INSECTS251_CLIENT_PASS` dans `build/insects251/client-vulkan.log` ;
|
||||
captures dans `build/insects251/screenshots/`.
|
||||
- Les 47 textures et neuf sons sont identiques à beta.250. Tous les champs
|
||||
du catalogue sont conservés, hormis les trois poids passés de 6 à 3 :
|
||||
mois, heures et pics d’apparition restent inchangés.
|
||||
- Exports [Sanctuary beta.251](../build/Sanctuary-beta.251.mrpack) et
|
||||
[Sanctuary Test beta.251](../build/Sanctuary-Test-beta.251.mrpack) vérifiés :
|
||||
intégrité ZIP, version, dépendances exactes et JAR embarqués identiques
|
||||
aux JAR construits. [Reçu local](../build/insects251/validation.json).
|
||||
|
||||
La répartition visuelle sur une île complète reste à apprécier en jeu par
|
||||
le créateur ; les essais vérifient les règles et les comportements dans
|
||||
des scènes natives ciblées. L’ancienne visite beta.250 ne reçoit pas ces
|
||||
changements automatiquement. Pas de publication du canal packwiz ni de
|
||||
mise à jour de l’instance Prism personnelle.
|
||||
@@ -0,0 +1,157 @@
|
||||
# INSECT-02 — Carte d’inspection, beta.246
|
||||
|
||||
Demande du créateur du 8 octobre 2026 : ouvrir une instance jouable pour
|
||||
observer les 47 insectes et faire des retours directs. Branche
|
||||
`codex/insect-inspection-beta246`. Suit [INSECT-01](insects-wild-world-beta245.md).
|
||||
|
||||
## Carte jouable
|
||||
|
||||
Le module facultatif `sanctuary-test` prépare un monde plat neuf, graine 246,
|
||||
dans `build/insects-246/<session>/server/insects-flat-246`. Il refuse tout autre
|
||||
dossier ou générateur. Une plateforme éclairée en Y=80 comporte 47 parcelles
|
||||
sur six colonnes, espacées de 14 blocs. Chaque insecte vivant est accompagné
|
||||
de son numéro, son nom FR/EN, son identifiant et son habitat.
|
||||
|
||||
Fleurs adaptées, troncs de chêne ou jungle, bassin d’eau douce, neige,
|
||||
lumière, nourriture déposée et villageois sont présents. La puce suit son
|
||||
villageois dans un petit enclos. La pluie reste active pour l’escargot ;
|
||||
l’éclairage est figé à midi avec vision nocturne pour regarder les sprites.
|
||||
|
||||
Le joueur entre en Aventure, filet fourni, avec les interactions normales.
|
||||
Les saisons et l’expiration ambiante sont suspendues uniquement pour ces
|
||||
47 entités transitoires ; supports, déplacements, approche, fuite et filet
|
||||
utilisent le code de jeu. Un spécimen capturé ou enfui revient cinq secondes
|
||||
après sa disparition. Deux coffres à l’entrée contiennent les 47 items pour
|
||||
inspecter leurs icônes. Le laboratoire entretient uniquement ses spécimens,
|
||||
sans apparitions aléatoires concurrentes. Les chunks de cette scène restent
|
||||
chargés uniquement dans ce monde de développement.
|
||||
|
||||
| Action | Commande ou geste |
|
||||
| --- | --- |
|
||||
| Choisir une espèce | `/insectes 1` à `/insectes 47` |
|
||||
| Suivante / précédente | `/insectes suivant` / `/insectes precedent` |
|
||||
| Regarder sans effrayer | `/insectes observer` (spectateur) |
|
||||
| Revenir au filet et à la fuite | `/insectes jouer` |
|
||||
| Revenir à la première parcelle | `/insectes retour` |
|
||||
| Réinitialiser les spécimens | `/insectes reset` |
|
||||
| Capturer | S’accroupir, viser, clic droit |
|
||||
|
||||
`/insects` est un alias. En spectateur le moustique ne choisit pas le joueur
|
||||
comme cible d’orbite ; revenir avec `jouer` pour observer son orbite autour
|
||||
de soi. Aucun message de capture ou découverte n’est ajouté. Les numéros
|
||||
suivent l’ordre du catalogue beta.245.
|
||||
|
||||
Le lancement crée un client de développement distinct, en Vulkan et FR,
|
||||
et un serveur lié seulement à `127.0.0.1`, sur un port libre. Aucune instance
|
||||
Prism, sauvegarde personnelle, canal public ou génération Sanctuary n’est
|
||||
modifié. Les dossiers de scène et binaires sont ignorés par Git.
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary-test:exportDuoLaunch
|
||||
python3 scripts/insect_lab.py start --run review-03
|
||||
```
|
||||
|
||||
Le nom de session doit être neuf ; `review-03` est la session ouverte pour
|
||||
le créateur. Pour une autre carte neuve, utiliser par exemple `review-04`.
|
||||
Pour rouvrir `review-03` après arrêt de ses processus :
|
||||
|
||||
```sh
|
||||
python3 scripts/insect_lab.py server --run review-03
|
||||
python3 scripts/insect_lab.py client --run review-03
|
||||
```
|
||||
|
||||
PID et journaux sont enregistrés dans le dossier de session. Fermer le
|
||||
client quitte la visite ; le serveur de développement reste disponible et
|
||||
peut être arrêté proprement avec SIGTERM sur son PID.
|
||||
|
||||
## Textures capturées et filet
|
||||
|
||||
Les sprites sous `textures/insect/` étaient disponibles pour le rendu des
|
||||
entités mais absents de l’atlas des modèles d’items. L’atlas Minecraft
|
||||
`blocks` inclut désormais ce dossier. Les identifiants des spécimens et les
|
||||
47 PNG fournis sont conservés. Le contrôle Vulkan vérifie le sprite du
|
||||
modèle assemblé de chaque item, en plus de la présence du fichier PNG.
|
||||
|
||||
Le filet utilise une texture 2D **16 × 16**, avec le parent natif
|
||||
`minecraft:item/handheld`, comme les outils Minecraft. Source transparente :
|
||||
`mods/sanctuary/src/main/resources/assets/sanctuary/textures/item/insect_net.png`.
|
||||
Création avec l’outil intégré de la compétence
|
||||
[imagegen](/Users/koka/.codex/skills/.system/imagegen/SKILL.md), puis export
|
||||
16 × 16 avec `sips`. Aucune texture d’insecte retouchée.
|
||||
Prompt exact : [insect-net-beta246-prompt.txt](insect-net-beta246-prompt.txt).
|
||||
|
||||
## Vérifications
|
||||
|
||||
Le client de contrôle Vulkan réussit : 47 modèles d’items avec leur sprite
|
||||
attendu, quatre modes de rendu des entités, capture unique avec usure,
|
||||
découvertes silencieuses. Son journal ne contient plus de
|
||||
`Missing textures in model sanctuary:item/insect_*`.
|
||||
La carte émet `INSECTS246_LAB_POPULATION_PASS unique-species=47` après
|
||||
validation des supports et création des spécimens. Le client de visite
|
||||
contrôle aussi les 47 sprites d’inventaire et celui du filet, tous 16 × 16,
|
||||
avant d’émettre `INSECTS246_CLIENT_OPEN`.
|
||||
|
||||
`check build assemblePack assembleTestPack` réussit sur les sources finales,
|
||||
avec neuf GameTests requis. Client Vulkan de contrôle réussi et visite
|
||||
`review-03` ouverte : connexion du joueur, formulaire fermé, position à la
|
||||
première parcelle, 47 sprites d’items et filet 16 × 16 validés. Les 47 PNG
|
||||
fournis gardent leurs empreintes ; 216 fichiers modifiés ou ajoutés avant ce
|
||||
ticket restent identiques. Intégrité ZIP, versions et JAR embarqués vérifiés.
|
||||
|
||||
Livraisons locales : [pack normal](../build/Sanctuary-beta.246.mrpack) et
|
||||
[pack Test](../build/Sanctuary-Test-beta.246.mrpack).
|
||||
[Reçu et empreintes](../build/insects246/validation.json). Aucune publication
|
||||
ni mise à jour Prism. Les comportements et l’équilibrage visuel restent à
|
||||
juger avec les retours du créateur sur cette carte.
|
||||
|
||||
## Parcelles
|
||||
|
||||
| Numéro | Espèce | Identifiant |
|
||||
| --- | --- | --- |
|
||||
| 01 | Piéride du chou | `common_butterfly` |
|
||||
| 02 | Citron | `yellow_butterfly` |
|
||||
| 03 | Machaon | `tiger_butterfly` |
|
||||
| 04 | Papillon paon | `peacock` |
|
||||
| 05 | Monarque | `monarch` |
|
||||
| 06 | Morpho bleu | `emperor` |
|
||||
| 07 | Agrias | `agrias_butterfly` |
|
||||
| 08 | Ornithoptère | `birdwing` |
|
||||
| 09 | Papillon de nuit | `moth` |
|
||||
| 10 | Grand paon de nuit | `oak_silk_moth` |
|
||||
| 11 | Criquet long | `long_locust` |
|
||||
| 12 | Criquet migrateur | `migratory_locust` |
|
||||
| 13 | Mante religieuse | `mantis` |
|
||||
| 14 | Mante orchidée | `orchid_mantis` |
|
||||
| 15 | Cigale brune | `brown_cicada` |
|
||||
| 16 | Cigale robuste | `robust_cicada` |
|
||||
| 17 | Cigale cicadelle | `walker_cicada` |
|
||||
| 18 | Cigale du soir | `evening_cicada` |
|
||||
| 19 | Fulgore | `lantern_fly` |
|
||||
| 20 | Libellule rouge | `red_dragonfly` |
|
||||
| 21 | Libellule verte | `darner_dragonfly` |
|
||||
| 22 | Libellule géante | `banded_dragonfly` |
|
||||
| 23 | Fourmi | `ant` |
|
||||
| 24 | Gerris | `pondskater` |
|
||||
| 25 | Escargot | `snail` |
|
||||
| 26 | Grillon | `cricket` |
|
||||
| 27 | Grillon des prés | `bell_cricket` |
|
||||
| 28 | Sauterelle | `grasshopper` |
|
||||
| 29 | Courtilière | `mole_cricket` |
|
||||
| 30 | Phasme | `walkingstick` |
|
||||
| 31 | Coccinelle | `ladybug` |
|
||||
| 32 | Cétoine | `fruit_beetle` |
|
||||
| 33 | Scarabée | `scarab_beetle` |
|
||||
| 34 | Bousier | `dung_beetle` |
|
||||
| 35 | Scarabée Goliath | `goliath_beetle` |
|
||||
| 36 | Capricorne | `longhorn_beetle` |
|
||||
| 37 | Lucane scie | `saw_stag_beetle` |
|
||||
| 38 | Lucane | `stag_beetle` |
|
||||
| 39 | Lucane géant | `giant_beetle` |
|
||||
| 40 | Lucane arc-en-ciel | `rainbow_stag` |
|
||||
| 41 | Scarabée éléphant | `elephant_beetle` |
|
||||
| 42 | Scarabée Hercule | `hercules_beetle` |
|
||||
| 43 | Puce | `flea` |
|
||||
| 44 | Cloporte | `pill_bug` |
|
||||
| 45 | Moustique | `mosquito` |
|
||||
| 46 | Mouche | `fly` |
|
||||
| 47 | Cafard | `cockroach` |
|
||||
@@ -0,0 +1,5 @@
|
||||
Outil : image_gen intégré (compétence imagegen), fond transparent.
|
||||
Export final : PNG transparent 16 × 16 ; modèle minecraft:item/handheld.
|
||||
|
||||
Prompt exact :
|
||||
Use case: stylized-concept. Asset type: Minecraft inventory tool sprite, insect-catching net, transparent PNG. Create one flat 2D pixel-art bug net in the visual style and orientation of the vanilla Minecraft iron shovel item texture. A short brown wooden handle runs diagonally from bottom left to upper right; at its upper right end a light gray iron oval hoop and white string mesh, so it is clearly an insect-catching net rather than a shovel. EXACT tiny low resolution aesthetic: draw on a logical 16 by 16 pixel grid, every logical pixel a solid square color, upscale it evenly for the output. No more than 12 flat colors. Entire tool inside frame with one logical pixel margin. Dark brown outlines on handle, dark gray outlines on hoop, off-white sparse crisscross mesh with truly transparent open holes. Real transparent background outside tool and through holes. No backdrop, shadow, text, labels, lighting gradients, perspective, 3D model, anti-aliasing or checkerboard. This is the final game texture, not a mockup. Make the silhouette readable at 16px.
|
||||
@@ -0,0 +1,89 @@
|
||||
# Sons à préparer — Insectes Wild World
|
||||
|
||||
Demande du 8 octobre 2026. **Préparation seulement : aucun son ajouté en
|
||||
beta.247.** Ces choix visent une ambiance lisible à l’échelle de Sanctuary ;
|
||||
« silencieux » signifie sans son individuel dans le jeu, pas une affirmation
|
||||
que l’espèce ne produit aucune vibration dans la nature.
|
||||
|
||||
Les neuf sons prioritaires sont intégrés en [beta.248](insect-cross-sounds-beta248.md),
|
||||
avec [sources et licences](insect-audio-credits.md). Les deux sons facultatifs
|
||||
restent à préparer. Le tableau ci-dessous conserve la direction artistique initiale.
|
||||
|
||||
## Fichiers utiles
|
||||
|
||||
Priorité : quatre chants de cigales, trois chants de grillons/courtilière,
|
||||
une mouche en vol et un moustique en vol, soit **neuf sons**. Facultatifs :
|
||||
un son de sauterelle et un son partagé par les deux criquets, soit deux autres.
|
||||
Les descriptions sont des directions artistiques ; les noms Wild World
|
||||
ne suffisent pas à identifier une espèce biologique précise.
|
||||
|
||||
Fournir des prises propres, sans musique ni fond de forêt déjà mélangé,
|
||||
avec quelques variantes si disponibles. Un fichier mono OGG Vorbis convient
|
||||
pour chaque son positionnel ; conserver également l’original d’enregistrement.
|
||||
Pour les chants : quelques secondes avec des silences naturels. Pour les
|
||||
bourdonnements : un petit segment raccordable sans clic. Le rythme, le volume,
|
||||
l’atténuation et la programmation des déclenchements seront réglés après écoute.
|
||||
Pas de chant de libellule ni de papillon dans cette première passe.
|
||||
|
||||
Références d’écoute : [Sounds of Insects, Smithsonian Folkways](https://folkways.si.edu/sounds-of-insects/album/smithsonian)
|
||||
présente des grillons et des insectes en vol, dont moustiques et
|
||||
mouches. [AMNH — cigales](https://www.amnh.org/explore/news-blogs/periodical-cicadas-overview)
|
||||
décrit leurs chants. Ces références ne sont pas des fichiers livrés au jeu.
|
||||
|
||||
## Affectation des 47 espèces
|
||||
|
||||
| Parcelle | Espèce | Fichier à fournir | Intention |
|
||||
| --- | --- | --- | --- |
|
||||
| 01 | Piéride du chou | — | Silencieux |
|
||||
| 02 | Citron | — | Silencieux |
|
||||
| 03 | Machaon | — | Silencieux |
|
||||
| 04 | Papillon paon | — | Silencieux |
|
||||
| 05 | Monarque | — | Silencieux |
|
||||
| 06 | Morpho bleu | — | Silencieux |
|
||||
| 07 | Agrias | — | Silencieux |
|
||||
| 08 | Ornithoptère | — | Silencieux |
|
||||
| 09 | Papillon de nuit | — | Silencieux |
|
||||
| 10 | Grand paon de nuit | — | Silencieux |
|
||||
| 11 | Criquet long | locust.ogg (facultatif) | Frottement bref |
|
||||
| 12 | Criquet migrateur | locust.ogg (facultatif) | Même famille que le criquet long |
|
||||
| 13 | Mante religieuse | — | Silencieux |
|
||||
| 14 | Mante orchidée | — | Silencieux |
|
||||
| 15 | Cigale brune | cicada_brown.ogg | Crépitement rythmé |
|
||||
| 16 | Cigale robuste | cicada_robust.ogg | Chant continu plus intense |
|
||||
| 17 | Cigale cicadelle | cicada_walker.ogg | Chant pulsé |
|
||||
| 18 | Cigale du soir | cicada_evening.ogg | Chant clair et espacé |
|
||||
| 19 | Fulgore | — | Silencieux |
|
||||
| 20 | Libellule rouge | — | Silencieux |
|
||||
| 21 | Libellule verte | — | Silencieux |
|
||||
| 22 | Libellule géante | — | Silencieux |
|
||||
| 23 | Fourmi | — | Silencieux |
|
||||
| 24 | Gerris | — | Silencieux |
|
||||
| 25 | Escargot | — | Silencieux |
|
||||
| 26 | Grillon | cricket.ogg | Chirps courts et répétés |
|
||||
| 27 | Grillon des prés | bell_cricket.ogg | Trille clair, presque métallique |
|
||||
| 28 | Sauterelle | grasshopper.ogg (facultatif) | Stridulation douce et espacée |
|
||||
| 29 | Courtilière | mole_cricket.ogg | Trille sourd et continu |
|
||||
| 30 | Phasme | — | Silencieux |
|
||||
| 31 | Coccinelle | — | Silencieux |
|
||||
| 32 | Cétoine | — | Silencieux |
|
||||
| 33 | Scarabée | — | Silencieux |
|
||||
| 34 | Bousier | — | Silencieux |
|
||||
| 35 | Scarabée Goliath | — | Silencieux |
|
||||
| 36 | Capricorne | — | Silencieux |
|
||||
| 37 | Lucane scie | — | Silencieux |
|
||||
| 38 | Lucane | — | Silencieux |
|
||||
| 39 | Lucane géant | — | Silencieux |
|
||||
| 40 | Lucane arc-en-ciel | — | Silencieux |
|
||||
| 41 | Scarabée éléphant | — | Silencieux |
|
||||
| 42 | Scarabée Hercule | — | Silencieux |
|
||||
| 43 | Puce | — | Silencieux |
|
||||
| 44 | Cloporte | — | Silencieux |
|
||||
| 45 | Moustique | mosquito_flight.ogg | Bourdonnement aigu très proche |
|
||||
| 46 | Mouche | fly_flight.ogg | Bourdonnement bref et irrégulier |
|
||||
| 47 | Cafard | — | Silencieux |
|
||||
|
||||
Fourmi, escargot, puce et cloporte restent silencieux. Les déplacements des
|
||||
scarabées et de la boule de neige pourront recevoir plus tard un frottement
|
||||
très discret si leur lecture en jeu le demande. Le filet et la capture sont
|
||||
des effets de geste séparés : souffle court du filet et prise douce éventuelle,
|
||||
sans notification ni son de découverte. Rien de cela n’est implémenté ici.
|
||||
@@ -0,0 +1,242 @@
|
||||
{
|
||||
"source": "Textures fournies par le créateur, Animal Crossing: Wild World / Nintendo, via Nookipedia",
|
||||
"reference": "https://nookipedia.com/wiki/Bug/Wild_World",
|
||||
"retrieved": "2026-10-08",
|
||||
"assets": [
|
||||
{
|
||||
"id": "common_butterfly",
|
||||
"file": "Common_Butterfly_WW_Inv_Icon.png",
|
||||
"sha256": "0d1f1818a514406e38b0613d8d8e7be8272c95cc818cc3cfb0606b6caab75d6f"
|
||||
},
|
||||
{
|
||||
"id": "yellow_butterfly",
|
||||
"file": "Yellow_Butterfly_WW_Inv_Icon.png",
|
||||
"sha256": "2f65e647c0bdfa0c791089a01679d4beff4187210735920cd989d7b00e7b3d49"
|
||||
},
|
||||
{
|
||||
"id": "tiger_butterfly",
|
||||
"file": "Tiger_Butterfly_WW_Inv_Icon.png",
|
||||
"sha256": "3c057b5814ace6d23065b08b29fd4da9b5d7c063e2a666dc199dffa3a71bbcb0"
|
||||
},
|
||||
{
|
||||
"id": "peacock",
|
||||
"file": "Peacock_WW_Inv_Icon.png",
|
||||
"sha256": "4465ac534609d3ccd912bd2a1e1f1fe54a74605d6cf015742ed82ee47bac215d"
|
||||
},
|
||||
{
|
||||
"id": "monarch",
|
||||
"file": "Monarch_WW_Inv_Icon.png",
|
||||
"sha256": "0a6135be3c9fbb77422cd303634d1de6f90b77d4d58b83a41d154e7864efb6a8"
|
||||
},
|
||||
{
|
||||
"id": "emperor",
|
||||
"file": "Emperor_WW_Inv_Icon.png",
|
||||
"sha256": "73c06c6b333a0fac5a4cc4ef2ea974d9ac24d61626c113d7a19cbc692aeccf28"
|
||||
},
|
||||
{
|
||||
"id": "agrias_butterfly",
|
||||
"file": "Agrias_Butterfly_WW_Inv_Icon.png",
|
||||
"sha256": "7265cce5316036d08d3544f85678e426d073ee4e1ce6456509c9bbfd47691762"
|
||||
},
|
||||
{
|
||||
"id": "birdwing",
|
||||
"file": "Birdwing_WW_Inv_Icon.png",
|
||||
"sha256": "341236d944d869c41f58a5229d3af62e22f45383c0e74830687024d250bdd676"
|
||||
},
|
||||
{
|
||||
"id": "moth",
|
||||
"file": "Moth_WW_Inv_Icon.png",
|
||||
"sha256": "0da1cf7bc700b0a140346d88449855ff48868aaeb27b4331298399fafbd6a6b1"
|
||||
},
|
||||
{
|
||||
"id": "oak_silk_moth",
|
||||
"file": "Oak_Silk_Moth_WW_Inv_Icon.png",
|
||||
"sha256": "b7048019ad492468712e73bb793e1fa0bf97da2af4d90ec2dea5214fb8ba9743"
|
||||
},
|
||||
{
|
||||
"id": "long_locust",
|
||||
"file": "Long_Locust_WW_Inv_Icon.png",
|
||||
"sha256": "afa0056c19d5f590efc28f9fc48868996705ab26549659edbbacac2abd7aa485"
|
||||
},
|
||||
{
|
||||
"id": "migratory_locust",
|
||||
"file": "Migratory_Locust_WW_Inv_Icon.png",
|
||||
"sha256": "f57515e1425d97f22ad3530f6fa53c05899461fb4b3f375f36f47b2596634116"
|
||||
},
|
||||
{
|
||||
"id": "mantis",
|
||||
"file": "Mantis_WW_Inv_Icon.png",
|
||||
"sha256": "e1ec3c4543e173756a5ee87bc40d57958ba31a1ff7ade63558fd11fe16bef732"
|
||||
},
|
||||
{
|
||||
"id": "orchid_mantis",
|
||||
"file": "Orchid_Mantis_WW_Inv_Icon.png",
|
||||
"sha256": "353c6d36c5a9757879a8c28f743d12fd16d1f5191ccf88f3580b926da08efccd"
|
||||
},
|
||||
{
|
||||
"id": "brown_cicada",
|
||||
"file": "Brown_Cicada_WW_Inv_Icon.png",
|
||||
"sha256": "ec229a8b26a69a54bd597e8b1fe43855e0199beb4b0b34884e21a8f2b47239a2"
|
||||
},
|
||||
{
|
||||
"id": "robust_cicada",
|
||||
"file": "Robust_Cicada_WW_Inv_Icon.png",
|
||||
"sha256": "7dd177071e5733e7f2ab4ab1004ac1bdd5f95110565cc52b5a53804cdda0a7d0"
|
||||
},
|
||||
{
|
||||
"id": "walker_cicada",
|
||||
"file": "Walker_Cicada_WW_Inv_Icon.png",
|
||||
"sha256": "42f01a56c4d458c59f89daeacba1fd3424e3e84bbd8072bec150b491f236e058"
|
||||
},
|
||||
{
|
||||
"id": "evening_cicada",
|
||||
"file": "Evening_Cicada_WW_Inv_Icon.png",
|
||||
"sha256": "e91c21b27a1188639fcf0427913284470472544f9d36ee8790fc042a281e789b"
|
||||
},
|
||||
{
|
||||
"id": "lantern_fly",
|
||||
"file": "Lantern_Fly_WW_Inv_Icon.png",
|
||||
"sha256": "40c3f67c4b9fa71c278f1e27fc6b5d4d758a3f29162724a3d1ce375008e874ee"
|
||||
},
|
||||
{
|
||||
"id": "red_dragonfly",
|
||||
"file": "Red_Dragonfly_WW_Inv_Icon.png",
|
||||
"sha256": "3e0ddba1988cc630132c4dda037d6377ca059186b1cc03384de19f4ba1783608"
|
||||
},
|
||||
{
|
||||
"id": "darner_dragonfly",
|
||||
"file": "Darner_Dragonfly_WW_Inv_Icon.png",
|
||||
"sha256": "56bd05a9bdc0f292e9facfb837b980bfe8a218847fe339d5c4fc3184512aa01a"
|
||||
},
|
||||
{
|
||||
"id": "banded_dragonfly",
|
||||
"file": "Banded_Dragonfly_WW_Inv_Icon.png",
|
||||
"sha256": "2d8bf8b73085f9af39584be1a28c36c901c14536adf34c1e8a34d86ee6f4bb5f"
|
||||
},
|
||||
{
|
||||
"id": "ant",
|
||||
"file": "Ant_WW_Inv_Icon.png",
|
||||
"sha256": "5c25d6a3c7d7d60d2245ae153db19a79b2f1a566ee5fc3f518a02a5cf20e0403"
|
||||
},
|
||||
{
|
||||
"id": "pondskater",
|
||||
"file": "Pondskater_WW_Inv_Icon.png",
|
||||
"sha256": "9602ce54f7a6a648bb1a4b713af95cd8548ae71c2e33944417e668a6ece388ec"
|
||||
},
|
||||
{
|
||||
"id": "snail",
|
||||
"file": "Snail_WW_Inv_Icon.png",
|
||||
"sha256": "f8938dfd17aff67f1a7efb95c292f14d63eee1dfa6afc348c7351c62cb147e91"
|
||||
},
|
||||
{
|
||||
"id": "cricket",
|
||||
"file": "Cricket_WW_Inv_Icon.png",
|
||||
"sha256": "b1fcd0b109a2a422917e39923e54e1490e7a0058fbf413ac232fc39b5c0536e8"
|
||||
},
|
||||
{
|
||||
"id": "bell_cricket",
|
||||
"file": "Bell_Cricket_WW_Inv_Icon.png",
|
||||
"sha256": "ce92cb6539abc36acdf97312f4fcec53d87ed63abd195a3e7c391e94dd0a0a4f"
|
||||
},
|
||||
{
|
||||
"id": "grasshopper",
|
||||
"file": "Grasshopper_WW_Inv_Icon.png",
|
||||
"sha256": "9328d7346601212faa8e3b763871d3f52db6fe290be2826475b0ed6decd6e0c7"
|
||||
},
|
||||
{
|
||||
"id": "mole_cricket",
|
||||
"file": "Mole_Cricket_WW_Inv_Icon.png",
|
||||
"sha256": "21825104a8192a243b459d3dd1ad13e9a9ebd935e4b1a9dae4b7cdf942c25957"
|
||||
},
|
||||
{
|
||||
"id": "walkingstick",
|
||||
"file": "Walkingstick_WW_Inv_Icon.png",
|
||||
"sha256": "fee425cb73673cd5b430e25e99b1144432b6ee430ab265b842c32bd4bb08c71e"
|
||||
},
|
||||
{
|
||||
"id": "ladybug",
|
||||
"file": "Ladybug_WW_Inv_Icon.png",
|
||||
"sha256": "25a458cdce22389fcb3c1898ec94d940c5d62077d250dc18f2aa455f4852d4b6"
|
||||
},
|
||||
{
|
||||
"id": "fruit_beetle",
|
||||
"file": "Fruit_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "a4da1eee334c442917ea1b94de6a91500dfbfda3964d17172e04b37f1fee886b"
|
||||
},
|
||||
{
|
||||
"id": "scarab_beetle",
|
||||
"file": "Scarab_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "f67d7d74672bb76711819668636e9e65c0c8ba578a21a6e99a57e12c8985ba07"
|
||||
},
|
||||
{
|
||||
"id": "dung_beetle",
|
||||
"file": "Dung_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "6767a7c0df6b8cfd9ae8f0dbc31a6d8401ed878d7f3adf9d2daa50eba381e5f4"
|
||||
},
|
||||
{
|
||||
"id": "goliath_beetle",
|
||||
"file": "Goliath_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "9776c48cedd7ccb4f124fc8d9a481ff851cf8171889784357051d502021c73a2"
|
||||
},
|
||||
{
|
||||
"id": "longhorn_beetle",
|
||||
"file": "Longhorn_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "2a14437a6fc00b0c06a612fec8eeae9a2ded853eeecb72f97c248efed62ca51a"
|
||||
},
|
||||
{
|
||||
"id": "saw_stag_beetle",
|
||||
"file": "Saw_Stag_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "a92dbee2c9659cdc725501068c34fedfbb7fabdb9ff0a5880d62c63905e8db20"
|
||||
},
|
||||
{
|
||||
"id": "stag_beetle",
|
||||
"file": "Stag_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "7696ac7da4342ec1d720b42ee9fcdbb0f8897ecf5e913c0e2361224c8dd6a02b"
|
||||
},
|
||||
{
|
||||
"id": "giant_beetle",
|
||||
"file": "Giant_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "6b3148ed720a53038d1ad5054870b57bf79fe63140196f4a8d06caf894179469"
|
||||
},
|
||||
{
|
||||
"id": "rainbow_stag",
|
||||
"file": "Rainbow_Stag_WW_Inv_Icon.png",
|
||||
"sha256": "1cdff97582f9221b97f6bb46dd4804dc61b8787c7e98b422c49895ae7847d4c3"
|
||||
},
|
||||
{
|
||||
"id": "elephant_beetle",
|
||||
"file": "Elephant_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "67061bb466f0c16ea2596505760775153a11db8b11dc7e2c3424de09b4d2bfe6"
|
||||
},
|
||||
{
|
||||
"id": "hercules_beetle",
|
||||
"file": "Hercules_Beetle_WW_Inv_Icon.png",
|
||||
"sha256": "817612b4722dbda095ee4329e12e8cb94684fcd17b8640db3e7cb0cf43836051"
|
||||
},
|
||||
{
|
||||
"id": "flea",
|
||||
"file": "Flea_WW_Inv_Icon.png",
|
||||
"sha256": "a68dc39161a5c425438ff568f748f03418851728206174376987f471dfd962ba"
|
||||
},
|
||||
{
|
||||
"id": "pill_bug",
|
||||
"file": "Pill_Bug_WW_Inv_Icon.png",
|
||||
"sha256": "0a9b3cf87295dfdd97b568b2522bb7a25a9e03b371d48d7abe14fe02105faa41"
|
||||
},
|
||||
{
|
||||
"id": "mosquito",
|
||||
"file": "Mosquito_WW_Inv_Icon.png",
|
||||
"sha256": "d1ddce1a0db8e60c636be2953e56143b3c7b943df5318440c7c3ed0efa8dacf2"
|
||||
},
|
||||
{
|
||||
"id": "fly",
|
||||
"file": "Fly_WW_Inv_Icon.png",
|
||||
"sha256": "eaf5c25ce867dd6bfc23ea3e46c64473f2aa4e3ba9e25cb2fe35edb96db81c01"
|
||||
},
|
||||
{
|
||||
"id": "cockroach",
|
||||
"file": "Cockroach_WW_Inv_Icon.png",
|
||||
"sha256": "82906ce0072b7c4f8cf7fc1821adf07ad185a46552965425db2f82cf9a5e8426"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
# INSECT-01 — Insectes Wild World et filet, beta.245
|
||||
|
||||
Branche : `codex/insects-wild-world-beta245`. Demande du créateur du
|
||||
8 octobre 2026 ; périmètre confirmé : **les 47 textures fournies**, parmi
|
||||
les 56 espèces de [Wild World](https://nookipedia.com/wiki/Bug/Wild_World).
|
||||
Les neuf espèces sans texture ne sont pas enregistrées.
|
||||
|
||||
## Résultat implémenté
|
||||
|
||||
47 espèces ambiantes, non agressives, avec habitat, mois, heures et pics
|
||||
côté serveur. Le calendrier utilise la date civile et le fuseau de
|
||||
`RealtimeService`, comme Sanctuary ; hémisphère sud : décalage de six mois.
|
||||
Les créneaux sont début inclus et fin exclue, y compris ceux qui traversent
|
||||
minuit. Les horaires spécifiques à certains mois restent distincts.
|
||||
Les pics multiplient le poids d’apparition par **3**, dans le créneau
|
||||
disponible ; ils ne forcent aucune apparition et ne permettent pas
|
||||
d’apparition hors saison. Poids de base 6, ou 2 pour les espèces rares
|
||||
du catalogue ; équilibrage Sanctuary, sans reprise des prix en clochettes.
|
||||
|
||||
Chaque sprite fourni est copié sans retouche. Les papillons, la mouche et le papillon
|
||||
de nuit utilisent deux quads articulés au centre et deux moitiés d’UV.
|
||||
Les insectes des troncs utilisent un quad vertical fixé à la face de bûche.
|
||||
Fourmi, gerris, mantes et coccinelle : quad horizontal. Criquets, grillons,
|
||||
escargot et autres petits insectes : billboard vertical ; les billboards
|
||||
aériens suivent aussi l’inclinaison de la caméra. Le moustique tourne
|
||||
autour du joueur vivant le plus proche sans jamais l’attaquer.
|
||||
|
||||
Approche normale : fuite à moins de 3 blocs ; sprint : 5 blocs ;
|
||||
accroupi : 0,65 bloc. Le moustique tolère une approche normale jusqu’à
|
||||
0,95 bloc, ce qui permet son orbite à 1,8 bloc (sprint : 2,5 blocs).
|
||||
Une ligne de vue libre est nécessaire. Une attaque effraie l’insecte.
|
||||
La fuite dure 24 ticks puis l’entité disparaît ; elle n’est plus capturable.
|
||||
Les insectes ne poussent ni ne blessent et ne produisent aucun butin de mort.
|
||||
|
||||
Le filet `sanctuary:insect_net` s’utilise au **clic droit**, avec une visée
|
||||
à 3 blocs. Le serveur choisit le premier insecte sur le trajet du geste,
|
||||
respecte les obstacles et produit exactement un spécimen. Délai entre
|
||||
gestes : 10 ticks ; durabilité : 128, un point par geste en survie.
|
||||
Inventaire plein : dépôt protégé aux pieds du joueur. Capture et découverte
|
||||
du filet, de sa recette et des 47 spécimens **sans notification**, à la demande
|
||||
du créateur ; les compteurs et découvertes restent enregistrés en silence. Les spécimens
|
||||
`sanctuary:insect_<espèce>` utilisent les mêmes sprites et ont des noms FR/EN.
|
||||
Le filet et les spécimens figurent aussi dans Outils et utilitaires en créatif.
|
||||
|
||||
Recette, `S` = fil, `#` = bâton :
|
||||
|
||||
```text
|
||||
SS
|
||||
#S
|
||||
#
|
||||
```
|
||||
|
||||
## Habitats et adaptations explicites
|
||||
|
||||
- Papillons près des fleurs ; machaon près des fleurs rouges/roses, paon
|
||||
près des fleurs bleues/violettes/noires. Mante orchidée : fleurs blanches.
|
||||
- Mantes, coccinelle et escargot peuvent aussi être sur des feuilles ;
|
||||
l’escargot exige une pluie effective sur son support, sans neige ni toit.
|
||||
- Espèces de palmiers sur bûches/bûches de bois de jungle non écorcées.
|
||||
Pas de nouvelle essence d’arbre. Les autres espèces utilisent les bûches.
|
||||
- Gerris sur eau douce source avec air au-dessus, à la hauteur native
|
||||
de sa surface ; biomes océaniques exclus.
|
||||
- Fourmis près de chair putréfiée déposée ; mouches aussi près d’os ou de
|
||||
pommes de terre empoisonnées déposées. Pas de système de pourrissement.
|
||||
- Bousier sur neige, sans création ou poussée de boule de neige.
|
||||
- Puce sur un villageois vivant qu’elle suit. Papillon de nuit près
|
||||
d’un bloc lumineux à ciel ouvert.
|
||||
- Cloporte : chance de sortie en frappant une roche ; courtilière :
|
||||
chance de sortie après avoir creusé un bloc de terre. Au plus une
|
||||
tentative par joueur toutes les cinq secondes, probabilité de 1/3.
|
||||
Pas de population souterraine invisible ni de chant souterrain.
|
||||
|
||||
La colonne des pics Nookipedia de l’escargot contient un second créneau
|
||||
`4 AM – 7 PM ()` sans mois. Seul le pic explicite de mai, 16 h–8 h,
|
||||
est repris ; aucun mois n’est inventé pour ce fragment incomplet.
|
||||
|
||||
## Monde et conservation
|
||||
|
||||
Apparitions uniquement dans l’Overworld d’une partie Sanctuary prise en
|
||||
charge. Un ancien monde ordinaire n’est pas inscrit par la seule installation
|
||||
du mod. Tous les supports et déplacements restent dans des chunks chargés ;
|
||||
aucun chunk, bloc ou profil de génération n’est créé ou modifié par ce système.
|
||||
Échantillonnage toutes les cinq secondes, 18 tentatives bornées par joueur,
|
||||
au plus deux ajouts ; plafond de 32 entités dans un rayon local de 32 blocs
|
||||
et espacement d’un bloc entre sites occupés. Durée de vie maximale :
|
||||
120 secondes. Saison/horaire et support revérifiés chaque seconde.
|
||||
|
||||
Les entités ambiantes sont transitoires et non sauvegardées. Les objets
|
||||
capturés suivent la sauvegarde native des items. Aucun format existant,
|
||||
identifiant existant, sauvegarde personnelle ou génération n’est migré.
|
||||
Les modifications beta.242–244 préexistantes sont conservées.
|
||||
|
||||
## Catalogue
|
||||
|
||||
Mois numérotés de 1 à 12, référence nord ; horaires de la source.
|
||||
Le catalogue runtime est `data/sanctuary/insects/wild_world.json` ;
|
||||
la provenance des textures est [inventoriée](insects-assets.json).
|
||||
|
||||
| Espèce | Habitat Sanctuary | Mois | Horaires | Pics |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Piéride du chou (`common_butterfly`) | FLOWERS | 3,4,5,6,7,8,9 | 4 AM – 7 PM (Mar – Jun) / 8 AM – 5 PM (Jul – Aug) / 8 AM – 4 PM (Sep) | 8 AM – 5 PM (Mar – Jun) |
|
||||
| Citron (`yellow_butterfly`) | FLOWERS | 3,4,5,6,7,8,9 | 4 AM – 7 PM (Mar – Jun) / 8 AM – 5 PM (Jul – Aug) / 8 AM – 4 PM (Sep) | 8 AM – 5 PM (Mar – Jun) |
|
||||
| Machaon (`tiger_butterfly`) | FLOWERS | 3,4,5,6,7,8,9 | 4 AM – 7 PM (Mar – Jun) / 8 AM – 5 PM (Jul – Aug) / 8 AM – 4 PM (Sep) | 8 AM – 5 PM (Mar – Jun) |
|
||||
| Papillon paon (`peacock`) | FLOWERS | 3,4,5,6,7,8,9 | 4 AM – 7 PM (Mar – Jun) / 8 AM – 5 PM (Jul – Aug) / 8 AM – 4 PM (Sep) | 8 AM – 5 PM (May – Jun) |
|
||||
| Monarque (`monarch`) | FLOWERS | 9,10,11 | 4 AM – 5 PM (Sep – Oct) / 8 AM – 5 PM (Nov) | 8 AM – 5 PM (Oct – Nov) |
|
||||
| Morpho bleu (`emperor`) | FLOWERS | 6,7,8,9 | 8 AM – 5 PM | — |
|
||||
| Agrias (`agrias_butterfly`) | FLOWERS | 6,7,8,9 | 8 AM – 5 PM | — |
|
||||
| Ornithoptère (`birdwing`) | FLOWERS | 6,7,8,9 | 8 AM – 5 PM | — |
|
||||
| Papillon de nuit (`moth`) | LIGHT | 5,6,7,8,9 | 7 PM – 4 AM | 11 PM – 4 AM (Jun – Aug) |
|
||||
| Grand paon de nuit (`oak_silk_moth`) | TREE | 6,7,8,9 | 7 PM – 4 AM | — |
|
||||
| Criquet long (`long_locust`) | GROUND | 8,9,10,11 | 8 AM – 7 PM | Sep – Nov |
|
||||
| Criquet migrateur (`migratory_locust`) | GROUND | 9,10,11 | 8 AM – 7 PM | 8 AM – 4 PM |
|
||||
| Mante religieuse (`mantis`) | FLOWER | 8,9,10,11 | 8 AM – 5 PM | 8 AM – 4 PM (Sep – Nov) |
|
||||
| Mante orchidée (`orchid_mantis`) | WHITE_FLOWER | 8,9,10,11 | 8 AM – 5 PM | 8 AM – 4 PM (Sep – Nov) |
|
||||
| Cigale brune (`brown_cicada`) | TREE | 7,8 | 8 AM – 5 PM | 8 AM – 4 PM |
|
||||
| Cigale robuste (`robust_cicada`) | TREE | 7,8 | 8 AM – 5 PM | 8 AM – 4 PM |
|
||||
| Cigale cicadelle (`walker_cicada`) | TREE | 7,8,9 | 8 AM – 5 PM | Aug |
|
||||
| Cigale du soir (`evening_cicada`) | TREE | 7,8 | 4 AM – 8 AM; 4 PM – 7 PM | — |
|
||||
| Fulgore (`lantern_fly`) | TREE | 6,7,8,9 | 4 PM – 7 PM; 11 PM – 8 AM | — |
|
||||
| Libellule rouge (`red_dragonfly`) | AIR | 9,10 | 8 AM – 7 PM | 4 PM – 5 PM |
|
||||
| Libellule verte (`darner_dragonfly`) | AIR | 6,7,8 | 8 AM – 5 PM | 4 PM – 5 PM |
|
||||
| Libellule géante (`banded_dragonfly`) | AIR | 7,8 | 8 AM – 5 PM | — |
|
||||
| Fourmi (`ant`) | ROTTEN_FOOD | 1,2,3,4,5,6,7,8,9,10,11,12 | All day | — |
|
||||
| Gerris (`pondskater`) | WATER | 6,7,8,9 | 8 AM – 7 PM | — |
|
||||
| Escargot (`snail`) | RAIN_FLOWER | 4,5,6,7,8,9 | All day | 4 PM – 8 AM (May) / 4 AM – 7 PM () |
|
||||
| Grillon (`cricket`) | GROUND | 9,10,11 | 5 PM – 8 AM | — |
|
||||
| Grillon des prés (`bell_cricket`) | GROUND | 9,10 | 5 PM – 8 AM | — |
|
||||
| Sauterelle (`grasshopper`) | GROUND | 7,8,9 | 4 PM – 5 PM (Jul) / 8 AM – 5 PM (Aug – Sep) | Sep |
|
||||
| Courtilière (`mole_cricket`) | UNDERGROUND | 1,2,3,4,5,11,12 | All day | Dec – Feb |
|
||||
| Phasme (`walkingstick`) | TREE | 7,8,9,10,11 | 4 AM – 7 PM | — |
|
||||
| Coccinelle (`ladybug`) | FLOWER | 3,4,5,6,10 | 8 AM – 5 PM | Mar – May |
|
||||
| Cétoine (`fruit_beetle`) | TREE | 7,8,9 | All day (Jul – Aug) / 7 PM – 8 AM (Sep) | 7 PM – 4 AM (Jul – Aug) |
|
||||
| Scarabée (`scarab_beetle`) | TREE | 7,8 | 11 PM – 8 AM | — |
|
||||
| Bousier (`dung_beetle`) | SNOW | 1,2,12 | 5 PM – 8 AM | — |
|
||||
| Scarabée Goliath (`goliath_beetle`) | PALM_TREE | 6,7,8 | 7 PM – 8 AM | — |
|
||||
| Capricorne (`longhorn_beetle`) | TREE | 6,7,8 | 8 AM – 7 PM (Jun) / 8 AM – 5 PM (Jul – Aug) | — |
|
||||
| Lucane scie (`saw_stag_beetle`) | TREE | 7,8 | All day | 11 PM – 8 AM |
|
||||
| Lucane (`stag_beetle`) | TREE | 6,7,8 | 7 PM – 8 AM | 11 PM – 8 AM (Jul – Aug) |
|
||||
| Lucane géant (`giant_beetle`) | TREE | 7,8 | 11 PM – 8 AM | — |
|
||||
| Lucane arc-en-ciel (`rainbow_stag`) | TREE | 6,7,8,9 | 7 PM – 8 AM | — |
|
||||
| Scarabée éléphant (`elephant_beetle`) | PALM_TREE | 7,8 | 7 PM – 8 AM | — |
|
||||
| Scarabée Hercule (`hercules_beetle`) | PALM_TREE | 7,8 | 11 PM – 8 AM | — |
|
||||
| Puce (`flea`) | VILLAGER | 3,4,5,6,7,8,9,10,11 | All day | — |
|
||||
| Cloporte (`pill_bug`) | ROCK | 1,2,3,4,5,6,7,8,9,10,11,12 | All day | Nov – Mar |
|
||||
| Moustique (`mosquito`) | AIR | 6,7,8,9 | 5 PM – 4 AM | 5 PM – 7 PM |
|
||||
| Mouche (`fly`) | ROTTEN_FOOD | 1,2,3,4,5,6,7,8,9,10,11,12 | All day | — |
|
||||
| Cafard (`cockroach`) | TREE | 1,2,3,4,5,6,7,8,9,10,11,12 | All day | — |
|
||||
|
||||
## Vérifications
|
||||
|
||||
Le lancement serveur ciblé utilise le profil plat déjà prévu pour les tests
|
||||
fonctionnels (`sanctuaryAtlasOnly`), afin d’éviter les prérequis worldgen.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack -PsanctuaryFocusedTests=insects245 -PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryInsects245ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
```
|
||||
|
||||
Les neuf GameTests requis sont réussis : calendrier et pics, recette réelle,
|
||||
fleurs, pluie, eau, faces de troncs, approche accroupie, fuite, capture unique,
|
||||
obstacles, portée, inventaire plein, spectateur et absence de chargement
|
||||
forcé. Les 47 PNG 16 × 16 correspondent aux SHA-256 des fichiers fournis ;
|
||||
modèles d’items et noms FR/EN présents.
|
||||
|
||||
Le parcours client Vulkan réussit sur Apple M1 / MoltenVK 1.4.2 : chargement
|
||||
des 47 textures et noms FR/EN, quatre modes de rendu, pluie effective pour
|
||||
l’escargot, orbite du moustique et capture native au clic droit accroupi
|
||||
avec un point d’usure. Les découvertes sont enregistrées ; ni le filet,
|
||||
ni sa recette, ni les spécimens ne déclenchent de notification. Une
|
||||
découverte ordinaire reste annoncée. Marqueur du test :
|
||||
`INSECTS245_CLIENT_PASS ... silent-discoveries=pass`.
|
||||
|
||||
Captures de contrôle :
|
||||
[surfaces](../mods/sanctuary/build/run/clientGameTest/screenshots/0000_insects245-day-surfaces.png),
|
||||
[filet](../mods/sanctuary/build/run/clientGameTest/screenshots/0001_insects245-net-capture.png),
|
||||
[moustique](../mods/sanctuary/build/run/clientGameTest/screenshots/0002_insects245-mosquito-night.png).
|
||||
Le monde plat de contrôle reste sombre ; ces captures servent à vérifier
|
||||
les formes et interactions, pas à valider l’éclairage d’une île Sanctuary.
|
||||
L’équilibrage des fréquences reste à apprécier dans une partie normale.
|
||||
|
||||
Les essais restent dans des mondes de développement neufs. Aucune
|
||||
publication, instance Prism ou sauvegarde personnelle modifiée.
|
||||
|
||||
`check build assemblePack` réussit sur les sources finales ; le pack exporté
|
||||
contient le même JAR beta.245, les 47 textures originales, les modèles,
|
||||
le catalogue et la recette. Intégrité ZIP et version Minecraft 26.3 /
|
||||
Fabric Loader 0.19.5 vérifiées. Les 57 fichiers préexistants hors points
|
||||
d’intégration conservent leur empreinte initiale.
|
||||
|
||||
Livraison locale : [Sanctuary-beta.245.mrpack](../build/Sanctuary-beta.245.mrpack)
|
||||
(12 977 936 octets), SHA-256
|
||||
`aa537808cb458813f366ffc9d67dd9a3e1fc60cbd1ce5e8ddc8b1ab40cb0ac46`.
|
||||
JAR beta.245 : SHA-256
|
||||
`94132d1bd854259110d49d77f58a7bbaeed94f73a50df92460ef46fbf2355444`.
|
||||
[Reçu de validation](../build/insects245/validation.json).
|
||||
@@ -0,0 +1,128 @@
|
||||
# DISCOVERY-183 — lieux et ressources de Sanctuary Island
|
||||
|
||||
Ticket du 30 septembre 2026, branche `codex/island-discovery-beta183`.
|
||||
Le créateur a visité le solo beta.182 et valide la palette naturelle, la rosace,
|
||||
les étangs et la génération sous l'île. Il demande un portail **horizontal**,
|
||||
les secteurs miniers et le soufre manquants, l'ISS séparée et un exemple d'eau
|
||||
haute qui suit le dénivelé. Son complément relie les vitres de la rosace aux
|
||||
huit couleurs du Bugrock et à une géographie lisible, froide au nord, chaude au sud.
|
||||
|
||||
## Contrat
|
||||
|
||||
Nouveau preset facultatif `sanctuary_test:discovery_v1`, profil `discovery`.
|
||||
Graine de visite : **42**. Anciens presets, sauvegardes et chunks conservés.
|
||||
La source de biomes possède une option `discovery` absente/false pour les
|
||||
anciens profils : seule la nouvelle génération active la poche de soufre.
|
||||
Aucune migration, expansion, activation de portail ou progression ajoutée.
|
||||
Minecraft 26.3, blocs de soufre natifs et minerais Sanctuary existants.
|
||||
|
||||
## Contenu
|
||||
|
||||
- Galerie centrale agrandie, toujours taillée dans la roche, avec ses deux
|
||||
annexes et passages en boucle. Cadre d'obsidienne de **5 × 5**, trou central
|
||||
de **3 × 3**, fond un bloc plus bas, sec. Le gardien viendra ultérieurement.
|
||||
- Rosace : positions, nervures, passages et Bugrock à Y=320 conservés.
|
||||
Seules les vitres changent. Ordre du dessin source, depuis le nord :
|
||||
bleu clair, vert clair, vert, orange, rouge, magenta, jaune, cyan.
|
||||
Le petit sommet blanc conserve le rappel du logo central blanc.
|
||||
Cette rose colorée donne une convention géographique ; elle ne transforme
|
||||
pas encore les biomes de l'île en huit régions ni n'allume les relais.
|
||||
- Trois secteurs de gemmes : saphir au nord (0,-176), émeraude à l'est
|
||||
(176,0), rubis au sud (0,176), chacun de rayon 64 blocs autour des centres
|
||||
de chunks. Petits amas sur les faces de grotte, entre Y=40 et 287,
|
||||
toujours au moins 13 blocs sous la surface, au plus douze blocs par chunk
|
||||
retenu. Les blocs exposés et stocks sont comptés dans
|
||||
le monde effectivement généré. Diamants, cuivre, charbon, fer et lapis
|
||||
gardent leur distribution précédente ; aucun or ni redstone ajouté.
|
||||
- Une caverne de soufre au sud-ouest, altitude choisie dans la roche,
|
||||
soufre/cinabre/calcite, ouverture vers le jour et trois formations de soufre
|
||||
enracinées à la surface pour la repérer. Pas de lave ni de nouveau mob.
|
||||
- Un lac supérieur supplémentaire et son bassin aval, reliés par un chenal
|
||||
en marches sur quatre blocs de dénivelé. La partie aval s'ouvre au jour.
|
||||
Les deux systèmes d'étangs beta.180 restent présents. Recherche locale
|
||||
bornée et plan mémorisé ; aucune hydrologie régionale calculée.
|
||||
- ISS entre Y=575 et 591 : trois modules métalliques reliés et praticables,
|
||||
quatre ailes solaires, poutre centrale, antenne, porche d'arrivée et
|
||||
observation vitrée vers l'île. Architecture originale, sans schematic
|
||||
externe. La salle nord contient une table de cartes dans des cadres lumineux
|
||||
horizontaux. Le rayon du générateur détermine la mosaïque et la salle :
|
||||
5 × 5 pour le petit format (512), 7 × 7 pour le moyen (724), 9 × 9 pour le
|
||||
grand (1024). Ce profil de terrain reste au format moyen ; les autres
|
||||
dimensions de station sont vérifiées géométriquement, sans ajouter de
|
||||
nouveaux profils de terrain à cette livraison. Aucun familier spécial,
|
||||
quête ou portail vers les hauteurs fonctionnel ajouté.
|
||||
|
||||
Toutes les nouvelles écritures appartiennent au chunk en cours de décoration.
|
||||
Plans locaux calculés une fois, aucune reconstruction dans une sauvegarde
|
||||
ouverte. Les cartes sont des objets Minecraft natifs, persistés avec leurs
|
||||
cadres. Une file finie les prépare par tranches de quatre lignes avec un budget
|
||||
cible de 3 ms par tick. Projection topographique de la graine au pas de quatre
|
||||
blocs, palette réelle pour les chunks déjà chargés, biomes pour les autres :
|
||||
c'est une vue d'ensemble du terrain initial, pas une photographie détaillée
|
||||
de toutes les constructions. Aucun chargement de chunks éloignés demandé pour
|
||||
la carte. Les cartes terminées sont figées comme une trace de l'ancienne
|
||||
expédition, et ne sont ni recréées ni regagnées si un joueur retire un cadre.
|
||||
Une interruption reprend une carte inachevée avec son identifiant existant.
|
||||
|
||||
## Vérifications et visite
|
||||
|
||||
Monde neuf final `solo183e/discovery/42`, serveur arrêté et sauvegardé proprement :
|
||||
567 échantillons de densité conservés sous Y=216, zéro région d'hydrologie,
|
||||
trois cerisiers, les deux bassins antérieurs et les cinq spawners/quatre caches
|
||||
conservés. Galerie : 1 939 surfaces reliées sur 1 979 colonnes, cadre 5 × 5 et
|
||||
fosse sèche 3 × 3 vérifiés. Rosace : géométrie inchangée, huit couleurs présentes
|
||||
et huit approches libres.
|
||||
|
||||
Stocks réellement comptés dans les trois districts : 235 saphirs (176 exposés),
|
||||
624 émeraudes (441 exposées), 576 rubis (402 exposés). Nouveau système d'eau :
|
||||
4 311 blocs d'eau reliés et débouché extérieur vérifié. La ventilation du soufre
|
||||
est ouverte jusqu'au terrain local du débouché, plutôt qu'à la hauteur plus
|
||||
basse du centre de la poche.
|
||||
|
||||
ISS : 4 742 entrées de plan, trois modules reliés, quatre ailes solaires,
|
||||
49 cartes distinctes et supportées dans 49 cadres horizontaux. Les géométries
|
||||
5 × 5, 7 × 7 et 9 × 9 couvrent les rayons 288, 395 et 544 avec leurs marges de
|
||||
terrain. La mosaïque courante couvre 896 × 896 blocs. Calcul de son aperçu :
|
||||
2 039 ms au total ; aucun chargement de chunk distant dans ce calcul. Lecture
|
||||
NBT après arrêt : 49 cartes pleines et figées, 49 identifiants uniques, tous
|
||||
les cadres orientés vers le haut, centres jointifs et aucun marqueur de travail
|
||||
inachevé. Assemblage des pixels sauvegardés inspecté visuellement ; il ne s'agit
|
||||
pas d'une capture du jeu. Rapport local `build/discovery183-saved-atlas.json`.
|
||||
|
||||
Démarrage serveur mesuré à 4,4 s ; préparation avec sondages, génération des
|
||||
zones visitées et contrôles terminée à 41,1 s. Ce dernier chiffre inclut les
|
||||
tests synchrones, ce n'est pas un temps de démarrage normal du solo.
|
||||
Rapport `build/discovery183-quick-result.json`.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack` réussi en 7 min 20 s,
|
||||
**265/265 GameTests** (`build/discovery183-check-build.log`). Après les deux
|
||||
retouches finales limitées au laboratoire (ventilation et lecture des couleurs
|
||||
réelles de la carte), compilation, contrôles du mod de labo, assemblages et
|
||||
export du lanceur ont été refaits ; les checks des trois modules inchangés,
|
||||
déjà réussis, n'ont pas été répétés dans cet assemblage final. Journal
|
||||
`build/discovery183-final-assembly.log`. Le monde `solo183e` vérifie ce code final.
|
||||
|
||||
Solo neuf `visite183/discovery/42`, `Sanctuary-Discovery-183-Solo`, vue 32,
|
||||
simulation 12, créatif, vol et commandes. Départ préparé devant la table de
|
||||
l'ISS. Entrée en jeu confirmée dans le journal le 30 septembre à 03:11:11 :
|
||||
KokaLab en (4.5,580,-12.5), vue 32. Passage en spectateur à 03:11:48.
|
||||
Client Vulkan actif.
|
||||
Aucune sauvegarde antérieure ni instance Prism modifiée.
|
||||
|
||||
| Lieu | Téléportation de visite |
|
||||
| --- | --- |
|
||||
| Salle des cartes ISS | `/tp 4.5 580 -12.5 140 35` |
|
||||
| Porche ISS | `/tp 0.5 577 28.5 180 0` |
|
||||
| Rosace | `/tp 0.5 319 5.5 180 0` |
|
||||
| Portail inférieur | `/tp 0.5 177 7.5 180 30` |
|
||||
| Poche de soufre | `/tp -152 180 152` |
|
||||
| Indice de soufre en surface | `/tp -158 281 149` |
|
||||
| Bassin supérieur | `/tp -96 254 -192` |
|
||||
| Saphirs | `/tp -62 236 -204` |
|
||||
| Émeraudes | `/tp 114 172 -30` |
|
||||
| Rubis | `/tp -60 192 146` |
|
||||
|
||||
Graine 42 testée en génération native ; les autres graines restent à éprouver.
|
||||
Palette, volumes, positionnement des cartes et proportions de l'ISS à valider
|
||||
en visite. Les cartes sont une vue d'ensemble figée de l'île principale,
|
||||
pas encore un atlas vivant des expansions.
|
||||
@@ -0,0 +1,197 @@
|
||||
# WG-ECO-176 — strates, biomes et mares du laboratoire
|
||||
|
||||
Branche `codex/island-ecology-beta176`, base de visite beta.175 conservée au
|
||||
commit `ba4cf19`. Le créateur autorise l'essai décrit dans
|
||||
[les retours de visite](worldgen-retours-beta175.md).
|
||||
|
||||
## Contrat avant implémentation
|
||||
|
||||
Nouveau preset `sanctuary_test:ecology_v1`, réglage `ecology_v1_10`, graine
|
||||
initiale 42 puis témoins 0 et 173, diamètre 724. Relief brut identique à
|
||||
`sky_v1` ; matériaux, biomes, décorations et petites excavations des mares
|
||||
peuvent différer. Limite du ciel réservé : aucun bloc généré de 512 à 639.
|
||||
Les presets historiques et la génération normale restent inchangés.
|
||||
|
||||
- Géologie en couches ondulées de pierre, andésite, tuf, deepslate et touches
|
||||
de calcite. Conserver le diamant profond et enfoui.
|
||||
- Grandes régions automnales et de cerisiers, lisières et prairie/forêt.
|
||||
- Trois récifs avec identité humide/tropicale ; deux fragments supérieurs
|
||||
avec végétation courte. Le sélecteur sait dépasser l'ancienne limite 384.
|
||||
- Mares locales retenues, nombre d'essais borné, écriture dans le chunk
|
||||
propriétaire, sans demande de plan hydrologique régional.
|
||||
- Biomes propres au labo avec décorations sélectionnées : pas de structures
|
||||
natives, notamment mineshafts et villages. Aucun village Sanctuary créé
|
||||
dans cet essai ; aucun nouveau contenu d'expansion.
|
||||
|
||||
Aucune migration : nouveaux mondes de test seulement. La sauvegarde de
|
||||
visite beta.175 est conservée et ne doit pas être ouverte avec une autre
|
||||
empreinte de génération. Le nouveau monde peut être copié après arrêt
|
||||
propre vers un solo avec commandes et rendu 32 ; conserver l'original et
|
||||
les identifiants de génération. Aucun déploiement Prism ni publication.
|
||||
|
||||
## Vérification prévue
|
||||
|
||||
Compilation, `check build assemblePack assembleTestPack`, mesures natives
|
||||
sur trois graines, réouverture de 42, coupes géologiques et cartes de biomes
|
||||
à la surface réelle. Contrôler la stabilité des mares après ticks, l'absence
|
||||
de structures admissibles, le ciel vide et l'absence de plans hydrologiques.
|
||||
Le recensement exhaustif des minerais doit fonctionner avec mémoire bornée ;
|
||||
aucun petit échantillon ne sera présenté comme un total d'île.
|
||||
|
||||
## Réalisation
|
||||
|
||||
Le module optionnel `sanctuary-test` fournit trois composants natifs :
|
||||
`EcologyBiomes176` sélectionne les biomes, `EcologyStrata176` remplace les
|
||||
matériaux pendant leur génération, et `EcologyWater176` pose les mares avant
|
||||
les décorations. Le preset normal n'utilise aucun de ces composants.
|
||||
|
||||
Les biomes propres au laboratoire réutilisent des décorations de Minecraft
|
||||
26.3 : forêt automnale, cerisiers, jungle clairsemée, mangrove, marais et
|
||||
cavernes. Les deux fragments les plus hauts reçoivent de la végétation courte.
|
||||
Les minerais natifs, sources, lacs et structures sont exclus de cette palette ;
|
||||
les dépôts du laboratoire beta.175 restent responsables des ressources.
|
||||
|
||||
Une mare occupe un seul chunk, avec un rayon de 3 ou 4 blocs et deux niveaux
|
||||
d'eau. Le placement vérifie le fond et les parois avant toute écriture ; cinq
|
||||
essais au maximum, dans un tiers des chunks. Aucun calcul de bassin versant,
|
||||
chargement de voisin ni recherche hydrologique régionale. Les décorations
|
||||
natives peuvent ensuite ajouter des plantes ou de petites flaques de grotte.
|
||||
|
||||
Le test d'eau compare les positions de **toutes** les sources dans le voisinage
|
||||
immédiat avant et après 240 ticks natifs, y compris les blocs gorgés d'eau.
|
||||
Il refuse tout écoulement et toute perte/apparition de source, et vérifie
|
||||
qu'il reste de l'eau dans chaque mare. Les flaques indépendantes produites
|
||||
par les groupes de stalagmites ne doivent pas être confondues avec une fuite.
|
||||
|
||||
Le recensement exhaustif conserve une enveloppe finie de chunks jusqu'à la
|
||||
fin de la mesure. Il ne force plus des cycles d'expiration/sauvegarde durant
|
||||
`SERVER_STARTED`, qui dupliquaient les copies des chunks voisins en mémoire.
|
||||
Ce parcours est réservé au diagnostic `--whole-island`, jamais au lancement
|
||||
ordinaire du laboratoire.
|
||||
|
||||
## Reproduction
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary-test:exportDuoLaunch
|
||||
python3 scripts/worldgen_lab.py prepare --profile ecology --seed 42 --run nouvel-essai
|
||||
python3 scripts/worldgen_lab.py server --profile ecology --seed 42 --run nouvel-essai
|
||||
```
|
||||
|
||||
Ajouter `--verify` pour les relevés et le contrôle des fluides. Pour un
|
||||
recensement complet, ajouter `--whole-island` à la préparation **et** au serveur.
|
||||
Le lanceur refuse de réutiliser un monde dont l'empreinte des sources a changé.
|
||||
Les fichiers `ecology-v1-cold/survey.json`, les coupes binaires et
|
||||
`worldgen-lab-metrics.json` sont écrits dans le dossier serveur du laboratoire.
|
||||
`scripts/ecology_atlas.py` produit l'atlas avec les dépendances de
|
||||
`scripts/sky-atlas-requirements.txt`.
|
||||
|
||||
## Mesures natives du 29 septembre
|
||||
|
||||
Série `science176d`, Java 25, Minecraft 26.3, heap serveur limité à 1 536 MiB.
|
||||
L'[archive des relevés](/Users/koka/Documents/sanctuary/retours-sessions/2026-09-29_1506-storyquest/releves-beta176/)
|
||||
conserve les JSON, coupes, journaux, figures et empreintes SHA-256.
|
||||
|
||||
| Contrôle | Graine 42 | Graine 0 | Graine 173 |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| Densités identiques à beta.175 | 50 000 / 50 000 | 50 000 / 50 000 | 50 000 / 50 000 |
|
||||
| Ensembles de structures natives admissibles | 0 | 0 | 0 |
|
||||
| Plans hydrologiques régionaux | 0 | 0 | 0 |
|
||||
| Mares témoins stables après 240 ticks | 8 / 8 | 8 / 8 | 8 / 8 |
|
||||
| Blocs d'air contrôlés en Y=512–639 | 1 474 560 | 1 474 560 | 1 474 560 |
|
||||
|
||||
Les cinq récifs de chaque graine portent de la végétation. Les mares témoins
|
||||
comprennent de la surface, des grottes et des récifs hauts. Le contrôle du ciel
|
||||
porte sur neuf chunks autour de chacun des cinq récifs ; ce n'est pas un scan
|
||||
exhaustif de toutes les décorations possibles sur toutes les graines.
|
||||
|
||||
Réouverture de 42 : cartes de biomes identiques, deux coupes de blocs identiques
|
||||
octet par octet, mêmes sources d'eau avant/après les 240 nouveaux ticks.
|
||||
|
||||
### Ressources de toute l'île, graine 42
|
||||
|
||||
Recensement des **2 000 chunks de l'enveloppe de l'île**, Y=0–639, après
|
||||
décoration ; aucune extrapolation des 81 chunks centraux. Durée du comptage :
|
||||
154,391 s, réservée au diagnostic. Les points de contrôle mémoire montrent
|
||||
341–607 MiB de heap utilisé ; cela ne mesure pas le pic total du processus.
|
||||
|
||||
| Ressource | Blocs de minerai, variantes pierre + deepslate |
|
||||
| --- | ---: |
|
||||
| Cuivre | 193 771 |
|
||||
| Charbon | 138 998 |
|
||||
| Fer | 5 343 |
|
||||
| Lapis | 7 124 |
|
||||
| Diamant | **336** |
|
||||
| Or | 0 |
|
||||
| Redstone | 0 |
|
||||
|
||||
Les 336 diamants sont en deepslate, sous Y=136, sans voisin d'air. L'améthyste
|
||||
comprend 5 578 blocs ordinaires, 1 422 blocs bourgeonnants et 219
|
||||
bourgeons/cristaux. Ces totaux décrivent ce monde enregistré ; les deux autres
|
||||
graines ont seulement un relevé minéral régional, pas un total d'île.
|
||||
|
||||
Sur la carte de surface échantillonnée de 42, l'automne occupe 19,4 % des points
|
||||
et les cerisiers 25,5 %. Leurs plus grandes composantes regroupent respectivement
|
||||
642/646 et 846/850 points : il s'agit bien de grandes régions, avec quelques
|
||||
points isolés aux bords. Grille de 8 blocs, connexité à quatre voisins ; ces
|
||||
proportions ne sont pas des surfaces exactes au bloc près.
|
||||
|
||||
### Durées et interprétation
|
||||
|
||||
| Passage | Initialisation serveur hors bootstrap JVM | Processus → fin des diagnostics |
|
||||
| --- | ---: | ---: |
|
||||
| 42 neuve, comptage intégral | 6,403 s | 237,523 s |
|
||||
| 42 réouverte, relevé régional | 0,922 s | 36,606 s |
|
||||
| 0 neuve, relevé régional | 4,782 s | 86,856 s |
|
||||
| 173 neuve, relevé régional | 2,792 s | 86,125 s |
|
||||
|
||||
La seconde colonne chronomètre les événements de démarrage du serveur, pas
|
||||
l'ouverture complète du client. La dernière inclut les cartes, chargements
|
||||
de chunks, coupes, minerais et 240 ticks de vérification. Ces parcours sont
|
||||
activés seulement par `--verify`/`--whole-island` et ne tournent pas pendant
|
||||
la visite solo. Aucun gain de FPS ni coût isolé de l'eau n'est déduit ici.
|
||||
|
||||
## Livraison locale et limites
|
||||
|
||||
Client solo ouvert le 29 septembre à 20:22 : backend Vulkan confirmé
|
||||
(MoltenVK 1.4.2, Apple M1), entrée de KokaLab à `(-8.5, 249, -13.5)`,
|
||||
serveur intégré et rendu passé à 32 chunks dans le journal. Les commandes
|
||||
sont autorisées dans la copie.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack` : contrôles statiques et
|
||||
smokes terminés, puis **264/265 GameTests réussis**. Le seul échec est
|
||||
`familiar029game_tests_carried_pair_and_invulnerability_still_apply`, assertion
|
||||
« Carrier fixture » au tick 0. Ce code de portage n'est pas modifié par ce lot
|
||||
et cette suite ne charge pas le module écologique `sanctuary-test`.
|
||||
|
||||
Relance ciblée sans modification de code :
|
||||
`./gradlew :sanctuary:runGameTest -PsanctuaryFocusedTests=familiarhit -PsanctuaryExpansionReload=true`
|
||||
→ **7/7 réussis**, `BUILD SUCCESSFUL`. Cela indique un échec intermittent ou
|
||||
une interaction de suite à examiner ; cela ne transforme pas la première
|
||||
suite complète en passage réussi. Aucun correctif du portage n'est livré ici.
|
||||
|
||||
Assemblage local **réussi** après ces contrôles, sans les relancer :
|
||||
`./gradlew build assemblePack assembleTestPack -x :check -x :sanctuary:check -x :sanctuary-test:check -x :demeure:check -x :jei:check`.
|
||||
`BUILD SUCCESSFUL` en 12 s ; packs générés dans `build/packwiz` et
|
||||
`build/packwiz-test`. Les journaux complets sont conservés dans l'archive des relevés. Aucun canal
|
||||
packwiz, serveur personnel ni instance Prism n'est mis à jour.
|
||||
|
||||
La copie `Sanctuary-Ecology-176-Solo` provient du serveur `science176d/42`
|
||||
après arrêt et réouverture vérifiée. Commandes autorisées, mode créatif,
|
||||
réglages de visite repris de beta.175 avec rendu 32 chunks. L'ancien solo
|
||||
est conservé. Pour observer librement : `/gamemode spectator`.
|
||||
|
||||
Repères de visite, graine 42, points d'observation au-dessus du terrain :
|
||||
|
||||
| Zone | Téléportation en spectateur |
|
||||
| --- | --- |
|
||||
| Grande région automnale | `/tp @s -4 300 180` |
|
||||
| Grande région de cerisiers | `/tp @s 20 280 -180` |
|
||||
| Récif jungle | `/tp @s -116 390 160` |
|
||||
| Mare du récif mangrove | `/tp @s -105 425 -152` |
|
||||
| Récif marais | `/tp @s 219 470 22` |
|
||||
| Transition profonde près d'une mare en grotte | `/tp @s 41 166 -55` |
|
||||
|
||||
Premier essai : les mares restent petites et arrondies ; leur forme, les
|
||||
proportions de pierres et les lisières doivent encore être jugées en visite.
|
||||
Les grands lacs, rivières et cascades, les villages Sanctuary, les donjons,
|
||||
les expansions et la station ISS ne sont pas implémentés par ce lot.
|
||||
@@ -0,0 +1,63 @@
|
||||
# DIST-280 — JEI embarqué et packwiz serveur
|
||||
|
||||
Branche `codex/jei-packwiz-server`, base commit `697e4a2` (beta.278).
|
||||
Version réservée `beta.280` : beta.279 appartient au chantier parallèle
|
||||
Map Island Zoom, dont les modifications ne sont pas reprises ici.
|
||||
|
||||
## Contrat
|
||||
|
||||
- Un seul JAR Sanctuary à distribuer, avec le fork JEI exact
|
||||
`30.32.0-sanctuary.4` et ses notices/bibliothèques embarqués. Fabric API reste
|
||||
une dépendance commune ; Sodium et Sound Physics restent facultatifs côté client.
|
||||
- Même JAR sur client et serveur. JEI possède une initialisation commune
|
||||
(recettes et transfert), ses écrans restent dans son entrée client.
|
||||
- Un manifeste serveur `server/pack.toml` sur le même canal packwiz que le
|
||||
client, avec uniquement Sanctuary et Fabric API. Même version, URL et hash
|
||||
du JAR Sanctuary dans les deux profils. Publication atomique des manifestes
|
||||
après vérification de l'artefact immuable.
|
||||
- Un kit serveur local avec mise à jour packwiz sans interface et lancement
|
||||
Fabric. Les mondes, configurations, permissions, listes de joueurs et secrets
|
||||
restent hors de l'index. Une erreur de mise à jour empêche le démarrage.
|
||||
- Documenter les paramètres existants de l'API Sanctuary Web et de la MariaDB
|
||||
communautaire, sans inventer d'API ni migrer les données ou configurer un site
|
||||
public implicitement. Les secrets restent dans l'environnement du service.
|
||||
|
||||
## Vérifications locales
|
||||
|
||||
`./gradlew check build assemblePack assembleServerPack
|
||||
-PsanctuaryFocusedTests=recipes,progression -PsanctuaryAtlasOnly=true` réussit :
|
||||
13 GameTests requis, contrôles purs du dépôt et assemblages. Le fixture ciblé
|
||||
évite le harnais worldgen historique `unified`, sans modifier sa génération.
|
||||
Les sept tests de l'outil de mise à jour passent séparément, y compris le
|
||||
relais du signal d'arrêt et l'attente de Java avant libération du verrou.
|
||||
|
||||
Installation réelle avec packwiz, deux synchronisations et six fichiers
|
||||
personnels témoins conservés octet par octet. Le JAR de production démarre et
|
||||
s'arrête dans un monde plat de développement neuf avec le JEI imbriqué ;
|
||||
celui-ci correspond au fork construit. Minecraft normalise lui-même les fichiers
|
||||
`server.properties`, `ops.json` et `whitelist.json` au lancement : leurs valeurs
|
||||
sont vérifiées après cet arrêt, distinctement de la préservation par packwiz.
|
||||
|
||||
La transition du profil client retire réellement le JEI séparé suivi par
|
||||
packwiz et conserve les favoris. Les manifestes de publication client/serveur
|
||||
référencent le même artefact. Aucun nouveau parcours graphique n'est revendiqué ;
|
||||
les contrôles historiques Vulkan de l'interface ne sont pas rejoués ici.
|
||||
|
||||
Journaux et reçus ignorés : `build/jei-server-final.log`,
|
||||
`build/server280-updater-final.log`, `build/server280-validation-delivery/validation.json`,
|
||||
`build/client280-validation/validation.json`.
|
||||
|
||||
## Serveur dédié demandé le 25 octobre 2026
|
||||
|
||||
Le créateur demande une **nouvelle CT pour 20 joueurs** sur le nœud `gpu`.
|
||||
La CT 350 `sanctuary-beta-20` est créée à cette fin : Debian 13 amd64,
|
||||
6 vCPU, 8 Gio de RAM, disque 80 Gio, non privilégiée. Le budget Java retenu est
|
||||
6 Gio, avec 20 places, portée 6 et simulation 4 ; ce dimensionnement n'est pas
|
||||
une mesure de charge avec vingt joueurs connectés.
|
||||
|
||||
L'Alpha (CT 300), les CT 330 et 340 et les mondes existants restent hors cible.
|
||||
Le nouveau monde utilisera `sanctuary:sanctuary` (réglages initiaux
|
||||
`sanctuary:island231_medium`), graine `28020261025`, version beta.280.
|
||||
Aucune expansion n'est activée par le déploiement. Le site est dans la CT 320 ;
|
||||
son API et son schéma communautaire 3 sont présents. La mise en service du
|
||||
nouveau serveur et le raccordement aux services sont en cours.
|
||||
@@ -0,0 +1,60 @@
|
||||
# INSECT-06 — Sauterelles et criquets en déplacement, beta.250
|
||||
|
||||
Retour du créateur le 8 octobre 2026 : les sauterelles sautaient sur place ;
|
||||
les bonds doivent les déplacer, y compris durant leur fuite.
|
||||
Branche `codex/jumping-insects-beta250`.
|
||||
|
||||
Espèces concernées : sauterelle, criquet long et criquet migrateur.
|
||||
Le serveur choisit un nouveau point au sol pour chaque bond et déplace
|
||||
l’insecte en arc vers ce point. Les bonds ordinaires durent 20 ticks,
|
||||
parcourent 0,9 à 1,4 bloc et culminent à 0,65 bloc, avec une pause de 35 à
|
||||
65 ticks entre les sauts. Le vagabondage reste à 2,5 blocs du point d’apparition.
|
||||
|
||||
La fuite interrompt le bond en cours sans téléporter l’insecte : un arc
|
||||
part de sa position courante vers une destination à 1,6 bloc dans la direction
|
||||
opposée au joueur. Les bonds durent 8 ticks, s’enchaînent sans pause et
|
||||
l’insecte disparaît après les 24 ticks habituels de fuite.
|
||||
|
||||
Avant un bond, chaque segment de l’arc doit rester dans des chunks chargés
|
||||
et éviter les collisions ; l’arrivée doit avoir un support terrestre valide
|
||||
et sec, au même niveau ou à un bloc de différence. Le support est actualisé
|
||||
à l’atterrissage. Un obstacle peut faire choisir une autre direction ; aucun
|
||||
chunk ni bloc n’est créé par ce déplacement. Les autres espèces conservent
|
||||
leurs comportements, captures silencieuses et sons existants.
|
||||
|
||||
Vérifications réussies le 8 octobre 2026 :
|
||||
|
||||
- `./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=insects245 -PsanctuaryAtlasOnly=true` : 16 GameTests
|
||||
requis et les contrôles de compilation/ressources réussis. Les trois espèces
|
||||
parcourent un arc, atterrissent, restent immobiles entre deux bonds et
|
||||
vagabondent sur un support valide. Deux atterrissages de fuite en 16 ticks,
|
||||
interruption en plein saut sans téléportation, murs fermés et refus de
|
||||
l’eau vérifiés dans le moteur réel.
|
||||
- Client natif exclusivement Vulkan : déplacement horizontal et vertical
|
||||
reçu par les paquets du serveur, puis fuite déclenchée en plein bond et
|
||||
disparition. Captures silencieuses au filet debout, 47 sprites d’inventaire,
|
||||
traductions FR/EN, neuf fichiers audio décodés, midi et ciel dégagé passent
|
||||
également. Journal `build/insects250/client-vulkan.log`, marqueur
|
||||
`INSECTS250_CLIENT_PASS` ; captures dans `build/insects250/screenshots/`.
|
||||
- Exports [Sanctuary beta.250](../build/Sanctuary-beta.250.mrpack) et
|
||||
[Sanctuary Test beta.250](../build/Sanctuary-Test-beta.250.mrpack) : ZIP,
|
||||
version, Minecraft 26.3/Fabric Loader 0.19.5 et JAR embarqués vérifiés.
|
||||
|
||||
Le dossier `/Users/koka/Downloads/Sanctuary-textures-beta.249/` reste
|
||||
disponible ; les 47 textures et les neuf sons conservent leurs hashes.
|
||||
Il n’y a pas de modification du format de sauvegarde ni de la génération.
|
||||
Les essais utilisent des mondes de développement jetables ; la publication
|
||||
et l’instance Prism personnelle ne sont pas mises à jour.
|
||||
|
||||
Pour la visite jouable : `/insectes 11` (criquet long), `/insectes 12`
|
||||
(criquet migrateur), `/insectes 28` (sauterelle). `/insectes observer`
|
||||
permet de regarder sans effrayer ; `/insectes jouer` remet le filet et
|
||||
la réaction à l’approche. L’appréciation de la cadence reste à faire par
|
||||
le créateur dans cette visite.
|
||||
|
||||
Visite `review-08` ouverte en beta.250 sur un nouveau monde plat graine 246,
|
||||
disposition d’inspection version 2, midi fixe et ciel dégagé. Les 47 espèces
|
||||
et sprites sont vérifiés à l’ouverture ; le lancement conserve une copie
|
||||
du runtime pour rester indépendant d’une reconstruction Gradle ultérieure.
|
||||
[Reçu local](../build/insects250/validation.json).
|
||||
@@ -0,0 +1,74 @@
|
||||
# INSECT-05 — Coccinelle billboard et textures à remplacer, beta.249
|
||||
|
||||
Demande du créateur le 8 octobre 2026, après inspection de beta.248.
|
||||
Branche `codex/ladybug-texture-export-beta249`.
|
||||
|
||||
La coccinelle utilise le rendu billboard vertical orienté vers la caméra.
|
||||
Son habitat sur fleur, son sprite, ses saisons et son comportement demeurent
|
||||
identiques. Le point d’appui utilise maintenant le contour natif de la fleur
|
||||
ou des feuilles + 0,005 bloc, partagé par le laboratoire. Le rendu compense
|
||||
les deux lignes transparentes sous les pattes. Sans ce recalage, le nouveau
|
||||
quad vertical flottait au-dessus de la fleur. Le catalogue change uniquement
|
||||
`ladybug.shape`, de `FLAT` vers `BILLBOARD`, sans nouveau mode de rendu
|
||||
ni changement de sauvegarde.
|
||||
|
||||
Un export local rassemble les images statiques du client Minecraft 26.3,
|
||||
des mods du pack et du resource pack Sanctuary actif. Il conserve les
|
||||
chemins `assets/<namespace>/...`, dimensions et fichiers `.mcmeta` associés.
|
||||
Le dossier de travail regroupe les versions visibles dans le jeu ; les
|
||||
sources conservent les variantes masquées par un remplacement de resource pack.
|
||||
L’inventaire CSV/JSON indique source, chemin, dimensions et empreinte.
|
||||
Les fichiers générés, JAR et dépendances ne sont pas ajoutés au dépôt.
|
||||
|
||||
Dossier local : `/Users/koka/Downloads/Sanctuary-textures-beta.249/`.
|
||||
Le sous-dossier `a-modifier/` est un resource pack Minecraft 26.3 au format
|
||||
97.1 prêt à accueillir les dessins. Il contient 4 671 images visibles et
|
||||
245 fichiers `.mcmeta` ; `sources/` conserve les 4 810 images sources avant
|
||||
remplacements. Dix icônes du client sont aussi copiées séparément.
|
||||
Les 47 insectes sont dans `a-modifier/assets/sanctuary/textures/insect/`.
|
||||
|
||||
L’index d’assets Minecraft est également lu et ses SHA-1 vérifiés : panorama,
|
||||
images Realms et icônes. PNG et métadonnées sont copiés sans retouche ;
|
||||
chaque SHA-256 est vérifié avant de rendre le dossier disponible.
|
||||
Le dossier existe séparément du dépôt et l’export refuse d’écraser un dossier
|
||||
existant. L’archive `Sanctuary-textures-beta.249.zip` est vérifiée.
|
||||
Les skins, cartes et textures générées à l’exécution ne sont pas des images
|
||||
statiques à exporter. Les anciennes archives non chargées ne sont pas utilisées.
|
||||
|
||||
Reproduction depuis le lancement Gradle exporté :
|
||||
|
||||
```sh
|
||||
python3 scripts/export_textures.py --output /chemin/vers/un/nouveau-dossier
|
||||
```
|
||||
|
||||
Le script utilise le JAR du client exact, les ressources des mods du classpath
|
||||
et le pack Sanctuary actif. L’export de cette livraison utilise
|
||||
`build/duo/client.args`, Minecraft 26.3 et Sanctuary beta.249.
|
||||
Les notices et provenances connues sont copiées, sans attribuer au créateur
|
||||
la propriété des images reçues.
|
||||
|
||||
## Vérifications
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack` réussit avec
|
||||
`-PsanctuaryFocusedTests=insects245 -PsanctuaryAtlasOnly=true` : 13 GameTests
|
||||
requis passent. Le contrôle client Vulkan natif passe après correction
|
||||
du point d’appui : coccinelle sur le contour natif de sa fleur, trois angles
|
||||
de caméra rendus et examinés, 47 sprites et traductions FR/EN, cinq modes
|
||||
de rendu, capture debout silencieuse, midi/ciel clair, neuf sons décodés
|
||||
et arrêt du bourdonnement après fuite.
|
||||
|
||||
Logs : `build/insects249/check-build-pack-final.log`,
|
||||
`build/insects249/client-vulkan-final.log`. Captures finales dans
|
||||
`build/insects249/screenshots/`. Le premier rendu révélait la hauteur
|
||||
ancienne de 0,9 bloc et est conservé dans `screenshots-before-contact/`.
|
||||
La visite beta.248 a gardé ses fichiers figés pendant les builds ;
|
||||
la visite `review-07` est ouverte en beta.249, midi et ciel clair,
|
||||
47 espèces et sprites vérifiés. `/insectes 31` choisit la coccinelle.
|
||||
Son lancement utilise une copie figée des classes et ressources.
|
||||
|
||||
Packs locaux : [Sanctuary](../build/Sanctuary-beta.249.mrpack) et
|
||||
[Sanctuary Test](../build/Sanctuary-Test-beta.249.mrpack). ZIP, versions et JAR
|
||||
embarqués vérifiés. Publication et instance Prism ne sont pas utilisées.
|
||||
[Reçu final et empreintes](../build/insects249/validation.json).
|
||||
245 des 253 fichiers préexistants sont identiques ; les 8 autres sont
|
||||
étendus par ce ticket. Aucun fichier préexistant supprimé.
|
||||
@@ -0,0 +1,40 @@
|
||||
# WG-ECO-179 — grottes vivantes et complexes souterrains
|
||||
|
||||
Retour de visite beta.178 : automne validé ; trop de cerisiers bas, bordures
|
||||
rocheuses sur les pentes, grottes devenues trop sèches et trop dépouillées.
|
||||
Nouveau preset `sanctuary_test:living_ecology_v1`, profil `living`, graine 42,
|
||||
branche `codex/living-caves-beta179`, base `db6194c`. Nouveau monde uniquement.
|
||||
|
||||
- Vallées automnales conservées. Sol végétal sur les pentes supérieures ; la
|
||||
roche nue reste sur les flancs profonds sous Y=200.
|
||||
- Cerisiers à partir de Y=286, une tentative tous les quatre chunks du sommet
|
||||
au lieu de dix arbres par chunk. Pas de forêt de cerisiers sur le plateau.
|
||||
- Poches lush avec bassins retenus à plusieurs niveaux, sous-bois de chênes
|
||||
noirs, marais à lucioles, mycélium violet mêlé d’herbe et champignons géants.
|
||||
Mooshrooms et grenouilles placées à la génération dans leurs habitats.
|
||||
- Trois réseaux miniers avec hall, ramifications, rails, passerelles et sorties
|
||||
extérieures ; une cabane de sorcière dans une cavité marécageuse. Première
|
||||
version procédurale, sans butin ni progression. Le retour actuel remplace
|
||||
l’interdiction des mineshafts exprimée avant la visite beta.178.
|
||||
|
||||
La couleur vient des biomes, du feuillage, de l’eau et du brouillard ; aucune
|
||||
nouvelle simulation de lumière colorée. Bruit du terrain, récifs, minerais et
|
||||
espace ISS conservés ; pas d’hydrologie régionale. Structures rendues par chunk
|
||||
selon un plan déterministe borné, aucune expansion activée ni migration.
|
||||
|
||||
Compilation et contrôle natif `solo179c` réussis : 567 densités profondes
|
||||
inchangées, zéro région d’hydrologie, automne conservé (14 colonnes de contrôle),
|
||||
cerisiers uniquement au sommet et pentes supérieures végétalisées. Les témoins
|
||||
natifs contiennent eau, mousse, mycélium, buissons à lucioles, chênes noirs et
|
||||
champignons géants. Sauvegarde des habitants vérifiée : 6 mooshrooms,
|
||||
17 grenouilles, une sorcière et un chat dans les chunks chargés, sans prétendre
|
||||
recenser toute l’île. La suite `check build assemblePack assembleTestPack` a réussi
|
||||
en 36 min 7 s, après la visite.
|
||||
|
||||
Visite préparée : `visite179/living/42`, `Sanctuary-Living-179-Solo`, créatif,
|
||||
commandes activées, difficulté normale pour conserver la sorcière, vue 32 et
|
||||
simulation 12. Points de visite (graine 42) : halls miniers (112,147,72),
|
||||
(-160,185,24), (-72,129,160) ; cabane (-192,114,96) ; mycélium vers
|
||||
(-216,201,48), marais vers (-216,113,96), lush vers (-216,161,120).
|
||||
Client Vulkan ouvert le 29 septembre à 23:16, KokaLab connecté ; distance
|
||||
serveur 32 et simulation 12 confirmées dans le journal.
|
||||
@@ -0,0 +1,78 @@
|
||||
# DETAILS-188 — fonds d'étangs, soufre vivant et palettes des ancres
|
||||
|
||||
Ticket du 30 septembre 2026, branche `codex/living-details-beta188`.
|
||||
Le créateur valide l'orientation des ancres et les formes des bassins beta.187.
|
||||
Il demande des refuges adaptés au milieu et à la couleur, des fonds sédimentaires
|
||||
végétalisés sans arbres dans l'eau, et les pics/geysers du biome de soufre.
|
||||
|
||||
Nouveau profil `details`, preset `sanctuary_test:living_details_v1`, graine 42.
|
||||
Aucune modification des anciennes sauvegardes ou générations. Même densité,
|
||||
mêmes bassins et mêmes emplacements/orientations d'ancres que beta.187.
|
||||
Livraison locale de laboratoire ; objectif de visite avant 9 h.
|
||||
|
||||
## Réalisation
|
||||
|
||||
Géométrie et orientation des refuges conservées. Terre, herbe et terre stérile
|
||||
pour la surface ; tuff, deepslate et calcite sous roche ; calcite et diorite
|
||||
sur les récifs. Les incrustations reprennent la teinte du secteur. Le verre
|
||||
reste au-dessus de l'améthyste, du côté de l'expansion.
|
||||
|
||||
Les bassins sont remplis avant les arbres. Leur lit existant reçoit des plages
|
||||
cohérentes d'argile, boue, sable et gravier, sans agrandissement ni coque ajoutée.
|
||||
Les colonnes de plantation immergées sont réservées pendant la décoration.
|
||||
Herbes marines et quelques touffes de kelp occupent les fonds ; les matériaux
|
||||
meubles exigent un support rocheux. Contours et niveaux restent ceux de 187.
|
||||
|
||||
Le soufre reçoit des stalagmites et stalactites natives, avec des longueurs
|
||||
variables, et des sources périodiques : magma, soufre puissant, eau source.
|
||||
Les volumes humides réservés, le donjon et les refuges sont évités. Les entités
|
||||
de bloc sont explicitement créées et sauvegardées pour activer les minuteries
|
||||
natives des geysers. Le contrôle vérifie l'entité et le ticker après réouverture.
|
||||
|
||||
Table de butin propre à ce nouveau preset : une ou deux pièces en fer par
|
||||
wagonnet, parmi quatre armures, épée, pioche, hache et pelle. Enchantement par
|
||||
la fonction native, puissance de table 12 à 20, sans enchantement trésor.
|
||||
Les gemmes et les ressources déjà présentes restent dans le butin. Les anciens
|
||||
wagonnets et tables ne changent pas. La progression du futur monde minéral
|
||||
reste une intention, hors de cette livraison.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Premier monde : les huit refuges gardent exactement leurs positions et axes.
|
||||
Quatre sédiments, 611 colonnes végétalisées et zéro tronc dans les bassins.
|
||||
Plan de 496 spires et 39 geysers ; 138 blocs de pic et huit sources contrôlés.
|
||||
32 tirages de butin : toujours une ou deux pièces enchantées en fer, les huit
|
||||
types d'équipement observés. Génération finale `solo188c/details/42` puis réouverture réussies, avec contrôle
|
||||
des entités de geyser et de leurs tickers natifs. Les blocs et entités sont
|
||||
relus dans la sauvegarde arrêtée : huit ancres éteintes, Bugrock allumé sans
|
||||
relais, 49 cartes complètes et 49 cadres horizontaux. Les quatre wagonnets sauvegardés portent tous la nouvelle table
|
||||
`sanctuary_test:chests/mine_cache_188` ; reçu `build/details188-saved-loot.json`.
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch`
|
||||
réussi en 7 min 54 s : 265 GameTests réussis. Les contrôles natifs finaux passent
|
||||
après la correction des entités de geyser, à froid et après réouverture.
|
||||
Le JAR du labo a ensuite été reconstruit et le pack optionnel resynchronisé
|
||||
avec `scripts/test_pack.py` : ses 146 classes correspondent aux classes compilées,
|
||||
sa table de butin correspond à la source et le JAR distribué est identique.
|
||||
Lors des 32 tirages après réouverture, 51 pièces enchantées couvrent les huit
|
||||
types d'équipement. Reçu de la suite générale : `build/details188-check-build.log`.
|
||||
|
||||
Solo `visite188c/details/42`, monde `Sanctuary-Living-Details-188-Solo`, ouvert
|
||||
sous Vulkan : connexion à 09:00:41, vue 32 et simulation 12 confirmées dans le
|
||||
journal, puis passage du joueur en spectateur à 09:00:58. L'objectif avant 9 h
|
||||
a donc été dépassé. Le contrôle visuel des décors et des éruptions reste à faire
|
||||
pendant la visite ; la présence des blocs, entités et tickers est vérifiée.
|
||||
|
||||
## Raccourcis de visite
|
||||
|
||||
- Bassin ouest : `/tp -104.5 269 119.5 180 35`
|
||||
- Soufre et geysers : `/tp -217.5 159 -16.5`
|
||||
- Autre source : `/tp -201.5 150 8.5`
|
||||
- Wagonnet du donjon : `/tp 45.5 144 60.5`
|
||||
- Ancre nord : `/tp 36.5 250 -168.5 180 0`
|
||||
- Ancre sud, grotte : `/tp -71.5 176 205.5 0 0`
|
||||
- Ancre est, récif : `/tp 214.5 444 16.5 -90 0`
|
||||
|
||||
Nouveau solo uniquement, vue 32, simulation 12, créatif avec vol et commandes.
|
||||
Aucune publication du canal public ni modification de Prism.
|
||||
|
||||
Mesures du labo final : démarrage 12.839 s à froid / 0.912 s après réouverture ; prêt avec tous les contrôles en 71.525 s / 14.114 s. Mesurées pendant la suite générale, hors chargement graphique. Zéro région d’hydrologie. Reçus ignorés `build/details188-final-cold-result.json` et `build/details188-final-warm-result.json`.
|
||||
@@ -0,0 +1,50 @@
|
||||
# UI-194 — retirer Amis du menu principal
|
||||
|
||||
Branche `codex/main-menu-beta194`, depuis beta.193, Minecraft 26.3.
|
||||
|
||||
Le créateur suspend les retouches du terrain et les tests de screenshots,
|
||||
puis reprend le cadrage des interfaces. Le retrait d’Amis est la première
|
||||
modification demandée, déjà prévue dans [Storyquest](storyquest-beta173.md).
|
||||
|
||||
## Résultat
|
||||
|
||||
Le menu principal propose Solo, Multijoueur, puis Options et Quitter sur une
|
||||
même ligne. Cette dernière suit Multijoueur avec l’espacement natif de 24 unités
|
||||
GUI. Le bouton Amis n’est plus créé à la place de Realms ; l’entrée Realms et
|
||||
la petite icône sociale restent retirées. Les commandes restantes gardent
|
||||
leur ordre clavier et la version Sanctuary reste affichée.
|
||||
|
||||
Le parcours de démonstration, dépourvu de Multijoueur, conserve sa disposition
|
||||
antérieure. Les autres accès sociaux et paramètres du compte ne sont pas
|
||||
modifiés. Aucun nouveau libellé : les commandes natives restent traduites FR/EN,
|
||||
les anciennes clés `sanctuary.menu.friends` sont conservées pour compatibilité.
|
||||
|
||||
Le menu pause, Habitant, Combat, Factions et Storyquest restent des suites
|
||||
à concevoir. Aucune source de génération, donnée de biome ou sauvegarde n’est
|
||||
modifiée par ce lot. Aucune nouvelle série de captures n’est lancée.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Le parcours natif existant `Title045ClientChecks` est actualisé pour vérifier
|
||||
l’absence d’Amis et de Realms, la disposition sans ligne vide, l’ordre clavier
|
||||
et l’ouverture d’Options en FR/EN aux quatre réglages GUI. Ses captures et son
|
||||
ancien parcours vers la liste d’amis sont retirés.
|
||||
|
||||
Validation réussie : `./gradlew check build assemblePack assembleTestPack
|
||||
:sanctuary:runClientGameTest -PsanctuaryFocusedTests=menus
|
||||
-PsanctuaryClientTests=true -PsanctuaryTitleClientTests=true
|
||||
-PsanctuaryClientGraphicsBackend=vulkan`.
|
||||
Journal : `build/menu194-check-build.log`. Les contrôles purs et les quatre
|
||||
GameTests serveur ciblés passent. Le parcours client Vulkan passe en FR/EN,
|
||||
sans capture, avec ordre clavier, absence des boutons retirés et ouverture
|
||||
d’Options vérifiés. Dans la fenêtre 854 × 480 du test, les réglages GUI 3 et 4
|
||||
sont plafonnés par Minecraft à l’échelle effective 2.
|
||||
|
||||
Les packs normal et de test sont assemblés. La comparaison des JAR beta.193 et
|
||||
beta.194 confirme que seule `TitleMenuMixin.class` change dans le code livré ;
|
||||
les données de génération sont identiques. Le module Demeure embarqué ne change
|
||||
que de version dans ses métadonnées. Reçu : `build/menu194-artifact.json`.
|
||||
Le labo beta.193 déjà ouvert n’est ni arrêté ni mis à jour par cette livraison.
|
||||
|
||||
Livraison locale uniquement ; publication et mise à jour du jeu personnel
|
||||
ne sont pas demandées.
|
||||
@@ -0,0 +1,109 @@
|
||||
# MAP-244 — Carte Habitant et chunks reçus
|
||||
|
||||
Branche `codex/map-chunk-sync-beta244`, base locale beta.243, Minecraft 26.3.
|
||||
Demande du 7 octobre 2026 ; livraison locale beta.244.
|
||||
|
||||
## Contrat
|
||||
|
||||
La vue Habitant doit relever les chunks effectivement envoyés au joueur par
|
||||
Minecraft, à sa distance de vue, et conserver ces découvertes personnelles.
|
||||
Le vol créatif ne doit plus laisser de trous à cause d'un relevé tournant dans
|
||||
un rayon de 32 blocs. Aucun chargement supplémentaire, partage des relevés,
|
||||
changement de génération, format de sauvegarde ou monde personnel.
|
||||
Les six coupes d'altitude restent disponibles, avant et après l'achat Atlas.
|
||||
La vue Opérateur demeure une inspection distincte.
|
||||
|
||||
La carte ouverte et la carte Pause reçoivent les changements du viewport
|
||||
avec leur jeton courant ; permissions, dimension et annulation restent
|
||||
contrôlées côté serveur. Les noms et positions distantes se renouvellent
|
||||
toutes les cinq secondes. La carte reste une projection de dessus des chunks
|
||||
reçus, sans calcul de visibilité optique ou d'occlusion.
|
||||
|
||||
## Vérification et limites
|
||||
|
||||
Le parcours natif Vulkan passe en **1 min 41 s** sur MoltenVK 1.4.2 / Apple M1 :
|
||||
déplacement créatif de **320 blocs en 80 ticks**, correspondance entre les
|
||||
chunks réellement présents côté client et les six relevés personnels serveur,
|
||||
absence de pixels inconnus dans ces chunks, mise à jour de la carte ouverte
|
||||
sans nouveau jeton, placement d'un bloc d'or actualisé par delta, paquets
|
||||
obsolètes rejetés, Pause FR/EN avec changements du réglage GUI 2/3/4, sauvegarde/relecture
|
||||
du schéma existant et révocation d'Atlas. À distance de vue **32**, **3 003
|
||||
chunks reçus** sont contrôlés ; il ne s'agit pas d'une prégénération intégrale.
|
||||
|
||||
Sur **128 chunks plats**, après échauffement, le calcul des **six couches**
|
||||
mesure **0,045 ms en moyenne**, **0,046 ms au 95e percentile**, par chunk.
|
||||
Cette mesure porte sur le calcul de couleurs, sans les coûts de sauvegarde,
|
||||
réseau ou rendu ; elle ne promet pas le même résultat sur l'île Sanctuary,
|
||||
un gain de FPS, ni une capacité multijoueur donnée.
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryMap244ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=map244,map,waystones239 -PsanctuaryAtlasOnly=true
|
||||
cd build/packwiz
|
||||
packwiz modrinth export --output ../Sanctuary-beta.244.mrpack
|
||||
```
|
||||
|
||||
Log client : `build/map244-client-vulkan.log`, marqueur `MAP244_CLIENT_PASS`.
|
||||
**`check build assemblePack` passe en 2 min 48 s**, avec les contrôles purs
|
||||
du dépôt et **14 GameTests requis** : deux tests MAP-244, deux tests Atlas
|
||||
existants, les neuf tests Waystones / positions des joueurs et le framework.
|
||||
Les nouveaux tests contrôlent les six relevés complets au-delà de l'ancien
|
||||
rayon, avant achat Atlas, leur séparation personnelle, l'absence de réécriture
|
||||
sur livraison identique, l'exclusion des spectateurs et l'absence de chargement
|
||||
distant. Log : `build/map244-check-build-pack.log`. Une seconde mesure sur
|
||||
56 chunks du serveur **plat** donne 0,091 ms en moyenne et 0,120 ms au 95e
|
||||
percentile ; elle ne constitue pas un benchmark du terrain Sanctuary.
|
||||
|
||||
## Implémentation
|
||||
|
||||
Le point d'envoi natif `PlayerChunkSender.sendChunk` relève le chunk FULL
|
||||
déjà envoyé au joueur. `dropChunk` retire seulement sa présence dans la vue,
|
||||
sans effacer les découvertes. Les chunks reçus avant la création de l'habitant
|
||||
restent identifiés pour un relevé ultérieur. Les spectateurs ne découvrent pas
|
||||
de terrain ; les cartes des autres habitants ne sont jamais copiées.
|
||||
|
||||
Un cache partagé pendant un tick évite de recalculer les six couches lorsque
|
||||
plusieurs habitants reçoivent le même chunk. Les constructions visibles
|
||||
invalident ce cache et entrent dans une file dédupliquée, prioritaire sur les
|
||||
revisites. Ces dernières et les changements de blocs disposent de **16 chunks
|
||||
maximum et 2 ms par tick serveur**, avec au plus quatre chunks par habitant ;
|
||||
un calcul de chunk commencé ne peut pas être interrompu. L'ordre des habitants
|
||||
tourne pour répartir ce budget. Le relevé d'un chunk nouvellement envoyé est
|
||||
synchrone avec l'envoi natif et s'ajoute à son coût, hors budget de revisite.
|
||||
|
||||
Une requête garde son abonnement jusqu'à la fermeture, un déplacement de
|
||||
viewport, un changement de couche ou une perte d'autorisation. Seules les
|
||||
tuiles changées sont poussées, avant le fond historique restant à transmettre.
|
||||
Un lot personnel est plafonné à **64 chunks** (anciennement 16), soit environ
|
||||
17 Kio de couleurs et coordonnées ; Demeure garde son lot apparié. Les paquets
|
||||
identiques ne salissent ni la sauvegarde ni la texture Atlas. Les marqueurs
|
||||
et positions distantes gardent une cadence de cinq secondes. Une relecture
|
||||
complète de secours se fait après une minute, plutôt que toutes les cinq
|
||||
secondes ; l'inspection Opérateur conserve sa cadence précédente.
|
||||
|
||||
## Limites et distribution
|
||||
|
||||
La limite existante de **16 384 chunks par couche et habitant** est conservée :
|
||||
une carte pleine ne peut plus ajouter de terrain et signale cet état. Les
|
||||
relevés préexistants et leur masque sont conservés ; revisiter un chunk reçu
|
||||
complète son relevé sans migration. Aucun terrain déjà visité mais absent des
|
||||
anciens relevés n'est reconstitué automatiquement. La fenêtre graphique garde
|
||||
ses 64 × 64 chunks, son zoom et ses contrôles ; les relevés au-delà restent
|
||||
consultables en déplaçant la carte. Le changement de plafond garde son jeton
|
||||
indépendant et les six fichiers existants.
|
||||
|
||||
Tests effectués dans des mondes de développement neufs. Aucun monde personnel,
|
||||
canal packwiz, instance Prism ou publication distante modifié. Les changements
|
||||
préexistants beta.242/243 sont conservés ; 49 fichiers de ces chantiers hors
|
||||
fichiers partagés sont vérifiés identiques à l'état de départ.
|
||||
|
||||
[MRpack local beta.244](../build/Sanctuary-beta.244.mrpack) vérifié :
|
||||
**12 918 991 octets**, ZIP intègre, Minecraft 26.3 / Fabric Loader 0.19.5,
|
||||
un seul JAR Sanctuary, identique au build testé. Les deux mixins de suivi et
|
||||
les visages beta.243 sont présents ; aucun GameTest ni monde n'est embarqué.
|
||||
Mod, pack et manifeste alignés. Reçu : `build/map244-validation.json`.
|
||||
|
||||
- SHA-256 JAR : `0ec7866df185601e493d0ee94588c552b906e76b16c061a2b52217a02cfe8b03`.
|
||||
- SHA-256 MRpack : `3c224ea6256a574ca200affbcfb40a3b8174cc5f5cc8aac220c96b46fa37e3aa`.
|
||||
@@ -0,0 +1,103 @@
|
||||
# MAP-243 — Visages des joueurs au premier plan
|
||||
|
||||
Branche `codex/map-player-heads-beta243`, base locale beta.242,
|
||||
Minecraft **26.3**, livraison locale **beta.243**.
|
||||
Demande du 7 octobre 2026.
|
||||
|
||||
## Contrat
|
||||
|
||||
Dans l’Atlas et dans la carte du menu Pause, afficher les joueurs par le
|
||||
visage de leur skin, avec sa seconde couche. Dessiner les visages après le
|
||||
terrain, les propriétés, la grille, les waystones et les annonces suivies.
|
||||
Conserver un repère de direction pour le joueur local et afficher le nom
|
||||
au survol. Les autres joueurs de la même dimension sont localisés par le
|
||||
serveur, y compris au-delà de la distance de suivi des entités ; cette
|
||||
information ne découvre aucun terrain. L’accès reste soumis à l’aptitude Atlas.
|
||||
|
||||
Les waystones appartenant à un ascenseur ne figurent plus sur aucune des
|
||||
deux cartes. Utiliser l’index serveur complet pour identifier une colonne,
|
||||
y compris lorsque les autres étages sont inconnus ou hors de la coupe
|
||||
d’altitude. Les téléporteurs isolés découverts restent visibles. Après
|
||||
suppression du dernier autre étage, la pierre isolée redevient visible.
|
||||
Les voyages, noms, découvertes et sauvegardes restent conservés.
|
||||
|
||||
## Positions et rendu
|
||||
|
||||
Paquet transitoire `sanctuary:atlas_players_v1` : jeton de carte, UUID, nom,
|
||||
positions X/Z précises. Le serveur exige l’accès Atlas, filtre la dimension
|
||||
et le viewport de 1024 blocs, exclut les autres spectateurs et plafonne
|
||||
chaque réponse à 1024 joueurs. Les positions sont renouvelées avec les
|
||||
demandes de carte, toutes les 100 ticks client après la fin du flux de
|
||||
terrain, soit environ cinq secondes en fonctionnement normal. Les entités
|
||||
déjà suivies et le joueur local utilisent leur position client actuelle.
|
||||
Le joueur local est dessiné en dernier entre les visages superposés.
|
||||
|
||||
Le rendu utilise le visage natif Minecraft 26.3 (`PlayerFaceExtractor`),
|
||||
12 pixels GUI, seconde couche incluse. Le skin provient de l’entité ou du
|
||||
`PlayerInfo` reçu du serveur ; le skin natif par défaut sert pendant son
|
||||
chargement. Une nouvelle couche GUI place les visages après les autres
|
||||
repères. Le nom au survol a priorité ; une annonce couverte par un visage
|
||||
ne reçoit pas le clic. La couleur personnelle reste dans le cadre du
|
||||
joueur local, avec son repère de direction.
|
||||
|
||||
Les données sont propres à l’écran et à son jeton. Un paquet obsolète ou
|
||||
reçu sans carte lisible est ignoré ; une perte d’autorisation ou un changement
|
||||
de dimension vide les positions. Aucun nouveau fichier de sauvegarde ni
|
||||
nouveau libellé fixe n’est ajouté. Les interfaces FR/EN existantes sont
|
||||
conservées.
|
||||
|
||||
## Vérification
|
||||
|
||||
Le parcours client **Vulkan / MoltenVK 1.4.2 / Apple M1** passe en **38 s** :
|
||||
FR/EN, échelles GUI 2/3/4, deux cartes, paquets natifs, joueur en ligne sans
|
||||
entité côté client, skin de son `PlayerInfo`, UV du visage et de sa seconde
|
||||
couche. L’ordre du rendu natif et les captures vérifient le visage au-dessus
|
||||
d’une waystone horizontale et d’une annonce placées au même endroit.
|
||||
Les jetons obsolètes, la déconnexion et la révocation d’Atlas sont contrôlés.
|
||||
Le serveur masque un ascenseur dont seul le rez-de-chaussée est découvert.
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryMap243ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=waystones239 -PsanctuaryAtlasOnly=true
|
||||
```
|
||||
|
||||
Log client : `build/map243-client-vulkan.log`, marqueur `MAP243_CLIENT_PASS`.
|
||||
Captures inspectées : [Atlas FR GUI 3](../build/map243-screenshots/atlas-fr_fr-3.png),
|
||||
[Pause FR GUI 3](../build/map243-screenshots/pause-fr_fr-3.png),
|
||||
[Atlas EN GUI 4](../build/map243-screenshots/atlas-en_us-4.png) et
|
||||
[Pause EN GUI 4](../build/map243-screenshots/pause-en_us-4.png).
|
||||
|
||||
**`check build assemblePack` passe en 2 min 43 s**, avec les contrôles purs
|
||||
du dépôt et **dix GameTests requis** : les huit scénarios Waystones, le
|
||||
nouveau scénario de positions des joueurs et le test du framework.
|
||||
L’index, les découvertes et les noms survivent à leur codec existant ; un
|
||||
étage inconnu ou au-dessus de la coupe masque toute la colonne, puis sa
|
||||
suppression fait réapparaître le téléporteur isolé. Le scénario des joueurs
|
||||
contrôle l’accès, le viewport, les dimensions, les spectateurs, la
|
||||
désactivation d’Atlas et le codec réseau. Log :
|
||||
`build/map243-check-build-pack.log`.
|
||||
|
||||
[MRpack local beta.243](../build/Sanctuary-beta.243.mrpack) vérifié :
|
||||
**12 914 930 octets**, ZIP intègre, Minecraft 26.3 / Fabric Loader 0.19.5,
|
||||
un seul JAR Sanctuary, identique au build final. Les classes de la couche
|
||||
de visages et du nouveau paquet sont présentes ; aucun GameTest ni monde
|
||||
n’est embarqué. Mod, pack et manifeste alignés sur beta.243. Les fichiers
|
||||
du chantier beta.242 présents avant le ticket sont conservés ; seuls ses
|
||||
quatre fichiers partagés (README, versions et configuration de tests)
|
||||
reçoivent les ajouts de ce ticket. Reçu : `build/map243-validation.json`.
|
||||
|
||||
- SHA-256 JAR : `497ecdba2603863561af11caa4f6be8d23b4bea12de22078d2f815f557fca1b9`.
|
||||
- SHA-256 MRpack : `1c1ce34650da5eba60112d3a03e67aa48ef77e1e8867b40122c6ab9c68918308`.
|
||||
|
||||
## Limites et distribution
|
||||
|
||||
La fixture multijoueur ajoute un joueur serveur simulé dans la liste en
|
||||
ligne et son `PlayerInfo` au vrai client ; deux clients distants avec latence
|
||||
réelle et un serveur de 1024 joueurs ne sont pas testés. Les joueurs hors
|
||||
du viewport ou d’une autre dimension ne figurent pas sur la carte.
|
||||
La mise à jour des positions distantes suit la cadence décrite ci-dessus.
|
||||
|
||||
Livraison locale ; publication, canal packwiz et instance Prism personnelle
|
||||
non modifiés. Génération, chunks et formats existants conservés.
|
||||
@@ -0,0 +1,96 @@
|
||||
# RENDER-150 — Terre mate et reflets solaires colorés
|
||||
|
||||
Branche `codex/matte-dirt-beta150`, socle beta.149 `1c23d0c`.
|
||||
|
||||
La terre sèche utilise un profil entièrement mat (rugosité 0,98, métal 0),
|
||||
comme le feuillage corrigé en beta.149. Cela enlève l’éclat blanc/gris diffus
|
||||
sans supprimer les normales ni le contraste de relief. Le SSR de ces matières
|
||||
est également atténué par leur rugosité, sans changer son réglage global.
|
||||
|
||||
Blocs concernés : dirt, coarse_dirt, rooted_dirt, grass_block, dirt_path,
|
||||
farmland, podzol et mycelium. Les faces terreuses suivent ainsi le même profil.
|
||||
Les autres profils de matière sont inchangés.
|
||||
|
||||
Le disque du soleil et son reflet utilisent la même couleur native
|
||||
`SkyRenderState.sunriseAndSunsetColor`, issue de l’attribut environnemental
|
||||
Minecraft `SUNRISE_SUNSET_COLOR`. Son alpha pilote la transition depuis le
|
||||
blanc : aucune palette horaire ou altitude artificielle. Le soleil reste
|
||||
neutre tant que le dégradé natif est absent et se colore avec le ciel.
|
||||
La teinte solaire est convertie en lumière linéaire pour le PBR. Le mixin
|
||||
modifie seulement la couleur du disque solaire, préserve l’alpha de pluie,
|
||||
la texture native et la lune, et respecte la désactivation globale de Vanilla Light.
|
||||
La fusion diffuse de l’eau et sa normale animée d’origine sont conservées.
|
||||
Les accents suivent les pentes des vaguelettes qui réfléchissent le soleil
|
||||
vers la caméra. Leur pulsation vient des normales animées de la texture,
|
||||
sans oscillateur indépendant ni inversion artificielle du relief.
|
||||
Une faible variation stable par texel évite des crêtes toutes identiques ;
|
||||
elle module seulement l’intensité, sans produire des points isolés aléatoires.
|
||||
Les détails s’atténuent lorsqu’ils deviennent plus petits qu’un pixel écran.
|
||||
Les accents restent limités au reflet solaire et conservent sa couleur.
|
||||
Les lampes et la lune gardent leurs
|
||||
couleurs propres.
|
||||
PBR 50 %, SSR 20 % et deux portées indépendantes de 64 blocs par défaut conservés.
|
||||
Minecraft 26.3, Java 25 et dépendances inchangés ; aucune sauvegarde modifiée.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Tests des profils de terre et scènes GPU comparant PBR OFF/ON sur terre et
|
||||
feuillage : conservation de la couleur native et présence du relief.
|
||||
- Suites PBR finales Vulkan/OpenGL réussies, dont profils des huit types de
|
||||
sol, proximité, intensités, préférences et feuillage.
|
||||
Journaux : `build/beta150-pbr-vulkan-final.log` et
|
||||
`build/beta150-pbr-opengl-final.log`.
|
||||
- Terre : 180 469 pixels contrôlés, saturation relative 0,99877 sur les deux
|
||||
moteurs ; relief visible sur 145 415 pixels. Captures conservées dans
|
||||
`build/evidence/beta150-pbr-vulkan-final/` et
|
||||
`build/evidence/beta150-pbr-opengl-final/`.
|
||||
|
||||
Les tests comparent la contribution PBR au rendu natif et capturent aussi
|
||||
le disque du soleil, avant puis pendant la transition native du ciel.
|
||||
Le contrôle serveur `./gradlew check build`, exécuté dans une copie isolée
|
||||
`build/server-validation` avant les derniers ajouts exclusivement client,
|
||||
compte 229 réussites et 23 échecs sur 252 tests. Les 23 identifiants d’échec
|
||||
sont identiques à beta.149 ; aucun nouvel identifiant. Le contrôle global
|
||||
n’est donc pas vert. Journaux : `build/beta150-check-build-isolated.log` et
|
||||
`build/beta150-server-failures.json`.
|
||||
|
||||
Les scènes solaires comparent le rendu PBR au natif, avant et pendant le
|
||||
coucher de soleil. À 2 000 ticks, la teinte native est blanche ; à 11 500 ticks
|
||||
sa transition commence légèrement (alpha 0,051) ; à 12 400 ticks l’alpha
|
||||
natif atteint 0,831 et le disque devient chaud (centre RGB 255/255/135).
|
||||
Les deux moteurs ont validé cette synchronisation native.
|
||||
|
||||
Un lancement sans sélection PBR a également rencontré l’assertion client
|
||||
Blocodex « The full snapshot must become visible together », avant les scènes
|
||||
GPU (`build/beta150-water-motion-vulkan.log`). Il ne constitue pas une
|
||||
validation de la suite client générale.
|
||||
|
||||
La suite finale Vulkan des éclats liés aux vaguelettes passe
|
||||
(`build/beta150-wave-glints-vulkan.log`) : animation native, masquage F5,
|
||||
distances indépendantes, reflets solaires et lunaires, matériaux transparents,
|
||||
rechargement des ressources et redimensionnement. Dans la scène solaire,
|
||||
150 563 pixels sont éclaircis, sans pixel blanc saturé.
|
||||
|
||||
La suite OpenGL finale passe également
|
||||
(`build/beta150-wave-glints-opengl.log`) : 148 180 pixels éclaircis, aucun
|
||||
pixel blanc saturé. Les captures finales sont conservées dans
|
||||
`build/evidence/beta150-wave-glints-vulkan/` et
|
||||
`build/evidence/beta150-wave-glints-opengl/`.
|
||||
Le ressenti des vaguelettes en mouvement reste à confirmer par le créateur
|
||||
sur sa configuration ; les tests ne constituent pas une validation esthétique.
|
||||
|
||||
## Pack local
|
||||
|
||||
Construction et assemblage réussis avec
|
||||
`./gradlew build assemblePack -x :sanctuary:check`, après le contrôle complet
|
||||
ci-dessus. L’exclusion ne transforme pas ses échecs connus en réussite.
|
||||
Export packwiz puis vérification ZIP, version Fabric, Minecraft 26.3,
|
||||
Loader 0.19.5, JAR unique identique au construit, shader final et mixin solaire.
|
||||
|
||||
- Pack : `/Users/koka/Documents/sanctuary/sanctuary-beta/build/Sanctuary-beta.150.mrpack`
|
||||
- Taille : 10522942 octets.
|
||||
- SHA-256 pack : `65a4a44948dcdcf0325b5e24c076a03f8832184f25f5c1ff16f69bd3ee641b93`.
|
||||
- SHA-256 JAR : `4962e6f8cafd6ef3e81e088bf9b0092a264441632cfa095d4fe7394b855f093d`.
|
||||
- Reçu : `build/beta150-artifacts.json`, également copié à côté du pack.
|
||||
|
||||
Aucun canal publié, aucune instance Prism ni sauvegarde personnelle modifiée.
|
||||
@@ -1,5 +1,15 @@
|
||||
# Menus Sanctuary — organisation
|
||||
|
||||
Évolution courante du 24 octobre 2026 : [Habitant et Pause beta.275](menu-atlas-beta275.md).
|
||||
La fiche ne contient plus que Factions/Familier en navigation, avec statistiques,
|
||||
personnage et biographie en trois colonnes. Une fois Carte débloquée, Pause garde
|
||||
Aventure à gauche, Communauté à droite et Partie sous la carte centrale ; Gazette
|
||||
et Tableau conservent les colonnes latérales. Les descriptions historiques
|
||||
ci-dessous et la [première fiche beta.271](inhabitant-menu-beta271.md) restent des références.
|
||||
|
||||
Évolution du 24 octobre 2026 : [fiche Habitant et Pause beta.271](inhabitant-menu-beta271.md).
|
||||
Le cadrage ci-dessous conserve l’organisation historique de beta.083.
|
||||
|
||||
Cadrage du 15 septembre 2026, à partir de beta.077.
|
||||
Branche documentaire initiale : `codex/menu-architecture`.
|
||||
**Statut : organisation appliquée en [beta.083](menu-organization-beta083.md).
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
# MENU-275 — Habitant et Pause autour de la carte
|
||||
|
||||
Branche `codex/inhabitant-property`, demande du 24 octobre 2026.
|
||||
|
||||
- Retirer le conseil d’arrivée sur la première propriété gratuite.
|
||||
- Habitant : Factions et Familier en haut, statistiques transparentes à gauche,
|
||||
personnage au centre avec de l’air, biographie à droite. Retirer le panneau
|
||||
d’activité et son bouton Historique de cette fiche ; conserver les données.
|
||||
- Temps joué en jours, heures, minutes et secondes entières, à partir des ticks
|
||||
Minecraft. Aucune minute décimale. Retour à la ligne en petit format.
|
||||
- Les propriétés exigent l’aptitude Carte achetée et active. Aucun bouton dans
|
||||
Habitant ; accès depuis le clic droit sur l’Atlas ou la commande après déblocage.
|
||||
Le serveur applique cette condition aux commandes, actions et ancien paquet
|
||||
de carte locale. Les données et protections acquises restent conservées.
|
||||
- Avant Carte : conserver la disposition actuelle du menu Pause.
|
||||
- Après Carte : Gazette à gauche, Tableau à droite ; dans la colonne centrale,
|
||||
Découvertes, Progression, Habitant et Combats au-dessus de la carte, puis Options,
|
||||
Options du monde et Sauvegarder/quitter ou Déconnexion sous la carte.
|
||||
Les rubriques restent visibles : **Aventure** forme toujours la colonne de
|
||||
gauche (Découvertes puis Progression), **Communauté** celle de droite
|
||||
(Habitant puis Combats), même en grande vue. **Partie / Game** reste au-dessus
|
||||
des options. Le rectangle de carte remplit l’espace restant, réduit pour
|
||||
conserver ces titres. Reprendre reste dans le pied natif.
|
||||
|
||||
Aucun format de sauvegarde ni génération ne change. Les nouveaux prérequis
|
||||
n’attribuent ni ne retirent de propriété. Les protections existantes et leur
|
||||
prédiction de minage s’appliquent aussi aux joueurs sans Carte ; seul l’accès
|
||||
à leur gestion est verrouillé. La refonte habitation/duels/prix reste en attente.
|
||||
|
||||
## Vérification
|
||||
|
||||
`check build assemblePack` réussit en **2 min 45 s**, avec **30 tests serveur
|
||||
ciblés**. Les prérequis de Carte sont testés avant achat, après achat et après
|
||||
désactivation ; refus sans débit, conservation du claim et des protections,
|
||||
réactivation et multiplicateurs de minage pour les joueurs sans Carte.
|
||||
Le format de durée couvre dix limites de ticks et un compteur long.
|
||||
|
||||
Le parcours **Vulkan FR/EN GUI 2/3/4** réussit en **56 s**, avec **18 captures**.
|
||||
Il passe par Hello World réel, vérifie l’absence du conseil de propriété,
|
||||
la commande bloquée et le paquet de carte locale forgé, puis les trois colonnes
|
||||
d’Habitant, les unités de temps, la transparence et l’absence d’activité.
|
||||
Factions et Familier reviennent à la fiche. Les vues Pause avant/après Carte,
|
||||
les deux colonnes Aventure/Communauté même en grande vue, la rubrique Partie,
|
||||
les côtés Gazette/Tableau, la disposition des options, leur retour natif et la
|
||||
mise à jour après désactivation de Carte sont contrôlés. Les textes longs
|
||||
conservent les défilements et infobulles natifs dans les petits formats.
|
||||
|
||||
Captures dans `build/menu275-screenshots/`, avec inspections FR GUI 2/4 de
|
||||
Pause, FR GUI 4 d’Habitant. Le MRpack beta.275 est exporté et vérifié : ZIP,
|
||||
Minecraft 26.3, Loader 0.19.5 et octets des deux JAR locaux identiques aux builds.
|
||||
Les archives beta.270 à beta.274 restent identiques. Reçu :
|
||||
`build/menu275-validation.json`.
|
||||
|
||||
```sh
|
||||
./gradlew check build assemblePack \
|
||||
-PsanctuaryFocusedTests=menu275,claims273,claims272,property270,mining,overview271,menus,map,demeure \
|
||||
-PsanctuaryAtlasOnly=true
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryMenu275ClientTests=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientHeapGb=8 \
|
||||
-PsanctuaryClientNoVsync=true
|
||||
```
|
||||
|
||||
Aucune publication de canal ni synchronisation d’instance personnelle.
|
||||
@@ -0,0 +1,66 @@
|
||||
# AUDIO-253 — musique du menu Sanctuary
|
||||
|
||||
Branche `codex/title-music-beta253`, à partir de beta.252 ; Minecraft **26.3**,
|
||||
livraison **beta.253**. Sound Physics Remastered et les habitats de beta.251
|
||||
restent présents.
|
||||
|
||||
## Résultat
|
||||
|
||||
Le fichier `sanctuary-menu.m4a` fourni le 8 octobre 2026 est converti en
|
||||
`assets/sanctuary/sounds/music/menu.ogg` : **Vorbis, stéréo, 48 kHz**, qualité 6
|
||||
avec libvorbis 1.3.7. Aucun filtre de volume, fondu, découpage ou rééchantillonnage
|
||||
n'est appliqué. Le nombre de trames audio décodées est conservé :
|
||||
7 929 792, soit **165,204 secondes** ; le conteneur M4A annonçait
|
||||
165,248 secondes. Taille de l'OGG : **2 962 073 octets**.
|
||||
|
||||
L'événement `sanctuary:music.menu` lit cette ressource en streaming sur le canal
|
||||
**Musique**. Il remplace la musique de menu native et démarre dès le premier
|
||||
tick musical au menu titre, après le chargement des ressources. Les curseurs
|
||||
Musique et volume principal restent ceux de Minecraft. Le morceau continue
|
||||
dans les Options et les autres sous-menus ; revenir au titre ne le redémarre
|
||||
pas. Il recommence lorsqu'il se termine.
|
||||
|
||||
Le remplacement porte uniquement sur la situation musicale `Musics.MENU`.
|
||||
Les écrans ayant leur propre musique et les situations de jeu gardent leur
|
||||
choix musical. L'introduction du portail arrête la piste de menu comme elle
|
||||
arrêtait auparavant la musique native. Le nom affiché du morceau est
|
||||
**Sanctuary — Menu**, avec libellé FR/EN.
|
||||
|
||||
Le M4A original sur le Bureau n'est pas modifié ni copié dans le dépôt.
|
||||
L'OGG et `licenses/Menu-Music-ASSET.json` sont embarqués dans le mod et son
|
||||
template de ressources exportable. Aucun mod supplémentaire n'est requis.
|
||||
Génération, sauvegardes et installations personnelles inchangées.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Vérifications réussies le 8 octobre 2026, Java 25, Fabric Loader 0.19.5 et
|
||||
Fabric API 0.160.5+26.3 :
|
||||
|
||||
- Conversion et décodage complet avec FFmpeg : Vorbis stéréo 48 kHz,
|
||||
7 929 792 trames avant et après conversion, original M4A inchangé.
|
||||
- `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
|
||||
-PsanctuaryMenuMusic253ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan`
|
||||
réussit : décodeur Vorbis natif, canal Musique actif, bonne ressource en
|
||||
streaming, démarrage avant le délai natif de cinq secondes, même flux conservé
|
||||
dans les Options et au retour au titre, nom du morceau FR/EN, reprise après
|
||||
rechargement des ressources et après arrêt simulant la fin de la piste,
|
||||
introduction silencieuse vis-à-vis de la musique du menu et choix musical
|
||||
explicite d'un écran conservé. Marqueur `MENU253_CLIENT_PASS`.
|
||||
- `./gradlew check build assemblePack assembleTestPack
|
||||
-PsanctuaryFocusedTests=menus -PsanctuaryAtlasOnly=true` réussit : 138 tâches,
|
||||
quatre GameTests serveur requis et contrôles du dépôt. La suite historique
|
||||
complète des GameTests n'est pas revendiquée.
|
||||
- JAR, deux MRpacks et template de ressources : intégrité ZIP, versions,
|
||||
dépendances, classes musicales finales, fichier OGG et empreintes vérifiés.
|
||||
Sound Physics Remastered et l'écologie beta.251 restent embarqués.
|
||||
|
||||
Reçus et logs ignorés : `build/music253/conversion.json`,
|
||||
`build/music253/client-vulkan.log`, `build/music253/check-build-pack.log`,
|
||||
`build/music253/validation.json`. Aucun canal public ou jeu personnel modifié.
|
||||
|
||||
Artefacts locaux :
|
||||
|
||||
- `build/Sanctuary-beta.253.mrpack`, 16 475 098 octets,
|
||||
SHA-256 `31f77959b6fdd5fbbae86c83f31863593f8b0a4caea9ad397c7ab83fad3df2a3`.
|
||||
- `build/Sanctuary-Test-beta.253.mrpack`, 16 888 896 octets,
|
||||
SHA-256 `f3d8d2430fbdea261509394e9b0ffc6d1801a6c89b33c2033c4b11c07e66fb52`.
|
||||
@@ -0,0 +1,115 @@
|
||||
# ASCENT-184 — rosace à 640 et palais des hauteurs
|
||||
|
||||
Ticket du 30 septembre 2026, branche `codex/natural-ascent-beta184`.
|
||||
Le retour sur beta.183 rejette l'ISS métallique visible depuis le sol et les
|
||||
nouveaux bassins supérieurs ovales en marches. La direction retenue est une
|
||||
machine naturelle : rosace, longue tige parcourable, couronne de palais comme
|
||||
un parapluie, carte au sol et portail horizontal au-dessus. Dernière correction
|
||||
explicite du créateur : **la rosace est à Y=640**, pas à 320.
|
||||
|
||||
## Contrat de génération
|
||||
|
||||
Nouveau profil de laboratoire `ascent`, preset `sanctuary_test:ascent_v1`,
|
||||
réglages `sanctuary_test:ascent_v1_10`, graine de visite **42**. Nouvelle dimension
|
||||
`sanctuary_test:ascent_1600`, constructible de Y=0 à 1599. Minecraft 26.3 accepte
|
||||
ce type de dimension dans la génération native vérifiée. Le bruit du terrain
|
||||
reste calculé entre 0 et 639 ; la décoration écrit les structures plus haut
|
||||
dans les sections du nouveau monde. Aucun bruit supplémentaire dans le ciel
|
||||
vide, aucune hydrologie régionale, aucun changement des sauvegardes précédentes.
|
||||
|
||||
Les presets 180–183 restent distincts. Le nouveau profil reprend l'île, ses
|
||||
minerais, biomes, cavernes, soufre et donjon, mais ne place ni l'ISS métallique
|
||||
ni les bassins `Water183`. Les étangs souterrains beta.180 précédemment validés
|
||||
restent présents. Pas d'expansion, migration, nouveau mob ou portail fonctionnel.
|
||||
|
||||
## Construction et découverte
|
||||
|
||||
- Rosace et Bugrock translatés à **(0,640,0)**, sol à 638. Les huit couleurs et
|
||||
approches de la rosace sont conservées ; la sortie est rejoint l'escalier.
|
||||
- Tige de tuf, deepslate, calcite et mousse, nervures enroulées, haltes latérales.
|
||||
Escalier continu avec marches natives, de 638 à 1278 : 1 923 positions de
|
||||
parcours, environ 1,9 km de chemin pour 640 blocs gagnés. Largeur généralement
|
||||
de trois blocs, resserrée aux virages. Le parcours depuis l'île jusqu'à la
|
||||
rosace reste à concevoir ; le test permet le vol et le spectateur.
|
||||
- Palais : nervures déployées à partir de 1160, sol à **1278**, voûte à **1310**.
|
||||
Huit pétales vitrés, passages minéraux, cuivre oxydé, balcons. Pas de panneaux
|
||||
solaires ni de modules métalliques. Le Bugrock reste uniquement sur la rosace.
|
||||
- Atlas natif au sol, 49 cartes sur ce terrain moyen, dans des cadres horizontaux.
|
||||
Dimensions 5×5, 7×7 et 9×9 pour les rayons déjà pris en charge. Identifiants et
|
||||
marqueurs propres à ce nouvel atlas ; l'atlas 183 reste inchangé.
|
||||
- Portail supérieur : cadre horizontal 7×7 d'obsidienne, coins en obsidienne
|
||||
pleureuse, vide central 5×5, à 1287 au-dessus des cartes. Le portail inférieur
|
||||
conserve son cadre 5×5 et son creux 3×3 à Y=175. Ce sont des infrastructures.
|
||||
|
||||
À 32 chunks, la caméra native peut garder un plan lointain de 2 048 blocs :
|
||||
la hauteur seule ne suffit pas à dissimuler la couronne. Dans cette dimension
|
||||
uniquement, le frustum refuse les volumes entièrement au-dessus de 1152 lorsque
|
||||
la caméra est sous 560. La couronne devient donc éligible à l'affichage pendant
|
||||
l'approche de la rosace ; les règles normales de visibilité restent applicables.
|
||||
C'est une révélation côté rendu, pas une génération conditionnelle à un joueur.
|
||||
Un contrôle à l'entrée du client teste les deux API natives de frustum, depuis
|
||||
le sol et depuis 640. La couronne est aussi au-delà du volume maximal des ombres
|
||||
Sanctuary depuis le plateau (distance 256, extrusion solaire comprise). Cela
|
||||
ne supprime pas l'éclairage Minecraft inhérent aux blocs placés dans une colonne.
|
||||
|
||||
## Eau dans les creux existants
|
||||
|
||||
Recherche locale et bornée dans le champ réel de densité. Chaque candidat est
|
||||
rempli par parcours des cellules d'air adjacentes sous un niveau horizontal ;
|
||||
un chemin sortant du volume de recherche, vers le vide ou une zone réservée
|
||||
fait rejeter le candidat. On monte le niveau par essais bornés tant que la roche
|
||||
retient l'eau. Aucun mur de retenue, fond d'argile artificiel, marche ou excavation
|
||||
n'est dessiné. Seules les cellules encore en air reçoivent de l'eau à la décoration.
|
||||
Les cavités existantes, roches saillantes et végétaux conservés dictent le contour.
|
||||
|
||||
Première génération native `solo184a`, graine 42 : 45 essais, plan en 852 ms,
|
||||
10 402 blocs d'eau dans la grande poche (surface de 1 045 cellules à Y=234),
|
||||
739 blocs dans la seconde (290 cellules à Y=242). Aucun débouché latéral/inférieur
|
||||
non retenu détecté après la décoration. Ce sont des eaux retenues ; aucune
|
||||
simulation de bassin versant ou de rivière à longue distance n'est introduite.
|
||||
|
||||
## Vérification et visite
|
||||
|
||||
Premier contrôle natif réussi : 567 échantillons profonds identiques, zéro région
|
||||
d'hydrologie, trois cerisiers, cinq spawners, quatre caches à butin, galerie,
|
||||
soufre et trois secteurs de gemmes présents. Les 56 246 entrées du plan du palais
|
||||
correspondent aux blocs générés ; toutes les positions de montée ont un support
|
||||
et deux blocs libres. Les 49 cartes sont uniques, remplies, figées et supportées.
|
||||
Serveur démarré en 5,3 s ; prêt en 43,6 s avec génération des sondages et contrôles.
|
||||
Ce dernier temps inclut les tests et ne mesure pas un démarrage normal du solo.
|
||||
|
||||
Validation finale : `./gradlew check build assemblePack assembleTestPack
|
||||
:sanctuary-test:exportDuoLaunch` réussi en 6 min 54 s, **265/265 GameTests**.
|
||||
Journal `build/ascent184-check-build.log`. Nouveau monde final `solo184b/ascent/42`
|
||||
contrôlé et arrêté proprement : serveur en 5,25 s, prêt avec contrôles en 41,63 s ;
|
||||
plan d'eau en 806 ms, 10 401 et 739 blocs d'eau retenus sans fuite. Le nombre de blocs d'eau diffère d'une cellule entre les deux essais ;
|
||||
les niveaux et surfaces des plans restent identiques.
|
||||
Rapport `build/ascent184-quick-result-final.json`.
|
||||
|
||||
Lecture NBT du monde arrêté : 49 cartes complètes, figées, identifiants uniques,
|
||||
49 cadres orientés vers le haut à Y=1279. Air confirmé aux anciens centres
|
||||
(0,320,0) et (0,576,0), bloc originel à (0,640,0), plancher d'atlas en calcite
|
||||
et portail supérieur creux. Reçus `build/ascent184-saved-atlas-final.json` et
|
||||
`build/ascent184-saved-blocks-final.json`.
|
||||
|
||||
Solo neuf `visite184/ascent/42`, `Sanctuary-Ascent-184-Solo`, commandes, créatif,
|
||||
vol, vue 32 et simulation 12. Entrée client Vulkan confirmée le 30 septembre,
|
||||
contrôle natif du frustum réussi à **03:45:07** : couronne cachée à Y=250,
|
||||
rosace visible et couronne révélée à Y=640. Journal `build/ascent184-solo.log`.
|
||||
Le profil local KokaLab de ce monde utilise la couleur Ciel et le familier de
|
||||
labo par défaut. Le daemon de compilation a été arrêté pour libérer la mémoire.
|
||||
Aucune sauvegarde antérieure ni instance Prism modifiée. Les archives locales
|
||||
sont assemblées ; aucun canal public n'est avancé.
|
||||
|
||||
| Lieu | Téléportation de visite |
|
||||
| --- | --- |
|
||||
| Rosace et départ de la montée | `/tp 0.5 639 5.5 180 -20` |
|
||||
| Palais et carte au sol | `/tp 6.5 1280 8.5 140 35` |
|
||||
| Vue extérieure de la couronne | `/tp 45 1295 45 135 10` |
|
||||
| Grande cavité en eau | `/tp -144 236 -96` |
|
||||
| Seconde cavité en eau | `/tp -16 245 128` |
|
||||
| Portail inférieur | `/tp 0.5 177 7.5 180 30` |
|
||||
|
||||
Cette première silhouette reste à évaluer en visite, notamment le rythme de
|
||||
l'ascension et les proportions du palais. La graine 42 est la référence vérifiée ;
|
||||
la disponibilité de grandes cavités sur d'autres graines reste à éprouver.
|
||||
@@ -0,0 +1,100 @@
|
||||
# CAVES-187 — soufre naturel, ancres orientées et bassins visibles
|
||||
|
||||
Ticket du 30 septembre 2026, branche `codex/natural-caves-beta187`.
|
||||
Retour beta.186 : coque de soufre artificielle, pylônes mal orientés et verre
|
||||
latéral, bassins de surface invisibles. Le relief et les trois secteurs de
|
||||
gemmes sont appréciés et conservés.
|
||||
|
||||
Nouveau profil `natural`, preset `sanctuary_test:natural_caves_v1`, graine 42.
|
||||
Les anciens presets et sauvegardes restent inchangés. Le laboratoire ajoute
|
||||
un climat de soufre en trois dimensions dans la roche existante, une approche
|
||||
en mousse tournée vers le centre pour chaque ancre et des pylônes opposés,
|
||||
vers l'expansion, portant le verre au-dessus de l'améthyste. L'eau de surface
|
||||
est recherchée dans des dépressions réellement ouvertes au ciel ; toute fuite
|
||||
vers le vide fait rejeter le bassin. Aucun calcul régional d'hydrologie.
|
||||
|
||||
Le climat de soufre utilise un bruit volumique et respecte la priorité des
|
||||
marais humides. La palette forme des dépôts cohérents de soufre, cinabre et
|
||||
calcite dans les blocs rocheux existants. Musique et couleurs du biome natif
|
||||
26.3 sont conservées. Les carvers, minerais et structures vanilla ne sont pas
|
||||
importés : l'île conserve ses cavités et sa distribution de ressources.
|
||||
L'ancienne coque et ses cheminées ne sont plus placées dans ce preset.
|
||||
|
||||
Les pylônes portent améthyste puis verre, sur la même verticale. Leur porte
|
||||
pointe vers la direction exacte du secteur, y compris les diagonales. Le
|
||||
chemin en mousse est du côté opposé. La sélection vérifie le support naturel
|
||||
de la porte et du chemin ; les huit emplacements changent pour respecter
|
||||
cette orientation. La galerie, les rosaces et le palais restent conservés.
|
||||
|
||||
L'eau de surface monte dans un creux par parcours prioritaire : chaque voxel
|
||||
est échantillonné une fois à la hauteur minimale qui le rend accessible.
|
||||
Une fuite, une structure réservée ou la limite de recherche arrête la montée.
|
||||
Les surfaces retenues doivent être majoritairement ouvertes au ciel. Aucun
|
||||
fond ajouté ni découpage elliptique ; les arbres voisins ne peuvent reboucher
|
||||
les cellules d'eau réservées. Les étangs souterrains appréciés sont conservés.
|
||||
L'atlas projette aussi les nouvelles eaux et perd le faux repère jaune de la
|
||||
cheminée supprimée. Les recherches sont bornées, en génération uniquement.
|
||||
|
||||
## Contrôles natifs
|
||||
|
||||
Graine 42, `solo187e/natural/42` : génération à froid réussie. Recherche des
|
||||
bassins en 2,674 s, contre 21,546 s au premier essai ; mêmes trois positions,
|
||||
niveaux et volumes retenus. Démarrage serveur 9,881 s, prêt après l'ensemble
|
||||
des contrôles en 50,190 s. Ces durées ne mesurent pas le démarrage graphique.
|
||||
Zéro région d'hydrologie et 567 échantillons de densité profonde conservés.
|
||||
|
||||
| Bassin | Niveau | Surface totale | Surface sous ciel ouvert | Blocs d'eau |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Ouest, près de (-104, 88) | 248 | 1 994 | 1 475 | 11 935 |
|
||||
| Nord-est, près de (120, -136) | 244 | 839 | 536 | 2 329 |
|
||||
| Sud, près de (8, 136) | 254 | 1 321 | 904 | 9 446 |
|
||||
|
||||
Aucune fuite native détectée. Quatre points de visite confirment le biome
|
||||
sulfureux, de la roche minéralisée et des cavités déjà présentes dans la densité.
|
||||
Les huit refuges passent le contrôle d'orientation et de verre vertical.
|
||||
Les dépôts distincts activent les huit gemmes ; les tests restaurent ensuite
|
||||
les ancres éteintes et le Bugrock allumé sans relais. Les secteurs de gemmes,
|
||||
les cinq spawners et quatre wagonnets à butin restent vérifiés.
|
||||
|
||||
Réouverture réussie : démarrage serveur 0,618 s, prêt avec vérifications en
|
||||
8,226 s. Les huit ancres sont relues dans la sauvegarde éteintes et le masque
|
||||
du Bugrock vaut zéro ; 49 cartes complètes, figées, avec 49 cadres horizontaux
|
||||
uniques. Reçus ignorés : `build/natural187-final-cold-result.json`,
|
||||
`build/natural187-final-warm-result.json`, `build/natural187-saved-blocks.json`,
|
||||
`build/natural187-saved-atlas.json`.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch`
|
||||
réussi en **7 min 10 s**, **265/265 GameTests**. Journal :
|
||||
`build/natural187-check-build.log`. Daemon Gradle arrêté avant le client.
|
||||
Solo Vulkan rejoint à **08:40:37**, départ (-104,5 ; 269 ; 119,5), vue 32
|
||||
et simulation 12 confirmées dans `build/natural187-solo.log`. Contrôle client
|
||||
de visibilité verticale réussi à 08:40:39. Le créateur a pris la main et est
|
||||
passé en spectateur ; aucune téléportation d'inspection supplémentaire.
|
||||
L'appréciation visuelle des nouveaux bassins et du soufre reste celle de
|
||||
cette visite ; les mesures ci-dessus sont des vérifications natives.
|
||||
Seule la graine de visite est certifiée ; pas de migration des anciennes
|
||||
sauvegardes ni de modification du canal public ou de Prism.
|
||||
|
||||
|
||||
## Visite — graine 42
|
||||
|
||||
Nouveau solo `visite187/natural/42`, `Sanctuary-Natural-Caves-187-Solo`.
|
||||
Vue 32, simulation 12, créatif, vol et commandes. Départ au-dessus du bassin
|
||||
ouest ; les anciennes visites restent conservées.
|
||||
|
||||
| Lieu | Raccourci de visite |
|
||||
| --- | --- |
|
||||
| Bassin ouest | `/tp -104.5 269 119.5 180 35` |
|
||||
| Bassin nord-est | `/tp 120.5 258 -116.5 180 35` |
|
||||
| Bassin sud | `/tp 8.5 270 156.5 180 35` |
|
||||
| Soufre, cavité haute | `/tp -215.5 219 -35.5` |
|
||||
| Soufre, cavité profonde | `/tp -203.5 150 -11.5` |
|
||||
| Soufre, cavité nord-ouest | `/tp -191.5 152 -179.5` |
|
||||
| Ancre nord, approche intérieure | `/tp 36.5 250 -168.5 180 0` |
|
||||
| Ancre nord-est | `/tp 193.5 251 -84.5 -135 0` |
|
||||
| Ancre est, récif | `/tp 214.5 444 16.5 -90 0` |
|
||||
| Ancre sud-est | `/tp 157.5 226 145.5 -45 0` |
|
||||
| Ancre sud, grotte | `/tp -71.5 176 205.5 0 0` |
|
||||
| Ancre sud-ouest | `/tp -96.5 252 181.5 45 0` |
|
||||
| Ancre ouest | `/tp -96.5 230 0.5 90 0` |
|
||||
| Ancre nord-ouest, récif | `/tp -102.5 404 -160.5 135 0` |
|
||||
@@ -0,0 +1,77 @@
|
||||
# WG-NATURE-190 — relief organique, déversoirs et butin des ruines
|
||||
|
||||
Branche `codex/natural-refinement-beta190`, graine de visite **42**, Minecraft 26.3.
|
||||
Nouveau profil de laboratoire `refined`, preset `sanctuary_test:natural_refinement_v1`.
|
||||
Les sauvegardes précédentes restent des témoins ; aucune régénération ni migration.
|
||||
|
||||
## Contrat de cet essai
|
||||
|
||||
Après la visite beta.189 : supprimer les terrasses systématiques du relief principal,
|
||||
conserver quelques inflexions locales douces, des affleurements suivant la pente et
|
||||
sans masque en cases de quatre blocs. Les captures du 30 septembre à 20:44 et 20:45
|
||||
montrent le relief principal ; les îlots aériens ne sont pas la cause des paliers.
|
||||
Comparer les débouchés voisins des étangs au lieu de retenir le premier rayon ;
|
||||
privilégier une sortie courte, large de quatre ou cinq blocs et peu creusée.
|
||||
Conserver les cavités, le portail et les ruines appréciés. Remplacer la table de
|
||||
craft de chaque ruine par un coffre de matériel en fer enchanté.
|
||||
Aucun calcul d’hydrologie régionale ajouté ; travail local borné, décoration existante.
|
||||
|
||||
## Réserve de conception, non implémentée
|
||||
|
||||
- Expansion à grandes surfaces étagées et falaises ciselées : conserver la variante
|
||||
beta.189 comme référence, avec une profondeur et une verticalité adaptées au thème.
|
||||
- Portails horizontaux : remplissage progressif avec une ressource renouvelable.
|
||||
Perles d’Ender, source Endermen ou butin sont des pistes ; ressource, nombre,
|
||||
recette et destination ne sont pas décidés. Aucun mécanisme d’activation ajouté ici.
|
||||
|
||||
## Vérifications
|
||||
|
||||
Compilation et génération/réouverture natives réussies, graine 42 :
|
||||
`build/refined190b-cold.json` et `build/refined190b-warm.json`.
|
||||
|
||||
- 704 des 745 sommets échantillonnés gardent exactement la hauteur naturelle
|
||||
antérieure aux terrasses ; 41 épaules retouchées, écart maximum 3 blocs.
|
||||
30 246 densités des profondeurs et des îlots aériens identiques. Les corniches
|
||||
fines sont conservées ; une première interpolation qui pouvait les supprimer
|
||||
a été corrigée avant la visite.
|
||||
- Une sortie d’étang de cinq blocs de large, depuis X=150, Y=244, Z=-157 à -153
|
||||
vers X=154–155. Chenal de 4–5 blocs, dont une partie dans l’étang ; huit blocs
|
||||
retirés. Bord de chute irrégulier, 64 blocs préremplis puis écoulement natif.
|
||||
La recherche compare les ouvertures proches, reste bornée à dix blocs et
|
||||
deux cascades, et renonce si aucune bouche assez large ne convient.
|
||||
- 1 052 blocs de plage sèche, 434 plantes aquatiques, zéro tronc dans les
|
||||
colonnes contrôlées des plages et étangs. Fonds : 1 337 sable, 249 gravier,
|
||||
2 832 argile. Le choix du chenal ne crée pas de fond ou barrage artificiel.
|
||||
- Quatre ruines conservées, coffres en (25,164,-63), (-7,148,-79),
|
||||
(65,164,-79), (57,121,-79). Couvercles dégagés, table de butin conservée
|
||||
après réouverture. Une ou deux pièces en fer par coffre, enchantements
|
||||
de table de niveau 12–20 : armure, épée, pioche, hache ou pelle.
|
||||
32 tirages vérifiés à froid, puis 32 à chaud ; aucune pièce non enchantée.
|
||||
- Huit ancres, cartes du palais, gemmes, soufre, donjon et galerie contrôlés.
|
||||
Ni nouvelle dimension ni activation des portails ajoutée.
|
||||
|
||||
Démarrage natif : 12,331 s à froid / 0,673 s à chaud ; avec toute la batterie
|
||||
et le remplissage intégral des cartes : 81,505 s / 26,656 s. Plans locaux
|
||||
berges/déversoirs : 174 / 170 ms. Zéro région d’hydrologie calculée.
|
||||
Mesures obtenues pendant la suite de tests générale, sans garantie de durée
|
||||
identique sur chaque machine. Le solo ne lance pas ces contrôles lourds.
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack` réussi en **9 min 22 s**,
|
||||
avec **265 GameTests réussis**. Après les derniers correctifs validés par le labo
|
||||
natif, le JAR optionnel a été réassemblé et le pack de test resynchronisé.
|
||||
Ses classes et ressources correspondent aux fichiers compilés, et sa copie
|
||||
assemblée est identique : `build/refined190-pack-receipt.json`.
|
||||
Aucune publication de canal ni mise à jour Prism. La validation esthétique reste
|
||||
celle de la prochaine visite ; les contrôles structurels ne la remplacent pas.
|
||||
|
||||
|
||||
## Visite
|
||||
|
||||
Solo `Sanctuary-Natural-Refinement-190-Solo`, run `visite190`, profil `refined`,
|
||||
graine 42. Copie neuve du monde de diagnostic arrêté, sauvegardes antérieures
|
||||
préservées. Spectateur et commandes activés, vue 32, simulation 12, Vulkan.
|
||||
Connexion confirmée à **21:01:12**, position (178,260,-146), face à la cascade.
|
||||
Les 49 cartes et cadres horizontaux sont présents, complets et verrouillés ;
|
||||
les huit ancres et le Bugrock sont revenus à l’état initial après les contrôles.
|
||||
`build/refined190-saved-atlas.json`, `build/refined190-saved-blocks.json` et
|
||||
`build/refined190-solo.log` conservent ces vérifications.
|
||||
@@ -0,0 +1,121 @@
|
||||
# WATER-144 — Eau naturelle pixélisée
|
||||
|
||||
Branche `codex/water-beta144`, socle beta.143 publiée (`97ff2b5`) et suivi
|
||||
`580b241`. Minecraft 26.3, Java 25, dépendances conservées.
|
||||
|
||||
## Contrat
|
||||
|
||||
**Options → Shaders → Eau naturelle** est activée par défaut avec Sanctuary.
|
||||
L’intensité (0–100 %, défaut 100 %) agit sur la surface et l’immersion.
|
||||
L’interrupteur ou 0 % retrouve le rendu précédent. Les préférences existantes
|
||||
restent conservées ; un moteur externe suspend l’effet comme les autres effets
|
||||
natifs Sanctuary.
|
||||
|
||||
La couleur native du biome reste la base, y compris les variantes d’océans.
|
||||
Les océans (`minecraft:is_ocean`) imposent le profil clair.
|
||||
Hors océan, le premier support situé au maximum huit blocs sous la cellule
|
||||
observée choisit le profil :
|
||||
|
||||
| Profil | Fond | Mélange olive #788448 | Alpha natif | Distance de brume native |
|
||||
| --- | --- | ---: | ---: | ---: |
|
||||
| Claire | Pierre, matériaux construits, inconnus | 0 % | ×0,55 | ×1 |
|
||||
| Légèrement teintée | Sable, sable rouge, gravier, argile | 10 % | ×0,80 | ×0,70 |
|
||||
| Étang | Terre, terre stérile/enracinée, herbe, podzol, mycélium, boue, racines de palétuvier boueuses | 85 % | ×1 | ×0,40 |
|
||||
|
||||
L’eau et les plantes aquatiques sans collision sont traversées. Un support
|
||||
immergé reste un fond ; absence de support, air ou données manquantes donnent
|
||||
une eau claire. La référence visuelle fournie pendant l’implémentation demande un véritable
|
||||
vert olive légèrement jaunâtre : le profil étang passe donc de 45 % à 85 %
|
||||
de mélange, tout en laissant les eaux claires et océaniques natives.
|
||||
Les surfaces profondes sans fond dans la limite restent donc
|
||||
claires. Les profils se mélangent aux sommets sur un bloc, sans filtrer les
|
||||
textures. L’eau sous un toit suit son fond, pas l’éclairage du bâtiment.
|
||||
|
||||
La ressource client `assets/sanctuary/water_materials.json` accepte deux listes
|
||||
d’identifiants de blocs, `light` et `pond`, remplaçables par un resource pack.
|
||||
Les blocs absents des listes sont clairs. Une ressource invalide est signalée
|
||||
et reprend les familles embarquées. Le template personnel inclut cette ressource.
|
||||
|
||||
## Rendu et coût
|
||||
|
||||
Modification des seules couleurs/alpha des sommets de `FluidRenderer`, sans
|
||||
passe écran ni duplication de maillage. Textures, UV, animation, éclairage
|
||||
et tri des transparences restent natifs. Les calculs de profils sont différés
|
||||
jusqu’à l’émission d’un sommet visible, puis mutualisés dans la région compilée.
|
||||
Un test de palette élimine les sections sans eau avant toute copie de biomes.
|
||||
Les états de blocs viennent des copies natives ; les appartenances océaniques
|
||||
sont capturées avant l’envoi au worker. Aucun chargement de chunk n’est demandé.
|
||||
|
||||
Un changement de bloc invalide la zone dépendante, huit blocs au-dessus et
|
||||
un bloc horizontalement. Les reconstructions natives recopient leurs données ;
|
||||
l’effet ne déclenche aucune reconstruction pour une lumière mobile.
|
||||
Un changement d’option reconstruit seulement les sections chargées contenant de
|
||||
l’eau ; les caches des autres effets restent disponibles. Le cache temporaire
|
||||
disparaît avec sa compilation, sans historique de monde.
|
||||
|
||||
Sous l’eau, le profil est échantillonné au maximum une fois par tick, avec
|
||||
transition de 0,5 seconde. La couleur et les distances environnementales sont
|
||||
adaptées dans le rendu natif du brouillard. La teinte finale est appliquée après
|
||||
la normalisation de la vision aquatique, pour éviter de transformer l’olive en
|
||||
jaune fluorescent ; la luminosité issue des modificateurs natifs de vision
|
||||
et le bonus du compagnon calmar sont conservés. Lave et brume atmosphérique ne changent
|
||||
pas. Il n’y a pas de simulation d’absorption volumétrique ni de reflet ajouté.
|
||||
|
||||
## Validation native
|
||||
|
||||
Les essais utilisent un monde plat jetable, graine 122, avec bassins sur quartz,
|
||||
sable et boue, support du sable, plantes aquatiques, toit, frontière de sections
|
||||
et changement de biome océan. Une copie personnelle de ressource remplace
|
||||
réellement les familles de matériaux puis est désactivée.
|
||||
|
||||
Les suites graphiques OpenGL et Vulkan ont passé les contrôles de surface,
|
||||
d’immersion, de fond modifié, d’océan, de ressources, de préférences et de
|
||||
cascades pendant le développement. La dernière optimisation reconstruit
|
||||
seulement les sections contenant de l’eau lors du changement d’option.
|
||||
Sa série de validation finale reste à terminer avant publication.
|
||||
|
||||
### Protocole de performance
|
||||
|
||||
Apple M1, macOS, Java 25, 854×480, distance de rendu 6 chunks,
|
||||
ombres 32 blocs / 16 pixels, PBR 50 %, autres effets activés.
|
||||
VSync désactivée, limite 260 (illimitée), limitation AFK désactivée.
|
||||
Pour chaque scène : OFF/ON/ON/OFF/ON/OFF/OFF/ON, dix secondes par passage,
|
||||
avec stabilisation des sections puis quatre secondes de chauffe entre passages.
|
||||
Le déplacement avance de 120 blocs et laisse les sections se compiler
|
||||
naturellement, sans vidange artificielle des caches des autres effets.
|
||||
Les moyennes des quatre médianes et P95 par état sont comparées avec les seuils
|
||||
+5 % et +2 ms. Les temps de compilation de sections sont consignés également.
|
||||
|
||||
Les essais courts initiaux ont montré une forte variabilité. Une limitation AFK
|
||||
à 30 FPS puis des clients Minecraft concurrents dans le chantier PBR/SSR ont
|
||||
été identifiés. Ces essais restent dans les preuves de développement ; ils
|
||||
ne valident pas la livraison. La série finale attend la fin du chantier
|
||||
concurrent, conformément à la demande du créateur. Les résultats ne sont pas
|
||||
présentés comme acquis, et aucun gain de performance universel n’est promis.
|
||||
|
||||
Pour reproduire, avec Java 25 et un environnement graphique disponible :
|
||||
|
||||
```sh
|
||||
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
|
||||
-PsanctuaryPixelShadows122ClientTests=true -PsanctuaryWater144ClientTests=true \
|
||||
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true \
|
||||
-PsanctuaryClientGraphicsBackend=vulkan > build/water144-vulkan.log 2>&1
|
||||
python3 scripts/check_water_performance.py build/water144-vulkan.log
|
||||
```
|
||||
|
||||
Répéter avec `opengl`, sans autre client graphique simultané. Le vérificateur
|
||||
refuse les séries incomplètes et les dépassements ; il écrit le reçu détaillé
|
||||
près du journal. Le marqueur `WATER144_PASS` atteste les contrôles fonctionnels.
|
||||
|
||||
### Assemblage et publication
|
||||
|
||||
Le GameTest serveur dédié reste exclu conformément au refus antérieur de son
|
||||
EULA. La commande de livraison est `./gradlew check build assemblePack
|
||||
assembleTestPack -x :sanctuary:runGameTest` ; la suite complète non exclue
|
||||
n’est pas déclarée réussie. Les contrôles natifs de l’eau utilisent le serveur
|
||||
intégré d’un monde jetable. Aucun essai Windows n’est revendiqué.
|
||||
|
||||
La release, le canal et l’instance ne sont pas encore mis à jour.
|
||||
Les preuves détaillées restent dans les dossiers ignorés :
|
||||
`build/water144-*.log`, `build/water144-*-performance.json`,
|
||||
`build/water144-*-isolation.json` et `build/water144-evidence/`.
|
||||
@@ -0,0 +1,93 @@
|
||||
# FIX-151 — Nether, PBR opaque et SSR
|
||||
|
||||
Branche `codex/nether-wood-beta151`, socle beta.150 `448e2fe`.
|
||||
|
||||
## Déconnexion Nether
|
||||
|
||||
Le rapport Windows beta.150 transmis le 18 septembre 2026 indique
|
||||
`IndexOutOfBoundsException: Index 46 out of bounds for length 46` lors de
|
||||
`ClientPacketListener.handleContainerContent`, paquet `container_set_content`.
|
||||
Le passage au Nether dans le test client local reproduit exactement cette trace
|
||||
(journal `build/beta151-client-first.log`). Ce défaut n’est pas un crash GPU.
|
||||
|
||||
Minecraft recrée le joueur client et son menu lors de `handleRespawn`, utilisé
|
||||
aussi pour les changements de dimension. La progression n’était réattachée
|
||||
qu’en fin de tick ; un paquet d’inventaire dans le même lot arrivait avant la
|
||||
création des 18 cases supplémentaires et des 3 accessoires. Le correctif lie la
|
||||
progression déjà reçue au nouveau joueur dès la fin du traitement du paquet de
|
||||
respawn, avant le paquet suivant. Aucun paquet ni objet n’est ignoré et aucun
|
||||
format de sauvegarde ne change. Sans progression Sanctuary active, le chemin
|
||||
vanilla reste inchangé.
|
||||
|
||||
## Rendu
|
||||
|
||||
La beta.146 avait porté le gain solaire des surfaces opaques de 3 à 20
|
||||
(4 × 5), soit environ 6,7 fois plus. Le renforcement prévu pour les reflets de
|
||||
l’eau avait ainsi créé un voile sur les matières sombres, dont l’obsidienne.
|
||||
Les surfaces opaques retrouvent le gain 3 et le budget spéculaire total 0,5,
|
||||
partagé entre soleil et lampes. La teinte native du coucher de soleil, les
|
||||
normales et le relief sont conservés. Eau et verre conservent leur traitement.
|
||||
Le bois utilise le profil mat 0,98 : planches, bûches et variantes de construction,
|
||||
bambou, tiges et hyphes du Nether. Ce classement ne transforme pas le nylium en bois.
|
||||
|
||||
SSR est activé par défaut à 20 %, avec portée 64 blocs. Un choix OFF déjà
|
||||
sauvegardé reste OFF. PBR reste à 50 % par défaut.
|
||||
|
||||
## Cible graphique
|
||||
|
||||
Décision du créateur pendant ce ticket : **Vulkan uniquement** pour les nouvelles
|
||||
validations. Le passage OpenGL de ce ticket s’était terminé avant cette demande ;
|
||||
il reste une trace historique, pas une cible à conserver ni à relancer.
|
||||
Cette décision est reportée dans `AGENTS.md` et `docs/testing.md`.
|
||||
|
||||
## Vérification
|
||||
|
||||
Les assertions GPU Vulkan et les quatre transferts successifs
|
||||
Overworld → Nether → Overworld → Nether → Overworld passent sur un nouveau monde
|
||||
plat de développement, graine 122. Après chaque transfert : menu de 67 cases,
|
||||
pile de 7 diamants en inventaire natif, 3 émeraudes dans la première case
|
||||
supplémentaire et 5 lingots d’or dans la dernière, toujours présents côté client.
|
||||
|
||||
Les scènes PBR conservent 99,878 % de la saturation relative du chêne et 99,968 %
|
||||
de celle de l’épicéa écorcé sur 185 776 pixels chacune. Le relief affecte
|
||||
respectivement 101 382 et 51 671 pixels. De face, l’obsidienne ne gagne en moyenne
|
||||
que 5,114 niveaux RGB sur 255 (102 480 pixels), avec relief visible sur 95 225
|
||||
pixels. Captures inspectées : bois et obsidienne PBR OFF/ON.
|
||||
|
||||
Les contrôles couvrent aussi les réglages SSR absents (ON/20 %), la persistance
|
||||
d’un choix OFF, les profils bois, les petits déplacements de caméra, les
|
||||
intensités, le rechargement des ressources et le redimensionnement.
|
||||
Le premier passage Vulkan corrigé valide toutes les assertions, mais se bloque
|
||||
ensuite à la fermeture dans les barrières de synchronisation du programme de
|
||||
test Fabric ; son processus est arrêté après capture des piles de threads.
|
||||
Premier journal : `build/beta151-client-vulkan-final.log` ; diagnostic :
|
||||
`build/beta151-client-shutdown-threads.txt`. Le second passage Vulkan réussit entièrement, fermeture comprise, en **3 min 9 s**
|
||||
(`build/beta151-client-vulkan-clean.log`). La suite OpenGL terminée avant l’abandon de
|
||||
cette cible a réussi en 2 min 42 s ; aucun nouveau test OpenGL n’est prévu.
|
||||
|
||||
Le contrôle complet `./gradlew check build` dans `build/server-validation`
|
||||
(3 068 fichiers de production identiques aux sources courantes) termine en
|
||||
11 min 13 s : **229 réussites, 23 échecs sur 252**. Les 23 identifiants sont
|
||||
strictement identiques à beta.150 : aucun nouveau, aucun résolu.
|
||||
Le contrôle global reste rouge. Journaux et liste :
|
||||
`build/beta151-check-build.log`, `build/beta151-server-failures.json`.
|
||||
Ces échecs restent ouverts et ne constituent pas la validation du correctif
|
||||
réseau ; celui-ci repose sur la reproduction puis le test client des transferts.
|
||||
|
||||
## Pack local
|
||||
|
||||
`./gradlew build assemblePack -x :sanctuary:check` réussit en 11 s,
|
||||
indépendamment du contrôle complet en échec ci-dessus. Export packwiz réussi ;
|
||||
ZIP, version Fabric, Minecraft 26.3, Loader 0.19.5, JAR Sanctuary unique,
|
||||
mixin de respawn et shader exacts, classes conformes aux sorties compilées et
|
||||
absence des tests dans le JAR vérifiés.
|
||||
|
||||
- Pack : `/Users/koka/Documents/sanctuary/sanctuary-beta/build/Sanctuary-beta.151.mrpack`.
|
||||
- SHA-256 pack : `1d87804d75edda0a95c318ea3feaf47ecadeeb29d86ca55483a42741d7a5fcab`.
|
||||
- SHA-256 JAR : `6676c67f8be4e650a9b6a8213c8b0fdf3cf7e62b030c3d1a6d4805d438a8e543`.
|
||||
- Reçu : `build/beta151-artifacts.json`.
|
||||
|
||||
Les essais sont effectués sur Apple M1 ; la validation sur le PC Windows du
|
||||
créateur reste à faire.
|
||||
|
||||
Aucune sauvegarde personnelle ouverte, aucun canal publié ni instance installée.
|
||||
@@ -0,0 +1,103 @@
|
||||
# WG-206 — dessous aminci et cavités froides
|
||||
|
||||
Branche `codex/north-cavities-beta206`, depuis beta.205 (`bf5df38`).
|
||||
|
||||
## Contrat
|
||||
|
||||
Le créateur valide une épaisseur variable sous le paysage du Nord, des cavités
|
||||
froides et humides, et des failles ouvertes d’améthyste bordées de calcite et de
|
||||
basalte. La surface et les grandes taïgas de beta.205 sont la référence.
|
||||
La redistribution diorite / granit / andésite reste une proposition distincte.
|
||||
|
||||
Nouveau profil 206 uniquement, expansion Nord de 1024 blocs. Île de départ,
|
||||
autres directions et profils historiques conservés. Aucun monde existant
|
||||
converti, aucun chunk régénéré. Contrat des essais : nouveaux mondes de
|
||||
développement, graines 42 et 0 ; activation et reprise du Nord explicitement
|
||||
réservées à ces nouvelles sauvegardes de test. Aucun canal public ni instance
|
||||
Prism à modifier.
|
||||
|
||||
## Implémentation
|
||||
|
||||
- Masque soustractif sous le bruit natif 205 : épaisseur cible continue de
|
||||
40–99 blocs, contrôlée par deux bruits, dessous irrégulier. Les vingt blocs
|
||||
supérieurs du champ natif restent protégés. Le masque ne rajoute aucune
|
||||
montagne ni terrasse ; la roche déjà absente reste absente.
|
||||
- Failles sinueuses dans la matière, avec améthyste, calcite et basalte lisse
|
||||
organisés autour du même champ de fissure. Cristaux orientés vers l’air et
|
||||
quelques blocs d’améthyste bourgeonnante.
|
||||
- Dépôts de glace compacte et de glace bleue dans les cavités, argile localisée
|
||||
et lichens. Biomes nordiques 206 distincts, sans les placements de champignons
|
||||
ni les géodes fermées des profils précédents ; minerais conservés.
|
||||
- Eau peu profonde dans le sol existant des cavités : un bloc de roche ou de
|
||||
glace peut être remplacé par l’eau dans une poche de 6–96 blocs, sans ellipse
|
||||
ni terrasse ajoutée. Contours en bruit mondial, fond et berges contrôlés sur
|
||||
les blocs réels ; tout débouché est refusé. Recherche locale bornée, sans
|
||||
grande hydrologie ni travail périodique en partie.
|
||||
|
||||
## Vérifications
|
||||
|
||||
- `./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
|
||||
-PsanctuaryFocusedTests=base204,north205,north206 -PsanctuaryAtlasOnly=true` :
|
||||
succès (journal `build/north206-check-build-water.log`). Six GameTests ciblés
|
||||
et contrôles purs passés. La suite native historique complète n’est pas revendiquée.
|
||||
- Deux derniers garde-fous locaux des poches d’eau ont ensuite été recompilés :
|
||||
lectures limitées aux chunks voisins et refus d’approfondir une poche déjà
|
||||
remplie. Reconstruction finale avec `:sanctuary:runGameTest build assemblePack
|
||||
assembleTestPack :sanctuary-test:exportDuoLaunch -x :sanctuary:check`, mêmes
|
||||
propriétés de sélection : six tests repassés, succès en 22 s. Les contrôles
|
||||
purs déjà passés n’ont pas été répétés pour ces deux garde-fous ; les essais
|
||||
natifs ci-dessous utilisent ce JAR final.
|
||||
- Profils Small, graines **42 et 0**, nouveaux mondes `north206-final` et
|
||||
`north206-final0` : offrande réelle, rejet d’offrande incorrecte et de doublon,
|
||||
interruption à 0/58, reprise des 58 chunks FULL et message SGA vérifiés.
|
||||
Cinq igloos et une cave de guérison complets dans chaque monde.
|
||||
- Comparaison au champ 205 de la même graine, sur une grille de relevé :
|
||||
|
||||
| Graine | Échantillons de roche 205 → 206 | Épaisseur maximale relevée 205 → 206 | Hauteurs de surface différentes | Plus grand tronc vérifié |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 42 | 17 968 → 9 279 (−48,4 %) | 179 → 91 blocs | 0 | 59 blocs |
|
||||
| 0 | 17 084 → 8 887 (−48,0 %) | 177 → 90 blocs | 0 | 61 blocs |
|
||||
|
||||
- Dans les régions de faille examinées : 384 cristaux sur la graine 42 et 334
|
||||
sur la graine 0 ; respectivement 2 429 et 2 425 blocs d’améthyste avec au moins
|
||||
une face ouverte sur l’air. Calcite et basalte présents. Ce ne sont pas des
|
||||
totaux à l’échelle de l’île.
|
||||
- Eau vérifiée dans les blocs réels, avec fond et berges fermés : 11 positions
|
||||
sur la graine 42 et 61 sur la graine 0. Cavités contenant air et glace, glaciers
|
||||
de surface et taïgas géantes contrôlés. Ce contrôle des fondations ne remplace
|
||||
pas un essai prolongé après modification des berges par le joueur.
|
||||
- 3 456 cellules de biome stockées comparées au champ mondial par graine :
|
||||
**aucune incohérence** aux jointures examinées. Densité de l’île initiale
|
||||
identique octet par octet à la 205 pour Small, Medium et Large ; classes et
|
||||
ressources historiques 205 conservées.
|
||||
|
||||
L’essai préliminaire a révélé un raccordement manquant du décor au générateur
|
||||
hôte, corrigé avant ces essais finaux. La première recherche de petits bassins
|
||||
strictement préexistants ne produisait pas d’eau vérifiable ; elle a été remplacée
|
||||
par les poches peu profondes décrites ci-dessus. Une tentative démarrée avant la
|
||||
fin de l’assemblage utilisait encore l’ancien JAR et n’est pas une preuve de la
|
||||
version finale.
|
||||
|
||||
Les chiffres sont des échantillons, pas un inventaire exhaustif. Les essais
|
||||
natifs supplémentaires génèrent plusieurs régions de visite et ne constituent
|
||||
pas un benchmark comparatif de vitesse. Aucun essai Windows ni verdict esthétique
|
||||
sur l’ensemble du paysage n’est revendiqué.
|
||||
|
||||
## Livraison locale
|
||||
|
||||
MRpack normal `build/Sanctuary-beta.206.mrpack`, copié dans `~/Downloads/` : ZIP
|
||||
intact, JAR identique au build, trois tailles courantes et historiques présentes,
|
||||
aucun mod Test ni sauvegarde embarqués. Minecraft 26.3 / Fabric Loader 0.19.5.
|
||||
SHA-256 : `a0d2df3d207be0844af6cd4a3a578fd68c860dd0d3a28048f3b58725bb599fc7`.
|
||||
Reçu : `build/north206-mrpack-receipt.json`.
|
||||
|
||||
Nouveau solo préparé depuis le monde 42 vérifié, dans `north206-visit`, avec
|
||||
commandes, vue 32 chunks, simulation 5 et Vulkan. Arrivée près d’une paroi
|
||||
d’améthyste ouverte en **(-463.5, 205, -1151.5)**. Autres repères de cette graine :
|
||||
petite eau vers **(-311, 187, -732)** ; cavité glacée sous **(-416, 249, -728)** ;
|
||||
grandes taïgas vers **(-176, 249, -720)**. Les altitudes de repère des taïgas et de
|
||||
la cavité glacée sont celles de la surface, pas des téléportations souterraines.
|
||||
Le client confirme le backend Vulkan et `NORTH206_VISIT_OPEN` à l’emplacement
|
||||
prévu ; le rendu global reste à apprécier pendant la visite. Aucune publication
|
||||
du canal, aucun déploiement Prism ni modification du monde 205.
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
# EXP-202 — étagement du Nord et village enneigé
|
||||
|
||||
Branche `codex/north-ecology-beta202`, depuis beta.201. Retour R021 et trois
|
||||
captures du labo 201 examinées (12:11:22, 12:11:46 et 12:12:57, 4 octobre 2026).
|
||||
|
||||
Conserver les volumes, les cavités et les deux bassins 201, appréciés par le
|
||||
joueur. Refaire uniquement leur écologie et leurs sols : taïga, vallées ouvertes,
|
||||
podzol, épicéas géants natifs, neige progressive avec l'altitude, glaciers sur
|
||||
les hauteurs. Fin des aplats indépendants et du camouflage glace/glace bleue.
|
||||
Glace de cave limitée aux cavités protégées par une épaisseur de roche dans
|
||||
chaque direction ; aucune couche glacée appliquée aux falaises ou au dessous.
|
||||
Les cinq igloos doivent trouver une plaine réellement enneigée avant placement.
|
||||
Les pics de glace restent vanilla, comme demandé en R020.
|
||||
|
||||
Nouveaux profils 202 et journal distinct, diamètre nordique 1024. Aucune migration
|
||||
ni régénération d'un monde existant ; 200 et 201 gardent leurs générateurs.
|
||||
L'île de départ et les autres directions restent inchangées. Le chantier est
|
||||
isolé de la visite 201 encore ouverte. Validation native neuve Small/42, contrôles
|
||||
numériques sur 0, 42 et 4736390610738281858 ; pas de campagne de captures.
|
||||
|
||||
## Réalisation
|
||||
|
||||
Le champ de densité et les deux bassins délèguent exactement à la génération
|
||||
201. Seuls les sols, la végétation, la couverture neigeuse et le placement du
|
||||
village changent. La limite de neige suit l'altitude, avec un versant nord plus
|
||||
froid. Son épaisseur progresse de quelques couches à un bloc après la végétation.
|
||||
Les glaciers sont réservés aux hauts versants ; aucune glace bleue ne peint
|
||||
la surface. Les vallées restent en herbe, les grands boisements en podzol.
|
||||
|
||||
La taïga ordinaire et les épicéas géants réemploient les features 26.3 de taïga
|
||||
et `old_growth_spruce_taiga`. Aucun arbre géant custom ajouté. Les pics utilisent
|
||||
toujours `minecraft:ice_spike` et `minecraft:ice_patch`, sans remplacement des
|
||||
features natives. Les matériaux de cave glacée nécessitent du recouvrement et
|
||||
une assise rocheuse autour de la colonne ; les marges et dessous restent rocheux.
|
||||
Les cinq igloos cherchent une zone sèche, entièrement enneigée et peu pentue,
|
||||
avec classement par dénivelé. Aucun disque blanc ajouté sous le village.
|
||||
Caches numériques bornés ; pas de simulation hydrologique supplémentaire.
|
||||
|
||||
## Vérifications du 4 octobre 2026
|
||||
|
||||
- `north202Smoke` : neuf couples graine/taille (0, 42, 4736390610738281858 ;
|
||||
512/724/1024), égalité des colonnes et densités avec 201, présence de taïga,
|
||||
vallées, neige progressive et glacier minoritaire, protection du dessous.
|
||||
Recherche du village vérifiée aussi sur les graines 1 à 100. Toutes passent.
|
||||
- Ressources historiques de génération inchangées, sauf le preset public qui
|
||||
sélectionne désormais 202 et l'ajout du biome 202 au tag des ours polaires.
|
||||
Les trois noise settings de l'île de départ sont identiques aux fichiers 201.
|
||||
- Essai natif final : `build/worldgen-lab/north202-native-b`, Small, graine 42,
|
||||
diamètre de l'expansion 1024. Offrande réelle, interruption à 0/58 chunks,
|
||||
reprise, cinq igloos, une cave de guérison, relais de continuation orienté Nord.
|
||||
- Échantillon de taïga : 1517 blocs de troncs, 7677 blocs de feuilles,
|
||||
troncs atteignant 27 blocs, 13 empreintes de troncs larges, 3339 blocs de podzol.
|
||||
Pics natifs : 2910 blocs de glace au-dessus du terrain, maximum sondé 43 blocs.
|
||||
Ces nombres décrivent des échantillons, pas toute l'expansion.
|
||||
- Village : 333 des 339 colonnes sondées hors maisons portent de la neige.
|
||||
Lac : 8995 blocs de glace et 41795 blocs d'eau, sans fuite dans l'air.
|
||||
Caverne sondée : 49 blocs glacés et 2585 blocs d'air. Bordure sondée sur
|
||||
16 directions : 340 blocs rocheux, aucune glace compacte/bleue.
|
||||
|
||||
La validation esthétique reste celle de la visite. Pas de nouvelle campagne de
|
||||
captures. Visite native Small/42 uniquement : Windows et Medium/Large natifs
|
||||
ne sont pas vérifiés ici. Les sept autres directions restent provisoires.
|
||||
|
||||
## Livraison locale
|
||||
|
||||
`./gradlew check build assemblePack assembleTestPack
|
||||
-PsanctuaryFocusedTests=operator,realtime -PsanctuaryAtlasOnly=true` : succès,
|
||||
143 tâches, dont 126 exécutées ; sept GameTests ciblés et les smokes du projet.
|
||||
La suite native historique complète n'a pas été relancée (limite documentée
|
||||
pour beta.200). Logs : `build/north202-check-build.log` et
|
||||
`build/north202-native-final.log`.
|
||||
|
||||
MRpack : `build/Sanctuary-Test-beta.202.mrpack`, copie identique dans Downloads
|
||||
avec `Sanctuary-Test-beta.202-Guide.txt`. ZIP, versions 26.3 / Loader 0.19.5,
|
||||
hashes Fabric API, deux JAR et leurs 2258 classes compilées vérifiés.
|
||||
Reçu local : `build/north202-artifact.json`.
|
||||
|
||||
Taille : 12407853 octets ; SHA-256 :
|
||||
`b5ecdfcb2c4b1988f9402653a16c823b50f0661e8b1db0f0e7d6c21e9841f6f8`.
|
||||
|
||||
Aucun monde inclus dans le MRpack. Aucun canal public ni instance Prism modifié.
|
||||
Visite neuve `Sanctuary-North-202-42`, issue de l'essai natif final, créatif,
|
||||
commandes activées, Vulkan, vue 32, simulation 4. Départ en vol près du village.
|
||||
Village `(-212,191,-1292)`, taïga géante `(144,215,-976)`, lac `(-247,258,-765)`,
|
||||
pics vers `(-208,281,-880)`, relais `(-128,202,-1240)`.
|
||||
|
||||
Ouverture confirmée à 12:41:46 par `NORTH202_VISIT_OPEN`, joueur
|
||||
`(-160,228,-1247)` ; log `build/north202-visit-client.log`.
|
||||
@@ -0,0 +1,120 @@
|
||||
# EXP-200 — premier Nord glacial
|
||||
|
||||
Branche `codex/north-expansion-beta200`, depuis beta.199. Retours R015–R017.
|
||||
|
||||
## Résultat visé
|
||||
|
||||
Un continent nordique de diamètre nominal 2048 : crêtes, pics, vallées de taïga
|
||||
neigeuse, neige poudreuse localisée, cavernes de glace et lacs gelés fermés.
|
||||
Chèvres et ours polaires natifs de Minecraft 26.3 (choix confirmé).
|
||||
Un village de plusieurs igloos ; un seul contient le laboratoire souterrain
|
||||
vanilla avec villageois zombie. Pas d'autre famille de structures dans cette
|
||||
première tranche. Le Sud, l'Est, l'Ouest et les diagonales seront travaillés à part.
|
||||
|
||||
## Placement et ouverture
|
||||
|
||||
L'identité du relais reste celle de son secteur. Recherche proche dans un
|
||||
éventail de ±15° devant l'ancre, sans basculer dans une autre direction.
|
||||
La première version 200 porte le Nord à 2048 ; les sept autres reliefs gardent
|
||||
leur taille/profil provisoire de 199. Le relais de continuation du Nord conserve
|
||||
la direction, le climat et la taille du Nord.
|
||||
|
||||
Toute l'emprise est vérifiée vierge, réservée durablement et publiée avant les
|
||||
travaux. À cette échelle, `ready` signifie accès et relais préparés ; le reste
|
||||
est généré nativement pendant l'exploration. L'annonce SGA décrit cette ouverture,
|
||||
pas une pré-génération intégrale. Préparation bornée, sans simulation hydrologique
|
||||
globale ni réutilisation silencieuse de chunks déjà explorés.
|
||||
|
||||
## Contrat des sauvegardes
|
||||
|
||||
Nouveaux profils `shared_island200_small/medium/large`, journal distinct
|
||||
`sanctuary-lab-expansions200`. Aucun monde existant modifié ou migré ; les profils
|
||||
et ressources 196–199 restent inchangés. IDs historiques conservés. Les essais
|
||||
activent uniquement des expansions dans des mondes de développement neufs,
|
||||
graine 42 puis relevés déterministes sur 0 et 4736390610738281858.
|
||||
|
||||
## Vérifications prévues
|
||||
|
||||
Direction et diamètre, déterminisme, cavités, confinement des eaux, village
|
||||
et laboratoire habitable, vraie activation, sauvegarde et reprise. Compilation,
|
||||
`check build` et assemblages. Ne pas confondre vérification technique et validation
|
||||
esthétique : le rendu reste une première version à visiter.
|
||||
|
||||
## Implantation et contrôles intermédiaires
|
||||
|
||||
Le champ nordique compose des crêtes déformées, des sommets secondaires et des
|
||||
vallées, puis soustrait des passages et chambres 3D. Cache numérique borné par
|
||||
worker ; aucune lecture de chunks voisins pour dessiner le terrain. Six biomes
|
||||
nordiques reprennent l'écologie native de 26.3 ; les sources d'eau/lave dispersées
|
||||
et salles de monstres vanilla sont retirées de ces seuls profils. Les bassins
|
||||
ont un fond rocheux continu et une couverture de glace, sans hydrologie globale.
|
||||
|
||||
Village : cinq igloos natifs orientés et ajustés individuellement au sol. Un
|
||||
seul laboratoire, avec échelle, coffre vanilla, potion de faiblesse, villageois
|
||||
et villageois zombie persistants. Les arbres évitent les maisons et les lacs.
|
||||
La faune initiale utilise les attributs du biome à la surface réelle, car la
|
||||
sélection vanilla à Y=1600 échantillonnait le vide ; règles de spawn natives
|
||||
conservées. Ours polaires également admis sur la glace des lacs.
|
||||
|
||||
- `north200Smoke` : 9 couples graine/taille, huit éventails, relief/cavités,
|
||||
bassins analytiquement fermés, journal 2048 et refus de 2048 en génération 199.
|
||||
- Essai intermédiaire Small/42, 2 Gio : vraie offrande nord, interruption à
|
||||
0/58 chunks, puis reprise. Village de cinq igloos et un laboratoire contrôlés ;
|
||||
lac avec 3475 blocs de glace et 10525 blocs d'eau, sans voisin d'air sous l'eau ;
|
||||
136 blocs de glace et 1926 blocs d'air dans les colonnes de caverne sondées.
|
||||
Ce sont des sondages locaux, pas les totaux du continent.
|
||||
- Le premier passage a révélé un barreau manquant sous la trappe : raccord
|
||||
corrigé et vérifié lors du second passage. Les essais antérieurs restent
|
||||
conservés sous `build/worldgen-lab/north200-native-a` et `north200-native-b`.
|
||||
- Les 148 ressources historiques de génération du module Test restent identiques
|
||||
à beta.199 (hors preset public, qui sélectionne maintenant 200).
|
||||
|
||||
## Essai final et livraison locale — 4 octobre 2026
|
||||
|
||||
Le parcours serveur final `north200-native-final/small/42` répète l'activation
|
||||
réelle et l'interruption/reprise sur les sources livrées. Les 58 chunks d'accès
|
||||
et de relais passent à FULL ; cinq igloos, un laboratoire, le lac et la cavité
|
||||
glacée sont vérifiés. Les entités sauvegardées comprennent six ours polaires,
|
||||
trois renards, huit lapins, un villageois et un villageois zombie. Aucune chèvre
|
||||
observée dans ce petit échantillon : leurs règles natives sont présentes dans
|
||||
les sommets et pentes, sans validation d'une rencontre dans ce parcours.
|
||||
|
||||
Le client Vulkan a ouvert une copie de visite neuve, `Sanctuary-North-200-42`,
|
||||
avec confirmation `NORTH200_VISIT_OPEN` à `(-200,224,-968)`. Créatif, commandes,
|
||||
vue 32 chunks et simulation 4 ; shaders désactivés. Le village se trouve autour
|
||||
de `(-200,212,-988)`, la trappe spéciale vers `(-193,210,-961)`, le lac sondé en
|
||||
`(-64,187,-1204)` et le relais suivant en `(-176,215,-2121)`.
|
||||
|
||||
Archive locale : `build/Sanctuary-Test-beta.200.mrpack`, également copiée dans
|
||||
`/Users/koka/Downloads/`, avec `Sanctuary-Test-beta.200-Guide.txt`.
|
||||
12 366 771 octets ; SHA-256 :
|
||||
`2a29b35613f95540ec9d910e043a1f6f26b2dfe7d6d95c50997ba4bbde203cdc`.
|
||||
Intégrité ZIP, version, dépendances Minecraft 26.3 / Fabric Loader 0.19.5,
|
||||
empreintes Fabric API, deux JAR identiques au build et 2246 classes compilées
|
||||
vérifiés. Les trois tailles sont présentes ; aucune sauvegarde embarquée.
|
||||
Reçu : `build/north200-artifact.json`. Aucun canal public ni Prism synchronisé.
|
||||
|
||||
La commande complète `check build assemblePack assembleTestPack` a été lancée,
|
||||
puis interrompue volontairement pendant
|
||||
`retainedHydrologySurvivesNativeDecoration` (ancienne génération 24, préparation
|
||||
de 112 chunks FULL). Les captures de threads montrent l'attente de génération ;
|
||||
elles ne démontrent pas un interblocage. Cette suite générale n'est pas validée.
|
||||
Logs : `build/north200-check-build.log`, `north200-fullcheck-threads*.txt`.
|
||||
Les essais serveur nordiques sont distincts de cette suite historique.
|
||||
|
||||
Les sept GameTests `operator,realtime` passent avec le fixture plat
|
||||
`-PsanctuaryAtlasOnly=true`, indépendamment de l'essai natif nordique.
|
||||
Cette sélection ne remplace pas les 265 tests de la suite générale.
|
||||
La commande `./gradlew check build assemblePack assembleTestPack
|
||||
-PsanctuaryFocusedTests=operator,realtime -PsanctuaryAtlasOnly=true` termine avec
|
||||
succès : 141 tâches, dont 110 exécutées et 31 à jour. Elle inclut les tests
|
||||
numériques, notamment `north200Smoke`. Log complet :
|
||||
`build/north200-check-build-focused.log`. Archive revérifiée après l'assemblage
|
||||
final, identique aux JAR et classes finaux ; daemon de build arrêté ensuite.
|
||||
|
||||
Limites : validation native détaillée sur Small/42, neuf couples graine/taille
|
||||
pour les contrôles numériques, pas de lancement Windows ni de visite native
|
||||
Medium/Large sur cette version. Les 2048 blocs désignent le diamètre nominal,
|
||||
pas une pré-génération intégrale. Le démarrage à 32 chunks a produit des retards
|
||||
de ticks avec les contrôles et un autre client simultanés sur le Mac 8 Gio :
|
||||
aucune conclusion de fluidité ni correction des saccades n'est revendiquée.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user