Compare commits

..
Author SHA1 Message Date
koka 00d175cb98 Deliver beta.235 as a verified reversible Pause layout experiment
Build Sanctuary / build (push) Waiting to run
2026-10-06 14:21:31 +02:00
koka a7bdfe6998 Try parallel Pause groups before Atlas and a narrow stack beside the map 2026-10-06 14:16:40 +02:00
koka f9c2ce8835 Deliver beta.234 with verified Story catalogue and local pack
Build Sanctuary / build (push) Waiting to run
2026-10-06 04:50:30 +02:00
koka 3d56d7de7f Verify Story menus under Vulkan and document story authoring 2026-10-06 04:49:56 +02:00
koka f2ac23b4f4 Add Story catalogue with search and discovery filters 2026-10-06 04:46:02 +02:00
koka 9c096b2563 Deliver beta.233 with verified community forms and Vulkan layouts
Build Sanctuary / build (push) Canceled after 0s
2026-10-06 03:59:50 +02:00
koka bc27606b3e Simplify notices and place Gazette photos before the title 2026-10-06 03:57:17 +02:00
koka 8531bb3476 Group pause navigation consistently with and without the map 2026-10-06 03:57:17 +02:00
koka 8e9b8fbd62 Deliver beta.232 with verified solo gameplay and Vulkan client checks 2026-10-06 03:25:17 +02:00
koka 308c0dc2ff Center the locked Atlas pause menu between Gazette and Notice Board 2026-10-06 03:24:47 +02:00
koka 50aaa5c135 Exclude generated diamonds from initial island chest loot 2026-10-06 03:24:47 +02:00
koka cf5699cfe1 Continue held vein mining on the next visible group after server completion 2026-10-06 03:24:46 +02:00
koka d9979100a9 Align placement outlines with building reach from three to seven blocks 2026-10-06 03:24:46 +02:00
koka 5f3d110773 Allow the solo owner to choose a persistent world timezone 2026-10-06 03:24:33 +02:00
koka a2201cc422 beta.231: enrich pale understory and prepare nine-island lab
Build Sanctuary / build (push) Canceled after 0s
2026-10-05 23:08:05 +02:00
koka 42e42fea2a beta.230: populate lower pale terraces and mix yellow savanna rock 2026-10-05 22:45:45 +02:00
koka 55df522b1e beta.229: rebuild northeast wetland above sheltered pale groves 2026-10-05 22:24:29 +02:00
koka b77d71bd0d Lower pale wetlands and facet diagonal reefs for beta.228 2026-10-05 21:55:12 +02:00
koka 70a34df2d5 Refine diagonal shores and cave habitats for beta.227 2026-10-05 21:34:48 +02:00
koka 5fb1407705 beta.226: shape four distinct diagonal landscapes 2026-10-05 20:34:13 +02:00
koka e2b9ee7aaf feat(worldgen): add 1024 climate diagonals and island sugar cane in beta.225 2026-10-05 19:44:33 +02:00
koka 1388d8a443 docs: confirm all four islands in standard Sanctuary beta.224 2026-10-05 17:34:55 +02:00
koka 4554ea1882 fix(worldgen): ground giant trees and stripe the East crater in beta.224 2026-10-05 17:29:49 +02:00
koka 9063e16e7c feat(worldgen): add natural floating jungle volcano in beta.223 2026-10-05 17:11:17 +02:00
koka 2d656d9525 feat(building): add yellow rock stairs and slabs in beta.222 2026-10-05 16:50:38 +02:00
koka a3dd17c37a feat(worldgen): refine western cliffs and add yellow stone in beta.221 2026-10-05 16:34:55 +02:00
koka 58aa4c2ae1 feat(worldgen): sculpt a living western coast in beta.220 2026-10-05 16:09:03 +02:00
koka 988a6c8f51 feat(worldgen): lower western beaches and move palms in beta.219 2026-10-05 15:17:07 +02:00
koka 3adb08eaa6 feat(worldgen): reshape western ocean into an oasis in beta.218 2026-10-05 14:52:25 +02:00
koka f8456df256 feat(worldgen): add suspended western sea in beta.217 2026-10-05 14:15:02 +02:00
koka 0eb4517961 beta.216: forests, surface trails and trapped pyramid in the South 2026-10-05 08:37:08 +02:00
koka 03aab49996 Add raised regional relay monuments and enlarge the southern pyramid for beta.215 2026-10-05 07:50:14 +02:00
koka b82ab378f0 Add abandoned dark oak western village to South beta.214 2026-10-05 07:21:47 +02:00
koka da838b9e8e beta.213: bury the southern temple beneath a local terracotta pyramid 2026-10-05 06:33:30 +02:00
koka 3941bd4711 beta.212: expose radial Badlands and add a trapped desert complex 2026-10-05 06:11:04 +02:00
koka 7375046488 Rebuild southern badlands with shattered native noise for beta.211 2026-10-05 05:29:42 +02:00
koka 2ee53e1065 Refine southern canyon palettes and dry ecology for beta.210 2026-10-05 05:03:50 +02:00
koka efb1097b65 feat(worldgen): prototype multicoloured South canyons in beta.209 2026-10-05 04:26:51 +02:00
koka d021341d3e Sharpen northern ridges and add supported glacial benches for beta.208 2026-10-05 03:24:32 +02:00
koka bb10c24ada Add patchy northern snow, local crowns and spruce mansion for beta.207 2026-10-05 02:29:06 +02:00
koka 6f780547bb Shape thinner northern shelves and wet amethyst caves for beta.206 2026-10-05 01:32:41 +02:00
koka bf5df3885b Use unwarped native noise and continuous northern ecology for beta.205 2026-10-05 00:37:26 +02:00
koka 2463db72f7 Integrate Demeure and Sanctuary terrain with northern Peaks for beta.204 2026-10-05 00:07:08 +02:00
koka 454d9a5c08 Add fractured northern relief and giant taiga for beta.203
Build Sanctuary / build (push) Canceled after 0s
2026-10-04 13:13:17 +02:00
koka ba1b228e76 Refine northern ecology and snowy igloo placement for beta.202 2026-10-04 12:42:16 +02:00
koka 1d60a3eedc feat: compact northern glacier and use vanilla ice spikes in beta.201 2026-10-04 12:05:38 +02:00
koka 16d81d892f feat: deliver beta.200 North expansion and igloo village 2026-10-04 05:52:20 +02:00
koka 7497d9182d beta.199: connect runtime expansions and synchronize the stellar week 2026-10-01 21:38:44 +02:00
koka 6b97d57bde Fix seed-dependent central gallery creation in beta.198 2026-10-01 20:02:28 +02:00
koka 7c14696020 beta.197: repair island arrival, dungeon details and seed-dependent gallery creation 2026-10-01 19:37:37 +02:00
koka 39ff7e95d5 beta.196: share the current island lab in three sizes and profile loading 2026-10-01 18:40:01 +02:00
koka 918143aaa6 beta.195: hide legacy lab presets and open the seed zero visit 2026-10-01 18:02:21 +02:00
koka 9da3f7f13b beta.194: remove Friends from the title menu and pause terrain work 2026-10-01 01:42:49 +02:00
koka 7179b5d4cb beta.193: protect worldgen water and add native multiseed photo comparisons 2026-10-01 01:29:17 +02:00
koka 78f047d3dc beta.192: sculpt local summit crowns and rocky mountain faces 2026-09-30 22:34:43 +02:00
koka c7f32c9416 beta.191: restore pre-terrace relief and original surface geology 2026-09-30 21:47:10 +02:00
koka 97ea94e482 beta.190: restore organic relief, widen spillways and stock ruin chests 2026-09-30 21:05:30 +02:00
koka 51e7e2590e beta.189: fit refuges to terrain and finish shores, terraces and cave ruins 2026-09-30 20:31:06 +02:00
koka 658aaf8732 beta.188: add living lake beds, sulfur details and enchanted iron loot 2026-09-30 09:04:25 +02:00
koka c53b39e71c Integrate beta.187 natural sulfur caves, surface lakes and oriented anchors 2026-09-30 08:41:38 +02:00
koka f40382ad04 Build beta.186 ornamental rosettes and eight terrain-bound anchors 2026-09-30 08:09:11 +02:00
koka a067c7e66b Build beta.185 fine stem and integrated palace roof portal 2026-09-30 07:33:49 +02:00
koka 6cfa4c07bf Build beta.184 natural sky palace and fill retained terrain cavities 2026-09-30 03:46:00 +02:00
koka 1ca01a47b7 Confirm beta.183 solo entry and spectator visit 2026-09-30 03:12:37 +02:00
koka a46946bd4c Add beta.183 island discoveries and adaptive ISS atlas 2026-09-30 03:10:10 +02:00
koka 65e7127b1d Add beta.182 natural lower gallery and eight-axis glass rosette 2026-09-30 02:23:35 +02:00
koka 5f32455f79 Add beta.181 aerial origin landmark in an isolated lab preset 2026-09-30 02:07:09 +02:00
koka 459420503e Add beta.180 connected cave basins, cherry landmarks and mine dungeon 2026-09-30 00:29:23 +02:00
koka a82fc559b1 Record successful beta.179 full validation 2026-09-30 00:10:13 +02:00
koka 5a74ba57ed Add beta.179 living cave districts and underground complexes 2026-09-29 23:16:34 +02:00
koka db6194c3c0 Add beta.178 rocky ecology laboratory and solo checks 2026-09-29 23:00:10 +02:00
koka 9613322c6b beta.177: tie lab ecology to island relief 2026-09-29 22:26:42 +02:00
koka 96433d3306 feat: add beta.176 ecology laboratory 2026-09-29 20:33:41 +02:00
koka ba4cf19233 wip: preserve beta.175 sky laboratory and visit findings 2026-09-29 17:10:16 +02:00
koka 968c8d7a43 Add isolated fast Sanctuary terrain lab for beta.174 2026-09-29 15:58:14 +02:00
koka b9727dfa41 Reframe Storyquest around independent geography and playable routes 2026-09-29 15:27:40 +02:00
koka 63e4dab140 Add seeded origin palace and eight material anchors for beta.173 2026-09-28 12:40:08 +02:00
koka 9f993989b0 Define terrain-adapted origin palace and vertical Storyquest landmarks 2026-09-28 02:06:31 +02:00
koka 24c3315f56 Frame beta.173 Storyquest rework from beta.172 2026-09-27 14:51:15 +02:00
koka 55c745a46d Allow beta.172 horde cards at runtime 2026-09-26 21:07:55 +02:00
koka 43ac3c7c5f Add beta.171 dimensional horde families 2026-09-26 20:23:32 +02:00
koka 6e2336db9d Add beta.170 native discoverable horde maps 2026-09-26 18:57:34 +02:00
koka 3faea2c9af Add beta.169 accelerating mixed horde invasions 2026-09-26 02:47:54 +02:00
koka 8ab5a45bd3 Add beta.168 consumable horde maps with spontaneous combat and mob loot 2026-09-26 00:34:40 +02:00
koka fff288f27e Allow local horde lab joins and record main integration 2026-09-25 20:24:06 +02:00
koka 0315fe2b05 Add beta.167 cooperative horde arena laboratory prototype 2026-09-25 20:23:05 +02:00
koka c2dfa9e171 Record adventure card families and round arena lab concept 2026-09-25 19:31:13 +02:00
koka b49b3e2549 Record cooperative quests and familiar XP incubation concept 2026-09-25 19:03:30 +02:00
koka e382a65aae Document community economy and adventure direction for beta.167 2026-09-25 18:14:35 +02:00
koka 7979f33028 Document beta.144–166 release backfill and integrated Chris PR
Build Sanctuary / build (push) Canceled after 0s
2026-09-24 20:01:06 +02:00
koka 460c4706d3 beta.166: integrate resumable web registration and prepare fresh intro lab
Build Sanctuary / build (push) Canceled after 0s
2026-09-24 17:41:29 +02:00
koka ad960ef9bc Merge Chris access-code registration onto beta.165 2026-09-24 17:17:26 +02:00
koka 835e6116e6 Review Chris access-code PR integration and recovery gap 2026-09-24 17:10:51 +02:00
koka aadff6fd5e Refresh legacy GameTests against current gameplay contracts 2026-09-24 17:10:51 +02:00
koka 705fe9c1a0 Audit all 23 known beta.165 GameTest failures 2026-09-24 16:56:30 +02:00
koka dbb9e3428d Lay out Gazette article and conversation for beta.165
Build Sanctuary / build (push) Canceled after 0s
2026-09-24 16:34:38 +02:00
koka 9a429c40a1 Align pause calendar and server bulletin for beta.164
Build Sanctuary / build (push) Canceled after 0s
2026-09-24 13:56:27 +02:00
koka 905b3bcfa1 Reshape pause navigation and frame for beta.163
Build Sanctuary / build (push) Canceled after 0s
2026-09-24 13:36:56 +02:00
koka 0c55a37562 Deliver beta.162 notice author scene and side conversation
Build Sanctuary / build (push) Canceled after 0s
2026-09-24 00:38:09 +02:00
koka 8deba7cfb4 Deliver beta.161 playtest fixes and shared server metrics
Build Sanctuary / build (push) Canceled after 0s
2026-09-24 00:20:06 +02:00
koka c1d2278674 beta.160: opt-in shaders and lightweight local duo test lab
Build Sanctuary / build (push) Canceled after 0s
2026-09-23 22:27:49 +02:00
koka bdaad0c940 Add community search, responsive gallery and followed notice map markers
Build Sanctuary / build (push) Canceled after 0s
2026-09-23 01:20:17 +02:00
koka 19aa8054a5 beta.158: redesign community cards and add descriptive notice tracking
Build Sanctuary / build (push) Canceled after 0s
2026-09-23 00:24:47 +02:00
koka 9791d178ab beta.157: require article photos with a scrollable screenshot gallery
Build Sanctuary / build (push) Canceled after 0s
2026-09-22 22:43:19 +02:00
koka 32158e2e05 Déplace la reprise du jeu sous la colonne communautaire (beta.156)
Build Sanctuary / build (push) Canceled after 0s
2026-09-22 21:34:41 +02:00
koka 3bfb3cb251 Refonte du menu pause et panneaux communautaires défilants (beta.155)
Build Sanctuary / build (push) Canceled after 0s
2026-09-22 21:29:44 +02:00
koka 0eb1a381d4 beta.154: conversations communautaires et stockage partagé avec le site
Build Sanctuary / build (push) Canceled after 0s
2026-09-22 20:28:12 +02:00
ChrisM-PekandCursor 8de569bbf1 Add access-code gate to Hello World creation (beta.144).
Build Sanctuary / build (push) Canceled after 0s
Build Sanctuary / build (pull_request) Canceled after 0s
Require a site-issued SANC code when the server has app URL and API token configured, with replay-safe ledger binding and FR/EN UI including galactic code display.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 03:03:48 +02:00
koka b97ec6c9e8 Fix dimension inventory synchronization and opaque PBR sheen in beta.151
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 22:11:32 +02:00
koka 448e2febff Keep soil matte and align solar wave glints with native sunset in beta.150
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 21:47:33 +02:00
koka 1c23d0c17e Separate PBR and SSR ranges and remove foliage sheen in beta.149
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 20:40:47 +02:00
koka 6f871446bb Balance PBR at 50 percent and soften solar water highlights in beta.148
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 20:12:08 +02:00
koka 96a36d99be Fix close PBR flicker, soften moonlight and extend range in beta.147
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 19:56:03 +02:00
koka cf9a670f44 Prepare beta.146 reflections and water blending
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 19:40:25 +02:00
koka ed2d088272 Validate and package experimental material reflections as beta.145
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 18:04:21 +02:00
koka 0cfd51eb4f Integrate frozen beta.144 natural water sources for combined SSR validation 2026-09-18 14:41:53 +02:00
koka 38f4d6c9a9 Implement native texel reflections and transparent PBR surfaces 2026-09-18 14:39:26 +02:00
koka 580b2414da Document beta.143 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 12:44:49 +02:00
koka 97ff2b54cb Slow seasonal snow pacing in beta.143
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 12:41:27 +02:00
koka 59346d7f0a Document verified beta.142 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 05:08:09 +02:00
koka ea151dd5df Prefer native Vulkan and stabilize PBR lighting in beta.142
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 05:05:49 +02:00
koka 7ce01c47f2 Document beta.141 publication and verified instance update
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 04:13:00 +02:00
koka 93ed5574a4 Drive PBR normals with cached local light directions in beta.141
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 04:11:03 +02:00
koka c9f5c56e68 Document verified beta.140 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 03:15:07 +02:00
koka 6e1b3b7108 Add colored dynamic lights and smooth hue-preserving fades for beta.140
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 03:13:43 +02:00
koka c05c338e6b Record beta.139 release and preserved Prism state
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 02:27:19 +02:00
koka dc33ffa546 Add optional local colored lights for beta.139
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 02:25:48 +02:00
koka 9d84a02ed9 Verify Sanctuary shaders on Vulkan with explicit backend tests
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:59:13 +02:00
koka 91181865d5 Record beta.138 release and preserved Prism state
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:25:31 +02:00
koka daf36fdeac Adapt solar volume density to weather for beta.138
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:24:13 +02:00
koka 7f576d14d9 Record beta.137 release and verified Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:01:59 +02:00
koka 2d7072b8a8 Add native solar volume rendering for beta.137
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:00:20 +02:00
koka 0781cbd964 Record beta.136 publication and preserved Prism state
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 00:28:20 +02:00
koka 71296a9cfb Add soft celestial lens flare for beta.136
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 00:27:14 +02:00
koka 07d09c8508 docs: record beta.135 release and verified Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 23:48:14 +02:00
koka 7fada570ef fix: stabilize close-range SSGI and update shader defaults for beta.135
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 23:46:29 +02:00
koka b7cf4bc294 docs: record beta.134 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:56:48 +02:00
koka fc4a0cb68e feat: add optional PBR and filter SSGI in beta.134
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:54:38 +02:00
koka 17172fd18b docs: record beta.133 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:19:32 +02:00
koka 216d3f75b5 feat: make SSGI color bounce visible in beta.133
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:18:12 +02:00
koka e48fc656c7 docs: record beta.132 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:58:39 +02:00
koka 7e21781a9a feat(shader): experimental local diffuse SSGI in beta.132
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:57:04 +02:00
koka d941b91265 docs: record beta.131 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:34:00 +02:00
koka 078d3e6833 feat(shader): independent emissive cores and precision options in beta.131
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:32:28 +02:00
koka afa77f3d62 docs: record beta.130 release and preserved Prism data
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:06:31 +02:00
koka 534dfec4f8 feat(shader): selective bloom and shared precision in beta.130
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:04:33 +02:00
koka 26e305d15f Record beta.129 publication and verified Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 19:13:09 +02:00
koka 35103a7ea8 Add connected edge highlights and stable shadow projection for beta.129
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 19:11:11 +02:00
koka 6502883cc4 Document verified beta.128 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 18:34:55 +02:00
koka a4e96c0d99 Stabilize pixel shadows and add moonlight and foliage for beta.128
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 18:33:07 +02:00
koka 7c63865157 Document verified beta.127 shader release and instance synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:53:16 +02:00
koka 00be1eb0d0 Integrate native pixel shadows over beta.126 for beta.127
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:51:19 +02:00
koka adde24aa7e Document verified beta.126 release and instance synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:11:59 +02:00
koka 99860af312 Add Sanctuary gems, original clay colors and shared discovery commands for beta.126
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:10:15 +02:00
koka 1547396c06 Document verified beta.125 release and instance synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:37:18 +02:00
koka 4ec5b0d028 Add sculpture corner and height placement, voxel chips and discovered workshop models
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:35:46 +02:00
koka 67e6e7c4f2 Record beta.124 publication and preserved Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:02:47 +02:00
koka 00179e30ef Use one cached bounding box per sculpture (beta.124)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:00:52 +02:00
koka 87f823af67 Record beta.123 publication and preserved Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 15:30:04 +02:00
1259 changed files with 97799 additions and 534 deletions
+1
View File
@@ -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.
+69
View File
@@ -1,5 +1,74 @@
# 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.
+951 -8
View File
@@ -1,5 +1,785 @@
# Sanctuary
Les **quatre expansions validées sont disponibles dans Sanctuary normal** :
Nord glacial, Sud des canyons, Ouest océanique et Est volcanique.
Créer un monde **Sanctuary** en Petit, Moyen ou Grand, puis activer les ancres
correspondantes. Le module Sanctuary Test n’est pas requis.
[Intégration et vérification du pack beta.224](docs/four-islands-base224.md).
## beta.235 — Essai réversible du menu Pause
[Disposition adaptative](docs/pause-columns-beta235.md) : avant Atlas, Aventure
à gauche et Communauté à droite, avec Partie / Game juste dessous. Avec Atlas,
une colonne étroite à gauche, Communauté → Aventure → Game, carte au centre.
Bloc centré verticalement, libellés de navigation entiers et ordre clavier
adapté. Parcours Pause et Story Vulkan FR/EN GUI 2/3/4, `check build assemblePack`
et quatre GameTests ciblés réussis.
Le commit de disposition `a7bdfe6` peut être annulé indépendamment de la
livraison. [MRpack local beta.235](build/Sanctuary-beta.235.mrpack) vérifié,
sans publication ni mise à jour personnelle. Le rendu reste à apprécier.
## beta.234 — Story, recherche et filtres
[Premier menu Story](docs/story-beta234.md), sous Progression dans Aventure :
100 histoires inconnues et désactivées, recherche instantanée et filtre
Toutes/Découvertes/Inconnues, cadre de Discovery et retour à Pause. Saisie et
défilement conservés au redimensionnement ; trois boutons Aventure centrés
avec ou sans Atlas. [Guide](docs/story/README.md) et
[modèle Markdown](docs/story/TEMPLATE.md) pour les futurs récits personnels.
Textes et déblocages restent à intégrer. `check build assemblePack`, quatre
GameTests requis et parcours Vulkan FR/EN GUI 2/3/4 réussis.
[MRpack local beta.234](build/Sanctuary-beta.234.mrpack) vérifié ; aucune
publication ni mise à jour d'installation personnelle.
## beta.233 — Navigation centrée et rédaction simplifiée
[Ajustements du menu et des formulaires](docs/pause-community-beta233.md) : même
ordre avec et sans carte, Communauté (Habitant/Faction/Battle) en haut,
Aventure (Discovery/Progression) au centre et Partie (options/sortie) en bas,
sans barre sous Communauté. Notice Board sans choix de catégorie, notices
uniformes, demandes et récompenses sous le texte, puis Publish. Photo et
Choose a screenshot de la Gazette avant le titre. Brouillons et anciennes
catégories conservés ; parcours de publication et essais Vulkan FR/EN réussis.
`check build assemblePack` avec la suite menus : quatre GameTests requis et
contrôles communautaires réussis. [MRpack local beta.233](build/Sanctuary-beta.233.mrpack)
vérifié ; aucune installation personnelle ni mise à jour du canal.
## beta.232 — Session solo et progression
[Réglages et correctifs](docs/solo-gameplay-beta232.md) : fuseau persistant via
`/sanctuary time timezone Europe/Paris` ou `auto`, disponible au propriétaire
solo sans commandes opérateur. Portée de Construction de 3 à 7 blocs, contour
et pose cohérents ; vein mining maintenu enchaînant sur le bloc regardé.
Aucun diamant généré par les coffres de l'île initiale ; inventaires déjà
remplis et terrain conservés. Avant Atlas : Gazette à gauche, huit boutons
centrés, Notice Board à droite, aucune World Map. Build, 26 GameTests requis
et essais client Vulkan FR/EN réussis.
[MRpack local beta.232](build/Sanctuary-beta.232.mrpack) vérifié ; aucune
installation personnelle ni mise à jour du canal.
## beta.231 — Sous-bois pâles et archipel complet
[Correctif et visite](docs/diagonal-understory-beta231.md) : herbes, fleurs,
tapis de mousse et mousse suspendue dans les parties basses du jardin pâle.
Reliefs et autres habitats validés conservés. Cinq GameTests et build complet
réussis ; huit expansions activées autour d’une principale de 1024, sur 0.
[MRpack normal beta.231](build/Sanctuary-beta.231.mrpack) vérifié.
Le joueur choisit une visite immédiate ; prégénération intégrale interrompue
proprement, chargement restant pendant l’exploration. Labo Vulkan 32 chunks
ouvert au centre de l’île principale ; rendu à apprécier.
## beta.230 — Terrasses pâles et roche jaune
[Correctif des diagonales](docs/diagonal-lower-groves-beta230.md) : chênes pâles
sur les sols bas, abrités ou à ciel ouvert, dripstone dans le dessous du NE.
Savane mêlant roche jaune et pierre normale, minerais conservés. Reliefs,
mangroves et plaines validés conservés. Nouveaux profils uniquement.
Neuf GameTests, build complet et essais natifs 0/42 réussis.
[MRpack normal beta.230](build/Sanctuary-beta.230.mrpack) vérifié ; nouveau
labo Vulkan 32 chunks ouvert sur 0. Rendu à apprécier.
## beta.229 — Marais étagé et cavités sèches
[Refonte du Nord-Est](docs/diagonal-wetland-beta229.md) : relief de la savane
amincie, chênes pâles sous les surplombs, marais et lucioles au-dessus. Eau
uniquement dans des cuvettes naturelles fermées. Cavités soufre/dripstone au
Sud-Ouest, sans lush caves ; mangroves SE et plaines NO conservées. Nouveaux
profils uniquement. Huit GameTests, build complet et essais natifs 0/42
réussis. [MRpack normal beta.229](build/Sanctuary-beta.229.mrpack) vérifié ;
nouvelle visite Vulkan 32 chunks ouverte sur 0. Rendu à apprécier.
## beta.228 — Jardin pâle abaissé et fractures anguleuses
[Finition des diagonales](docs/diagonal-shaping-beta228.md) : jardin pâle
nettement abaissé, lacs remis en évidence, formes plus anguleuses dans les
mangroves et sur les bordures des plaines. Centre NO, cavités SE et savane SO
conservés. Nouveaux profils uniquement. Sept GameTests, build complet et essais
natifs sur 0/42 réussis. [MRpack normal beta.228](build/Sanctuary-beta.228.mrpack)
vérifié ; visite Vulkan 32 chunks ouverte sur la graine 0. Rendu à apprécier.
## beta.227 — Berges, dessous et cavités des diagonales
[Réglages après exploration](docs/diagonal-caves-beta227.md) : jardin pâle plus
accidenté avec berges progressives et pourtour fracturé ; dessous désert/savane
aminci en gardant la surface ; grandes régions souterraines de lush caves et
de dripstone caves sous les mangroves ; érosion étendue vers l’intérieur au
Nord-Ouest, avec un centre de plaines conservé. Profils neufs uniquement.
Six GameTests, build complet et activations/reprise sur 0/42 réussis.
[MRpack normal beta.227](build/Sanctuary-beta.227.mrpack) vérifié ; nouvelle visite
Vulkan 32 chunks ouverte sur la graine 0, quatre diagonales prêtes. Rendu à apprécier.
## beta.226 — Quatre reliefs diagonaux distincts
[Refonte des silhouettes](docs/diagonal-relief-beta226.md) : grandes plaines
centrales et bords rongés au Nord-Ouest ; bassins conservés, marais peu profonds
et hauts reliefs émergés au Nord-Est ; désert/savane sur terrain flottant 3D au
Sud-Ouest ; récifs verticaux à mangrove dominante au Sud-Est, avec boue, argile
et calcite. Diamètre 1024 et axes climatiques conservés. Nouveaux mondes
uniquement ; les profils précédents restent disponibles pour leurs sauvegardes.
Six GameTests, build complet et activations/reprise sur 0/42 réussis.
[MRpack normal beta.226](build/Sanctuary-beta.226.mrpack) vérifié ; visite Vulkan
32 chunks ouverte sur la graine 0, quatre diagonales prêtes. Rendu à apprécier.
## beta.225 — Diagonales climatiques et cannes à sucre
[Première génération des quatre diagonales](docs/diagonal-islands-beta225.md),
chacune de **1024 blocs** : Nord-Est humide avec jardin pâle et marais,
Nord-Ouest frais avec meadow et taïga, Sud-Est tropical avec mangroves et jungles,
Sud-Ouest sec avec désert et savane. Cannes à sucre sur les berges existantes
de Sanctuary Island. Nouveaux profils Petit/Moyen/Grand uniquement ;
les quatre cardinales validées et les anciens profils sont conservés.
Six GameTests, build et activations/reprise sur les graines 42/0 réussis.
Le [MRpack normal](build/Sanctuary-beta.225.mrpack) contient ces ajouts sans Test ;
le rendu reste à apprécier en jeu.
## beta.224 — Stries du cratère Est
[Finition du volcan](docs/east-crater-beta224.md) : relief 223 conservé, lignes
concentriques et hachures verticales, obsidienne étendue et fissures de magma.
Plantation des arbres géants limitée au sol naturel. Sept GameTests ciblés,
build et essais natifs 42/0 réussis ; [MRpack normal](build/Sanctuary-beta.224.mrpack)
vérifié. Nouvelle visite Vulkan 32 chunks ouverte ; rendu à apprécier en jeu.
## beta.223 — Volcan flottant de l’Est
[Premier volcan et jungles](docs/east-volcano-beta223.md) : cône asymétrique,
cratère de lave fermé, ravines ramifiées, jungles ouvertes/denses et bambou,
grands arbres natifs, pandas et temple de jungle avec pièges et butin.
Expansion Est 1024, nouveaux profils uniquement. Build, sept GameTests ciblés
et essais natifs 42/0 réussis ; [MRpack normal](build/Sanctuary-beta.223.mrpack)
vérifié. Visite Vulkan 32 chunks ouverte ; rendu à apprécier en jeu.
Nord, Sud, Ouest et île principale conservés.
## beta.222 — Roche jaune et déclinaisons
[Famille de construction](docs/yellow-rock-beta222.md) : nouveau nom Roche jaune,
escaliers et dalles, recettes natives à l’établi et au tailleur de pierre.
Bloc dans Naturel, famille dans Construction à côté de Stone. Génération 221
conservée ; cinq GameTests et 87 états de modèles sous Vulkan vérifiés.
[MRpack normal](build/Sanctuary-beta.222.mrpack) prêt.
## beta.221 — Pierre jaune de l’Ouest
[Finition des parois](docs/west-yellow-stone-beta221.md) : arbres écorcés et
passe de ravins retirés, relief 3D conservé avec un Voronoi discret, sols plus
cohérents. Nouvelle pierre jaune mineable, juste après Stone dans Naturel et
Construction. Build, six GameTests ciblés et essais natifs 42/0 réussis ;
[MRpack normal](build/Sanctuary-beta.221.mrpack) vérifié. Nouveaux profils uniquement.
## beta.220 — Couronne vivante de l’Ouest
[Berges et reliefs](docs/west-living-rim-beta220.md) : plage libre de 12–15 blocs,
palmiers en retrait, bosquets fleuris, cactus, bois mort et herbes sèches.
Reliefs, ravins et cavités 3D sur le pourtour ; océan, monument et épaves
conservés. Build, cinq GameTests ciblés et essais natifs 42/0 réussis ;
[MRpack normal](build/Sanctuary-beta.220.mrpack) vérifié. Nouveaux profils uniquement.
## beta.219 — Plages basses de l’Ouest
[Finition des berges](docs/west-beaches-beta219.md) : sable au niveau de l’eau
sur environ quatre blocs, montée douce et palmiers denses sur la rive intérieure.
Soufre et cinabre retirés de cette couronne. Océan, temple et épaves 218 conservés.
Six GameTests ciblés et essais natifs 42/0 réussis ;
[MRpack normal](build/Sanctuary-beta.219.mrpack) vérifié. Nouveaux profils uniquement.
## beta.218 — Falaises sous-marines et oasis de l’Ouest
[Nouvelle cuve océanique](docs/west-oasis-beta218.md) : plateau sous-marin,
fracture centrale avec monument, plages de grès et palmiers, soufre et cinabre,
quatre épaves natives. Racines et calcite retirées de ce nouvel Ouest.
Île principale, Nord, Sud et anciens profils conservés. Sept GameTests et
essais natifs 42/0 réussis ; [MRpack normal](build/Sanctuary-beta.218.mrpack)
vérifié. Nouvelle visite Vulkan 32 chunks ; rendu à apprécier en jeu.
## beta.217 — Mer suspendue de l’Ouest
[Premier océan](docs/west-ocean-beta217.md) : mer de 1024 blocs, cuve rocheuse
fermée, racines ramifiées et bords minéraux déformés par bruit 3D. Monument
océanique obligatoire, coraux et relais surélevé. Nord, Sud et île principale
conservés. Build, cinq GameTests ciblés et essais natifs 42/0 réussis ;
[MRpack normal](build/Sanctuary-beta.217.mrpack) vérifié. Nouvelle visite
Vulkan à 32 chunks ouverte ; rendu à apprécier en jeu.
## beta.216 — Forêts et pièges du Sud
[Dernière passe du Sud](docs/south-forest-beta216.md) : forêts denses de chênes
sur la terre, sentiers de surface, pyramide sans torches et plaques piégées
dans les salles et couloirs. Les 14 teintes et le relief sont conservés.
Huit GameTests ciblés, assemblages et essais natifs 42/0 réussis ;
[MRpack normal](build/Sanctuary-beta.216.mrpack) vérifié. Nouvelle visite
Vulkan 32 chunks ouverte. La graine 0 reste sans pyramide faute de site enterré.
## beta.215 — Relais régionaux
[Monuments du Nord et du Sud](docs/regional-relays-beta215.md) : relais
surélevés, socles massifs et matériaux locaux ; rosace entièrement colorée.
Village Far West retiré des nouveaux profils, pyramide extérieure agrandie
à 31 × 31, intérieur conservé. Contrôles purs, dix GameTests ciblés et
essais natifs Sud 42 / Nord 0 réussis. [MRpack normal](build/Sanctuary-beta.215.mrpack)
exporté localement ; nouvelle visite Vulkan à 32 chunks. Rendu à apprécier en jeu.
## beta.214 — Village Far West abandonné
[Village décoratif du Sud](docs/south-western-beta214.md) : sept ou huit maisons
en chêne noir, rue principale, porches, façades ornées, lanternes et traces
d’abandon. Implantation et dimensions varient avec la graine, sur les surfaces
du canyon. Terrain et pyramide 213 conservés ; nouveaux profils uniquement.
Contrôles purs, neuf GameTests ciblés et génération/reprise sur 42/0 réussis.
[MRpack normal](build/Sanctuary-beta.214.mrpack) exporté localement ; nouvelle
visite Vulkan à 32 chunks ouverte. Le rendu reste à apprécier en jeu.
## beta.213 — Pyramide et chambres enterrées
[Correction ciblée du Sud](docs/south-buried-beta213.md) : relief et couleurs
212 conservés, sables de surface et acacias custom retirés. Pyramide camouflée
en terracotta locale, descente vers dix petites salles, couloirs et pièges.
Nouveaux profils uniquement. Contrôles purs, 12 GameTests ciblés et essais natifs
42/0 réussis ; [MRpack normal](build/Sanctuary-beta.213.mrpack) exporté localement.
Rendu à apprécier dans la nouvelle visite Vulkan à 32 chunks.
## beta.212 — Couronnes colorées et complexe du désert
[Évolution du Sud](docs/south-rings-beta212.md) : couleurs radiales visibles,
reliefs de mesa localisés, désert clair, arbres secs et petits arbres feuillus.
Grand complexe de grès avec salles, caches et pièges TNT.
Nouveaux profils uniquement ; Nord et île principale conservés.
Contrôles purs, 12 GameTests ciblés et essais natifs 42/0 réussis ;
[MRpack normal](build/Sanctuary-beta.212.mrpack) exporté localement.
Rendu à apprécier dans la nouvelle visite Vulkan à 32 chunks.
## beta.211 — Sud fracturé et cœur coloré
[Refonte des Badlands](docs/south-shattered-beta211.md) : retour au bruit 3D
natif flottant, fissures sans Voronoi, dessous aminci, bandes vanilla dehors
et huit teintes dans le cœur exposé. Sud 1024, nouveaux profils uniquement.
Contrôles purs, 10 GameTests ciblés et essais natifs 42/0 passés ;
[MRpack normal](build/Sanctuary-beta.211.mrpack) exporté localement.
Le rendu reste à apprécier dans la nouvelle visite Vulkan à 32 chunks.
## beta.210 — teintes et végétation des canyons
[Habillage du Sud](docs/south-palette-beta210.md) : quatre familles terreuses par
massif, strates irrégulières discrètes, sol de vallée continu et végétation sèche
aussi sur les mesas. Relief 209 et Nord 208 conservés. Nouveaux profils uniquement.
Build, 11 tests ciblés et essais natifs 42/0 réussis ;
[MRpack normal](build/Sanctuary-beta.210.mrpack) exporté localement.
Le rendu reste à apprécier dans la nouvelle visite Vulkan à 32 chunks.
## beta.209 — premier Sud multicolore
[Prototype des Badlands](docs/south-badlands-beta209.md) : expansion Sud de 1024 blocs,
réseau de canyons par Voronoi inversé, mesas et strates plissées avec les seize
terracottas. Sables assortis sur les surfaces portantes ; Nord 208 conservé.
Nouveaux profils uniquement. Compilation, contrôles ciblés et essais natifs
sur 42 et 0 passés ; [MRpack normal](build/Sanctuary-beta.209.mrpack) exporté
localement. Le rendu est à apprécier dans la nouvelle visite.
## beta.208 — crêtes et replats glacés du Nord
[Dernière passe du Nord](docs/north-ridges-beta208.md) : sommets anguleux,
entailles et replats localisés avec poches et aiguilles de glace. Taïga,
améthyste, igloos et manoir en épicéa conservés. Nouveaux profils uniquement ;
compilation, tests ciblés et essais natifs sur 42 et 0 passés.
[MRpack normal](build/Sanctuary-beta.208.mrpack) exporté localement.
## beta.207 — paysages et manoir du Nord
[Nouvelle passe du Nord](docs/north-landscape-beta207.md) : neige irrégulière
dans une partie des taïgas, reliefs Voronoi localisés sur les hauts plateaux et
manoir procédural en épicéa. Diamètre, dessous aminci et failles d’améthyste
conservés. Profils neufs uniquement ; contrôles natifs sur les graines 42 et 0
passés. [MRpack normal](build/Sanctuary-beta.207.mrpack) exporté localement.
## beta.206 — cavités froides du Nord
Le [nouveau dessous du Nord](docs/north-cavities-beta206.md) conserve le paysage
de surface de la 205 et amincit sa masse rocheuse avec des épaisseurs variables.
Les cavités accueillent glace, eau dans les creux fermés et failles ouvertes
d’améthyste bordées de calcite et de basalte. Nouveaux mondes uniquement ;
la répartition géographique diorite/granit reste à décider.
Contrôles natifs sur les graines 42 et 0 passés ;
[MRpack normal](build/Sanctuary-beta.206.mrpack) exporté localement.
## beta.205 — Nord en bruit 3D natif
Le [nouveau profil nordique](docs/north-noise-beta205.md) retire l'étirement Peaks
et ses montagnes ajoutées. L'enveloppe grandit autour du bruit natif, puis la
taïga et la glace habillent ses surfaces. La lecture des hauteurs est interpolée
entre les points de mesure pour éviter les carrés de palette. Contrôles et
génération/reprise sur les graines 42 et 0 validés ; rendu à confirmer en visite.
[MRpack normal](build/Sanctuary-beta.205.mrpack) exporté localement.
## beta.204 — Sanctuary autonome et Nord Peaks
Le [chantier d’intégration](docs/base-peaks-beta204.md) transfère Demeure et
le terrain validé dans le mod principal. Sanctuary normal propose l’île récente
en Small, Medium ou Large ; le module Test reste facultatif pour les outils de
laboratoire. Le nouveau Nord reprend Peaks avec sa taïga géante et ses glaces.
Compilation, contrôles ciblés, création des trois tailles sans Test et éditeur
Vulkan FR/EN validés. [MRpack normal](build/Sanctuary-beta.204.mrpack) exporté
localement ; aucun canal public mis à jour. Nouveaux mondes uniquement.
## beta.203 — fractures et taïga géante au Nord
[Dernière passe du Nord](docs/north-fracture-beta203.md) : variations de relief
et ouvertures par bruit 3D, lisières de podzol irrégulières, épicéas pouvant
atteindre 64 blocs. La neige ajoutée après végétation est retirée ; les sommets
mêlent roche, neige et plusieurs glaces. Bassins protégés, cinq igloos conservés,
aucun nouveau village. Profils neufs seulement, Nord 1024.
## beta.202 — taïga et neige étagée au Nord
[Écologie nordique](docs/north-ecology-beta202.md) : relief et lacs 201 conservés,
vallées ouvertes et taïga sur herbe/podzol, grands épicéas et pics de glace natifs.
La neige varie avec l'altitude et le climat ; la glace des grottes reste derrière
une enveloppe rocheuse. Le village cherche une plaine entièrement enneigée.
Profils neufs uniquement, expansion de 1024 blocs.
## beta.201 — Nord compact et pics de glace vanilla
[Glacier nordique](docs/north-glacier-beta201.md) : diamètre ramené à 1024,
glace visible, deux lacs, bosquets d'épicéas et pics natifs `ice_spike` / `ice_patch`.
Le village de cinq igloos et son laboratoire sont conservés et rapprochés du lac.
Profils neufs uniquement ; les paysages froids des diagonales restent à concevoir.
## beta.200 — premier Nord glacial
[Expansion nordique](docs/north-expansion-beta200.md) : territoire de 2048 blocs,
crêtes enneigées, taïga, cavernes de glace, lacs gelés et village de cinq igloos,
dont un laboratoire souterrain. Placement dans la direction de l’ancre ; arrivée
et relais préparés, puis génération pendant l’exploration. Nouveaux mondes uniquement.
Export local : [MRpack de test](build/Sanctuary-Test-beta.200.mrpack).
Compilation, contrôles ciblés et activation/reprise du Nord vérifiés ; la suite
historique complète reste non validée, avec le détail dans le ticket.
## beta.199 — relais d’expansion en cours de partie
[Affinage du moteur existant](docs/runtime-expansions-beta199.md) : recherche
automatique proche sur 360°, régions minces, relais de continuation, reprise
après fermeture et annonce SGA à la fin. Nouveaux mondes de laboratoire
Small/Medium/Large ; étoiles synchronisées sur sept journées Minecraft.
## beta.198 — correction du plantage de création Large
[Admission de la galerie centrale](docs/gallery-generation-beta198.md) :
correction du défaut reproduit avec la graine Windows fournie, en conservant
le portail au centre et les anciens profils. Nouveaux mondes uniquement.
## beta.197 — arrivée et détails du laboratoire
[Corrections du laboratoire](docs/worldgen-fixes-beta197.md) : départ sur
l’île, cascades ouvertes vers l’extérieur, sol minier sans diagonales répétées
et toit de cabane continu. Nouveaux profils Small/Medium/Large ; enquête séparée
sur l’arrêt signalé chez un ami à la création Large.
## beta.196 — laboratoire à partager
[Pack de test Small, Medium et Large](docs/shared-lab-beta196.md) : une entrée
Sanctuary, taille personnalisable, dernier terrain du labo et atlas adapté.
Diagnostic du chargement et enregistrement JFR optionnel ; anciens mondes conservés.
## beta.195 — choix de génération simplifiés
[Sanctuary et les types vanilla](docs/worldgen-options-beta195.md) restent dans
la création de monde ; les variantes de labo sont masquées, leurs sauvegardes
restent lisibles. Nouvelle visite demandée sur le profil beta.193, graine 0,
avec le menu principal sans Amis. Le terrain est conservé pour cette comparaison.
## beta.194 — menu principal sans Amis
[Reprise des interfaces](docs/main-menu-beta194.md) : Solo et Multijoueur sont suivis
directement d’Options et Quitter, sans bouton Amis ni ligne vide. Le
[fil rouge](docs/storyquest-fil-rouge.md) reprend les interfaces et le Storyquest ;
les retouches de génération et les séries de captures sont suspendues.
## beta.193 — raccordements et comparaison visuelle
[Laboratoire sur plusieurs graines](docs/worldgen-continuity-beta193.md) : réservations
communes pour les bassins, ancres aériennes posées sur le terrain réel et
entailles locales du massif. Le nouveau profil `coherent` ajoute des contrôles
de collision entre aménagements et des visites photo Vulkan reproductibles.
Les anciens profils et sauvegardes restent séparés.
## beta.192 — couronnes et faces du massif
[Variante de relief érodé](docs/eroded-massif-beta192.md) : sommets localement
plus plats, faces rocheuses plus raides et entailles entre les reliefs.
Profil neuf `eroded`, graine 42 ; couverture végétale selon la pente réelle.
Les cavités profondes et les aménagements existants restent conservés.
## beta.191 — relief d’avant les plateaux
[Retour à la base beta.188](docs/restore-relief-beta191.md) : relief et géologie
antérieurs aux plateaux, passes de roche 189/190 retirées. Les corrections
indépendantes des berges, ancres, ruines et du portail restent présentes.
Profil neuf `original`, graine 42 ; génération, réouverture, 265 GameTests et
assemblages validés.
## beta.190 — retour au relief naturel
[Affinage de Sanctuary Island](docs/natural-refinement-beta190.md) : fin des
terrasses systématiques, épaules locales et affleurements sans cases de quatre
blocs. Déversoir proche de cinq blocs de large, coffres de fer enchanté dans les
quatre ruines. Profil `refined`, nouveau solo graine 42, vue 32 chunks.
Les reliefs très étagés passent dans la réserve des expansions futures.
## beta.189 — berges, reliefs et portail inférieur
[Finition de la génération](docs/terrain-finish-beta189.md) : refuges de surface
adaptés à la roche, sédiments selon profondeur et pente, berges sableuses,
plantations d’arbres protégées, reliefs étagés et affleurements. Portail inférieur
éclairé, cascade locale et quatre ruines sans excavation. Profil `finish`, nouvelle
sauvegarde, graine 42. 265 GameTests, génération, réouverture et assemblages réussis.
## beta.188 — fonds d’étangs et soufre vivant
[Laboratoire de finition](docs/living-details-beta188.md) : refuges adaptés
au milieu et à leur couleur, fonds mêlant argile, boue, sable et gravier,
végétation aquatique, pics et geysers natifs. Wagonnets avec une ou deux
pièces en fer enchanté. Profil `details`, monde neuf, graine 42.
265 GameTests, contrôles natifs et assemblages réussis ; solo Vulkan ouvert
à 32 chunks. Les anciennes sauvegardes restent inchangées.
## beta.187 — cavités de soufre et bassins de surface
[Nouveau laboratoire](docs/natural-caves-beta187.md) : soufre intégré aux
cavités existantes, trois bassins ouverts au ciel et huit ancres orientées
vers leur expansion, avec approche depuis le centre. Profil `natural`,
graine 42, nouvelle sauvegarde. Génération et réouverture vérifiées,
265 GameTests et assemblages réussis ; solo Vulkan ouvert à 32 chunks.
## beta.186 — rosaces et huit refuges d'ancres
[Nouveau laboratoire](docs/hidden-anchors-beta186.md) : balcon supérieur sans
barrières, liserés incrustés dans les deux dômes et huit ancres adaptées au terrain
de leur secteur. Dépôts distincts reliés aux gemmes du Bugrock. Profil `anchors`,
graine 42, nouvelle sauvegarde. Génération et réouverture vérifiées, 265 GameTests
et assemblages réussis ; solo Vulkan ouvert à 32 chunks.
## beta.185 — tige fine et portail de toiture
[Variante de laboratoire](docs/fine-stem-beta185.md) : ligne de calcite d’un bloc,
sans escalier ni paliers, fleur conservée, portail horizontal incrusté au sommet
et jour fermé sous les vitres du palais. Profil `stem`, monde neuf, graine 42.
265 GameTests, contrôles natifs et assemblages réussis ; solo Vulkan ouvert
à 32 chunks, départ dans le palais supérieur.
## beta.184 — ascension naturelle
[Nouveau laboratoire](docs/natural-ascent-beta184.md) : rosace et Bugrock à Y=640,
tige parcourable, palais vitré vers Y=1280 avec atlas au sol et portail horizontal.
La couronne se découvre en montant. Les bassins supérieurs dessinés sont remplacés
par le remplissage de creux existants. Profil `ascent`, nouveau monde uniquement.
265 GameTests, contrôles natifs et assemblages réussis ; solo Vulkan ouvert à
32 chunks, départ sur la rosace.
## beta.183 — lieux et ressources de l’île
[Nouveau laboratoire](docs/island-discovery-beta183.md) : portail horizontal,
secteurs de gemmes, soufre repérable, bassin supérieur, ISS et rosace aux huit
couleurs du Bugrock. ISS avec cartes horizontales, salle et mosaïque adaptées
au rayon du terrain. Profil `discovery`, monde neuf ; contrôles natifs,
265 GameTests et assemblages réussis. Solo préparé à 32 chunks.
## beta.182 — galerie inférieure et rosace
[Nouvelle scène de laboratoire](docs/origin-gallery-beta182.md) : galerie
naturelle sous le centre, trois salles à plusieurs niveaux, emplacement
d’obsidienne ; cloche vitrée au-dessus du Bug Rock et huit axes dégagés.
Nouveau profil `gallery`, monde neuf, contrôles natifs, 265 GameTests et
assemblages réussis. Solo à 32 chunks visité par le créateur, qui valide sa palette et sa rosace.
## beta.181 — origine à Y=320
[Premier repère central](docs/origin-landmark-beta181.md) : petite rose des vents
ouverte sur un fragment rocheux, Bug Rock en (0,320,0), lumineux et monochrome.
Nouveau profil de labo `origin`, fondé sur l’île beta.180 ; contrôle natif réussi
et solo Vulkan ouvert à 32 chunks. Suite générale et assemblages réussis.
Les salles d’ancres, secteurs de gemmes, soufre, portail et ISS sont cadrés
comme suites à construire.
## beta.180 — bassins et donjon minier
[Variante de laboratoire](docs/adventure-ecology-beta180.md) : grands bassins
avec débordements, trois cerisiers sur l’île, récifs cherry et automne.
Donjon ramifié avec spawners et wagonnets à butin (diamants, émeraudes,
rubis et saphirs), éclairage réduit et cornichons hors de l’eau retirés.
Solo Vulkan ouvert à 32 chunks, contrôles ciblés, validation générale et
assemblages réussis.
## beta.179 — grottes vivantes
[Essai de laboratoire](docs/living-caves-beta179.md) : quelques cerisiers aux
sommets, fin des bordures rocheuses du plateau, poches lush en terrasses,
marais à lucioles, chênes noirs et mycélium violet. Première version de
complexes miniers et d’une cabane de sorcière souterraine. Monde neuf ;
contrôle natif réussi et solo Vulkan ouvert à 32 chunks. Suite générale
de validation et assemblages réussis.
## beta.178 — vallées bornées et grottes rocheuses
Le [nouvel essai solo](docs/rocky-ecology-beta178.md) limite l’automne aux
vallées Y=200–232 et expose la roche sur les flancs profonds. Les grottes
gardent des mares et de petites plaques de mousse. Nouveau monde de labo,
graine 42, vue à 32 chunks et commandes activées ; contrôle ciblé réussi,
suite générale et assemblages réussis.
## beta.177 — les biomes suivent le relief
Le [nouvel essai de laboratoire](docs/relief-ecology-beta177.md) réunit
forêts et plaines fleuries sur le plateau, automne dans les creux extérieurs,
cerisiers sur un sommet local et végétation humide sous roche. La mangrove
et la neige sont retirées ; des gisements de pierre interrompent les strates.
Solo Vulkan à 32 chunks, relevés natifs et réouverture vérifiés ; 265/265
GameTests, `check build` et assemblages réussis. Détails dans la fiche.
## beta.176 — strates, biomes et mares du labo
Le [nouveau laboratoire écologique](docs/island-ecology-beta176.md) conserve
le relief beta.175 et ajoute des strates ondulées, de grandes régions
automnales et de cerisiers, des récifs végétalisés et des mares locales.
Ses biomes excluent les structures natives, notamment les mineshafts.
Trois graines et une réouverture vérifiées ; visite solo Vulkan à 32 chunks.
Une réserve sur la suite générale des familiers est détaillée dans la fiche.
Aucune modification des mondes existants.
## beta.175 — récifs aériens et minerais du labo
Le [nouveau profil de laboratoire](docs/sky-fragments-beta175.md) remplace les
anciennes masses flottantes par des récifs rares en bruit 3D, au-dessus de
l’île principale conservée. Y=512–639 reste réservé à l’ISS. Cuivre et charbon
abondants, peu de fer, lapis et améthyste, diamant enfoui dans la deepslate ;
aucun or ni redstone dans cette répartition. Relevés natifs plutôt que vues
en jeu ; contrat, mesures et limites dans la fiche du lot.
## beta.174 — laboratoire de relief Sanctuary
Le [labo worldgen](docs/worldgen-lab-beta174.md) ajoute un preset distinct
pour travailler le relief de l'île sans les calculs de plans d'eau et de
structures. La génération normale est conservée. Profil rapide et référence
complète utilisent des mondes de développement séparés. Les résultats de
validation et les limites sont consignés dans la fiche du lot.
## Refonte de Sanctuary Island — direction du 29 septembre
Le palais souterrain, ses accès et les raccordements au palais sont abandonnés
dans la conception. Le [fil rouge de la refonte](docs/storyquest-fil-rouge.md)
situe le socle, propose des plans géographiques indépendants et organise la
suite en parcours jouables qui font avancer plusieurs systèmes ensemble.
La priorité suivante est le labo worldgen rapide ci-dessus, puis un parcours
arrivée, halte extérieure, ancre et conséquence visible. L'esthétique reste
à comparer sur ce parcours.
## beta.173 — prototype du palais, conservé comme essai technique
Un palais octogonal par seed, huit ancres avec des matériaux distincts et le bloc
originel en bedrock : éteint, allumé en noir et blanc, puis une gemme colorée par
ancre activée. [Prototype, laboratoire et vérifications](docs/palais-prototype-beta173.md).
Le prototype reste disponible dans son laboratoire ; son intégration sous
Sanctuary Island sort du plan depuis le changement de direction du 29 septembre.
Le [cadrage Storyquest](docs/storyquest-beta173.md) et l'[inventaire du socle
beta.172](docs/storyquest-socle-beta172.md) conservent les autres chantiers de
refonte. Les priorités courantes sont dans le fil rouge ci-dessus.
Branche `codex/storyquest-beta173`.
## beta.172 — cartes utilisables en jeu
Une carte révélée ouvre désormais sa brèche à la position du joueur dans
n'importe quel monde, en Survie comme en Créatif. L'exemplaire est consommé
côté serveur dans les deux modes ; le terrain n'est pas modifié et les arrivées
cherchent un sol valide autour du point d'invocation.
[Contrat et vérifications](docs/horde-runtime-beta172.md).
## beta.171 — hordes dominantes et chaos dimensionnel
Chaque carte choisit une famille dominante — zombies, squelettes, creepers,
arthropodes, pillards, cauchemars, infernaux, piglins, flétris ou créatures de
l'End — puis y glisse des surprises. La dimension de découverte favorise très
fortement ses propres monstres, sans interdire de rares intrus. La carte est
séparée horizontalement : ordre exact des arrivées en haut, totalité du butin
généreux en bas. [Contrat et vérifications](docs/horde-families-beta171.md).
## beta.170 — carte de horde native et langage de particules
La carte de horde est désormais un véritable objet-carte Sanctuary, disponible
dans Outils et utilitaires. Chaque exemplaire vierge découvre en main une
identité stable et différente ; difficulté, dessin, monstres et butins restent
liés à cette carte. Révélation, refus, brèche, progression et résultat sont
communiqués uniquement par des connexions de particules, sans message Sanctuary
dans le chat. [Contrat et vérifications](docs/horde-map-native-beta170.md).
## beta.169 — cartes de horde à invasion continue
Une carte reste inconnue jusqu’à sa prise en main, puis révèle sa difficulté, ses
12, 18 ou 27 monstres variés et leurs butins. Le clic droit ouvre une invasion
sans vagues : les ennemis jaillissent un par un, de plus en plus vite. Récompenses
généreuses propres aux espèces, rubis/saphirs et runes SGA natives. Les cartes
beta.168 existantes restent compatibles.
[Contrat et vérifications](docs/horde-invasion-beta169.md).
## beta.168 — trois cartes de horde consommables
Labo sans socle, apparition immédiate, combat spontané et butins sur les monstres.
Trois cartes illustrées tenues comme des cartes Minecraft, trois difficultés.
[Essayer le laboratoire et connaître ses limites](docs/horde-cartes-beta168.md).
## beta.167 — prototype local de horde coopérative
Une arène ronde de laboratoire, une carte réutilisable et un socle interactif
pour réunir un groupe et lancer trois vagues de zombies. Inscription et départ
explicites, résultat commun, sans récompense économique dans ce prototype.
[Contrat, lancement et vérifications](docs/horde-lab-beta167.md).
Le laboratoire utilise un nouveau monde ; aucune mise à jour de Prism ni du
canal public n'est effectuée par ce chantier.
[Dernière release : beta.166](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.166) ·
[Historique des publications beta.144–166](docs/publications-beta144-166.md).
Les releases sont distinctes du canal packwiz, qui reste inchangé lors de ce rattrapage.
La [direction de travail du 25 septembre](docs/ecosysteme-communaute-economie.md)
pose les liens entre tableau, Gazette, statistiques en BDD, État, navets,
machines de loterie, bounties et expansions. C'est un cadrage de conception,
avec décisions et propositions séparées, sans nouvelle livraison de jeu.
## beta.166 — inscription depuis le site
Accueil avec code récupéré sur le web et reprise après coupure.
[Contrat, migration et vérifications](docs/inscription-web-beta166.md).
## Vérification du socle beta.165
Les 23 échecs historiques ont été corrigés dans les scénarios de test :
252/252 GameTests passent, ainsi que `check build`. Code de jeu inchangé.
[Actualisation et preuves](docs/actualisation-tests-beta165.md).
## beta.165 — article Gazette et conversation
Grande photo et texte dans un même conteneur à gauche, auteur dessous, réponses
à droite ou sous l’article sur petit écran.
[Résultat et vérifications](docs/gazette-scene-beta165.md) ·
[Audit des 23 échecs connus](docs/audit-echecs-beta165.md).
## beta.164 — calendrier et intendance
Date et heure réunies à gauche ; titre serveur aligné sur la carte et les panneaux.
[Résultat et vérifications](docs/pause-calendar-beta164.md).
## beta.163 — menu pause encadré
Calendrier, intendance et horloge en en-tête ; deux groupes de navigation,
séparateurs natifs et reprise centrée dans le footer.
[Résultat et vérifications](docs/pause-frame-beta163.md).
## beta.162 — tableau en scène et conversation
Portrait de l’auteur tourné vers la souris, bulle aux couleurs de l’annonce,
demande à gauche et réponses à droite. Retour/Actualiser restent en haut ;
la conversation passe dessous sur les GUI étroits.
[Résultat et vérifications](docs/notice-scene-beta162.md).
## beta.161 — correctifs de séance et site vivant
Liste des joueurs sur U, suivi des demandes expliqué, intendance compacte et
compteurs réels partagés avec le site. Site public en lecture seule, Gazette
en accordéon avec aperçus compacts.
[Contrat et vérifications](docs/session-fixes-beta161.md).
## beta.160 — laboratoire de test en duo
Shader désactivé sur une configuration neuve, serveur local léger, personnages
de test optionnels et séances de captures horodatées.
[Mode d’emploi et vérifications](docs/duo-lab-beta160.md) ·
[Récap Discord 130–160](docs/discord-beta130-160.md).
## beta.159 — recherche communautaire et galerie adaptable
Recherche par joueur, titre ou texte, historique Serveur en lecture seule,
année dans les dates et galerie adaptée au GUI avec grand aperçu.
Repères « ! » et infobulles sur la carte pour les demandes suivies géolocalisées.
[Résultat et vérifications](docs/community-search-beta159.md).
## beta.158 — cartes communautaires et demandes suivies
Grilles à deux colonnes, articles photo/texte, annonces colorées avec visages,
coffres descriptifs et suivi persistant fichier/MariaDB. Sélecteur photo compact.
[Contrat et vérifications](docs/community-cards-beta158.md).
## beta.157 — photo obligatoire dans la Gazette
Galerie de captures défilante, aperçu et assignation à un article. Publication
avec photo obligatoire, stockage fichier ou MariaDB partagé avec le site.
[Contrat de migration et vérifications](docs/gazette-photos-beta157.md).
## beta.156 — reprendre la partie sous la colonne communautaire
Le bouton Reprendre la partie est aligné sous la Gazette et le tableau
d’affichage, en bas à droite. [Vérifications](docs/pause-resume-beta156.md).
## beta.155 — nouvelle structure du menu pause
Navigation Sanctuary à gauche, carte centrale, Gazette et demandes défilantes
à droite. Date, intendance et heure en en-tête ; options et sortie en bas de la colonne
gauche, reprise de la partie en bas au centre.
[Contrat et vérifications](docs/pause-redesign-beta155.md).
## beta.154 — Gazette et tableau communautaire
Panneaux gauche/droite du menu pause, intendance, publication, réponses,
modification et modération. Stockage fichier par défaut ; MariaDB optionnelle
commune avec le site. Shaders beta.151 conservés.
[Contrat et configuration](docs/community-contract-v1.md) ·
[Vérifications et limites](docs/community-beta154.md).
## beta.151 — Nether, reflets des blocs et SSR
Synchronisation de l’inventaire au changement de dimension, retour de l’intensité
spéculaire des blocs solides à son niveau antérieur et bois mat avec relief.
SSR activé par défaut à 20 %, choix sauvegardés conservés.
[Contrat et vérifications](docs/nether-pbr-beta151.md).
## beta.150 — Terre mate et reflets du coucher de soleil
Terre mate avec relief conservé. Le soleil et son reflet se colorent ensemble
en suivant la couleur et la transition du coucher de soleil natif de Minecraft.
Les accents lumineux suivent les normales animées des vaguelettes et leur
orientation vers le soleil et la caméra. [Contrat et vérifications](docs/matte-dirt-beta150.md).
## beta.149 — Distances PBR / SSR et feuillage
Deux distances séparées, 64 blocs par défaut chacune, jusqu’à 256 blocs.
Option renommée « SSR » et suppression du voile spéculaire sur le feuillage.
[Contrat et vérifications](docs/independent-distances-beta149.md).
## beta.148 — PBR 50 % et soleil diffus
PBR à 50 %, reflet solaire plus doux avec fusion par texel préservant
la texture de l’eau. SSR à 20 %, portée commune jusqu’à 256 blocs.
[Contrat et vérifications](docs/pbr-soft-sun-beta148.md).
## beta.147 — PBR proche, lune et portée 256
Correction du scintillement à très courte distance, reflet lunaire adouci
et distance commune PBR/SSR jusqu’à 256 blocs.
[Contrat et vérifications](docs/pbr-close-range-beta147.md).
## beta.146 — Reflets et transitions de l’eau
Correction du masquage des personnages en F5 et sélection stricte des surfaces PBR.
PBR à 80 % et SSR à 20 % par défaut, distance commune PBR/SSR
(16/32/64/128 blocs), reflet solaire large et blanc avec léger bloom des matières.
Eau naturelle selon le type de monde et mélange 1/3/5/9/17 blocs.
[Contrat et vérifications](docs/reflections-water-beta146.md).
## beta.145 — PBR de l’eau et reflets pixélisés (livraison locale)
L’eau et le verre rejoignent le PBR natif. L’option expérimentale de reflets
alimente les texels avec le paysage visible selon leurs normales.
[Contrat, vérifications et limites](docs/pbr-ssr.md).
Cette branche intègre un instantané des sources d’eau beta.144 ; elle ne
publie pas le canal et ne synchronise pas Prism.
Sanctuary est une extension gratuite de Minecraft qui transforme le jeu en un
monde flottant d'exploration, de production et de progression collective.
Les joueurs commencent ensemble sur Sanctuary Island et construisent les
@@ -20,12 +800,19 @@ La [vision complète](docs/vision.md) conserve les intentions ; le
L’économie, les claims et les dimensions décrits dans la vision restent
à implémenter.
La version **beta.123** limite la clé dorée aux orientations natives et confie
l'édition libre à la **Clé à molette de Steve**, utilisable aussi en survie si
elle est récupérée, avec sa texture bleue fournie par le créateur.
Le [ticket de livraison](docs/wrench-safety-beta123.md) détaille les protections,
les commandes et les vérifications client et archives réussies. La publication
et la synchronisation de l’instance sont préparées.
La version **beta.144** prépare une option d’**eau naturelle pixélisée** :
couleur du biome, trois profils selon le fond et visibilité adaptée en immersion.
Les océans gardent leur couleur native et le profil clair.
[Contrat et vérifications](docs/natural-water-beta144.md). Livraison en cours.
La version **beta.143** garde le sampler natif de précipitation pour la neige
saisonnière, mais ralentit son rythme : l'accumulation est espacée par un
facteur 12 et la fonte par le facteur temps réel 72. Les protections existantes
restent inchangées : neige construite, biomes froids, hiver, profils neigeux
et météo Vanilla. Le [ticket](docs/realtime-snow-melt-beta143.md) documente le
contrat et les vérifications.
La beta.143 est publiée et synchronisée dans l’instance Sanctuary Beta ;
les 923 fichiers personnels suivis sont conservés.
La [livraison précédente](docs/clay-workshop-integration-beta110.md) réunit déjà
l’atelier, les œufs et la neige saisonnière dans l’instance **Sanctuary Beta**.
Les [synchronisations antérieures](docs/git-sync-beta092.md) restent documentées.
@@ -36,6 +823,162 @@ La [carte native beta.005](docs/atlas-beta005.md) prend le relais après
l’étude de Xaero et des alternatives libres.
## beta.143 — Neige saisonnière en temps réel
Accumulation ralentie par un facteur 12 et fonte saisonnière ralentie par le
facteur naturel 72, tout en conservant le sampler natif des colonnes de
précipitation. Deux blocs de neige fondent en environ 2,7 jours réels en été,
5,4 au printemps et 11 en automne.
[Contrat et vérifications](docs/realtime-snow-melt-beta143.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.143/Sanctuary-beta.143.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.143/Sanctuary-Test-beta.143.mrpack).
## beta.142 — Vulkan par défaut et stabilité PBR
Moteur natif Vulkan prioritaire, relief conservé pendant les reconstructions,
calculs de reflets bornés et intensité initiale 80 %. Choix personnels conservés.
[Contrat et vérifications](docs/pbr-refresh-beta142.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.142/Sanctuary-beta.142.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.142/Sanctuary-Test-beta.142.mrpack).
## beta.141 — Direction locale et normales PBR
Relief et reflets orientés par les lumières locales. Cache compact, confiance
réduite pour les sources opposées, objets portés et fondus. Activer PBR et
Lumières colorées ; portée PBR 32 blocs.
[Contrat et vérifications](docs/directional-lights-beta141.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.141/Sanctuary-beta.141.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.141/Sanctuary-Test-beta.141.mrpack).
## beta.140 — Lumières portées et fondus
Mains et tête, distances 8/16/32/64, fondus, cuivre vert, redstone rouge et
option pour la chaleur des torches. Lumières colorées activées à 30 % par défaut.
[Contrat et vérifications](docs/colored-dynamic-beta140.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.140/Sanctuary-beta.140.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.140/Sanctuary-Test-beta.140.mrpack).
## beta.139 — Lumières colorées
Teintes chaudes, sources des âmes bleues, redstone rouge, froglights et matériaux lumineux.
Option désactivée initialement, intensité 35 % ; propagation locale avec obstacles.
[Contrat et vérifications](docs/colored-lights-beta139.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.139/Sanctuary-beta.139.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.139/Sanctuary-Test-beta.139.mrpack).
## beta.138 — Rayons et brouillard
Densité automatique des rayons selon le brouillard et les précipitations.
[Contrat et vérifications](docs/shader-beta138.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.138/Sanctuary-beta.138.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.138/Sanctuary-Test-beta.138.mrpack).
## beta.137 — Rayons solaires
Faisceaux volumétriques légers, intensité réglable et feuillage perméable.
[Contrat et vérifications](docs/shader-beta137.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.137/Sanctuary-beta.137.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.137/Sanctuary-Test-beta.137.mrpack).
## beta.136 — Lens flare rectangulaire
Soleil et lune, reflets doux et intensité indépendante du bloom.
[Contrat et vérifications](docs/shader-beta136.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.136/Sanctuary-beta.136.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.136/Sanctuary-Test-beta.136.mrpack).
## beta.135 — SSGI près des surfaces
Correction des coupures à courte distance, sans flouter les textures.
[Contrat et vérifications](docs/shader-beta135.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.135/Sanctuary-beta.135.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.135/Sanctuary-Test-beta.135.mrpack).
## beta.134 — PBR optionnel et SSGI filtré
Relief et reflets des matériaux ; lissage de la lumière indirecte.
[Contrat et vérifications](docs/shader-beta134.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.134/Sanctuary-beta.134.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.134/Sanctuary-Test-beta.134.mrpack).
## beta.133 — SSGI renforcé
Couleurs voisines plus visibles, même budget de rayons et de cibles GPU.
[Contrat et vérifications](docs/shader-beta133.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.133/Sanctuary-beta.133.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.133/Sanctuary-Test-beta.133.mrpack).
## beta.132 — SSGI : diffusion locale des couleurs
Rebond diffus des couleurs visibles, intensité réglable et reconstruction
préservant les silhouettes. Expérimental, initialement désactivé.
[Contrat et vérifications](docs/shader-beta132.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.132/Sanctuary-beta.132.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.132/Sanctuary-Test-beta.132.mrpack).
## beta.131 — Émissifs indépendants et précision étendue
Bloom, émissifs et highlight activés initialement ; halo facultatif et cinq
précisions communes de 8 à 128 pixels/bloc.
[Contrat et vérifications](docs/shader-beta131.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.131/Sanctuary-beta.131.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.131/Sanctuary-Test-beta.131.mrpack).
## beta.130 — Bloom, minerais émissifs et précision commune
Halo réglable des sources lumineuses et inclusions des vingt textures de
minerais ; réglages par défaut 32/128/16 et ombres activées.
[Contrat et vérifications](docs/shader-beta130.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.130/Sanctuary-beta.130.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.130/Sanctuary-Test-beta.130.mrpack).
## beta.129 — Reflets CTM et ombres jusqu'à 256 blocs
Reflets connectés réglables, cinq portées indépendantes, soleil plein à midi
et correction du réalignement cyclique de la grille d'ombres.
[Contrat et vérifications](docs/shader-beta129.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.129/Sanctuary-beta.129.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.129/Sanctuary-Test-beta.129.mrpack).
## beta.128 — Ombres stables, lune et feuillage
Grille de réception stabilisée, contours nets des blocs, atténuation à midi,
ombre lunaire légère et feuillage nuancé selon son épaisseur.
[Contrat et vérifications](docs/shader-beta128.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.128/Sanctuary-beta.128.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.128/Sanctuary-Test-beta.128.mrpack).
## beta.127 — Shader : ombres portées pixélisées
Ombres solaires natives, finesse 8/16/32 pixels par bloc et portée 16/32/64 blocs.
Option désactivée par défaut, réglable sans rechargement des ressources.
[Contrat et vérifications](docs/shader-beta127.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.127/Sanctuary-beta.127.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.127/Sanctuary-Test-beta.127.mrpack).
## beta.126 — Gemmes, argile et découvertes
Rubis et saphir avec filons configurables, couleurs originales avec l'argile,
commandes de découverte globales ou ciblées.
[Contrat et vérifications](docs/gems-beta126.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.126/Sanctuary-beta.126.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.126/Sanctuary-Test-beta.126.mrpack).
## beta.125 — Sculptures : placement, éclats et animaux
Coins et trois hauteurs sur la grille 1/16 ; particules issues des voxels ;
modèles découverts disponibles dans le Clay Workshop.
[Contrat et vérifications](docs/sculpture-placement-beta125.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.125/Sanctuary-beta.125.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.125/Sanctuary-Test-beta.125.mrpack).
## beta.124 — Une boîte par sculpture
Sélection et collisions simplifiées, dimensions ajustées et lumière conservée.
[Contrat et vérifications](docs/sculpture-bounds-beta124.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.124/Sanctuary-beta.124.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.124/Sanctuary-Test-beta.124.mrpack).
## beta.123 — Clé dorée et clé de Steve
Orientations cohérentes, inventaires et eau préservés ; clé de Steve pour
@@ -2156,7 +3099,7 @@ Depuis beta.090, la cible est **Minecraft 26.3 finale**, publiée le 15 septembr
| Fabric API | 0.160.5+26.3 |
| Fabric Loom | 1.17.20 |
| Gradle Wrapper | 9.5.1, distribution vérifiée par SHA-256 |
| Sanctuary / pack | beta.122 |
| Sanctuary / pack | beta.166 |
Java 25 et Python 3.11 ou plus récent sont nécessaires. Le script pack utilise
uniquement la bibliothèque standard et repère aussi une installation Python
@@ -2185,7 +3128,7 @@ décrits dans [Validation](docs/testing.md).
Résultats :
- `mods/sanctuary/build/libs/sanctuary-beta.122.jar` : mod à installer avec
- `mods/sanctuary/build/libs/sanctuary-beta.166.jar` : mod à installer avec
Fabric API sur la version Minecraft indiquée.
- `build/packwiz/` : pack de développement complet, avec le mod construit et
l'index vérifié. Voir [Installation packwiz](packwiz/README.md).
+9 -2
View File
@@ -52,11 +52,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
@@ -136,3 +136,10 @@ 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).
+2 -2
View File
@@ -3,8 +3,8 @@ 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') }
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('verifyPack', Exec) {
group = 'verification'
+61
View File
@@ -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.
+55
View File
@@ -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.
+46
View File
@@ -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.
+137
View File
@@ -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).
+98
View File
@@ -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).
+79
View File
@@ -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).
+100
View File
@@ -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).
+179
View File
@@ -1,5 +1,184 @@
# Backlog Sanctuary
## 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).
+103
View File
@@ -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.
+112
View File
@@ -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/`.
+107
View File
@@ -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`.
+115
View File
@@ -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`.
+98
View File
@@ -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`.
+240
View File
@@ -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.
+81
View File
@@ -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`.
+114
View File
@@ -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.
+100
View File
@@ -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.
+64
View File
@@ -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.
+110
View File
@@ -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`
+88
View File
@@ -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.
+76
View File
@@ -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` |
+97
View File
@@ -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.
+127
View File
@@ -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/`.
+60
View File
@@ -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`.
+155
View File
@@ -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.
+84
View File
@@ -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.
+85
View File
@@ -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.
+319
View File
@@ -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.
+85
View File
@@ -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`.
+83
View File
@@ -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` |
+53
View File
@@ -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.
+101
View File
@@ -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.
+96
View File
@@ -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`.
+26
View File
@@ -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.
+152
View File
@@ -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`.
+125
View File
@@ -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`.
+105
View File
@@ -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.
+87
View File
@@ -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`.
+114
View File
@@ -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é.
+120
View File
@@ -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.
+102
View File
@@ -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.
+46
View File
@@ -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`.
+68
View File
@@ -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.
+120
View File
@@ -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.
+128
View File
@@ -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.
+197
View File
@@ -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.
+40
View File
@@ -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.
+78
View File
@@ -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`.
+50
View File
@@ -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.
+96
View File
@@ -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.
+115
View File
@@ -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.
+100
View File
@@ -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` |
+77
View File
@@ -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.
+121
View File
@@ -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/`.
+93
View File
@@ -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.
+103
View File
@@ -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.
+88
View File
@@ -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`.
+120
View File
@@ -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.
+87
View File
@@ -0,0 +1,87 @@
# EXP-203 — fractures, lisières et taïga géante
Branche `codex/north-fracture-beta203`, depuis beta.202. Retour R022.
Le rendu 202 est globalement validé. Passe ciblée demandée : ajouter de fortes
variations locales de volume et des trous par bruit 3D, retirer la neige ajoutée
après la végétation, brouiller les limites du podzol, donner aux grands épicéas
une hauteur pouvant atteindre 64 et varier les matières des sommets glacés.
Aucun nouveau village : la proposition supplémentaire est retirée par le joueur.
Les cinq igloos existants restent présents.
Nouveaux profils 203 seulement, Nord 1024. Aucun monde existant régénéré ni
migré ; profils 200–202 inchangés. Bassins et basses plaines d'accueil protégés
de la déformation. Pics de glace vanilla conservés. Arbres avec moteur natif,
configuration propre au biome géant ; aucune modification globale des épicéas.
Pas de simulation d'érosion ou d'hydrologie supplémentaire, caches bornés.
## Réalisation
Le champ 203 combine des déplacements verticaux locaux (deux échelles de bruit)
et un bruit volumique négatif de plus grande portée. Les nouvelles poches
peuvent traverser le toit ou le dessous, contrairement aux caves fermées 202.
Le bruit est atténué sur les basses plaines, les bords et tout autour des lacs.
Les seuils de sommet restent lisibles ; le détail 3D module les roches et glaces.
La passe de neige après décoration n'est pas appelée pour 203. Les prairies
froides gardent leur herbe ; la neige demeure comme matériau de sommet,
substrat nécessaire aux pics vanilla et matériau des igloos existants.
Le champ de podzol comporte deux fréquences de détail aux lisières. Le
`alter_ground` circulaire des nouveaux grands arbres est supprimé.
Les arbres réemploient `giant_trunk_placer` et `mega_pine_foliage_placer` de
Minecraft 26.3. Configuration locale : hauteur 32 + aléa 0–16 + aléa 0–16,
soit 32 à 64 blocs, couronne de 18–24 ; mélange de géants et de petits épicéas.
Les features `ice_spike` / `ice_patch` restent natives et inchangées.
## Contrôles
`north203Smoke` passe sur neuf couples graine/taille (0, 42,
4736390610738281858 ; Small/Medium/Large). Les déplacements locaux sondés vont
jusqu'à environ −62 / +56 blocs selon le cas. Ouvertures de surface présentes,
densité bornée, lacs et leurs coques inchangés, lisières de podzol irrégulières.
Recherche des cinq igloos vérifiée également sur les graines 1 à 32.
Les ressources worldgen historiques sont inchangées, hors sélection du nouveau
preset public et ajout du biome 203 au tag des ours polaires. Les noise settings
de l'île de départ restent identiques à 202. Aucun test visuel Windows ni
nouvelle campagne de captures : le rendu est à juger dans le labo.
Essai natif final : `build/worldgen-lab/north203-native-b`, Small/graine 42.
Vraie offrande, interruption à 0/58 chunks, reprise et relais prêts. Cinq igloos
et un laboratoire conservés. Recherche de cave orientée vers un intérieur
suffisamment épais, plutôt que le sommet le plus haut désormais fracturé.
Dans les échantillons : 4218 blocs de troncs, 10450 de feuilles, 21 empreintes
de troncs larges ; tronc le plus haut mesuré 59 blocs (plafond configuré 64).
Sommet : 309 blocs de glace bleue, 63 de glace ordinaire, 2154 de glace compacte,
1219 de neige pleine et 1694 de roche. Pics vanilla : maximum sondé 13 blocs
au-dessus du terrain. Prairie : zéro couche de neige parmi 339 colonnes.
Lac : 8995 blocs de glace et 41795 d'eau, sans fuite ; caverne sondée : 226 blocs
glacés et 1878 d'air. Bordure : 339 blocs rocheux, aucune glace compacte/bleue.
Il s'agit de contrôles locaux, pas d'un comptage de toute l'expansion.
## Livraison
`./gradlew check build assemblePack assembleTestPack
-PsanctuaryFocusedTests=operator,realtime -PsanctuaryAtlasOnly=true` : succès,
144 tâches dont 120 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 beta.200).
Logs : `build/north203-check-build.log` et `build/north203-native-final.log`.
MRpack vérifié : `build/Sanctuary-Test-beta.203.mrpack`, copie identique dans
Downloads avec le guide. Archives, versions, dépendances, empreintes Fabric API,
JAR et 2265 classes compilées vérifiés ; reçu `build/north203-artifact.json`.
12433661 octets ; SHA-256 :
`ba160b4134c0b9dbe402e1834bdbec4f5561bfd6bd9dc147590dd76ee30dbf4f`.
Visite neuve `Sanctuary-North-203-42`, issue de l'essai natif final. Créatif,
commandes activées, Vulkan, vue 32, simulation 4 ; départ au-dessus de la taïga.
Village `(-212,191,-1292)`, forêt `(144,215,-976)`, pics `(-208,278,-944)`,
premier lac `(-247,258,-765)`. Aucun canal public ni instance Prism modifié.
Pas de sauvegarde embarquée dans le pack ni de revendication sur les saccades.
Essai natif Small/42 seulement ; Medium/Large sont contrôlés numériquement.
Ouverture confirmée à 13:12:20 par `NORTH203_VISIT_OPEN`, départ
`(196,292,-931)`, backend Vulkan confirmé dans `build/north203-visit-client.log`.
+90
View File
@@ -0,0 +1,90 @@
# EXP-201 — Nord compact, glacier et bosquets
Branche `codex/north-glacier-beta201`, depuis beta.200 ; retours joueur R019–R020.
## Résultat demandé
Le diamètre du Nord passe de 2048 à 1024 blocs. Remplacer la nappe blanche perçue
par un paysage de glace lisible : pics de glace, glacier, deux lacs gelés visibles,
bosquets localisés et contraste roche/glace/neige. Conserver les cinq igloos et
le laboratoire avec villageois zombie. Les lacs doivent contenir de l'eau sous
leur glace ; la végétation doit être réellement générée, pas seulement déclarée.
Les pics utilisent explicitement `minecraft:ice_spike` et `minecraft:ice_patch`
de Minecraft 26.3, avec leurs placements natifs. Aucune forme de pic recodée.
Le Nord ne doit pas devenir le catalogue de tous les biomes froids. Son identité
est le glacier habité ; les grandes forêts boréales, côtes froides et autres
paysages restent des pistes pour NO/NE. Leur répartition n'est pas décidée ici.
## Contrat de génération
Nouveaux profils 201 et journal `sanctuary-lab-expansions201`, destinés uniquement
aux nouveaux mondes. Les profils et le champ nordique 200 restent disponibles
pour les sauvegardes historiques ; aucune conversion des expansions 2048 déjà
créées, ni régénération de chunks. Île de départ Small/Medium/Large inchangée.
Placement dans l'éventail existant de ±15°. Préparation bornée de l'arrivée et du
relais, puis exploration. Les sept autres directions restent provisoires.
## Vérifications attendues
Contrôle de taille et de direction, stabilité de la génération 200, proportions
et visibilité des surfaces glaciaires, lacs fermés, relief vertical, bosquets et
village. Vérification native de vrais troncs/feuilles, glace de surface non
recouverte et pics élevés. Graines numériques 0, 42 et 4736390610738281858 ; visite
native neuve Small/42. Pas de campagne de screenshots ni d'hydrologie globale.
Les contrôles techniques ne remplacent pas le retour esthétique du joueur.
## Intégration
La 200 posait une couche de neige pendant le traitement du sol, avant les
features végétales ; les arbres natifs de taïga passent par les saplings
`spruce_checked` / `pine_checked`, qui exigent un support viable. La 201 laisse
le sol des bosquets en herbe jusqu'à leur plantation. Les lacs et le glacier ne
reçoivent plus la feature `freeze_top_layer`, afin que leur glace reste visible.
Les zones de pics conservent au contraire le bloc de neige requis par la feature
native `minecraft:spike`. Ses références et sa fréquence restent vanilla.
Le substrat compact associe une crête, des épaules glaciaires, deux champs de
pics natifs, deux bosquets et deux bassins fermés. Caches numériques bornés ;
aucune simulation hydrologique globale. Le village est rapproché du premier lac.
Le relief, les matériaux et le choix de biomes de la 200 gardent leur branche
de génération historique.
## Résultats — 4 octobre 2026
- `north201Smoke` : neuf couples graine/taille, Nord 1024, relief, parts de glace,
bosquets, lacs et champs de pics, confinement des bassins, déterminisme et
routage historique 200. `north200Smoke` reste passant. Les 155 ressources
historiques worldgen du module Test restent identiques, hors preset public.
- Serveur neuf Small/42, `build/worldgen-lab/north201-native-a` : vraie offrande,
interruption à 0/58 chunks, reprise et accès préparés. Cinq igloos, une cave
avec trappe/échelle/coffre/potion ; relais de continuation orienté Nord.
- Échantillon du bosquet : 395 blocs de troncs et 3294 blocs de feuilles
d'épicéa, répartis sur 56 colonnes de troncs (pas un comptage d'arbres entiers).
Champ de pics natifs : 1838 blocs de glace compacte au-dessus du terrain,
maximum sondé de 11 blocs. Lac : 8995 blocs de couverture gelée et 41795 blocs
d'eau ; 7602 surfaces de glace visibles contrôlées, zéro couche de neige dessus.
Caverne : 561 blocs de glace et 2585 blocs d'air sondés. Totaux locaux uniquement.
- `./gradlew check build assemblePack assembleTestPack
-PsanctuaryFocusedTests=operator,realtime -PsanctuaryAtlasOnly=true` : succès,
sept GameTests ciblés et tous les smokes associés, 142 tâches dont 118 exécutées.
La suite native historique complète n'a pas été relancée (limite beta.200).
Logs : `build/north201-check-build.log` et `build/north201-native-a.log`.
Livraison locale : `build/Sanctuary-Test-beta.201.mrpack`, copie dans Downloads
avec le guide. 12 386 623 octets ; SHA-256 :
`37925f012e4096c253f25e573305237e71114448d866a57f3fbad6e3da6b3d89`.
ZIP, dépendances 26.3 / Loader 0.19.5, empreintes Fabric API, JAR et 2252 classes
compilées vérifiés. Les trois tailles sont incluses, aucune sauvegarde embarquée.
Reçu : `build/north201-artifact.json`. Aucun canal public ni Prism modifié.
Visite préparée : `Sanctuary-North-201-42`, nouveau monde issu de l'essai natif.
Départ près du lac en `(-142,323,-705)`, créatif, commandes, Vulkan, vue 32 et
simulation 4. Ouverture confirmée par `NORTH201_VISIT_OPEN` dans
`build/north201-visit-client.log`. Village `(-128,205,-637)`, lac `(-247,258,-765)`, bosquet
`(-324,258,-780)`, champ de pics vers `(-273,-1059)`, relais `(-128,202,-1240)`.
Limites : visite native Small/42 seulement, pas d'essai Windows ou Medium/Large
natif sur cette version. Pas de revendication sur les saccades. Les paysages
NO/NE ne sont pas implémentés ; les anciens mondes ne changent pas de taille.
+129
View File
@@ -0,0 +1,129 @@
# WG-207 — neige, couronnes et manoir du Nord
Branche `codex/north-landscape-beta207`, depuis beta.206 (`6f78054`).
## Contrat
Accord du créateur sur les trois suites du retour R004 : taïga partiellement
enneigée, reliefs Voronoi localisés sur les hauts plateaux et manoir procédural
inspiré du manoir vanilla. Le bois du manoir doit être de l’épicéa (spruce).
Conserver le diamètre de 1024 blocs, le dessous aminci et les grandes failles
d’améthyste validés en visite. Ne pas transformer toute la forêt en neige.
Profil neuf 207 exclusivement. Les profils 206 et antérieurs gardent leur
génération. Aucun monde existant modifié ni chunk régénéré. Contrat des essais :
nouveaux mondes de développement, graines 42 et 0, avec activation et reprise
du Nord pour contrôler la génération et préparer une visite. Aucun déploiement
Prism, publication du canal ou modification de sauvegarde personnelle.
## Implémentation
- Jusqu’à cinq couronnes sur des épaules hautes et soutenues, avec distances
de Voronoi, déformation du contour par bruit et cols entre les sommets.
Ajout local de quelques dizaines de blocs, plafond à Y=308 ; aucune terrasse
globale. Le champ de densité sous le toit initial reste celui de la 206.
- Nappes de neige de plusieurs échelles sur la taïga, avec deux variantes de
biomes froids et les variantes tempérées conservées. Placement sur le sol
réel sous la canopée, remplacement des petites plantes, état enneigé de
l’herbe/podzol. Les troncs, l’eau et les plantes non admissibles sont protégés.
La passe lit les cellules de biome déjà stockées au lieu de refaire le calcul
complet des cavités pour chaque colonne de neige.
- Assemblage natif des pièces du manoir, avec disposition dépendante de la
graine, pièces meublées, coffres et occupants vanilla. Conversion locale des
bois principaux en épicéa, panneaux en calcite, soubassements en tuf taillé et
tapis froids. Les propriétés des escaliers, dalles et portes sont conservées.
- Recherche bornée d’un site adapté à l’emprise réelle, hors igloos, arrivée,
relais et couronnes ; contrôle des appuis colonne par colonne. Aucun
terrassement massif ni fondation sans limite vers le vide. Si une graine ne
possède pas de site admissible, le manoir est omis avec un diagnostic plutôt
que de faire échouer l’expansion.
- Approche de trois blocs de large en escaliers de tuf, raccordée au terrain
devant l’entrée ; appuis et dégagement contrôlés dans les essais natifs.
## Vérifications de compilation
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
-PsanctuaryFocusedTests=base204,north206,north207 -PsanctuaryAtlasOnly=true` :
succès, contrôles purs et six GameTests ciblés passés. Journal :
`build/north207-check-build.log` (5 min 42 s).
Après les dernières corrections locales (accès, portillon en épicéa et lecture
des biomes pour la neige), reconstruction et six GameTests repassés avec
`:sanctuary:runGameTest build assemblePack assembleTestPack
:sanctuary-test:exportDuoLaunch -x :sanctuary:check`, mêmes propriétés de sélection.
Journal final : `build/north207-final2-build.log`, succès en 55 s. Les contrôles
purs historiques déjà passés n’ont pas été répétés à cette étape. La suite
historique complète des GameTests n’est pas revendiquée.
Les tests ciblés vérifient le maintien des anciens presets dans les trois tailles,
la conservation du dessous 206, l’étendue limitée du nouveau relief et les
propriétés d’orientation des escaliers/portes après conversion en épicéa.
Les trois fichiers de densité de l’île initiale sont identiques à ceux de la 206.
## Essais natifs sur le build final
Profils Small, nouveaux mondes `north207-final` (42) et `north207-final0` (0).
Offrande réelle, refus des offrandes incorrectes et des doublons, interruption
à 0/58 puis reprise des chunks préparés et annonce SGA : succès. Cinq igloos
et une cave de guérison complets sur chaque graine.
| Relevé | Graine 42 | Graine 0 |
| --- | --- | --- |
| Couronnes / ajout maximal relevé | 5 / 52 blocs | 5 / 45 blocs |
| Colonnes relevées avec élévation > 2 blocs / autres | 191 / 1 767 | 192 / 1 790 |
| Échantillons profonds identiques à la 206 | 52 989 | 51 958 |
| Améthyste / faces ouvertes dans la région inspectée | 7 731 / 1 928 | 12 494 / 3 567 |
| Sols enneigés dans la zone de taïga enneigée inspectée | 2 225 | 1 514 |
| Sols dégagés / enneigés dans la taïga tempérée inspectée | 2 209 / 0 | 2 372 / 0 |
| Pièces natives du manoir | 544 | 547 |
| Fondation maximale du manoir | 5 blocs | 6 blocs |
| Coffres conservant une table de butin native | 5 | 5 |
| Cellules de biome stockées contrôlées / incohérences | 1 944 / 0 | 1 944 / 0 |
Les deux manoirs ont des planchers et escaliers en épicéa, des panneaux en
calcite et du tuf taillé. Aucun bloc de planches de chêne/chêne noir ni feuille
d’épicéa envahissante dans les volumes examinés. L’approche possède trois
marches centrales contrôlées avec support et deux blocs d’air de dégagement.
Les autres coffres des pièces vanilla peuvent être des rangements sans table
de butin : ne pas confondre nombre total de coffres et récompenses.
Ces nombres sont des relevés locaux ou sur grille, pas un inventaire de l’île.
L’essai préliminaire `north207-a` avait déjà passé les contrôles de paysage et
de manoir ; les deux essais ci-dessus utilisent le JAR final, après optimisation
de la passe de neige et vérification supplémentaire de l’accès et du butin.
Les essais finaux tournaient en parallèle : leurs durées ne constituent pas
une comparaison de performance avec la 206.
## Livraison locale
MRpack normal `build/Sanctuary-beta.207.mrpack`, copié dans `~/Downloads/`.
ZIP intact, JAR identique au build final, profils courants et historiques des
trois tailles présents, aucun mod Test ni monde embarqué. Minecraft 26.3,
Fabric Loader 0.19.5. Reçu : `build/north207-mrpack-receipt.json`.
SHA-256 : `1f6caca543dddea4e961bba6737a9d4a0e2fbb2935fb17a3c2c94d8f1a7a635d`.
Nouvelle visite `north207-visit`, graine 42, copiée depuis le monde vérifié et
arrêté. Vue 32 chunks, simulation 5, commandes et vol créatif. Position initiale
préparée : **(49.5, 302, -1285.5)**, face au manoir. Repères de visite :
- Manoir : **(-27, 252, -1244)**.
- Taïga enneigée : **(-192, 251, -704)**.
- Taïga dégagée : **(32, 253, -720)**.
- Sommet ajouté : **(-448, 303, -1008)**.
Les repères indiquent les régions contrôlées ; certains sont au-dessus du sol
pour la visite en vol. Aucun canal public, serveur personnel ou instance Prism
modifié. Les mondes précédents sont conservés.
Le client confirme Vulkan / MoltenVK et `NORTH207_VISIT_OPEN` à **(49, 302,
-1286)** le 5 octobre à 02:28. La visite est ouverte ; le rendu reste à juger
par le créateur, sans prétendre à une inspection graphique exhaustive.
## Limites
Le manoir utilise les pièces et le butin natifs avec une palette propre au Nord.
Il ne possède pas de nouvelle entrée `/locate` ; son placement appartient au
générateur local. L’admission peut omettre le manoir sur une graine sans appui
admissible. Aucun jugement esthétique global, essai Windows ou benchmark
comparatif n’est déduit des vérifications techniques.
+77
View File
@@ -0,0 +1,77 @@
# WG-205 — Nord en bruit 3D natif
Branche `codex/north-noise-beta205`, depuis beta.204 (`2463db7`).
Retour : montagnes reliées et trop étirées, démarcations de biomes suivant les
chunks. Retirer la surélévation Peaks et les masses ajoutées au-dessus du bruit
de base ; habiller ensuite les surfaces réellement générées.
Contrat : nouveau profil 205 uniquement, Nord de 1024 blocs. Taïga géante,
glaces et cinq igloos conservés. Île de départ et profils 200–204 inchangés.
Aucune migration, aucun ancien chunk modifié. Essais sur nouveaux mondes de
développement, graines 42 et 0. Publication et installation Prism non demandées.
## Changements
Le Nord 204 cumulait la déformation verticale Peaks, un agrandissement horizontal
×2 / vertical √2 et les corps supérieurs de la densité Population. Le profil 205
utilise le champ natif sans ces déformations : enveloppe de 1024 directement,
bruit à son échelle d'origine et cavités conservées. Le champ n'est pas rehaussé
après coup pour former une chaîne de montagnes. Les anciennes classes 204 restent
inchangées et les autres directions conservent leur relief.
Le champ d'écologie 204 arrondissait X/Z par groupes de huit blocs. La hauteur,
la pente et les seuils de glace pouvaient alors changer d'un carré au suivant.
Le nouveau lecteur interpole les hauteurs entre les mesures ; il mesure à nouveau
une colonne quand un voisin est vide, sans fabriquer un sol par interpolation.
Les sols sont appliqués sur la vraie hauteur du chunk déjà généré. La ligne de
froid est ajustée au nouveau relief moins élevé, avec taïga géante, neige, pics
natifs et cavernes glacées ; les igloos cherchent des épaules soutenues.
## Vérifications — 5 octobre 2026
- Cinq GameTests ciblés passés (`base204,north205`, plus contrôle commun) :
presets courants/historiques sans Test, pente continue sur les frontières X/Z
négatives et positives, indépendance des workers, absence d'étirement et de
surélévation 205, conservation de l'ancien comportement 204 et des autres axes.
- Small, graine 42, monde neuf `north205-final` : offrande réelle, refus des doublons,
interruption/reprise, préparation de 58 chunks, cinq igloos et une cave de
guérison vérifiés. Centre `(-128, -944)`, arrivée `(-160, 253, -1024)`.
- Même graine : échantillons de surface Y=87–251, épaisseur maximale 179 blocs,
taïga géante avec un tronc de 59 blocs, cavité avec air et glace, glacier présent.
Zéro incohérence entre les 3 456 cellules de biome sauvegardées aux jointures
des zones contrôlées et le champ mondial. Reçus dans
`build/worldgen-lab/north205-final/small/42/`.
- Le premier diagnostic de grotte pointait le massif le plus épais, contenant
surtout de la roche. Le contrôle cherche maintenant une poche vide sous une
couverture suffisante avant de vérifier air et glace dans les chunks réels.
Le terrain n'a pas été modifié pour satisfaire ce diagnostic.
- Small, graine 0, monde neuf `north205-final0` : mêmes contrôles de l'expansion,
cinq igloos, cavernes et glaciers passés. Échantillons Y=84–255, tronc maximal
61 blocs. Zéro incohérence sur 3 456 cellules de biome supplémentaires. Le
contrôle de glacier inclut la glace normale, adaptée à ces altitudes, et
exige plus de 50 blocs glacés dans la zone examinée ; il ne suppose plus la
présence obligatoire de glace compacte ou bleue. La graine 0 en contient 117.
- `./gradlew check build assemblePack assembleTestPack
-PsanctuaryFocusedTests=base204,north205 -PsanctuaryAtlasOnly=true` : succès,
journal `build/north205-check-build.log`. La suite native complète n'est pas
revendiquée. Après la dernière correction du diagnostic Test, sa compilation,
ses tests et son build ont également passé ; une répétition inutile des tâches
du mod principal a été interrompue. Les deux essais natifs finaux utilisent
ce diagnostic corrigé. Le JAR du mod normal n'a pas changé après sa validation.
- MRpack normal exporté et vérifié : contenu ZIP intact, JAR identique au build,
preset public 205, profils historiques présents, aucun Test ou monde embarqué.
SHA-256 : `63023e8ff355afb94223bd697a71ae1d6ad72c80dca2f5c502664627f3d8d572`.
Les mesures de hauteur sont des échantillons, pas un relevé exhaustif de tous les blocs. La
continuité numérique et les biomes stockés sont testés ; l'appréciation visuelle
des transitions reste à confirmer en visite. Aucune validation Windows revendiquée.
## Livraison locale
`build/Sanctuary-beta.205.mrpack`, copié dans `~/Downloads/`. Une copie neuve du
monde vérifié est ouverte dans `north205-play`, graine 42, en créatif avec
commandes autorisées, Vulkan, vue 32 chunks et simulation 5. La visite commence
au-dessus de la taïga en `(-143.5, 331, -677.5)` ; `NORTH205_VISIT_OPEN` et
le backend Vulkan sont confirmés dans le journal. Aucun monde 204 n'est converti.
Le canal public et l'instance Prism ne sont pas modifiés.
+113
View File
@@ -0,0 +1,113 @@
# WG-208 — crêtes et replats glacés du Nord
Branche `codex/north-ridges-beta208`, depuis beta.207 (`bb10c24`).
## Contrat
Dernier affinage demandé avant clôture du Nord : remplacer les couronnes trop
rondes par des arêtes anguleuses, des sommets pointus et des entailles d'érosion.
Ajouter quelques replats à différentes altitudes avec des poches de glace.
Les formations de glace au-dessus restent une piste : privilégier quelques
aiguilles naturelles localisées, sans ajouter de bâtiment.
Conserver la taille de 1024 blocs, la taïga partiellement enneigée, le dessous
aminci, les failles d'améthyste, les igloos et le manoir en épicéa validés.
Profil neuf 208 uniquement. Les générations 207 et antérieures restent
disponibles et inchangées. Essais autorisés sur de nouveaux mondes de
développement, graines 42 et 0, avec activation/reprise du Nord. Préparer une
nouvelle visite solo Vulkan à 32 chunks ; aucune sauvegarde existante modifiée.
Aucun déploiement Prism ni publication du canal public.
## Réalisation
- Les mêmes cinq sites de relief qu'en 207 reçoivent des faces asymétriques.
La distance aux sites Voronoi sépare les massifs ; cinq plans inégaux dessinent
leurs arêtes. La pente reste marquée près du sommet au lieu de s'y arrondir.
Des entailles par bruit cohérent interrompent localement les flancs. Il ne
s'agit pas d'une simulation d'érosion ou d'une hydrologie globale.
- Jusqu'à deux replats par massif, de rayons 15 et 19 blocs, à des hauteurs
différentes. Ils sont admis uniquement au-dessus du toit rocheux existant,
avec raccordement progressif sur leur bord. Aucune quantification générale
des altitudes ni succession de terrasses sur toute l'île.
- Petites cuvettes de glace sur glace compacte, encaissées d'un bloc, et
aiguilles de glace sur certaines rives. Ces poches sont gelées jusqu'au fond :
elles n'ajoutent pas d'écoulements ni de nouvelles cascades.
- Densité profonde de la 206 conservée ; écologie et neige de la 207 réutilisées,
y compris leurs identifiants de biomes. Manoir et igloos adaptés au nouveau
champ de relief, avec leurs palettes et contenus conservés. Les anciens
générateurs et ressources 207 restent disponibles.
- Les calculs de sommet sont mémorisés par colonne dans un cache borné par
worker. Aucun parcours global supplémentaire à chaque tick.
## Vérification
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
-PsanctuaryFocusedTests=base204,north207,north208 -PsanctuaryAtlasOnly=true` :
succès en 4 min 47 s, contrôles purs et sept GameTests ciblés passés.
Journal : `build/north208-check-build.log`. Les tests vérifient notamment les
anciens presets des trois tailles, le maintien de la densité profonde, le dénivelé
près des sommets, les appuis des cuvettes et le déterminisme entre workers.
La suite historique complète des GameTests n'est pas revendiquée.
Les dernières additions au diagnostic et au lanceur du module Test sont
recompilées et assemblées séparément, sans répéter les contrôles purs déjà passés :
`build/north208-lab-final.log`, succès. Les trois fichiers de densité de l'île
principale sont strictement identiques à la 207.
Le premier essai 42 passe tous les contrôles. Sur la graine 0, un replat
pouvait remplir un creux trop profond (élévation locale relevée de 94 blocs).
L'admission exige désormais un toit proche sur toute l'emprise ; une garde
par colonne empêche de combler les trous profonds. Un test de régression
reproduit une cavité sous un replat. Reconstruction finale avec `:sanctuary:runGameTest build assemblePack assembleTestPack
:sanctuary-test:exportDuoLaunch -x :sanctuary:check`, sélection `base204,north208` :
succès en 1 min 1 s ; six tests ciblés, dont la régression du trou profond,
passés. Les contrôles purs précédemment passés ne sont pas répétés à cette étape.
Journal : `build/north208-final-build.log`. Les essais finaux `north208-final` (42) et `north208-final0` (0) passent sur le
JAR final. Offrandes réelles, refus des doublons, interruption à 0/58, reprise
jusqu'à 58 chunks FULL et annonce SGA contrôlés. Serveurs arrêtés proprement.
| Relevé | Graine 42 | Graine 0 |
| --- | --- | --- |
| Sommets / élévation maximale relevée | 5 / 50 blocs | 5 / 44 blocs |
| Colonnes relevées élevées / autres | 183 / 1 775 | 197 / 1 785 |
| Dénivelé moyen à 8 blocs de chaque sommet | 6,6–9,1 blocs | 5,6–6,9 blocs |
| Replats glacés admis | 6 | 5 |
| Glace dans les cuvettes inspectées | 1 972 blocs | 2 000 blocs |
| Glace compacte des formations de rive inspectées | 360 blocs | 236 blocs |
| Échantillons profonds identiques à la 206 | 52 989 | 51 958 |
| Améthyste / faces ouvertes inspectées | 7 731 / 1 928 | 12 494 / 3 567 |
| Cellules de biome vérifiées / incohérences | 1 944 / 0 | 1 944 / 0 |
La neige et les forêts dégagées restent présentes. Cinq igloos et une cave de
soins par île. Manoirs de 544 et 547 pièces, aux mêmes emplacements qu'en 207,
avec trois marches d'accès vérifiées et cinq coffres à table de butin native
chacun. Les comptages sont des relevés locaux ou sur grille, pas un inventaire
exhaustif. Les essais simultanés ne constituent pas un benchmark comparatif.
## Distribution locale
MRpack normal exporté et contrôlé : archive ZIP intacte, JAR strictement identique
au build, profils 207 et 208 Small/Medium/Large présents, aucun module Test ni
monde embarqué. Minecraft 26.3 / Fabric Loader 0.19.5.
Reçu : `build/north208-mrpack-receipt.json`. Copie dans `~/Downloads/`.
SHA-256 : `bf1006efca537996fe4e33750ff08cbf821d2735bc03e5ce517da7fd62922845`.
## Limites
La retouche ne résout pas à elle seule le temps de chargement signalé. Aucun
benchmark comparatif, jugement esthétique global ni essai Windows n'est déduit
des vérifications. La clôture visuelle du Nord revient à la visite du créateur.
## Visite solo
Nouveau monde `Sanctuary-North-208-42` dans
`build/worldgen-lab/north208-final-visit/small/42/client/saves/`, copié depuis
l'essai final arrêté. Vue 32 chunks, simulation 5, créatif en vol et commandes.
Position initiale : **(-389.5, 325, -1060.5)**, face au sommet **(-448, 301, -1008)**.
Replat voisin : **(-457, 278, -1034)** ; second niveau : **(-406, 262, -986)**.
Manoir conservé : **(-27, 252, -1244)**. Anciennes visites préservées.
Le client confirme Vulkan / MoltenVK et `NORTH208_VISIT_OPEN` le 5 octobre
à 03:23:59, en **(-390, 325, -1061)**. Visite ouverte ; aucune inspection graphique
exhaustive ni validation esthétique du créateur n'est déduite de ce lancement.
+66
View File
@@ -0,0 +1,66 @@
# beta.162 — scène du tableau et conversation
Ticket issu du retour de séance du 24 septembre : conserver Retour/Actualiser en
haut, montrer l’auteur avec son skin orienté vers la souris et sa demande dans
une bulle colorée, puis les réponses à droite (dessous sur GUI étroit).
Modification client uniquement, sans migration, écriture dans les mondes ni
changement des contrats fichier/MariaDB. Réponses, modération et suivi gardent
leurs validations serveur. Le portrait est un rendu GUI, pas une entité.
## Présentation
- Retour et Actualiser restent hors de la zone défilante.
- Le portrait utilise le skin de la connexion de l’auteur s’il est présent,
sinon le cache de profils Minecraft asynchrone. Le skin natif de repli apparaît
pendant le chargement ou si le profil ne peut pas être résolu (notamment les
comptes fictifs/hors ligne). Aucun téléchargement synchrone dans le rendu.
- Une bulle persistante encadrée montre catégorie/état, titre puis texte complet.
Information : jaune clair sur fond sombre jaune ; les autres catégories gardent
leurs couleurs. Les cartes de liste et du menu pause suivent aussi ce jaune.
- Le portrait tourne doucement dans des angles bornés selon la position de la
souris, sans capturer ses mouvements et sans clic requis.
- Demande et discussion défilent séparément si l’espace le permet ; le champ de
réponse et son bouton restent en bas de la discussion. Sur GUI étroit/bas,
un défilement unique garde les réponses sous la scène.
- Matériaux, lieu, récompense, suivi, visages des réponses et modération sont
conservés. Les détails d’une demande vide ne sont plus affichés artificiellement.
- Aucune animation de parole ni synchronisation vocale : « parle » désigne ici
la mise en scène visuelle avec la bulle.
## Vérification
- Compilation Java 25 / Minecraft 26.3 réussie.
- Parcours natif Vulkan : `NOTICE162_SCENE_PASS`, puis
`SEARCH159_CLIENT_PASS mode=file`, build réussi en 1 min 59 s.
- FR/EN, GUI 2/3/4 : scène, passage en colonne unique, boutons de retour au-dessus,
réponse au-dessus du footer en deux colonnes, angles du portrait bornés et
changement d’orientation avec la souris.
- Brouillon conservé pendant les redimensionnements ; publication d’une réponse
et lecture de son contenu après rechargement serveur vérifiées.
- Régressions communautaires : photos, recherche, suivi/désabonnement, marqueur
de carte et infobulle, restrictions de l’Intendance toujours validés.
- Captures relues : `build/qa-beta162/0042_notice162-scene-fr_fr-2.png` et
`0043_notice162-scene-fr_fr-3.png`. Conversation : `0048_notice162-conversation.png`.
- `./gradlew check build assemblePack` lancé : 252 GameTests terminés, 229 réussis
et 23 échecs, exactement les mêmes qu’en beta.161 (aucun ajouté/retiré).
Liste comparée : `build/session162-server-failures.json`.
- Contrôles restants et assemblage avec exclusion ponctuelle de `runGameTest` :
réussis en 3 min 16 s (`check build assemblePack -x :sanctuary:runGameTest`).
Aucune assertion désactivée dans les sources. Log : `build/beta162-assembly.log`.
Aucune modification de persistance : cette passe native utilise le mode fichier ;
le laboratoire MariaDB partagé a été relancé avec la même interface, KokaLab
connecté sur le monde existant `duo-flat-160`, Alice/Bob recréés, shader désactivé. Les figurants
et profils hors ligne peuvent afficher un skin Minecraft de repli.
## Livraison locale
JAR : `mods/sanctuary/build/libs/sanctuary-beta.162.jar`.
Pack assemblé : `build/packwiz`.
SHA-256 : `35c5d82eba110ee2150f73baf6341efc90f87971965a3b4dd2bcd04add0a59ff`.
Branche `codex/notice-scene-beta162`, tag local `beta.162`. Anciens JAR conservés.
Aucune publication distante ni synchronisation de Prism dans cette livraison.
Les 23 échecs préexistants restent ouverts ; les essais graphiques ne démontrent
pas la résolution réseau d’un skin officiel absent dans ce laboratoire hors ligne.
+68
View File
@@ -0,0 +1,68 @@
# ORIGIN-182 — galerie inférieure et rosace
Suite du retour en jeu sur beta.181, le 30 septembre 2026. Branche
`codex/origin-gallery-beta182`, dans le checkout de développement réutilisé
`rocky-ecology-beta178`. La palette naturelle de l’origine est validée par le
créateur. Les élévations gênent les huit directions ; elles doivent être
placées entre les axes. Essayer une cloche vitrée en rosace et développer
la scène souterraine. L’origine reste en l’air.
La mention « le truc dans les airs » est interprétée ici comme la rosace,
en attendant une éventuelle précision ; l’ISS reste un chantier séparé.
## Contrat du nouveau monde
Nouveau preset facultatif `sanctuary_test:gallery_v1`, profil `gallery`,
graine 42. Les profils précédents et la génération normale restent disponibles
avec leur génération propre. Aucun ancien monde, chunk ou format de sauvegarde
n’est modifié. Aucune expansion ni dimension n’est activée par ce prototype.
La galerie sélectionne une cavité centrale sous X=0/Z=0 par un échantillonnage
borné du champ de densité existant. Deux chambres voisines forment une boucle
avec elle ; les passages suivent des failles inclinées, les sols ondulent et
les plafonds sont voûtés. Roche dominante, calcite par veines, mousse ponctuelle,
quelques reliefs de tuf. Pas de murs rectangulaires plaqués sur toute la caverne.
Un socle d’obsidienne central et deux montants sombres interrompus donnent un
premier emplacement au portail inférieur. C’est une scène architecturale :
ni portail actif, ni recette d’allumage ou téléportation ne sont implémentés.
L’origine conserve la palette, le sol à huit directions et le bloc en
(0,320,0), lumineux et monochrome. Une cloche de verre clair et blanc avec
huit nervures de cuivre patiné remplace les trois élévations. Les supports
sont entre les axes ; huit ouvertures basses conservent vues et passages.
L’ISS, les huit salles d’ancres et les trois secteurs de gemmes ne sont pas
ajoutés dans ce lot.
Les deux lieux sont posés par chunk à la génération, sans ticker, sans
recherche globale d’eau et sans journal de progression. Le plan souterrain
est calculé une fois pour la source de biomes puis réutilisé. Une sauvegarde
recharge les blocs, elle ne reconstruit pas les lieux.
## Vérifications
Compilation et export du lanceur réussis. Monde neuf `solo182a/gallery/42` :
contrôles de la beta.180 conservés (567 échantillons de densité, trois cerisiers,
bassins de 1 232 et 1 221 blocs, cinq spawners et quatre caches avec les gemmes).
Zéro région d’hydrologie calculée.
La galerie contient 1 558 colonnes sculptées ; 1 514 surfaces praticables
appartiennent au même réseau, connecté par marches d’un bloc maximum.
Les trois centres de salle sont en (0,175,0), (-34,169,-26), (-38,146,24).
Le socle porte l’obsidienne en (0,177,0). La rosace compte 1 841 blocs avec
le fragment rocheux : huit axes libres à hauteur du joueur et noyau lumineux
sans relais activé. Rapport local `build/gallery182-quick-result.json`.
Arrêt du serveur de préparation et sauvegarde terminés proprement.
Solo neuf préparé sous `visite182/gallery/42`, `Sanctuary-Gallery-182-Solo`,
vue 32, créatif et commandes, première vue sur la galerie.
Visites : galerie `/tp 0.5 177 7.5 180 0` ; rosace
`/tp 0.5 319 5.5 180 0`. Rendu et proportions à juger en jeu sur la graine 42 ;
aucune autre graine ni capture du rendu n’est revendiquée.
Suite générale `check build assemblePack assembleTestPack` réussie en 8 min 1 s,
265/265 GameTests ; journal `build/gallery182-check-build.log`.
Entrée dans le solo confirmée depuis par le créateur. Le journal
`build/gallery182-solo.log` enregistre KokaLab connecté le 30 septembre à
02:25:12, vue 32 chunks. Son retour valide la palette, la rosace et les étangs ;
la correction du portail et les lieux manquants sont suivis dans
[DISCOVERY-183](island-discovery-beta183.md).
+96
View File
@@ -0,0 +1,96 @@
# ORIGIN-181 — repère central dans le ciel
Retour du 30 septembre 2026 sur beta.180. Branche `codex/origin-landmark-beta181`.
Le créateur apprécie le relief global et le donjon minier. Le prochain résultat
à visiter est une petite construction ouverte qui signale le centre du monde,
avec le bloc originel exactement en **X=0, Y=320, Z=0**. Cette décision remplace
les positions antérieures envisagées pour ce bloc ; elle ne rétablit pas le palais.
## Premier résultat
Nouveau preset facultatif `sanctuary_test:origin_v1`, profil `origin`, graine 42.
Terrain, écologie, bassins, cerisiers et donjon de beta.180 réutilisés. Un fragment
rocheux porte une rose des vents à huit directions, en tuf, calcite et deepslate,
avec cuivre patiné, quelques mousses et un croissant brisé. Le sol principal est
à Y=318, le piédestal à Y=319 et le Bug Rock à Y=320. La silhouette culmine à 328.
Circulation ouverte, pas de toiture ni de conteneur. Environ 19 blocs de large.
Le bloc réutilise `sanctuary:origin_block` et sa texture existante : allumé en
noir et blanc, lumière 15, masque des huit relais à zéro. Aucune ancre n’est
activée. Ce premier lieu est un repère visuel ; pas encore d’interaction, de
quête ni de trajet d’accès en survie. Le créatif et les commandes du labo
permettent de juger le volume avant de définir le parcours.
La pose se fait une seule fois par chunk, pendant la décoration native, sur
quatre chunks autour de l’origine. Aucune recherche régionale, aucun calcul
par tick, aucune entité ni hydrologie supplémentaire. La patine et la base
rocheuse varient avec la graine ; la silhouette reste celle de ce premier essai.
## Sauvegardes et validation
Nouveau monde uniquement. Le preset beta.180 et la génération normale ne
reçoivent pas ce lieu. Aucun ancien chunk ni format de sauvegarde n’est migré.
La reprise recharge les blocs sauvegardés sans reconstruction. Pas de publication
du canal, de mise à jour Prism ni d’installation serveur personnel.
Le contrôle natif vérifie l’origine exacte, la présence du plan dans les quatre
chunks, la circulation, l’ouverture vers le ciel et l’état monochrome lumineux.
Les vérifications de beta.180 restent appliquées au nouveau profil.
Essai natif `solo181a`, graine 42, réussi : 1 224 blocs du repère présents,
quatre chunks, origine et passages conformes, 567 comparaisons de densité
conservées et zéro région d’hydrologie. Trois cerisiers, surfaces de bassins
de 1 232 et 1 221 blocs, cinq spawners et quatre caches avec les quatre gemmes
validés. La lecture des chunks enregistrés confirme le bloc à (0,320,0),
`lit=true`, `relays=0`. Rapport : `build/origin181-quick-result.json`.
Compilation et export du lanceur réussis. Le solo neuf
`visite181/origin/42`, nommé `Sanctuary-Origin-181-Solo`, est ouvert le
30 septembre à 01:59 : Vulkan Apple M1, KokaLab connecté en (18.5,333,23.5),
vue 32 chunks. Approche à pied pour la visite : `/tp 0.5 319 5.5 180 0`.
L’appréciation esthétique reste à faire en jeu ; aucune capture du rendu
n’est revendiquée. Seule la graine 42 est validée dans cette itération.
Suite générale `check build assemblePack assembleTestPack` réussie en
12 min 53 s, journal `build/origin181-check-build.log` dans le checkout
`storyquest-beta173`. Contrôles et assemblages terminés avant la suite beta.182.
Retour en jeu du créateur : palette et caractère naturel validés. Les trois
élévations empiètent sur les directions ; prochaine variante avec supports
entre les huit axes et piste d’une cloche vitrée en rosace. Garder l’origine
en l’air pendant l’essai. Développer d’abord la galerie souterraine, puis
le lieu aérien ; précision sur ce dernier demandée pendant la séance.
## Suite de la séance : décisions et pistes, pas encore implémentées
- **Gemmes :** trois secteurs souterrains distincts, émeraude, rubis et saphir,
avec veines exposées sur les surfaces rocheuses. Un stock limité comparable
aux diamants à l’échelle de l’île, pas par échantillon de chunks. Le chiffre
exact par gemme reste à régler. Proposition : compter séparément le stock
généré de chaque gemme ; densité locale lisible, rareté globale préservée.
- **Soufre :** intégrer une poche de sulfur caves sur l’île principale. Le
profil beta.180 ne contient pas ce biome, même si le socle historique connaît
le soufre. Choisir une poche dédiée plutôt que repeindre les cavités humides.
- **Huit ancres :** salles naturelles sculptées dans leur matière locale,
creux, reliefs irréguliers, bas-reliefs, végétation et piédestal portant le
bloc existant. Chaque lieu a sa géographie ; pas de ponts imposés vers le centre.
- **Galerie inférieure :** caverne centrale sous X=0/Z=0, salles reliées par
des failles, dénivelés et emplacement de portail en obsidienne. Altitude,
emprise et lien exact avec les dimensions à préciser. Le palais abandonné
n’est pas réintroduit. Proposition technique : sonder un nombre borné de
points du champ de densité existant, sélectionner une cavité et ne retoucher
que ses passages ; calcul à la génération, aucun raycast permanent.
- **Activation :** envie de remplacer le briquet par un objet fabriqué au
métabli, reliant préparation et découverte. Recette, composants et effet
encore ouverts ; ne pas modifier le portail vanilla avant ce contrat.
- **Expansions :** privilégier l’expérience de surface, avec des masses tantôt
horizontales, tantôt verticales. La profondeur dépendra de chaque île ; ne
pas généraliser automatiquement toutes les cavités de Sanctuary à chaque île.
- **ISS :** chantier architectural séparé dans la bande Y=512–640. Des
schematics pourront servir à analyser échelle, modules, circulation et
palette ; construire ensuite un plan original. Aucun fichier ISS reçu ici.
Fonction et quête restent à définir.
Ordre proposé pour les essais suivants : origine visible → une salle d’ancre
dans une cavité existante → trois secteurs de gemmes et une poche de soufre →
déclinaison des autres ancres et galerie inférieure. Chaque essai garde son
monde témoin et se juge en solo ; pas de grande étude scientifique imposée.
+254
View File
@@ -1,5 +1,13 @@
# Distribution packwiz et Prism
## Rattrapage des releases du 24 septembre 2026
Les binaires conservés des beta.145–151 et beta.154–166 sont publiés dans Gitea.
La beta.144 existante reste intacte ; les 152–153 demeurent des chantiers non livrés.
[Inventaire, empreintes et limites](publications-beta144-166.md).
Cette publication ne modifie ni le canal packwiz ni les installations Prism.
Sanctuary Beta utilise une seule instance Prism, synchronisée avant chaque
lancement par packwiz. Le canal reste à l'adresse :
@@ -14,6 +22,252 @@ JAR Sanctuary sont des pièces jointes de releases Gitea. Aucun JAR de mod ou
dépendance téléchargée n'entre dans l'historique Git. Le canal Beta est distinct
de l'ancien pack 26.2.
## beta.144 — Eau naturelle pixélisée (préparation)
Trois profils de couleur/transparence selon le fond, océans clairs et brume
aquatique adaptée. Le [ticket de livraison](natural-water-beta144.md) décrit
la teinte olive retenue, les contrôles et le protocole de performance.
La publication et la synchronisation attendent la validation finale isolée.
Les textures restent à beta.121 ; Minecraft 26.3 et les dépendances sont conservés.
## beta.143 — Neige saisonnière en temps réel
Accumulation espacée par un facteur 12 et fonte par le facteur temps réel 72,
avec le sampler natif de précipitation conservé. Protections inchangées pour
la neige construite, les biomes froids, l'hiver, les profils neigeux et la
météo Vanilla. [Contrat et vérifications](realtime-snow-melt-beta143.md).
[Release beta.143](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.143)
publiée ; canal `bafff5e9fcdd95c5dd184953a34ada805e455797`. Deux synchronisations
isolées puis deux dans l'instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.143/`. Archives vérifiées
dans `sanctuary-beta/build/`.
## beta.142 — Vulkan par défaut et stabilité PBR
Vulkan natif prioritaire, rafraîchissements PBR stables et intensité initiale
80 %, calculs de reflets bornés. [Contrat et vérifications](pbr-refresh-beta142.md).
[Release beta.142](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.142)
publiée ; canal `d661260e2bbabb0326c86d6cc543daf986979596`. Deux synchronisations isolées
puis deux dans l'instance Sanctuary Beta réussies. Les 923 fichiers personnels
suivis gardent leurs hashes. Aucun monde personnel ouvert ; sauvegarde préalable
`sanctuary-backups/before-beta.142/`. Archives vérifiées dans `sanctuary-beta/build/`.
Un choix OpenGL explicite reste conservé : sélectionner Vulkan dans les réglages
vidéo et redémarrer pour changer ce choix. La capture Windows de bruit en
mouvement reste à reconfirmer sur son pilote ; les contrôles OpenGL/Vulkan Mac
et la correction du domaine numérique du reflet sont documentés dans le ticket.
## beta.141 — Direction des lumières pour les normales PBR
Directions locales mises en cache, sources portées, confiance réduite lorsque
les sources s'opposent et fondus. Activer PBR et Lumières colorées ; portée PBR
de 32 blocs. [Contrat et vérifications](directional-lights-beta141.md).
[Release beta.141](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.141)
publiée ; canal `7e6c84400f80db24bf5204cd21d628194ae9f0f7`. Deux synchronisations isolées
puis deux dans l'instance Sanctuary Beta réussies. Les 923 fichiers personnels
suivis gardent leurs hashes. Aucun monde personnel ouvert ; sauvegarde préalable
`sanctuary-backups/before-beta.141/`. Archives vérifiées dans `sanctuary-beta/build/`.
## beta.140 — Lumières portées et fondus
Couleurs des objets en main et sur la tête, distances 8/16/32/64 et fondus
préservant la teinte. Torches natives par défaut, option chaude, cuivre vert
et redstone rouge. [Contrat et vérifications](colored-dynamic-beta140.md).
[Release beta.140](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.140)
publiée ; canal `2c360a0759d4a164f82c89ac2bef04ff69d50875`. Deux synchronisations isolées
puis deux dans l'instance Sanctuary Beta réussies. Les 923 fichiers personnels
suivis gardent leurs hashes. Aucun monde personnel ouvert ; sauvegarde préalable
`sanctuary-backups/before-beta.140/`. Archives vérifiées dans `sanctuary-beta/build/`.
## beta.138 — Densité des rayons selon la météo
Brouillard plus dense et diffus, précipitations et atténuation de l'orage.
Réglage manuel conservé, aucune nouvelle option ni modification de sauvegarde.
[Contrat et vérifications](shader-beta138.md).
[Release beta.138](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.138)
publiée ; canal `c049423de1971079b9d61874d83adeb6f1ad49f7`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.138/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.137 — Rayons solaires volumétriques
Rayons à travers les ouvertures et le feuillage, activés à 35 %, indépendants
du bloom et de l'affichage des ombres de surface. Carte solaire partagée.
[Contrat et vérifications](shader-beta137.md).
[Release beta.137](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.137)
publiée ; canal `68cb39a5edbf5d34def02f670e2488ee852605b8`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.137/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.136 — Lens flare rectangulaire
Rectangles à dégradé doux pour le soleil et la lune, activés à 30 % et
réglables indépendamment du bloom. Occultation par les blocs et phases lunaires.
[Contrat et vérifications](shader-beta136.md).
[Release beta.136](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.136)
publiée ; canal `dd5b545a7cfbb957f2c70e9dc17034b44caef98f`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.136/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.135 — SSGI en proximité et nouveaux défauts
Normales stables près des surfaces, atténuation progressive du rebond au contact.
Bloom à 20 %, PBR et SSGI activés par défaut, choix personnels existants conservés.
[Contrat et vérifications](shader-beta135.md).
[Release beta.135](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.135)
publiée ; canal `5b0df577fcd036937c25be3a1f4580f9db3103a1`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.135/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.134 — PBR optionnel et SSGI filtré
Normales procédurales en cache, rugosité/métallicité par famille et reflets
directionnels. Filtrage SSGI et suppression de sa forte réinjection neutre.
[Contrat et vérifications](shader-beta134.md).
[Release beta.134](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.134)
publiée ; canal `35ec0f6e145002f6367944df5b75e2703958eaef`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.134/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.133 — SSGI renforcé
Diffusion des couleurs rendue visible au réglage 35, même budget de rayons
et cibles GPU. [Contrat et vérifications](shader-beta133.md).
[Release beta.133](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.133)
publiée ; canal `9ceb5a5353c9d1b8bb7834a20e818fd65096ff98`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.133/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.132 — SSGI expérimental
Diffusion locale des couleurs visibles, rayon 2,5 blocs, intensité réglable,
initialement OFF. [Contrat et vérifications](shader-beta132.md).
[Release beta.132](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.132)
publiée ; canal `9edaaedc0205c525ecce9de66b5ca7827c56c28f`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.132/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.131 — émissifs indépendants et précision étendue
Bloom, émissifs et highlight ON initialement. Couper le halo ou régler son
intensité à zéro garde les inclusions lumineuses. Précisions 64/128 ajoutées,
défaut 16 conservé. [Contrat et vérifications](shader-beta131.md).
[Release beta.131](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.131)
publiée ; canal `efb18c274d95d988a9566b8c52751469f002cdda`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis sont conservés, préférences et sauvegardes comprises.
Aucun monde personnel ouvert ; sauvegarde `sanctuary-backups/before-beta.131/`.
Archives normal/Test/template vérifiées dans `sanctuary-beta/build/`.
## beta.130 — bloom et précision commune
Bloom réglable, masques sélectifs des vingt textures de minerais, précision
commune aux ombres et au highlight. Réglages initiaux 32/128/16 et Pixel Shadows
activé ; anciennes préférences conservées. [Contrat et vérifications](shader-beta130.md).
[Release beta.130](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.130)
publiée ; canal `68e06353bf880af04c1c72d4e3a159f11f94b619`. Deux synchronisations isolées
puis deux dans la même instance **Sanctuary Beta** réussies. Les 923 fichiers
personnels suivis, réglages de shaders compris, gardent leurs hashes. Aucun
monde personnel ouvert ; sauvegarde préalable `sanctuary-backups/before-beta.130/`.
Packs normal/Test et template vérifiés et copiés dans `sanctuary-beta/build/`.
## beta.129 — reflets CTM et portées 16–256 blocs
Reflets connectés entre tous les matériaux coplanaires, portée indépendante,
ombres à 128/256 blocs, intensité rétablie à midi et correction du réalignement
cyclique de la grille lumineuse. [Contrat et vérifications](shader-beta129.md).
[Release beta.129](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.129)
publiée ; canal `2eaa0130a4cd475c598beefdab40f48fc8681ab7`. Deux synchronisations isolées
puis deux dans la même instance **Sanctuary Beta** réussies. Les 923 fichiers
personnels suivis, réglages de shaders compris, sont conservés. Aucun monde
personnel ouvert ; copie préalable dans `sanctuary-backups/before-beta.129/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
## beta.128 — stabilité des ombres, lune et feuillage
Ombres des blocs nettes et stabilisées, atténuation à midi, lune légère et
feuillage nuancé selon son épaisseur. [Contrat et vérifications](shader-beta128.md).
[Release beta.128](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.128)
publiée ; canal `eba01726ee132a6e548d129fa7ee04f24c880917`. Deux synchronisations isolées
puis deux dans la même instance **Sanctuary Beta** réussies. Les 923 fichiers
personnels suivis, réglages de shaders compris, sont conservés. Aucun monde
personnel ouvert ; copie préalable dans `sanctuary-backups/before-beta.128/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
## beta.127 — shader et ombres pixélisées
Ombres solaires optionnelles intégrées à Sanctuary · Vanilla Light, avec finesse
et portée réglables. Socle beta.126 conservé. [Contrat et vérifications](shader-beta127.md).
[Release beta.127](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.127)
publiée ; canal `7fd24a43e01ee497a23311e3c78e1dd3dddd877a`. Deux synchronisations
isolées puis deux dans la même instance **Sanctuary Beta** réussies.
Les 923 fichiers personnels suivis, réglages de shaders compris, sont conservés.
Aucun monde personnel ouvert ; copie préalable dans `sanctuary-backups/before-beta.127/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
## beta.126 — gemmes, argile et découvertes
Rubis et saphir, nouvelles textures d'items, argile conservant les couleurs
originales et commandes de découverte communes aux recettes et catalogues.
[Contrat et vérifications](gems-beta126.md).
[Release beta.126](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.126)
publiée ; canal `31749b95d21ce5bced6b9e5759499da6f8a67e6e`. Deux synchronisations
isolées puis deux dans la même instance **Sanctuary Beta** réussies.
Les 923 fichiers personnels et réglages suivis sont inchangé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/`.
## beta.125 — placement, éclats et animaux sculptés
Coins et trois hauteurs, particules de voxels et espèces découvertes au Clay
Workshop. [Contrat et vérifications](sculpture-placement-beta125.md).
[Release beta.125](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.125)
publiée ; canal `47eb833911a96eef0b13805dafe65b2ab7b95c87`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable dans
`sanctuary-backups/before-beta.125/`. Packs normal/Test et template copiés
et vérifiés dans le dossier habituel `sanctuary-beta/build/`.
## beta.124 — une boîte par sculpture
Une boîte ajustée commune à la sélection et aux collisions ; détails physiques
simplifiés, orientation/ancrage et éclairage conservés.
[Contrat et vérifications](sculpture-bounds-beta124.md).
[Release beta.124](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.124)
publiée ; canal `67ebcc7d07f8b75e8988f6099e3d6e5704f123fb`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.124/`. Packs normal/Test et template également
copiés et vérifiés dans le dossier habituel `sanctuary-beta/build/`.
## beta.123 — clé dorée et clé de Steve
La clé dorée se limite aux orientations cohérentes ; la clé de Steve reprend
les états et textures libres, utilisables aussi en survie dès sa récupération.
[Contrat et vérifications](wrench-safety-beta123.md).
[Release beta.123](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.123)
publiée ; canal `f988d01b901f2d3eda0b4ab47a48540dc627d1b5`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.123/`.
## beta.122 — formes et lumière des sculptures
Sélection et collisions sur les voxels réels ; suppression de l'occlusion cubique.
+258
View File
@@ -0,0 +1,258 @@
# Palais originel, verticalité et International Sanctuary Station
> **Statut au 29 septembre 2026 : concept historique.** Le créateur abandonne
> le palais souterrain, ses accès et les raccordements au palais. Le
> [fil rouge courant](storyquest-fil-rouge.md) remplace ces choix d'implantation.
> Le texte ci-dessous conserve la discussion du 28 septembre et ne constitue
> plus une consigne de construction du palais. Les pistes ISS, chenil et
> ordinateurs restent ouvertes indépendamment de ce bâtiment. Aucun code ni
> monde de laboratoire n'est supprimé par ce changement documentaire.
**Discussion du 28 septembre 2026 — conception, sans code.** Précisions du
créateur après le [cadrage Storyquest](storyquest-beta173.md), sur la même
branche `codex/storyquest-beta173`, issue de beta.172. Les formes et intentions
retenues sont distinguées des mécaniques encore hésitantes. Aucun monde,
paramètre de génération, familier ou format de sauvegarde n'est modifié ici.
**Premier lot décidé ensuite :** un palais par seed, huit ancres extérieures
et huit demandes de matériaux distincts. Le bloc originel garde l'illustration
fournie ; chacune des huit gemmes se colore indépendamment. Le
[contrat de prototype](palais-prototype-beta173.md) décrit ce qui est réellement
implémenté dans le laboratoire et les limites de l'intégration au monde.
## Le secret devient un lieu commun à habiter
Le secret sous le spawn prend la forme d'un **palais sobre, haut sous plafond,
à huit coins**. Après discussion du niveau zéro et du vortex, le créateur
précise : **adapter la hauteur au terrain**. Le palais garde son centre en
**`x=0, z=0`**, avec une **altitude déterminée par le relief**. La salle n'est
donc plus contrainte à Y=0.
**Le bloc originel suit le palais**, confirmation explicite du créateur. Sa
position devient `(x=0, y=altitude adaptée, z=0)` : l'origine horizontale reste
fixe, l'altitude accompagne le lieu. L'idée initiale d'un bloc exactement en
`(0, 0, 0)` est remplacée ; aucun bloc séparé à Y=0 ni liaison vers ce niveau
n'est requis. Sa position précise dans le volume de la salle reste à dessiner.
Ce palais représente une **cartographie intérieure de Sanctuary Island**,
puis l'expédition et l'aventure de ses habitants. Le complexe est léger, assez
vide pour que les joueurs le personnalisent : une page blanche avec une
architecture reconnaissable. Sa richesse vient progressivement de leur partie.
La palette, les dimensions, les proportions et le mobilier initial restent à
dessiner. « Palais » n'implique ni dorures ni décor luxueux.
Le lieu est souterrain par son implantation et ses accès. Si le terrain à
l'origine est trop mince ou absent, **le palais ressort sous l'île et reste
visible au-dessus du vide**. Le créateur souhaite un endroit lumineux,
repérable depuis l'extérieur, notamment la nuit. Le vortex de nuages doit
participer à la vue en dessous.
La fonction recherchée est une **base d'opérations pour les expéditions** :
comprendre les destinations, voir les matériaux nécessaires, préparer le départ
et conserver la mémoire de ce qui a été accompli. Le rôle exact des machines
et la mécanique d'ouverture des territoires ne sont pas encore décidés.
### Proposition spatiale à discuter
Faire correspondre les huit secteurs de la salle aux huit directions autour
de l'île, avec une orientation lisible depuis le bloc originel. Chaque secteur
pourrait recevoir un indice découvert, l'état d'une liaison, les besoins de sa
prochaine expédition et les souvenirs rapportés. Les joueurs complètent
eux-mêmes l'aménagement avec cartes, cadres, bannières, trophées et constructions.
Le palais devient une carte que l'on parcourt à pied.
Les huit coins de l'île désignent ici des secteurs à définir sur son contour ;
ils n'imposent pas une île géométriquement octogonale. Le rapprochement entre
coins du palais, lieux périphériques et liaisons est une proposition cohérente
avec la demande, pas encore un plan d'implantation validé.
Il faut encore décider ce que les joueurs peuvent déplacer ou casser, et
comment ils réparent une installation devenue inutilisable. La personnalisation
ne vaut pas décision de protéger tout le palais. L'ancien contrat de conception
permet aussi de reconstruire une installation d'expansion ailleurs : préciser
ce qui relève du bloc originel unique et ce qui reste reproductible.
## Les accès font jouer la profondeur
Le créateur envisage plusieurs accès complémentaires, sans choisir encore
leur nombre ni leur disposition :
| Accès évoqué | Expérience recherchée | Point à dessiner ou vérifier |
| --- | --- | --- |
| Ascenseur aquatique | Monter et descendre rapidement, avec eau et bulles | Les algues et la « terre des abîmes » sont les termes de la discussion ; le bloc de propulsion et le montage exact restent à préciser |
| Puits de chute avec réception dans l'eau | Se laisser tomber vers le palais central | Continuité du bassin, visibilité de la réception, sortie et absence de fuite dans le vide |
| Escaliers | Accès progressif qui fait découvrir les volumes souterrains | Arrivée dans la salle, paliers, raccourcis et lien avec les galeries |
| Ouvertures verticales | Apercevoir en contrebas un sol d'eau et oser descendre | Lecture du trajet, réception réelle, retour et espace pour les compagnons |
Proposition : une première descente lente qui révèle le palais, puis un trajet
rapide pour les usages quotidiens. Le choix entre escalier, chute et ascenseur
peut exprimer cette différence sans obliger à construire les trois dès le début.
### Implantation retenue : une hauteur adaptée au terrain
Le preset actuel emploie `sanctuary:sanctuary_640`, avec **`min_y: 0`** et
**`height: 640`**. Le vortex a **`HEIGHT=0`**, avec une épaisseur de quatre blocs
dans son rendu. Ce sont des valeurs lues dans les sources beta.172, pas des
mesures de terrain d'une graine particulière :
- [Preset Sanctuary](../mods/sanctuary/src/main/resources/data/sanctuary/worldgen/world_preset/sanctuary.json).
- [Type de dimension](../mods/sanctuary/src/main/resources/data/sanctuary/dimension_type/sanctuary_640.json).
- [Hauteur du vortex](../mods/sanctuary/src/main/java/fr/koka/sanctuary/sky/VortexClouds.java).
- [Épaisseur et rendu](../mods/sanctuary/src/main/java/fr/koka/sanctuary/client/VortexCloudRenderer.java).
Ces contraintes ont conduit le créateur à choisir une hauteur adaptée au terrain.
La proposition précédente d'imposer la salle juste au-dessus du bloc à Y=0
est remplacée par cette décision. **Le vortex peut conserver sa hauteur actuelle** ;
aucun déplacement des nuages ni changement de limite du monde n'est nécessaire
par principe. Leur séparation visuelle devra être vérifiée sur la coupe choisie.
Proposition de placement : examiner le relief sous le centre de l'île et sur
l'emprise du palais, puis choisir un niveau permettant la grande hauteur sous
plafond et les accès. La salle peut traverser l'enveloppe inférieure du terrain
et laisser une façade lumineuse visible dans le vide. Il ne faut ni l'enterrer
entièrement à tout prix, ni aplatir toute l'île pour l'accueillir.
Avant le code, fixer la marge au-dessus du vortex, la couverture rocheuse
souhaitée, le volume de la salle et la solution lorsque le relief ne fournit
pas assez d'épaisseur. Prévoir planchers, bassins et fondations dans les limites
constructibles. La même graine et la même version de génération doivent choisir
la même implantation. Ces règles détaillées restent à dessiner puis à tester
sur de nouveaux mondes ; aucune partie existante n'est repositionnée.
## Les huit objets et la Sanctuary Key restent ouverts
Le créateur envisage des **collectibles répartis dans les huit secteurs de
l'île**, permettant d'activer de nouvelles expéditions, la génération de
nouvelles îles et un nouveau point d'intérêt à découvrir. Il hésite sur le
fait de placer ces objets derrière des défis et sur la forme d'une clé appelée
provisoirement **Sanctuary Key**. Aucun identifiant d'objet n'est fixé.
| Possibilité | Ce qu'elle favorise | Limite à discuter |
| --- | --- | --- |
| Collectible trouvé par exploration | Curiosité, lecture du paysage et surprises | Le défi peut se résumer à trouver le bon endroit |
| Clé obtenue après une épreuve | Accomplissement clair et aventures différentes | Huit épreuves identiques donneraient une progression répétitive |
| Découverte puis préparation de l'expédition | Exploreurs, constructeurs et producteurs ont chacun un rôle | Il faut rendre les besoins compréhensibles et éviter les attentes sans activité |
**Proposition recommandée pour la discussion :** découvrir dans un secteur un
objet ou un signe lié à une liaison, puis préparer l'expédition au palais. Le
défi peut varier selon le lieu : combat, exploration, mécanisme, construction
ou coopération. Cette proposition ne décide ni d'une clé pour chaque direction,
ni d'un objet consommé, ni de l'obligation de réunir les huit avant de partir.
Avant le premier essai, choisir ce que l'objet autorise, qui peut l'apporter,
où les matériaux sont réellement déposés et qui lance le départ. Prévoir le
cas d'un objet perdu et celui d'un nouveau joueur arrivé après l'ouverture.
La preuve durable d'ouverture appartient au serveur ; le trophée exposé au
palais peut raconter cette ouverture sans être la seule preuve qui la conserve.
Les huit collectibles ne remplacent pas automatiquement les **sept boules de
cristal** de la vision historique. Leur relation éventuelle est à discuter.
## La montée vers l'ISS
Le créateur souhaite développer la verticalité au-dessus de l'île par des
structures en hauteur, jusqu'à l'**ISS — International Sanctuary Station**.
Cette station métallique, inspirée visuellement de l'ISS, constitue une trace
laissée par un ancien joueur. Son identité n'est pas encore choisie.
Elle comprendrait une **carte de l'île avec des cadres d'objets posés à
l'horizontale**. La taille, l'altitude, l'accès et la mise à jour de cette carte
restent à définir. Il faut lui donner une fonction particulière, reliée à un
système ou une quête. Trouver la station pour obtenir un familier particulier
est une piste du créateur, pas une récompense déjà arrêtée.
```mermaid
flowchart TB
ISS[ISS : trace d'un ancien joueur et fonction à définir]
HAUT[Structures en hauteur : itinéraire à concevoir]
ILE[Surface : spawn, habitants et huit secteurs]
ACCES[Descente : escaliers, eau ou puits]
PALAIS[Palais octogonal : préparer et raconter les expéditions]
ORIGINE[Bloc originel : suit le palais, x=0 et z=0]
ISS --- HAUT --- ILE --- ACCES --- PALAIS --- ORIGINE
```
Schéma d'intention sans échelle : aucun ordre de déblocage ni palier d'altitude
obligatoire n'est décidé. Le palais s'adapte au terrain ; le vortex est à Y=0.
Le nœud du bloc indique son lien avec le palais, pas un étage nécessairement séparé.
Proposition : faire du palais le lieu où l'on **prépare et engage** l'expédition,
et de l'ISS un lieu où l'on **observe et repère** des phénomènes célestes. Une
fonction de reconnaissance donnerait une raison d'y retourner après avoir
trouvé le familier. Elle doit être distinguée du rôle de l'observatoire déjà
envisagé sur l'île ; ne pas créer trois lieux qui donnent la même information.
L'ISS pourrait suggérer une destination ou un événement aérien sans révéler
tous les secrets. La carte pourrait être le relevé ancien du précédent joueur
ou un outil actualisé : ce choix change ce qu'elle raconte. Prévoir l'accès des
nouveaux arrivants et le retour au sol avant de choisir une récompense rare.
## Chenil et incubateurs de familiers
Piste du créateur : un **vrai bloc** reçoit le familier pour lui faire gagner
de l'XP. **Deux yeux apparaissent sur le bloc lorsqu'il est occupé.** Le dispositif
peut devenir un chenil ou un incubateur ; son nom et sa place dans le palais
restent ouverts. Des **multiblocs de tailles différentes** pourraient accueillir
des familiers miniatures ou colossaux. Les dimensions ne sont pas fixées.
Il faut distinguer cette idée de l'incubation du 25 septembre : celle-ci faisait
fructifier une réserve avec les déplacements, poses et casses du joueur. Le
nouvel incubateur est un lieu physique où l'on dépose le compagnon. Ils peuvent
se remplacer ou se compléter ; aucune double croissance automatique n'est décidée.
Le point de conception principal est de garder un intérêt à emmener son
familier. **Proposition à éprouver :** un entraînement limité au chenil, soutenu
éventuellement par de la nourriture appréciée, tandis que l'aventure développe
le lien et l'expérience autrement. Plafond, nourriture, vitesse et arrêt hors
ligne restent des propositions, sans règle chiffrée ni rendement acquis.
Avant le code, préciser : XP propre du familier ou réserve récupérable par le
joueur ; propriétaire et personnes autorisées à le retirer ; croissance selon
temps simulé ou réel ; comportement hors ligne et hors chunks chargés ; sort
du pensionnaire à la casse ou dissociation. Le même familier ne doit pas exister
simultanément dans le chenil et sur la tête. Les deux yeux signalent l'occupation,
mais l'identité du pensionnaire doit aussi pouvoir être reconnue.
Si la forme multibloc est retenue, la rapprocher du système d'assemblage
volontaire existant. Ne pas imposer automatiquement une cage colossale à tout
familier de grande apparence avant d'avoir choisi la règle de taille.
## Ordinateurs : commencer par la tâche à accomplir
Le créateur envisage **assembleur, terminal et écran**, en référence à un mod
d'ordinateurs non identifié avec certitude. Aucun choix de dépendance n'est
effectué. Le [cahier d'installation d'expansion](structures-conception.md#ordinateurs-et-installation-dexpansion)
évoque déjà assembleur, contrôleur, terminal, dépôt et ancre, mais ces rôles
restent conceptuels. Le terminal de stockage est encore une autre fonction.
Le premier besoin est concret : **choisir une expédition, voir les matériaux
nécessaires, constater ce qui est déposé et comprendre ce qui manque**. On peut
dessiner ce parcours dans une alcôve du palais avant de décider de l'ordinateur.
Proposition de progression : une installation locale compréhensible à la main,
puis un écran de suivi partagé, puis éventuellement automatisation et programmation.
Un dépôt physique possède les matériaux ; un écran les montre ; le système
serveur valide l'expédition. Le rôle de l'assembleur doit être choisi avant
d'ajouter un bloc dont on ne sait pas ce qu'il fabrique.
Cette approche conserve de la place pour les computers sans les rendre
obligatoires par défaut pour découvrir le palais. Si un mod externe est choisi,
son identité et sa compatibilité Minecraft 26.3 seront vérifiées dans le ticket
d'intégration ; aucun nom n'est déduit de la description seule.
## Prochain résultat de conception proposé
Dessiner **un plan et une coupe du palais**, avec huit secteurs, bloc originel,
altitude adaptée au terrain, hauteur de salle, partie extérieure, accès et nuages.
Placer seulement les
emplacements fonctionnels nécessaires pour essayer **une** expédition :
destination, éventuel objet de déblocage et besoins matériels. Garder les
autres espaces disponibles pour les joueurs et les évolutions suivantes.
L'ISS et le chenil peuvent alors avoir une fiche propre, liée à cette coupe
verticale. Ils ne deviennent pas des prérequis techniques à la première salle.
Les trois décisions suivantes sont : **moment de découverte du palais**,
**premier geste d'expédition** et **ce que l'ISS permet de faire après sa visite**.
Validation documentaire : références locales et diff contrôlés. Aucun build
ou essai de jeu relancé ; aucune fonctionnalité décrite ici n'est implémentée.
+150
View File
@@ -0,0 +1,150 @@
# beta.173 — palais procédural et bloc originel
> **Statut au 29 septembre 2026 : prototype technique conservé, architecture
> abandonnée pour la suite.** Le palais souterrain, ses accès et les
> raccordements au palais sortent de la conception. Le
> [fil rouge courant](storyquest-fil-rouge.md) prépare des lieux indépendants.
> Cette fiche décrit fidèlement le laboratoire livré et ses essais ; elle
> n'annonce plus l'intégration du palais à Sanctuary Island.
Ticket d'implémentation ouvert le 28 septembre 2026, branche
`codex/storyquest-beta173`, base beta.172. Première scène jouable issue du
[palais originel](palais-originel-iss-beta173.md). Livraison locale vérifiée.
## Contrat avant implémentation
Le palais est construit par un générateur versionné, avec une graine explicite.
Le volume octogonal, la hauteur, les baies, la toiture et le dessin du sol
peuvent varier. Une même graine/version reproduit le même plan. Il conserve
une salle haute et sobre, huit secteurs ouverts, un escalier et un puits d'eau.
La première scène est centrée en X=0, Z=0 et surélevée dans un monde plat neuf.
Chaque monde de laboratoire contient **un seul palais, déterminé par sa seed**.
Pour comparer une autre architecture, créer un autre monde neuf avec une autre seed.
L'intégration au terrain de Sanctuary Island était envisagée lors de ce lot ;
elle est abandonnée le 29 septembre. Ce lot n'appelle pas le générateur dans
les mondes de production. Il ne crée ni
expansion, ni quête, ni ISS, ni ordinateur, ni récompense.
Le nouveau bloc `sanctuary:origin_block` reprend les propriétés de la bedrock
et l'image fournie par le créateur, conservée sans retouche dans
`mods/sanctuary/src/main/art/origin-logo.png`. Son rendu est dérivé de manière
déterministe à la construction des ressources :
- éteint : image sombre et désaturée, aucune lumière émise ;
- allumé sans relais : image en niveaux de gris, centre blanc, lumière 15 ;
- allumé avec des relais : chaque relais rend sa couleur à la gemme associée ;
les autres restent grises et le centre reste blanc.
Huit bits indépendants représentent les huit relais, pas un simple compteur.
L'ordre des activations est libre. L'extinction masque les couleurs sans effacer
l'état des relais. Ces états sont des propriétés de bloc natives, sauvegardées
dans les nouveaux chunks ; aucun ancien format n'est converti.
Huit blocs `sanctuary:expansion_anchor` sont disposés à l'extérieur, dans les
huit directions, sur des plateformes reliées à pied au palais. Chacun accepte
un matériau distinct, décision du créateur du 28 septembre. Clic droit avec la
quantité en main : dépôt entier, consommé côté serveur, ancre allumée et bit
associé du bloc originel activé. Un dépôt insuffisant ou incorrect reste intact ;
une ancre déjà allumée ne consomme plus. Les demandes sont communes à la partie,
sans crédit individuel ni dépôt partiel dans ce premier lot.
| Direction / gemme | Demande provisoire |
| --- | --- |
| Nord / bleu | 32 pierres |
| Nord-est / vert clair | 16 bûches de chêne |
| Est / vert | 16 blés |
| Sud-est / orange | 4 lingots d'or |
| Sud / rouge | 16 poudres de redstone |
| Sud-ouest / rose-violet | 8 éclats d'améthyste |
| Ouest / jaune | 8 lingots de fer |
| Nord-ouest / menthe | 16 verres |
Le bloc central s'allume/s'éteint par clic droit dans ce laboratoire. Il faut
l'allumer avant les dépôts ; l'éteindre conserve les ancres et leurs bits.
Les coûts servent au prototype et ne constituent pas l'équilibrage final.
Ces ancres ne déclenchent encore aucune génération d'expansion.
## Monde et écritures autorisées
Le module facultatif Sanctuary Test, le dossier dédié `palace-flat-173` et le
commutateur `sanctuary.palaceLab=true` conditionnent le laboratoire. La préparation
refuse toute autre partie. Une emprise doit être entièrement libre avant la
première écriture. Un palais prêt est rechargé tel quel ; il n'existe pas de
commande de régénération. Les écritures sont réparties sur plusieurs ticks serveur.
Un journal indépendant `palace-lab-173.json`, schéma 1 / génération 1, enregistre
graine, altitude et phase du palais. Les états des blocs restent dans les chunks.
Une génération interrompue est conservée comme incomplète ; utiliser un nouveau
dossier de laboratoire. Pas de nettoyage ou de reprise destructive.
Une version inconnue ou un journal invalide bloque la préparation et préserve
le fichier. Le retrait de cette version après création de ces nouveaux blocs
n'est pas une conversion prise en charge ; conserver le monde de développement.
## Visiter et comparer
Depuis cette branche, avec Java 25 :
```sh
./gradlew :sanctuary-test:exportDuoLaunch
python3 scripts/palace_lab.py prepare --seed 173
python3 scripts/palace_lab.py server --seed 173
# Dans un second terminal :
python3 scripts/palace_lab.py client --seed 173
```
Le client utilise Vulkan. Le serveur écoute uniquement sur `127.0.0.1:25579`.
Créatif pour visiter et aménager ; `/palais materiaux` donne les huit demandes,
`/palais retour` ramène dans la salle. Les messages sont traduits FR/EN.
Une autre seed utilise un autre dossier sous `build/palace-173/` ; arrêter le
serveur précédent avant de lancer l'autre. Le lanceur préserve les fichiers
existants et refuse une modification du nom de monde, de la seed ou du réseau.
Le palais est à Y=96 dans ce laboratoire, au-dessus du terrain plat. Le plan
accepte une altitude arbitraire. Le placement sous Sanctuary Island à une
altitude calculée n'a pas été intégré et n'est plus prévu ; la géographie des
huit ancres est à reprendre indépendamment de ce palais.
## Vérifications
- Les quatre nouveaux GameTests passent (cinq tests requis avec le témoin du
banc). Onze graines incluent `0`, `173`, des voisins et les extrêmes 64 bits :
plan entier reproductible, variation d'architecture, huit accès praticables
et toutes les écritures contenues dans l'emprise. Une emprise occupée est
refusée sans écriture. Dépôts faux, insuffisants ou répétés conservés ; les
huit dépôts valides activent les bits attendus dans un ordre non séquentiel.
- Les 512 combinaisons d'allumage et de relais survivent au codec natif de
sauvegarde. Lumière 0/15 et conservation des bits à l'extinction vérifiées.
- Client Minecraft **26.3 / Vulkan / Apple M1**, scénario
`Palace173ClientChecks` réussi : extérieur, intérieur, éteint, monochrome,
trois gemmes et huit gemmes. Six captures examinées dans
`build/palace-validation/screenshots/`. Synchronisation serveur/client du
masque de gemmes vérifiée. Le premier lancement avait omis le profil Test ;
le scénario passe avec `-PsanctuaryQuickTests=true`.
- Image source strictement identique au PNG fourni (SHA-256
`33adb8f689d55b7bf8d0824b02942ea3823f128b27fab458713ab9582061a1a0`).
Compilation Python, JSON FR/EN et préparation répétée du laboratoire : les
cinq fichiers de configuration restent identiques.
Commandes ciblées :
```sh
./gradlew :sanctuary:runGameTest :sanctuary-test:compileJava -PsanctuaryFocusedTests=palace173 -PsanctuaryAtlasOnly=true
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryPalace173ClientTests=true -PsanctuaryQuickTests=true -PsanctuaryClientGraphicsBackend=vulkan
```
- `./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch`
**réussi**, 265/265 GameTests, contrôles du pack et autres contrôles du dépôt
réussis (12 min 35 s). Profils packwiz normal et Test assemblés localement.
- JAR vérifié : beta.173, générateur présent, 512 états du bloc et 257 textures.
SHA-256 : `fa1f92f1a84b5f863e5f323ab0afe63e01acbd08c06181e5f636ab5b372886f9`.
- Serveur dédié réellement démarré sur loopback, journal `ready`, puis reprise
du même monde. Allumage avec masque `73` et un bloc d'aménagement témoin
conservés après arrêt/reprise (`PALACE173_GEMS_RELOAD_PASS` et
`PALACE173_CUSTOMIZATION_RELOAD_PASS`). Le témoin est ensuite retiré et le
bloc éteint pour la première visite ; serveur arrêté proprement. Le lanceur
accepte aussi le `sanctuary_test\:flat` réécrit automatiquement par Minecraft
dans les propriétés Java.
Les journaux restent ignorés dans `build/palace-validation/`. Les artefacts
restent locaux ; aucun canal public ni profil Prism n'a été mis à jour.
+25
View File
@@ -0,0 +1,25 @@
# beta.164 — calendrier compact et intendance alignée
Calendrier à la largeur de la navigation : jour agrandi et heure sur la première
ligne, mois et année ensemble dessous. Le titre serveur est aligné à gauche
et couvre la carte ainsi que les panneaux Gazette/Tableau.
Interface cliente uniquement. Aucun changement de stockage ou de monde.
Vérification client Vulkan réussie : FR/EN aux échelles GUI 2, 3 et 4.
Le test contrôle la largeur du calendrier, l’heure dans son libellé accessible,
les limites de l’intendance et les interactions communautaires existantes.
Captures conservées dans `build/qa-beta164/` et journal dans
`build/beta164-client-retry.log`. Inspection visuelle FR GUI 4 et EN GUI 2 effectuée.
Le premier test a détecté que StringWidget redimensionnait le calendrier lors
du changement de texte ; la largeur de navigation est maintenant réappliquée.
`check build assemblePack --continue` exécuté : les mêmes 23 GameTests qu’en
beta.163 échouent, aucun nouvel échec (comparaison enregistrée dans
`build/session164-server-failures.json`). La suite complète reste en échec.
L’assemblage séparé `build assemblePack :sanctuary-test:exportDuoLaunch
-x :sanctuary:check` réussit après ce contrôle.
Anciennes archives conservées ; aucune publication distante.
JAR : `mods/sanctuary/build/libs/sanctuary-beta.164.jar`.
SHA-256 : `5bdfb097004a7932a075fbce9013556266f76ddd491ca21a24e12609c8600e53`.
+97
View File
@@ -0,0 +1,97 @@
# PAUSE-235 — Aventure et Communauté côte à côte
Branche d'essai `codex/pause-columns-beta235`, base beta.234, commit `f9c2ce8`,
Minecraft 26.3. Le rendu reste à apprécier par le créateur.
## Disposition et réversibilité
Avant Atlas, Aventure et Communauté occupent deux colonnes au même niveau :
Discovery, Progression et Story à gauche ; Habitant, Faction et Battle à droite.
Partie / Game suit juste dessous avec Options, World Options et la sortie
native. L'ensemble est centré verticalement dans le corps de Pause, avec de
l'espace sous Game ; Reprendre la partie reste dans le pied de page.
Sans Atlas, ce bloc est centré entre Gazette à gauche et Notice Board à droite.
Avec Atlas, une seule colonne étroite est serrée à gauche : Communauté, puis
Aventure, puis Partie / Game, selon l'ordre confirmé par le créateur. La carte
garde la région centrale et les deux fils communautaires restent à droite.
Le bloc complet reste centré verticalement. La largeur minimale des boutons
de navigation tient compte des libellés localisés et de leur marge native.
Aux petites hauteurs, boutons et espacements se compactent. Tab suit l'ordre
visuel : par rangée de gauche à droite avant Atlas, puis de haut en bas avec
Atlas. Les libellés FR/EN existants sont réutilisés.
Le changement de disposition et les assertions correspondantes sont isolés
dans le commit `a7bdfe6`, séparé de la livraison et de ses métadonnées. La branche
`codex/story-beta234` conserve la disposition précédente. Un retour s'effectue
avec `git revert a7bdfe6` ; une éventuelle nouvelle
livraison doit prendre le numéro beta suivant, sans diminuer le compteur.
L'application inverse du patch a été vérifiée avec `git apply --reverse --check`,
sans modifier les fichiers de travail.
Ce ticket ne change ni génération, sauvegarde, données communautaires, protocole,
conditions de progression ou contenus Story. Aucune installation personnelle
ou publication n'est demandée.
## Vérifications
```sh
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryPause233ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryStory234ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan
./gradlew check build assemblePack -PsanctuaryFocusedTests=menus -PsanctuaryAtlasOnly=true
```
Le parcours Pause final réussit en 1 min 22 s (`PAUSE233_PASS`), dans un monde
plat neuf de développement, Survie sans commandes. FR/EN, GUI 2/3/4, fenêtre
1280 × 960, avant et après Atlas : six actions Sanctuary, alignement et absence
de chevauchement, largeur des libellés avec la marge native, ordre de Tab et
Game sous les groupes, avec de l'espace avant le pied. Le test attend désormais
un créneau de requête communautaire pour son amorçage et envoie le code de
raccourci natif de Tab, requis par Minecraft 26.3.
Le parcours communautaire existant passe également : publication et photo,
retours des sélecteurs, brouillons, édition d'une ancienne catégorie, inventaire
réel conservé et aucun changement du fichier communautaire pendant les lectures.
La configuration temporaire est restaurée à la fin du banc.
Log : `build/pause235-client-vulkan-final.log`. 38 captures finales copiées dans
`build/pause235-screenshots/`. Captures inspectées : sans Atlas FR/4, avec Atlas
FR/2 et EN/4. Vulkan confirmé : MoltenVK 1.4.2 sur Apple M1.
Le parcours Story final réussit en 29 s (`STORY234_PASS`), avec les mêmes
langues, GUI et états Atlas. Accès depuis les deux dispositions de Pause,
100 entrées désactivées, recherche/filtres, saisie continue et focus, molette,
redimensionnement à 1344 × 1008 et retours Échap / Terminé vérifiés. Le record
de progression serveur ne change pas. Log :
`build/pause235-story-client-vulkan-final.log` ; 21 captures copiées dans
`build/pause235-story-screenshots/`.
Aux GUI étroits, les longs libellés natifs des options/sortie et les titres des
fils gardent leur défilement ou découpage existant ; les boutons de navigation
Sanctuary montrent leur libellé entier. Les infobulles des actions Game sont
conservées. Aucun essai OpenGL, Windows ou monde personnel n'est revendiqué.
Le contrôle `check build assemblePack` réussit en 3 min 1 s : quatre GameTests
requis et contrôles purs du dépôt, dont les quatre contrôles communautaires
fichier/photos/demandes/recherche. Log : `build/pause235-check-build-pack.log`.
Le banc menus conserve sa sélection Atlas existante ; le conflit de générateur
sur le chemin natif par défaut, documenté en beta.232, reste hors de ce ticket.
## Livraison locale
`mod_version`, `pack_version` et `packwiz/pack.toml` sont alignés sur beta.235.
Le commit de livraison conserve ces métadonnées et cette documentation séparées
du commit de disposition.
Export [Sanctuary-beta.235.mrpack](../build/Sanctuary-beta.235.mrpack),
12 776 222 octets : intégrité ZIP, Minecraft 26.3 et Fabric Loader 0.19.5,
un seul JAR Sanctuary embarqué, identique au JAR construit, sans monde ni module
de test. Les 3 303 fichiers d'assets, données et resourcepacks sont identiques
à beta.234, traductions incluses. Story reste dans le JAR de production et les
classes des bancs client en sont absentes. Reçu :
`build/pause235-mrpack-receipt.json`.
- JAR : `aad94732c749161d775ee634bdd85de70de511ef875c6c00fa167d230d0d600b`.
- MRpack : `5f1bd18aa8a4145b7e708da0abfff22068365847dddbc95ae2b490b88bbb305e`.
Aucune publication distante, modification du canal packwiz, synchronisation
Prism ou ouverture d'un monde personnel effectuée.
+86
View File
@@ -0,0 +1,86 @@
# PAUSE-233 — navigation centrée et rédaction communautaire
Branche `codex/pause-community-beta233`, base beta.232, Minecraft 26.3.
## Résultat et compatibilité
Avec ou sans Atlas, les boutons gardent les mêmes groupes et le même ordre :
- Communauté : Habitant, Faction et Battle en haut de la colonne.
- Aventure : Discovery et Progression centrés verticalement dans l'écran.
- Partie : Options, World Options et Save and Quit en bas.
Sans carte, cette colonne est centrée horizontalement entre Gazette à gauche
et Notice Board à droite. Avec carte, elle reste à gauche, carte au centre et
les deux fils communautaires à droite. L'ordre clavier suit l'ordre visuel.
Les boutons deviennent plus compacts sur les petites hauteurs GUI pour conserver
les titres et l'espacement entre groupes. La petite barre sous les boutons
Communauté est supprimée dans les deux dispositions. En-tête et reprise en pied
conservés.
Le formulaire Notice Board ne propose plus Information/Project/Request/Event.
Toutes les notices ont la même présentation, y compris les anciennes catégories.
Les demandes et récompenses restent facultatives et descriptives : après le
texte viennent Request and rewards, son résumé, puis Publish. Le formulaire
Gazette place la photo et Choose a screenshot en premier, avant le titre,
puis le texte et Publish.
Photo obligatoire, brouillons, édition, retours des sélecteurs, suivis et
validations serveur restent actifs.
Le contrat fichier/MariaDB et le protocole ne changent pas. Les nouvelles notices
gardent la valeur compatible `info` ; éditer une ancienne annonce conserve sa
catégorie enregistrée sans l'afficher. La lecture n'entraîne aucune réécriture
des posts. Aucune migration, génération ou opération d'inventaire n'est ajoutée.
Les anciennes traductions de catégories restent disponibles pour les données
historiques. Titres ajoutés en français/anglais : Communauté/Community,
Aventure/Adventure et Partie/Game ; les autres libellés existent déjà.
## Vérifications et livraison
`./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryPause233ClientTests=true -PsanctuaryClientGraphicsBackend=vulkan`
Réussite en 47 s (`PAUSE233_PASS`), après suppression de la barre sous Communauté.
Monde plat de développement, Survie sans Allow Commands, stockage fichier isolé.
- FR/EN, GUI 2/3/4, fenêtre 1280×960, avant et après Atlas : même ordre des
actions et des groupes, titres sans chevauchement, paire Discovery/Progression
centrée verticalement, navigation et options séparées.
- Ordre titre → texte → demande et résumé → publication, ou photo et sélecteur
→ titre → texte → publication ; aucune catégorie visible. Défilement du formulaire sur GUI
étroit vérifié. 38 captures dans `build/pause233-screenshots/`.
- Retours réels des sélecteurs : texte conservé, 128 bûches demandées et
récompense personnalisée publiées ; les 17 bûches et 3 diamants d'inventaire
réel restent présents. Photo toujours obligatoire, article et photo relus
depuis un nouveau lecteur du stockage fichier après publication.
- Ancienne catégorie `event` conservée lors de l'édition. Lecture des posts,
redimensionnements et changements de langue n'altèrent aucun octet du fichier
communautaire. Configuration du banc restaurée à la fin.
- Captures inspectées : pause verrouillée FR/2 et EN/4, pause déverrouillée FR/2,
notice configurée, Gazette avec photo assignée et bas du formulaire Notice Board
EN/4. Notices anciennes et nouvelles ont le même cadre et ne montrent que leur état.
Log client final : `build/pause233-client-vulkan-titled.log`. Aucun essai OpenGL ou Windows
et aucune migration MariaDB ne sont revendiqués ; le code serveur est conservé.
`./gradlew check build assemblePack -PsanctuaryFocusedTests=menus
-PsanctuaryAtlasOnly=true`
Réussite en 2 min 39 s : quatre GameTests requis, contrôles purs communautaires
(`COMMUNITY154_FILE_PASS`, `COMMUNITY157_PHOTOS_PASS`, `COMMUNITY158_TASKS_PASS`,
`COMMUNITY159_SEARCH_PASS`), build et assemblage du pack.
Log : `build/pause233-check-build-pack-final.log`.
Ce contrôle utilise le mode existant du banc pour les menus. Le chemin natif par
défaut présente toujours le conflit de générateur documenté en beta.232 ; cette
livraison ne revendique pas une nouvelle suite complète de génération.
Export local `build/Sanctuary-beta.233.mrpack` vérifié : intégrité ZIP, versions
Minecraft 26.3/Fabric Loader 0.19.5, un seul JAR Sanctuary embarqué, exactement
identique au JAR construit, sans module de test ni monde. Les 3 146 fichiers
de données et assets hors traductions sont identiques à beta.232 ; seules les
trois traductions de titres de groupes sont ajoutées en FR/EN, sans changer les
libellés existants. Reçu : `build/pause233-mrpack-receipt.json`.
- JAR : `23a148c197126ede552865f9847ce381700884d5ff087469a13e36540e8f23f9`.
- MRpack : `d95aeeca5f255db4444a22879f465477c0c6a2a111dd4e1c777b20944a283e2b`.
Livraison locale beta.233 ; aucune installation personnelle, publication
distante, ouverture d'un monde personnel ou mise à jour du canal packwiz.
+27
View File
@@ -0,0 +1,27 @@
# beta.163 — cadre du menu pause
Retour de séance : Découverte/Progression séparés de Habitant/Factions/Combat,
bouton Monde retiré, séparateurs natifs de Progression, reprise centrée dans le
footer, calendrier à gauche, message serveur au centre et horloge à droite.
Interface cliente uniquement, sans migration ni modification de règles ou de
mondes. « Options du monde » reste dans les réglages en bas à gauche ; seul le
raccourci de navigation Monde disparaît. La carte centrale reste disponible.
Vérifications :
- Test client natif Vulkan réussi : FR/EN aux échelles GUI 2, 3 et 4,
calendrier, séparation des groupes, limites des widgets et reprise centrée.
Captures dans `build/qa-beta163/` ; journal `build/beta163-client-retry.log`.
- Le scénario communautaire vérifie aussi la scène du tableau et les échanges.
Une première exécution a expiré pendant une publication ; le test respecte
désormais le délai serveur entre deux écritures.
- `check build assemblePack --continue` : 23 échecs GameTest, ensemble identique
à beta.162, aucun nouvel échec. Les autres tâches ont terminé ; la suite
complète reste donc en échec. Comparaison dans `build/session163-server-failures.json`.
- Assemblage réussi avec `build assemblePack :sanctuary-test:exportDuoLaunch
-x :sanctuary:check`, après la vérification complète.
JAR local : `mods/sanctuary/build/libs/sanctuary-beta.163.jar`.
SHA-256 : `72df10885d1bcb3b623c46bddf361839c23f06dfd543119f91ac5e006a8f961e`.
Aucune publication distante ; anciens JAR conservés.
+114
View File
@@ -0,0 +1,114 @@
# PAUSE-155 — une entrée Sanctuary, trois espaces
Branche `codex/pause-redesign-beta155`, livraison locale `beta.155`.
Suite de [COMMUNITY-154](community-beta154.md).
## Résultat attendu
Remplacer l'ancienne grille du menu pause par trois espaces sans fond ou
séparateurs imposés à chaque espace :
- En-tête : date locale à gauche, dernier message d'intendance au centre,
heure locale à droite. Le message ouvre directement sa publication.
- Corps : navigation permanente Découverte, Monde, Progression, Habitant,
Faction et Batailles à gauche, tous espacés de 4 pixels comme les boutons
d’options. Carte personnelle au centre. Gazette au-dessus du tableau d'affichage à droite.
- Bas de la colonne gauche : Options, Options du monde, puis Sauvegarder et
quitter, empilés dans cet ordre et alignés avec les six boutons Sanctuary.
Reprendre la partie se trouve seul tout en bas de la colonne centrale,
sous la carte. Les actions natives Minecraft sont réutilisées, y compris
Déconnexion en multijoueur. À grande échelle d'interface, les six boutons
de navigation deviennent plus compacts pour préserver cette séparation.
La Gazette présente des boutons-titres avec la tête de l’auteur dans un carré
de 20 pixels à gauche, sur la même ligne ; le nom reste disponible au survol. Les demandes prennent la forme de
cartes encadrées avec aperçu, auteur, catégorie et état. Chaque zone possède
son propre défilement à la molette et sa barre de défilement. Le bouton +
ouvre la rédaction, l'en-tête ouvre la liste complète. « Afficher la suite »
ajoute la page suivante sans quitter le menu ni remettre le défilement à zéro.
La lecture des publications longues et des conversations utilise le
conteneur défilant natif existant.
## Périmètre technique
La carte utilise exclusivement les relevés personnels de l'atlas existant,
sans chargement ou génération de chunks. Elle respecte le déblocage de
l'atlas et les restrictions de dimension. Un clic ouvre la carte détaillée.
Le serveur solo transmet les relevés existants pendant la pause, par lots bornés,
sans observer de nouveaux blocs ni avancer la simulation. La limite de fréquence
accepte aussi le temps réel lorsque les ticks du monde sont arrêtés.
La texture et le flux réseau sont libérés en quittant le menu ; les réponses
tardives ne sont acceptées que par l'écran courant et son jeton.
Les publications utilisent les mêmes opérations paginées du contrat v1,
en fichier comme en MariaDB. Aucune migration, table ou modification du site.
L'actualisation des premières pages intervient lorsque leur défilement est en
haut ; une liste étendue reste stable jusqu'à sa réouverture.
Les textes d'interface sont disponibles en français et anglais.
La sélection d'un screenshot pour la Gazette reste l'étape suivante.
Les visages des demandes du tableau restent différés ; ceux de la Gazette
et des conversations sont présents. Les futures entrées
économiques ne sont pas des boutons factices.
## 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. Base de développement
MariaDB 12.3.3, distincte des données personnelles et du site public.
- Essais natifs Vulkan réussis dans les deux modes : fichier et MariaDB.
Français et anglais, GUI 2/3/4 à 1280 × 960 pixels (jusqu'à 320 × 240 unités
d'interface), contrôles contenus dans l'écran.
- Six vrais boutons Sanctuary ; espacement uniforme de 4 pixels en haut et
en bas ; avatars d’articles alignés à gauche des titres.
Défilements indépendants à la molette, ajout de la treizième publication par
pagination sans retour en haut, lecture jusqu'au bas des longs articles et
demandes, réponse publiée et relue.
- Options et Options du monde natives, reprise du jeu, ouverture de la carte
détaillée puis retour au menu. Carte personnelle reçue en plusieurs lots
pendant la pause ; l'horloge de simulation du monde reste immobile.
- Logs : `build/pause155-client-file.log`, `build/pause155-client-database.log`.
Captures : `build/pause155-{file,database}-screenshots/`, aperçu
`build/pause155-preview.png`. Les articles et le terrain de ces captures
proviennent exclusivement d'un monde de test plat et de données fictives.
`./gradlew check build` a terminé ses 252 GameTests : 229 réussites et les
23 échecs déjà recensés dans beta.154 (mêmes identifiants, aucun ajout ni
retrait). La commande échoue donc ; ce n'est pas un contrôle global vert.
Log : `build/pause155-check-build.log`, comparaison :
`build/pause155-server-failures.json` / `build/community-server-failures.json`.
`./gradlew check build assemblePack -x :sanctuary:runGameTest` réussit :
compilation, contrôles hors GameTests et assemblage. Les derniers ajustements
visuels de disposition sont ensuite vérifiés par les scénarios client natifs
et un nouvel assemblage des artefacts, sans réexécuter les 252 GameTests.
Log : `build/pause155-build-pack.log`.
Aucun déploiement personnel ni publication du canal packwiz.
Commande des essais natifs :
```sh
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryPause155ClientTests=true \
-PsanctuaryClientGraphicsBackend=vulkan
```
Le scénario MariaDB utilise les variables de développement documentées dans
[COMMUNITY-154](community-beta154.md). Le schéma reste le contrat v1.
La sélection de screenshots et la validation Windows restent ouvertes.
## Artefacts locaux vérifiés
Assemblage final réussi avec `./gradlew build assemblePack -x :sanctuary:check`,
après réussite des essais natifs de la disposition finale dans les deux modes.
Export packwiz réussi. ZIP, version Fabric/Minecraft, JAR unique dans le MRpack,
pilote MariaDB embarqué et absence des classes de test vérifiés. Les 29 fichiers
shader sont identiques octet pour octet à beta.151. Les anciens JAR et le pack
beta.154 sont conservés, leurs empreintes vérifiées.
Reçu : `build/pause155-artifacts.json`. Logs : `build/pause155-final-assemble.log`
et `build/pause155-export.log`.
- `mods/sanctuary/build/libs/sanctuary-beta.155.jar` — SHA-256 `e8ba34ddd2726eb48fcea2b56a6f5a2e0262354553378c5bc25ca6f5061d32dc`.
- `build/Sanctuary-beta.155.mrpack` — SHA-256 `11be47c07edbb8180b4d6911a1eff7656ba2ce4168d35b96096519a2491e899f`.
+33
View File
@@ -0,0 +1,33 @@
# PAUSE-156 — reprendre la partie sous la colonne droite
Branche `codex/pause-resume-right-beta156`, livraison locale `beta.156`.
Suite de [PAUSE-155](pause-redesign-beta155.md).
Le bouton natif Reprendre la partie se trouve en bas à droite, sous la colonne
Gazette / tableau, avec le même alignement et la même largeur. Il conserve son
action native et les libellés français / anglais de Minecraft.
La modification concerne uniquement sa géométrie. Les options restent en bas
à gauche ; les publications, le stockage, la carte et les shaders conservent
leur fonctionnement de beta.155. Aucune migration ni installation personnelle.
## Vérifications
Le scénario client Vulkan existant passe en français et anglais, GUI 2/3/4 à
1280 × 960 : alignement du bouton avec la colonne droite, largeur identique,
absence de chevauchement avec le tableau, reprise effective du jeu. Les
interactions communautaires du scénario passent également en mode fichier.
Log : `build/pause156-client.log`, aperçu `build/pause156-preview.png`.
`./gradlew check build assemblePack -x :sanctuary:runGameTest` réussit.
Export packwiz, intégrité ZIP, versions du mod / pack et contenu du JAR
embarqué vérifiés. Les shaders sont inchangés et les artefacts beta.155
conservés avec leurs empreintes. Logs : `build/pause156-build-pack.log`,
`build/pause156-export.log`, reçu `build/pause156-artifacts.json`.
La suite serveur complète de beta.155 compte 229 réussites / 252, avec les
23 échecs historiques. Elle n’est pas relancée pour ce déplacement de bouton.
## Artefacts locaux
- `mods/sanctuary/build/libs/sanctuary-beta.156.jar` — SHA-256 `c325a757cff6063fe3702e755a57a3abc13ad86e071762354a3c449504d51c6f`.
- `build/Sanctuary-beta.156.mrpack` — SHA-256 `0537273dbfecb071d481f3f22982fbbb9a8e8a75581e38128ded87926ee699d0`.
+82
View File
@@ -0,0 +1,82 @@
# RENDER-147 — PBR proche, lune et portée 256 blocs
Branche `codex/pbr-close-range-beta147`, socle beta.146 `cf9a670`.
Minecraft 26.3, Java 25 ; dépendances et formats de sauvegarde inchangés.
## Résultat
- Le prépassage des récepteurs PBR comparait encore les profondeurs natives
avec un epsilon fixe de 0,0000001. En profondeur inversée, cette marge
devenait trop stricte au voisinage de la caméra : de nombreux fragments
alternaient entre le rendu natif et le PBR lors de mouvements minuscules.
- La comparaison utilise maintenant une distance reconstruite avec la marge
bornée de 5 mm déjà employée par les passes couleur. La sélection de la
surface PBR la plus proche et son test de profondeur EQUAL restent stricts.
Aucun décalage du maillage ni fondu supprimant le PBR près de la caméra.
- La lune ne reçoit plus le renforcement spéculaire du soleil (×20 pour
l’eau, ×4 pour les autres matières). Son coefficient lunaire et ses phases
restent appliqués ; le grand reflet solaire est conservé.
- Distance commune PBR/SSR : 16, 32 (défaut), 64, 128 ou 256 blocs.
À 256, le rayon SSR peut aussi rechercher jusqu’à 256 blocs. Nombre de pas
et budgets de maillage inchangés ; les limites du terrain visible/chargé,
des reflets hors écran et du budget de maillage subsistent.
- PBR 80 %, SSR 20 %, mélange des eaux et préférences de beta.146 conservés.
Libellés FR/EN mis à jour.
## Vérifications
Mondes de test jetables, macOS Apple M1. Aucune sauvegarde personnelle utilisée.
- Reproduction avant correction sous Vulkan : à 12 cm du sol de briques,
59 442 / 262 272 pixels changent de plus de 12 niveaux RVB cumulés sous une
rotation de 0,00002 degré. Le test échoue. Journal :
`build/beta147-close-before-vulkan.log`.
- Même scène après correction : 1 / 262 272 pixels à 12 cm ; également testé
à 25 cm, 50 cm et 1 m. Suite PBR Vulkan réussie :
`build/beta147-close-after-vulkan.log`.
- Preuves avant/après dans `build/evidence/close-before-vulkan/` et
`build/evidence/close-after-vulkan/`.
- Suite PBR et préférences OpenGL finale réussie : mêmes scènes proches,
persistance des distances dont 256 blocs, FR/EN, OFF/zéro, intensités,
rechargement, redimensionnement et effets combinés.
Journal : `build/beta147-close-final-opengl.log` ; preuves :
`build/evidence/beta147-close-final-opengl/`.
- Suite SSR Vulkan finale réussie : F5, intersections, portées dont 256,
eau/verre/métal, OFF/zéro, rechargement et redimensionnement.
Journal : `build/beta147-ssr-final-vulkan.log` ; preuves :
`build/evidence/beta147-ssr-final-vulkan/`.
- À PBR 80 % / SSR 20 %, le soleil conserve 22 697 pixels quasi blancs sur
la scène aquatique 854 × 480. La lune seule en compte zéro, tout en modifiant
visiblement 40 808 pixels par rapport au PBR OFF. Capture du bloom lunaire
inspectée : reflet doux, sans plateau blanc.
- Suite SSR OpenGL finale réussie également : zéro pixel quasi blanc pour
la lune, 22 111 pour le soleil et 40 749 pixels de reflet lunaire visibles.
Intersections : 91 / 518 400 pixels changés sous rotation minuscule.
Journal : `build/beta147-ssr-final-opengl.log` ; captures correspondantes
dans `build/evidence/beta147-ssr-final-opengl/`.
- `./gradlew check build` dans un instantané isolé : 252 tests serveur,
229 réussis, 23 échecs, avec exactement les mêmes identifiants que beta.146.
Journal : `build/beta147-check-build-isolated.log` ; comparaison :
`build/beta147-server-failures.json`. La vérification globale reste en échec.
Les derniers ajouts lune/256 concernent exclusivement le rendu client,
ses réglages et ses tests ; ils sont validés par les suites finales ci-dessus.
- Assemblage final réussi : `./gradlew build assemblePack -x :sanctuary:check`,
après les contrôles purs et serveur exécutés dans l’instantané, sans les
répéter. Journal : `build/beta147-build-pack.log`. Cette exclusion ne
transforme pas le contrôle complet en réussite.
## Artefact
[Sanctuary-beta.147.mrpack](../build/Sanctuary-beta.147.mrpack), également copié
à côté de beta.146 dans `sanctuary-beta/build/`. Aucun ancien pack remplacé,
aucune installation Prism ou publication effectuée.
Archive ZIP vérifiée, un seul JAR Sanctuary beta.147, identique au JAR construit,
shaders identiques aux sources finales, options FR/EN 256 présentes,
Minecraft 26.3 / Fabric Loader 0.19.5 conservés. Taille : 10 519 851 octets.
SHA-256 : `b8044243dbe160d5171ea584052cf5732393e4d91352c29c33b727af80c0a5bc`.
Reçu : `build/beta147-artifacts.json`.
+173
View File
@@ -0,0 +1,173 @@
# PBR-142 — Stabilité du relief et Vulkan par défaut
Socle beta.141 `7ce01c4`, branche `codex/pbr-refresh-beta142`.
Minecraft 26.3 / Java 25. Livraison beta.142.
## Contrat
Corriger le clignotement lors de la reconstruction des sections PBR : conserver
le rendu précédent jusqu'à ce que le remplaçant soit disponible et éviter les
reconstructions dues seulement aux lumières dynamiques. Une invalidation pendant
une reconstruction doit être conservée, sans annuler indéfiniment le travail.
Le PBR passe à 80 % par défaut, valeur confirmée par l'utilisateur ; les choix
explicitement enregistrés restent conservés.
La capture `2026-09-18_04.19.34.png` montre des points très clairs, plus fins
que les pixels des textures, sur des parois et un plafond de grotte. L'utilisateur
confirme OpenGL et leur disparition quand seul le PBR est coupé. Examiner
les lectures de textures et les calculs aux angles rasants séparément du cache.
Tests natifs prévus : recalcul de section sous observation, invalidations
répétées, remplacement atomique, suppression réelle de blocs, lumière portée,
cache et préférences ; OpenGL et Vulkan. Pas de monde personnel ouvert.
## Précision du signalement et implémentation
L'utilisateur précise ensuite que le bruit apparaît **en mouvement**, et demande
le passage à Vulkan. Il ne faut donc pas attribuer les points de sa capture au
seul clignotement de reconstruction : ce sont deux vérifications distinctes.
- Les sections PBR publiées restent affichées jusqu'au remplacement de leur
maillage. Une nouvelle invalidation durant la construction est mémorisée ;
elle n'annule plus continuellement le travail. Le budget permanent reste
24 Mio, avec temporairement l'ancien et le nouveau maillage d'une section.
- Les invalidations de lumière dynamique ne régénèrent plus la géométrie PBR.
Les changements de blocs et de lumière du ciel restent pris en compte.
- Lectures explicites des texels de profondeur/scène et du niveau de matériau,
gradients de texture calculés avant les rejets de fragments. Les produits
scalaires des reflets sont bornés, la puissance entière de Fresnel est
explicite, les résultats non finis ne remplacent pas la scène native.
Aucun flou ajouté aux textures.
- Le choix graphique natif « Par défaut » devient « Vulkan (par défaut) »
(FR/EN) et essaie Vulkan en premier. Minecraft conserve son repli OpenGL si
Vulkan ne peut pas être initialisé. Un choix **OpenGL explicite** reste
disponible ; pour une installation ainsi réglée, sélectionner Vulkan dans
les réglages vidéo puis redémarrer. Aucun moteur externe ni VulkanMod ajouté.
- 80 % est la nouvelle intensité PBR initiale. Les valeurs déjà enregistrées
explicitement restent conservées.
Le code Minecraft 26.3 a été inspecté : `PreferredGraphicsApi.VULKAN` essaie
Vulkan puis OpenGL ; le choix natif `DEFAULT` essayait auparavant OpenGL d'abord.
Tous les effets Sanctuary utilisent déjà l'API graphique native. Le seul hook
OpenGL direct est le correctif spécifique de lecture des panoramas dans
`GlCommandEncoder` ; il ne remplace pas la voie Vulkan native.
Référence pour les lectures après contrôle divergent :
[documentation Khronos des samplers](https://wikis.khronos.org/opengl/Sampler_%28GLSL%29).
La correction rend ces lectures explicites ; elle ne constitue pas à elle seule
une reproduction du défaut sur le pilote Windows de l'utilisateur.
## Observations de diagnostic
Le détecteur de points blancs isolés (minimum RGB 170, au moins cinq voisins
sur huit sous 120) compte 669 points sur l'image utilisateur et zéro sur la
première grotte de contrôle. Il s'agit de scènes, résolutions et pilotes différents,
pas d'un avant/après reproduisant exactement le bug utilisateur. Les rendus
natifs OpenGL de contrôle étaient déjà exempts de ce grain avant les nouvelles
protections du shader ; le signalement Windows reste donc à reconfirmer là-bas.
Le test de rafraîchissement conserve les mêmes maillages publiés durant douze
invalidations consécutives, compare l'image et vérifie que des remplacements
aboutissent. Le test de torche alterne quatre fois les torches normales/des âmes
sans reconstruction des normales. Le contrôle de mouvement presse réellement
Avancer, maintient la torche et le PBR actifs et vérifie un déplacement d'au moins
un bloc avant de vérifier les 24 captures. Les angles -30°, 0° et 35° sont aussi
contrôlés, ainsi que les effets combinés et les préférences.
### Domaine invalide du reflet de la torche en main
Pour la lumière du joueur en vue subjective, la source est la caméra : le
vecteur lumière et le vecteur de vue sont parallèles. L'ancien
`pow(1 - max(dot(v,h),0),5)` n'avait aucune borne supérieure pour ce produit
scalaire. Un calcul reproductible Float32 (100 000 positions, graine 142)
donne 19 991 bases légèrement négatives, jusqu'à -2,3841858e-7, contre zéro
après clamp. C'est une reproduction numérique d'un **domaine de calcul invalide**,
pas une reproduction des pixels produits par le pilote utilisateur.
GLSL 3.30 ne définit pas `pow` pour une base négative, même avec un exposant
entier : [spécification Khronos, fonctions exponentielles](https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.3.30.pdf).
Le correctif borne les cosinus à [0,1] et remplace cette puissance par des
multiplications. La torche alignée sur la caméra ne dépend donc plus du traitement
de cette entrée invalide par le pilote. Reçu numérique ignoré :
`build/pbr142-fresnel-domain.json`.
### Mise à jour des fixtures antérieures
La suite Vulkan complète s'est arrêtée au contrôle SSGI de coin : l'oracle
ne trouvait plus de pierre neutre (`rows=0`), car les lumières colorées ajoutées
depuis beta.139/140 teintaient la pierre avec la lave. Le test de proximité SSGI
et le test PBR solaire isolent désormais leur effet en coupant cette autre passe.
Aucun seuil n'a été diminué et aucun changement de rendu SSGI n'est livré.
Le sous-ensemble en échec est relancé séparément ; les étapes précédentes
(ombres, CTM, bloom, lens flare, déplacement SSGI) avaient réussi.
## Vérifications natives
Sur Mac Apple M1, Java 25 et Minecraft 26.3 :
- OpenGL : suite couleurs/directions/rafraîchissement en 3 min 36 s, puis
déplacement continu avec torche active en 1 min 36 s. Zéro point blanc isolé
sur les 24 images de mouvement et les trois angles de grotte.
- Vulkan/MoltenVK 1.4.2 : sélection automatique sans argument de moteur,
couleurs/directions/rafraîchissement en 3 min 47 s. Dernier test continu avec
torche active en 1 min 37 s, zéro point blanc isolé sur les 24 images.
- Ombrages lune/midi/feuilles, distances et précisions, stabilité temps réel,
CTM, bloom (minerais, torche, lampe, lave, soleil), émissifs indépendants et
lens flare validés sous Vulkan dans la suite d'effets. Le déplacement SSGI
sur douze blocs passe également. La suite s'arrête ensuite sur l'oracle
ancien de couleur de pierre décrit ci-dessus : ne pas présenter ce lancement
de 7 min 15 s comme une réussite complète.
- Reprise ciblée après isolation de cet oracle : SSGI près des surfaces puis
PBR extérieur réussis sous Vulkan en 2 min 55 s. Proximité 35/100, haute
résolution, léger mouvement, toit ajouté/retiré, reload, resize, zéro/OFF et
effets combinés. Gain SSGI au coin test : 6,01 sur 99 lignes à 35 %.
- Les nouvelles valeurs initiales et les choix enregistrés sont testés, dont
une intensité PBR explicitement enregistrée à 50 qui reste à 50.
Les premiers essais du nouveau contrôle de mouvement ont permis de corriger
son entrée clavier : `pressKey` ne maintient pas une touche enfoncée. Le test
final utilise `holdKey` puis `releaseKey`, vérifie le déplacement réel et refuse
la disparition de la lumière portée ou du PBR pendant les captures.
Les jeux de test utilisent uniquement des mondes neufs et ignorés. La capture
et le pilote Windows utilisateur n'ont pas été reproduits à l'identique ; leur
retest reste ouvert malgré les corrections numériques et les contrôles natifs.
## Construction et archives
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 38 s**, 126 tâches. Le GameTest serveur dédié reste exclu
selon le refus EULA antérieur ; les suites clientes ci-dessus ont réellement
utilisé les deux moteurs natifs. `git diff --check` passe.
Les archives normale/Test embarquent le même JAR, leurs versions/index/hashes
sont vérifiés, leurs sources correspondent aux fichiers courants. Le template
contient exactement les ressources attendues. Les onze entrées de production
modifiées par rapport à beta.141 sont limitées au PBR, au choix graphique et
aux traductions ; les ressources de jeu antérieures sont conservées.
SHA-256 du JAR : `0bc2da9df2ef004e6dc78932cfde7b31b7717c63c83ceed789d151177c41bc1a`.
- `Sanctuary-beta.142.mrpack` : 10464746 octets ; SHA-256 `dba4fd8e1e3b20136faa1c1de3494df3cb250c87de199c04e07883c786ca48ee`.
- `Sanctuary-Test-beta.142.mrpack` : 10483672 octets ; SHA-256 `d56b81a4aea6649a40a3c49dedee904989943a518ad0ae7c520b808dd0f9b9a7`.
Reçu détaillé ignoré : `build/shader142-artifact.json`.
## Livraison réalisée
[Release beta.142](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.142)
publiée depuis `ea151dd5df8c7c5abd0107656f40c723efbf2ebe`. Canal stable :
`d661260e2bbabb0326c86d6cc543daf986979596`. Archives normale/Test, ZIP d'amorçage Prism et template
publiés avec vérification de leurs téléchargements ; tag et artefacts immuables.
Deux synchronisations isolées puis deux synchronisations de l'instance
**Sanctuary Beta** réussies. Les 923 fichiers personnels suivis ont conservé
leurs hashes, notamment mondes, réglages et packs personnels. Aucun monde
personnel ouvert. Sauvegarde préalable : `sanctuary-backups/before-beta.142/`.
L'instance locale conserve son réglage graphique natif « default », qui démarre
désormais avec Vulkan prioritaire. Un Windows explicitement réglé sur OpenGL
doit sélectionner Vulkan dans les réglages vidéo et redémarrer.
Archives locales également dans `sanctuary-beta/build/`. Le checkout de travail
historique modifié `sanctuary-beta` n'a pas été réinitialisé ; seules ces archives
ignorées y ont été déposées. Sources sur `codex/pbr-refresh-beta142`.
+68
View File
@@ -0,0 +1,68 @@
# RENDER-148 — PBR 50 % et reflet solaire diffus
Branche `codex/pbr-soft-sun-beta148`, socle beta.147 `96a36d9`.
Minecraft 26.3, Java 25, dépendances et sauvegardes inchangés.
## Résultat
- PBR à 50 % par défaut, SSR toujours à 20 % et portée commune jusqu’à 256.
- Les configurations anciennes contenant exactement PBR 80 % passent à 50 %.
Un marqueur de migration conserve ensuite tout choix explicite, y compris
un nouveau choix 80 %. Les autres anciennes intensités restent conservées.
- Le reflet solaire de l’eau avait un renforcement ×20 et une compression
exponentielle qui effaçait les détails dans une large zone blanche.
Le renforcement passe à ×6 et le lobe est plus diffus (rugosité minimale
de 0,42 au lieu de 0,34 pour le lobe céleste de l’eau).
- Pour le soleil sur l’eau, fusion par texel entre éclaircissement vers le
blanc et lumière douce fondée sur la couleur native. La pondération emploie
une compression rationnelle, sans atteindre brutalement un plateau blanc.
La texture et ses animations restent natives ; aucun bruit ajouté.
- La lune conserve son intensité atténuée, sans renforcement solaire.
Les lampes et matières solides conservent leur fusion spéculaire précédente.
Le bloom reste réglable et suit la lumière réellement ajoutée.
## Vérifications
Scènes plates jetables, Apple M1, Vulkan et OpenGL. Le test solaire contrôle
une lumière largement visible et limite les pixels quasi blancs à moins de
0,5 % de l’image, au lieu d’imposer une grande tache blanche.
Premier contrôle Vulkan à PBR 50 % / SSR 20 % : 149 908 pixels éclaircis,
zéro pixel quasi blanc sur 854 × 480. Captures vues du dessus et à soleil bas
inspectées : la texture reste visible dans la traînée lumineuse.
Preuves : `build/evidence/beta148-preview/`.
Rendu de la traînée solaire approuvé par le créateur après inspection de la capture.
- Suites SSR complètes Vulkan et OpenGL réussies : F5, intersections, portées,
eau/verre/métal, OFF/zéro, lune, bloom, rechargement et redimensionnement.
Journaux : `build/beta148-ssr-vulkan.log`, `build/beta148-ssr-opengl.log`.
Sous OpenGL, 146 680 pixels éclaircis et zéro pixel quasi blanc dans la scène
solaire. La lune reste visible sans saturation (35 865 pixels modifiés).
Preuves : `build/evidence/beta148-ssr-vulkan/` et
`build/evidence/beta148-ssr-opengl/`.
- Suites PBR/préférences Vulkan et OpenGL réussies : défaut 50 %, migration
de l’ancien 80 %, conservation d’un nouveau choix explicite 80 %, valeurs
personnalisées, FR/EN, proximité, OFF/zéro, intensités et rechargement.
Journaux : `build/beta148-pbr-vulkan.log`, `build/beta148-pbr-opengl.log`.
- `./gradlew check build` dans l’instantané isolé : 252 tests serveur,
229 réussis, 23 échecs. Exactement les mêmes identifiants que beta.147,
aucun nouvel échec. Journal : `build/beta148-check-build-isolated.log` ;
comparaison : `build/beta148-server-failures.json`. Le contrôle global
demeure donc en échec.
- Assemblage final réussi : `./gradlew build assemblePack -x :sanctuary:check`,
sans répéter les contrôles purs et serveur déjà exécutés dans l’instantané.
Journal : `build/beta148-build-pack.log`. L’exclusion ne constitue pas
une réussite du contrôle complet.
## Artefact
[Sanctuary-beta.148.mrpack](../build/Sanctuary-beta.148.mrpack), également copié
à côté des autres versions dans `sanctuary-beta/build/`. Archive ZIP vérifiée,
un seul JAR Sanctuary beta.148 identique au JAR construit, shaders finaux
identiques aux sources, textes FR/EN 50 % et dépendances exactes vérifiés.
Taille : 10 520 050 octets. SHA-256 :
`597cc2a96eabc3cf0ebf8ac59b4f94cf7cabf0c773e1dce13c10736ca6fcba38`.
Reçu : `build/beta148-artifacts.json`.
Aucune publication ni installation Prism effectuée.
+221
View File
@@ -0,0 +1,221 @@
# PBR-SSR — eau, verre et reflets pixélisés
Livraison locale **beta.145**, branche `codex/pbr-ssr`. Socle PBR beta.142 /
suivi beta.143 et copie figée des sources du chantier d’eau beta.144. Minecraft 26.3, API graphique native.
## Contrat
Les reflets colorent les texels de matière sur une grille 16 × 16 liée aux UV,
avec les normales procédurales existantes. Eau et verre sont diélectriques.
L’eau reprend les faces du tessellateur natif (niveaux, pentes, écoulements,
waterlogging), sans modification de géométrie ni simulation de vagues.
Le verre réfléchit aussi sur les zones sans pigment de sa texture. Les pixels
pigmentés conservent leur relief même avec un alpha faible ; l’alpha nul
utilise la normale géométrique.
Les images des normales d’eau sont préparées au chargement du matériau ; leur
séquence suit l’horloge effective des animations de l’atlas, avec interpolation.
Seules les petites tuiles de normales changent sur le GPU, pas le maillage.
Les normales des textures haute résolution sont rééchantillonnées à 16 × 16.
Au-delà de 1 024 images par sprite, un avertissement signale le repli vers
une normale fixe pour borner la mémoire.
L’option FR/EN « Reflets du paysage — expérimental » est OFF initialement,
intensité 50 %, bornée entre 0 et 100. Elle exige le PBR actif. L’eau naturelle
reste indépendante pour ses couleurs, sa transparence et sa brume.
## Pipeline et limites
Couleur et profondeur du paysage sont copiées après les opaques et avant les
transparences, dans les deux chemins natifs. Le chemin classique ferme la passe
opaque avant la copie, puis reprend la transparence native dans une nouvelle
passe. Aucune copie d’attachement Vulkan encore ouvert.
Une profondeur propre sélectionne le récepteur PBR le plus proche devant le
paysage opaque. Une vitre devant l’eau reçoit seule le SSR ; les couches
suivantes conservent leur rendu natif. La profondeur du fond n’est pas utilisée
comme profondeur de surface de l’eau.
8 à 32 pas déterministes adaptés à la longueur écran, puis quatre raffinements maximum, récepteurs jusqu’à
32 blocs et rayons jusqu’à 128 blocs. Pas de bruit aléatoire, historique,
réflexion récursive, réfraction nouvelle, lecture GPU vers CPU ou ajout de
lumière de gameplay. Les objets hors écran ou masqués ne sont pas retrouvés. Les détails fins entre
deux pas peuvent être manqués ; une interpolation finale affine le point
d’intersection sans augmenter le nombre de recherches.
Un échec revient progressivement au rendu existant ; les transparences et les
effets Sanctuary postérieurs à la capture ne figurent pas dans le reflet.
Les reflets sont composés après le SSGI, avant contours, bloom et rayons.
La main et le HUD restent en dehors du traitement. Le PBR conserve son
périmètre Overworld hors immersion et s’efface avec les moteurs externes.
Budget de maillages : 24 Mio de solides, 8 Mio supplémentaires de transparences.
Deux profondeurs plein écran servent aux surfaces PBR ; la couleur de paysage
SSR est allouée seulement à ON/intensité positive. La copie de composition PBR
existante est réutilisée. Aucun buffer de normales plein écran.
La grille visuelle ne signifie pas qu’un seul fragment GPU est exécuté par texel.
## Intégration
Le commit `38f4d6c` apporte le SSR et les récepteurs transparents. Le commit
`0cfd51e` importe une copie contrôlée des sources beta.144 depuis le chantier
`codex/water-beta144`, fondé sur `580b241`. Les empreintes des fichiers ont été
comparées avant et après la copie ; le reçu local est dans
`build/water144-snapshot/manifest.json`. Cette intégration ne prétend pas que
beta.144 a été publiée ou que son benchmark isolé est terminé. Le code de
production de cet instantané est identique à celui du commit
`7eef945` ensuite créé sur la branche d’eau. Les essais ci-dessous portent
sur les sources réunies dans cette branche.
Points d’entrée : `PbrMaterials` et `PbrAnimation` pour les normales animées,
`PbrFluidMesh` pour le tessellateur natif, `PbrTerrain` pour les deux budgets,
`ReflectionSceneMixin` pour la capture opaque, `PixelReflections` et
`pixel_reflections.fsh` pour la sélection et le rayon. Les horloges de sprites
sont référencées faiblement des deux côtés afin de ne pas retenir les anciens
atlas après rechargement.
## Vérifications
Machine : Apple M1, Minecraft 26.3, Java 25, macOS. Mondes plats de test neufs,
graine 122 ; aucune sauvegarde personnelle utilisée. Les captures conservent
le préfixe historique `sanctuary-beta142-shader` du banc de test.
- Client OpenGL 4.1 Metal 90.5, transparence classique : suite SSR réussie avec les sources d’eau
intégrées (`build/ssr145-opengl-final.log`).
- Client Vulkan/MoltenVK : suite SSR avec transparence améliorée réussie
(`build/ssr145-vulkan-final.log`).
- Régression du PBR historique et nouvelles assertions de profils, normales
transparentes, persistance, bornes et traductions SSR : réussies
(`build/ssr145-pbr-regression-retry.log`). Une première tentative interrompue
s’était arrêtée sur un timeout de sémaphore Vulkan ; elle reste un échec
consigné dans `build/ssr145-pbr-regression.log`.
- Suite fonctionnelle eau beta.144 : réussie, y compris profils, fond modifié,
brume, océan, rechargement, préférences, cascades et pack de matériaux
(`build/ssr145-water-functional.log`). Son long benchmark autonome a été
explicitement sauté ; le coût SSR est mesuré séparément ci-dessous.
- Le relief rouge puis bleu produit deux contributions de couleur distinctes
dans le bassin ; caché par un mur opaque, ce changement ne traverse pas le mur.
- Eau animée sans nouvelle analyse de texture, verre transparent devant l’eau,
métal, déplacement minime de caméra, rotation, OFF/zéro, immersion,
rechargement de ressources et redimensionnement sont exercés par assertions.
L’horloge d’eau reste active après rechargement ; les profils sable et étang
restent corrects avec PBR et SSR simultanément actifs.
- Des captures couvrent également les effets combinés, la lune, les angles
rasants, la translation de caméra, la sortie du paysage hors écran, la pierre
rugueuse OFF/ON, des vitres colorées superposées, un écoulement, une cascade
et une dalle gorgée d’eau. Elles ne remplacent pas une inspection
artistique de tous les angles et de tous les packs.
Captures locales OpenGL : [OFF](../build/ssr-evidence/beta145-opengl-final/0000_sanctuary-beta142-shader-ssr-water-off.png),
[ON](../build/ssr-evidence/beta145-opengl-final/0001_sanctuary-beta142-shader-ssr-water-on.png).
Le dossier `build/ssr-evidence/beta145-opengl-final/` contient les autres captures.
Les mêmes cas Vulkan sont conservés dans
`build/ssr-evidence/beta145-vulkan-final/`. Les comparaisons eau, métal et
verre empilé ont été inspectées visuellement. Ces pièces sont ignorées par Git.
## Coût mesuré
1920 × 1080, PBR à 80 %, SSR à 100 % pour accentuer le résultat, VSync OFF,
limite de FPS et réduction AFK désactivées. Chaque scène chauffe 30 ticks par
état avant 80 ticks de mesure, soit 324 à 483 images pour OpenGL et 317 à 477 pour Vulkan. Ordre OFF puis
ON ; il s’agit d’un diagnostic local court, pas d’une campagne statistique.
Le temps de frame mesure `Minecraft.renderFrame`, présentation comprise.
| OpenGL | Médiane OFF / ON (ms) | p95 OFF / ON (ms) | Écart médian |
| --- | --- | --- | --- |
| Petit étang | 7,57 / 9,42 | 10,35 / 12,50 | +1,85 ms |
| Eau dominante | 7,76 / 11,67 | 10,67 / 13,96 | +3,91 ms |
| Construction vitrée | 7,85 / 10,12 | 10,67 / 12,65 | +2,27 ms |
| Vulkan | Médiane OFF / ON (ms) | p95 OFF / ON (ms) | Écart médian |
| --- | --- | --- | --- |
| Petit étang | 7,97 / 10,36 | 8,97 / 11,49 | +2,40 ms |
| Eau dominante | 10,10 / 12,23 | 10,97 / 12,97 | +2,13 ms |
| Construction vitrée | 8,52 / 11,25 | 9,49 / 12,20 | +2,72 ms |
La mesure GPU Vulkan autour de `PixelReflections.render` donne, à ON,
**2,07 / 2,18 ms** (médiane / p95) pour l’étang, **2,56 / 2,63 ms** pour
l’eau dominante et **2,09 / 2,21 ms** pour le verre. À OFF, la sonde mesure
0,03 ms environ. Ce périmètre couvre la copie de composition et le dessin
SSR ; il exclut la capture opaque antérieure et la profondeur partagée PBR.
La sonde utilise les valeurs rendues par la requête native, pas une mesure
GPU du jeu complet.
La requête GPU native ne fournit pas de mesure exploitable sur ce pilote
OpenGL ; ce champ est indisponible, pas nul. Les premiers essais contaminés
par la réduction AFK à 30 FPS sont exclus des résultats retenus.
**L’objectif de surcoût médian inférieur à 2 ms n’est pas respecté dans l’ensemble des
scènes.** L’option reste expérimentale et désactivée par défaut.
À 1080p : profondeurs partagées par le PBR = 15,82 Mio ; copie couleur SSR
supplémentaire = 7,91 Mio, libérée à OFF/zéro. Total de ces cibles à ON :
23,73 Mio. Les maillages observés occupent environ 0,51–0,55 Mio de solides et
1,09–1,21 Mio de transparences, en dessous des plafonds 24 / 8 Mio vérifiés
par assertion. Ces compteurs n’incluent ni la mémoire du moteur, ni la copie
PBR existante, ni les atlas de matériaux de 6,25 Mio chacun ; ce ne sont pas
des mesures de mémoire totale du processus.
## Construction et contrôles généraux
`./gradlew check build` a été exécuté jusqu’au bout : **229 GameTests serveur
réussis sur 252, 23 échecs**, en 8 min 45 s pour la commande complète.
Les échecs concernent les tombes/familiers, le catalogue, deux invariants de
génération, les placements de blocs/progression/construction et les menus
natifs. Les tests concernés et le code de gameplay serveur ne sont pas
modifiés par ce lot. Aucun contre-test de toute la branche de départ n’est
revendiqué. Le journal complet est `build/ssr145-check-build.log` ; le relevé
exhaustif est `build/ssr145-server-failures.json`.
L’assemblage est repris avec `./gradlew check build assemblePack assembleTestPack
-x :sanctuary:runGameTest`, en excluant uniquement cette tâche déjà exécutée.
Cette commande réussit en 2 min 56 s (126 tâches) ; vérification du pack,
compilation, contrôles hors GameTests serveur et assemblages passent. Les
exports MRpack sont produits depuis leurs dossiers packwiz de staging.
L’intégrité ZIP, les métadonnées, les traductions et mixins SSR ainsi que
l’identité du JAR embarqué dans les deux packs sont contrôlées.
Cette exclusion ne transforme pas le contrôle complet en succès.
## Reproduire les essais client
Base de chaque commande :
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryQuickTests=true \
-PsanctuaryPbr134ClientTests=true -PsanctuaryClientNoVsync=true
```
- SSR Vulkan : ajouter `-PsanctuarySsrClientTests=true
-PsanctuaryClientGraphicsBackend=vulkan -PsanctuaryClientImprovedTransparency=true`.
- SSR OpenGL : ajouter `-PsanctuarySsrClientTests=true
-PsanctuaryClientGraphicsBackend=opengl -PsanctuaryClientImprovedTransparency=false`.
- Régression PBR : ajouter uniquement `-PsanctuaryClientGraphicsBackend=vulkan`.
- Profils et rendu de l’eau : ajouter `-PsanctuaryWater144ClientTests=true
-PsanctuaryWater144FunctionalOnly=true -PsanctuaryClientGraphicsBackend=vulkan`.
Le mode fonctionnel saute uniquement le long benchmark autonome beta.144.
Les sondes de temps de frame/GPU et lectures d’images appartiennent au mod
de test ; elles ne sont pas embarquées dans le JAR de production.
## Artefacts locaux
Les archives finales sont rafraîchies depuis le JAR testé, puis revérifiées
(`build/ssr145-artifacts.json`). Aucun tag ni canal n’est publié.
| Artefact | Octets | SHA-256 |
| --- | ---: | --- |
| [sanctuary-beta.145.jar](../mods/sanctuary/build/libs/sanctuary-beta.145.jar) | 11369411 | `55341e2f5c8dcc352190fe96d15e86cd1ee6bb4ea2908441b70491d48f86f608` |
| [Sanctuary-beta.145.mrpack](../build/Sanctuary-beta.145.mrpack) | 10508045 | `8bebe6227cbfe629c714a7c7547640ab5ccfbefaaf211484a93c042cfb42b5c5` |
| [Sanctuary-Test-beta.145.mrpack](../build/Sanctuary-Test-beta.145.mrpack) | 10526966 | `54402ff8414ed1ae0d12b3b97af70c547c44dde2f3aa183712ae3769f99efbe7` |
| [Sanctuary-Template-beta.145.zip](../build/Sanctuary-Template-beta.145.zip) | 4358316 | `226d92362a5ce922b8757b36f30c312081aca5cf73a299b82a221a12f384a95b` |
## Limites de validation
Le banc utilise un relief construit reproductible, pas une montagne générée
représentative de tous les biomes. La validation artistique sur terrain généré,
les textures personnalisées avec ordre/durées/interpolation atypiques et la
stabilité sur un long trajet restent à compléter. Les surfaces peuvent perdre les petits détails entre
les pas SSR et les zones hors écran ne sont jamais reconstruites. Windows,
autres GPU et moteurs graphiques externes ne sont pas validés ici.
Aucune publication de canal ni synchronisation Prism dans cette livraison.
+128
View File
@@ -0,0 +1,128 @@
# Préparation locale des ombres portées pixélisées (ancien numéro beta.122)
Ticket du 17 septembre 2026, branche locale `codex/pixel-shadows-beta122`.
Cette préparation n'a jamais été publiée sous le numéro beta.122, déjà utilisé
par une autre livraison. Elle est intégrée au socle beta.126 et livrée en
[beta.127](shader-beta127.md). Les chemins et mesures ci-dessous décrivent
les essais historiques dans le dossier de préparation.
Demande : ajouter aux réglages de Sanctuary · Vanilla Light des ombres portées
pixélisées, avec une finesse et une distance réglables.
## Utilisation
Dans **Options → Shaders**, activer **Sanctuary · Vanilla Light**, puis
**Ombres portées pixélisées**. L'option est désactivée par défaut pour conserver
le coût et le rendu des installations existantes. Les choix sont :
- finesse de **8, 16 ou 32 pixels par bloc**, défaut 16 ;
- distance de **16, 32 ou 64 blocs**, défaut 32.
Ces préférences sont conservées dans `config/sanctuary-shaders.json`, avec les
anciens champs de couleur. Leurs valeurs numériques sont ramenées aux choix
admis au chargement. Les libellés et explications sont disponibles en FR/EN.
Les réglages s'appliquent sans recharger les ressources.
## Rendu et périmètre
Une carte de profondeur rend les formes d'occultation des blocs solides chargés
autour de la caméra, indépendamment de leur présence à l'écran. Les dalles et
escaliers conservent leurs formes. Le cache est invalidé par les changements de
blocs, les paquets de chunks et les reconstructions du moteur natif.
La direction solaire vient du ciel natif extrait par Minecraft, et respecte
ainsi l'angle solaire de Sanctuary. L'effet s'atténue sous la pluie, à l'horizon,
dans la brume et à la limite de sa portée. Il s'arrête la nuit, dans les dimensions
sans soleil, dans les fluides et lorsqu'un moteur externe suspend Vanilla Light.
La profondeur du monde est lue directement par le GPU après le rendu du monde,
avant la main et l'interface. L'inverse de la projection réelle inclut les effets
de caméra. Les points recevant l'ombre sont arrondis sur une grille ancrée dans
le monde ; le plan de la face est conservé pour limiter les auto-ombres.
La carte solaire utilise également une origine alignée sur ses texels.
Le HUD, la main, les étoiles et les captures panoramiques techniques gardent leur
chemin de rendu. Aucun niveau de lumière de gameplay, règle serveur, sauvegarde
ou générateur n'est changé. Aucune dépendance de rendu n'est ajoutée.
Cette première version couvre les **formes d'occultation des blocs** : les entités
conservent leurs ombres natives ; les feuillages ajourés, modèles non occultants,
block entities animés, eau et verre ne projettent pas de nouvelles silhouettes.
Les transparences et particules déjà composées peuvent recevoir l'assombrissement
du terrain derrière elles. Il n'y a pas d'ombres de lune ou de torches, ni de
séparation de l'éclairage local émissif dans cette passe d'assombrissement.
## Coût et cycle de vie
Les maillages sont mis en cache par section de 16³, avec au plus quatre sections
commencées par image et un budget souple de 3 ms pour leur construction. Les
ombres apparaissent progressivement pendant la préparation après activation ou
déplacement. Le volume des obstacles part de la portée choisie avec une marge de huit blocs,
puis s’étend vers le soleil sur deux fois cette portée, arrondi aux sections.
Les obstacles au-delà de ce volume ou dans des chunks non chargés ne sont pas
représentés. Les mises à jour de lumière seule ne reconstruisent pas les formes.
Le cache de sommets est plafonné à 96 Mio et omet les formes pathologiques qui
dépassent ses limites. Les textures de profondeur font entre 512 et 4 096 pixels
de côté selon finesse et portée. Le coût exact dépend de la scène et du GPU.
Les ressources sont libérées à la désactivation, au changement de monde, à la
reconstruction des ressources et à l'arrêt du client. Cette livraison est locale :
aucun avancement du canal packwiz ni installation personnelle ne fait partie du
ticket.
## Vérification
Validation native sur **Minecraft 26.3, Java 25, macOS / Apple M1, OpenGL 4.1**,
dans un nouveau monde plat de développement, graine **122** :
- Comparaison GPU activation/désactivation sur une plateforme blanche avec
pilier, dalle et escalier : **920 échantillons assombris**, 63 412 inchangés,
aucun éclairci sur les 64 332 échantillons de sol retenus.
- Pilier entièrement hors du frustum : **42 048 échantillons** restent dans
son ombre. Le retrait du pilier restitue la lumière sur **42 048 / 42 048**
échantillons et préserve les 23 616 échantillons déjà éclairés. Sa repose
restitue la même ombre, sans désactiver le cache entre ces manipulations.
- Les trois finesses et les trois portées sont appliquées en direct ; les cartes
GPU sont redimensionnées aux dimensions attendues. Désactiver l'option libère
la texture et ne soumet plus de passe d'ombres.
- À minuit, activer ou désactiver l'option donne la même image et aucune passe
solaire n'est soumise. Au retour du jour, le rendu reprend.
- Le rechargement des ressources restitue la même image. Les préférences
persistent à la relecture du fichier et leurs valeurs extrêmes sont bornées.
- Menus FR/EN inspectés en capture ; les libellés tiennent dans les contrôles
natifs à la taille de test. Les vues de finesse 8/16/32 sont conservées.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryPixelShadows122ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Succès en **1 min 17 s**, marqueur `PIXEL_SHADOWS122_CLIENT_PASS` dans
`build/pixel-shadows122-client.log`. Captures inspectées dans
`build/pixel-shadows122-evidence/final/`. Les pixels sont relus uniquement dans
le test ; le code de rendu de production n'effectue aucune lecture CPU de GPU.
Les premiers démarrages ont permis de corriger les identifiants de pipelines,
la directive GLSL `#include` attendue par 26.3 et deux libellés répétés du menu.
La commande de livraison est :
```sh
./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest
```
Le serveur GameTest dédié est exclu, conformément au refus de son EULA déjà
consigné dans les livraisons précédentes. Le test graphique utilise le serveur
intégré de son monde neuf. Aucun monde personnel n'est ouvert.
La construction finale **réussit en 2 min 18 s** (126 tâches), journal
`build/pixel-shadows122-build-final.log`. Le contrôle des archives confirme
**868 sources Java** et **1 869 classes** identiques aux sorties construites,
les ressources GLSL/FR/EN exactes dans le JAR et le template, et le même JAR
dans les profils packwiz normal et Test. Aucune fixture cliente n'est embarquée.
Reçu : `build/pixel-shadows122-artifact.json`.
Artefacts locaux : `mods/sanctuary/build/libs/sanctuary-beta.122.jar`,
`build/packwiz/`, `build/packwiz-test/` et `build/Sanctuary-Template-beta.122.zip`.
SHA-256 du JAR :
`66987681cede1d2adc1dda449078e8fa85310eb2c3fecd7a905d772ce75739c9`.
Pas de mesure de FPS, d'essai Windows/Vulkan, de pack Iris ni de silhouettes
animées revendiqués. Le shader reste un assombrissement graphique appliqué au
rendu opaque et déjà composé, avec les limites de transparence décrites plus haut.
+44
View File
@@ -0,0 +1,44 @@
# Publications beta.144 à beta.166
Rattrapage des releases Gitea du 24 septembre 2026. La beta.144 était déjà publiée ; ses tags et fichiers restent inchangés. Les archives suivantes sont publiées avec leurs binaires conservés, sans reconstruire ni renuméroter les anciens mods.
| Version | Commit source | Fichiers (hors SHA-256) |
| --- | --- | --- |
| [beta.145](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.145) | `ed2d08827260` | sanctuary-beta.145.jar, Sanctuary-Test-beta.145.mrpack, Sanctuary-beta.145.mrpack, Sanctuary-Template-beta.145.zip |
| [beta.146](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.146) | `cf9a670f4415` | sanctuary-beta.146.jar, Sanctuary-beta.146.mrpack, Sanctuary-Template-beta.146.zip |
| [beta.147](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.147) | `96a36d99bea0` | sanctuary-beta.147.jar, Sanctuary-beta.147.mrpack, Sanctuary-Template-beta.147.zip |
| [beta.148](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.148) | `6f871446bbbf` | sanctuary-beta.148.jar, Sanctuary-beta.148.mrpack, Sanctuary-Template-beta.148.zip |
| [beta.149](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.149) | `1c23d0c17ec9` | sanctuary-beta.149.jar, Sanctuary-beta.149.mrpack, Sanctuary-Template-beta.149.zip |
| [beta.150](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.150) | `448e2febff2a` | sanctuary-beta.150.jar, Sanctuary-beta.150.mrpack, Sanctuary-Template-beta.150.zip |
| [beta.151](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.151) | `b97ec6c9e820` | sanctuary-beta.151.jar, Sanctuary-beta.151.mrpack, Sanctuary-Template-beta.151.zip |
| [beta.154](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.154) | `0eb1a381d4d3` | sanctuary-beta.154.jar, Sanctuary-beta.154.mrpack, Sanctuary-Template-beta.154.zip |
| [beta.155](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.155) | `3bfb3cb251a1` | sanctuary-beta.155.jar, Sanctuary-beta.155.mrpack, Sanctuary-Template-beta.155.zip |
| [beta.156](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.156) | `32158e2e0513` | sanctuary-beta.156.jar, Sanctuary-beta.156.mrpack, Sanctuary-Template-beta.156.zip |
| [beta.157](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.157) | `9791d178ab5e` | sanctuary-beta.157.jar, Sanctuary-beta.157.mrpack, Sanctuary-Template-beta.157.zip |
| [beta.158](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.158) | `19aa8054a52f` | sanctuary-beta.158.jar, Sanctuary-beta.158.mrpack, Sanctuary-Template-beta.158.zip |
| [beta.159](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.159) | `bdaad0c94032` | sanctuary-beta.159.jar, Sanctuary-beta.159.mrpack, Sanctuary-Template-beta.159.zip |
| [beta.160](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.160) | `c1d22786745d` | sanctuary-beta.160.jar, Sanctuary-beta.160.mrpack, Sanctuary-Template-beta.160.zip |
| [beta.161](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.161) | `8deba7cfb47d` | sanctuary-beta.161.jar, Sanctuary-Template-beta.161.zip |
| [beta.162](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.162) | `0c55a375623b` | sanctuary-beta.162.jar, Sanctuary-Template-beta.162.zip |
| [beta.163](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.163) | `905b3bcfa125` | sanctuary-beta.163.jar, Sanctuary-Template-beta.163.zip |
| [beta.164](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.164) | `9a429c40a15b` | sanctuary-beta.164.jar, Sanctuary-Template-beta.164.zip |
| [beta.165](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.165) | `dbb9e3428da2` | sanctuary-beta.165.jar, Sanctuary-Template-beta.165.zip |
| [beta.166](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.166) | `460c4706d37a` | sanctuary-beta.166.jar, Sanctuary-Template-beta.166.zip |
## Historique et intégration
La PR [#1 de Chris](https://git.botsu.net/koka/sanctuary-beta/pulls/1), intitulée « beta.144 — Code d’accès », est intégrée par le merge `ad960ef`, puis corrigée et livrée dans `460c470` (beta.166). Son numéro de version historique ne remplace pas la release beta.144 dédiée à l’eau. `main` a été avancé en fast-forward sur beta.166. La PR est clôturée : Gitea refuse le mode « manually-merged » dans ce dépôt, elle reste donc affichée comme fermée plutôt que fusionnée. Sa branche et ses commits sont conservés.
Les beta.152 et beta.153 sont des chantiers shaders non finalisés : aucun commit de livraison ni JAR Sanctuary vérifiable retrouvé. Aucun tag ou binaire artificiel n’est créé pour remplir ces numéros. Les fichiers de travail locaux sont conservés.
## Contrôles et limites
- Intégrité ZIP, version Fabric et version source contrôlées pour chaque JAR ; sources Java archivées comparées aux commits de livraison.
- Le ZIP de sources beta.145 est antérieur à une correction : il n’est pas publié. Le JAR correspond exactement au SHA-256 documenté dans le ticket, et la classe concernée correspond au binaire beta.146 dont les sources sont vérifiées.
- Les MRpack embarquent le JAR de leur release, vérifié par SHA-256. Le MRpack beta.150 conservé contenait un binaire intermédiaire : une copie a été réassemblée avec le JAR final ; l’original local reste intact.
- Chaque pièce jointe est retéléchargée anonymement et comparée à son SHA-256 local. Chaque release comporte son fichier SHA256SUMS.
- Les anciens échecs de tests restent documentés dans les tickets liés aux releases historiques. Cette publication rétrospective ne prétend pas les avoir corrigés dans les anciens binaires.
- La beta.166 a passé `check build assemblePack`, avec 252/252 GameTests ; voir [le contrat et les vérifications](inscription-web-beta166.md). Le parcours OAuth Discord et l’inscription sous le pseudo du dossier ont ensuite été testés localement.
- Site compagnon : branche `codex/inscription-web-beta166`, commit `89973c1` publié. Les 12 tests ciblés accès/parrainage passent (162 assertions), y compris le refus d’un autre pseudo et la génération d’invitation refusée à un candidat en attente même administrateur.
Le canal packwiz et les installations personnelles ne sont pas modifiés par ce rattrapage. Aucun monde, ancien JAR ou secret n’est ajouté à Git. Les fichiers `.env`, sauvegardes SQL et configurations privées du labo restent locaux.
+68
View File
@@ -0,0 +1,68 @@
# SNOW-143 — Neige saisonnière en temps réel
Branche `codex/realtime-snow-melt-beta143`, socle beta.142. Minecraft 26.3 /
Java 25. Livraison beta.143.
## Comportement
L'accumulation et la fonte saisonnière conservent le sampler natif de
précipitation `ServerLevel.tickPrecipitation`. Sanctuary ne scanne donc toujours
pas les chunks et ne force aucun chargement de terrain. Le changement porte
seulement sur la probabilité des mutations de neige.
Pendant une chute de neige, Sanctuary ajoute désormais une couche une fois sur
12 échantillons natifs en moyenne. La neige reste visible pendant une session,
mais les colonnes ne montent plus instantanément. À `randomTickSpeed = 3`, une
couche apparaît en moyenne après environ 40 minutes de neige continue.
Pour la fonte, chaque tirage saisonnier est multiplié par `72`, le rapport
entre une journée réelle de 24 heures et une journée Minecraft de 20 minutes.
Une couche fond désormais en moyenne en 4 h 05 en été,
8 h 10 au printemps et 16 h 25 en automne. Avec le plafond actuel de deux blocs,
une colonne météo suivie met environ 2,7 jours réels à disparaître en été,
5,4 jours au printemps et 11 jours en automne. L'hiver ne fond toujours pas.
Les règles de protection restent celles de beta.109 : seule la neige déposée
par la météo Sanctuary depuis l'ajout du suivi `sanctuary:natural_snow_v1`
peut fondre. La neige construite, l'ancienne neige non suivie, les couches
manuelles, les biomes froids, les profils neigeux et la météo Vanilla restent
préservés. Aucun format de sauvegarde ne change.
## Vérifications
Vérifié le 18 septembre 2026 sur macOS, Java 25.
- `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryMelt109ClientTests=true -PsanctuaryClientNoVsync=true
-PsanctuaryQuickTests=true` : réussi en 57 s, avec le marqueur
`MELT109_NATIVE_PASS`. Le test couvre l'accumulation beta.108 ralentie,
la fonte couche par couche, la provenance persistante, les saisons, la
gamerule, la météo Vanilla, les profils neigeux, les biomes froids et le
rechargement de monde.
- `./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest` :
réussi en 2 min 31 s, 126 tâches. Le GameTest serveur dédié reste exclu
conformément au refus antérieur de son EULA ; les contrôles natifs utilisent
le serveur intégré.
- `python3 scripts/pack.py check` : versions, icône et index packwiz vérifiés.
- Exports MRpack produits avec `packwiz modrinth export`, intégrité ZIP vérifiée.
Les deux MRpack embarquent exactement le JAR Sanctuary construit.
| Artefact | Taille | SHA-256 |
| --- | ---: | --- |
| `sanctuary-beta.143.jar` | 11 323 665 octets | `fd4b663ac2b2a106624c42b09997db229cc14d6c39d44ae83079bc6aa9d39a08` |
| `Sanctuary-beta.143.mrpack` | 10 464 931 octets | `e55caaa41c5a3a2666ff5415846e18f44d504ac34b698f3d974091cfb52364c5` |
| `Sanctuary-Test-beta.143.mrpack` | 10 483 858 octets | `b14bca04c4a48771209d0f7e234ff9ef6b800eb236fb969a6f0dfcee5620dafc` |
| `Sanctuary-Template-beta.143.zip` | 4 354 153 octets | `071fd8da67d1d0224b89889a5fcbc4cd269673dddb7a52f89aa78802f154605a` |
## Publication
[Release beta.143](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.143)
publiée depuis le commit `97ff2b54cb63afe8fdd88bfa8f2ebb25dbe3b86d`.
Le canal packwiz stable pointe sur
`bafff5e9fcdd95c5dd184953a34ada805e455797`.
Deux synchronisations isolées, puis deux synchronisations dans l'instance
Sanctuary Beta ont réussi. Les 923 fichiers personnels suivis gardent leurs
hashes ; aucun monde personnel n'a été ouvert. Sauvegarde préalable :
`sanctuary-backups/before-beta.143/`.
+112
View File
@@ -0,0 +1,112 @@
# RENDER-146 — Reflets, portée commune et transitions de l’eau
Branche `codex/reflections-water-beta146`, socle beta.145 `ed2d088`.
Minecraft 26.3, Java 25 et dépendances inchangés. Préparation locale uniquement.
## Contrat
- Les passes PBR et SSR vérifient la profondeur finale du rendu natif pour
masquer les personnages, notamment en F5. La profondeur du paysage capturée
avant les transparences reste celle utilisée pour rechercher le reflet.
- Le PBR utilise le test matériel EQUAL contre la profondeur du récepteur
sélectionné. L’ancienne tolérance de 3,5 cm pouvait accepter des faces
concurrentes près des coins ; elle est supprimée. La comparaison avec la
profondeur native conserve seulement une marge de 5 mm pour les différences
d’ordre de calcul des matrices, sans relâcher la sélection stricte du récepteur.
La position du vertex est déclarée invariante entre les passes.
- PBR à 80 % et SSR à 20 % par défaut, pour toutes les matières, eau comprise.
Deux intensités d’effets distinctes, sans réglage séparé solide/liquide.
Les préférences explicites déjà enregistrées restent conservées.
- Distance PBR/SSR commune : 16, 32 (défaut), 64, 128 blocs. Maillages,
sélection des récepteurs et fondu final emploient ce réglage. Le rayon SSR
conserve sa recherche maximale de 128 blocs dans le paysage visible.
Budgets de maillages inchangés : solides 24 Mio, transparences 8 Mio.
Une forte densité à grande portée peut donc limiter les surfaces disponibles.
- Le reflet du soleil adopte un lobe plus large sur l’eau, avec une irradiance
renforcée : grande empreinte blanche vue du dessus et traînée étendue aux
angles rasants. Les lampes conservent leur lobe local.
Les éclats spéculaires ne sont plus plafonnés au gris moyen. Leur compression
conserve une valeur finie pouvant approcher le blanc. Une contribution douce
des seules passes PBR/SSR alimente le bloom existant, sans faire briller tous
les blocs blancs. Le réglage Bloom et son intensité gardent autorité.
- Eau naturelle OFF par défaut dans une dimension ordinaire, ON pour une
dimension dont le générateur est Sanctuary / ExpansionChunkGenerator.
Le serveur transmet ce contexte à la connexion, au changement de dimension
et à la réapparition, y compris en multijoueur. Le défaut automatique nécessite
ce contexte envoyé par un serveur beta.146 ; sans lui, le client utilise le
défaut ordinaire OFF, toujours réglable. Aucune donnée de monde modifiée.
Les choix ON/OFF sont mémorisés séparément pour ces deux catégories.
Un ancien OFF explicite est conservé dans les deux ; un ancien ON global
adopte les nouveaux défauts par contexte.
- Mélange des profils sur 1×1, 3×3, 5×5, 9×9 (défaut) ou 17×17 blocs, puis
interpolation aux sommets. Océans toujours clairs. La texture demeure native.
Surface et immersion utilisent la même étendue. Les changements du fond
invalident toute la largeur dépendante ; changer le réglage reconstruit les
sections chargées contenant de l’eau.
Le filtre de surface est calculé dans la copie de région native, avec sommes
préfixées par hauteur pour borner le coût des sommets. Aucun accès au monde
vivant depuis le worker, chargement de chunk ou modification de sauvegarde.
Les textes des nouvelles options sont fournis en français et en anglais.
## Vérifications
Machine : Apple M1, macOS, Java 25, Minecraft 26.3. Mondes plats jetables,
graine 122 ; aucune sauvegarde personnelle utilisée.
- Suite SSR/PBR Vulkan avec transparence améliorée : réussie
(`build/beta146-final-settings-vulkan.log`). F5 avec personnage réel en créatif,
portée 16/32/64/128, couleur du paysage, eau/verre/métal, OFF/zéro,
immersion, rechargement de ressources et redimensionnement.
- Suite SSR/PBR OpenGL finale réussie également
(`build/beta146-final-settings-opengl.log`), avec 22 450 pixels quasi blancs
dans la scène solaire et 99 / 518 400 pixels modifiés dans le contrôle
des intersections. Captures dans `build/evidence/final-settings-opengl/`.
- F5 : les 1 900 pixels du torse contrôlés sont strictement identiques entre
SSR OFF et ON, tandis que le reflet reste présent autour du personnage.
- Soleil : 22 111 pixels quasi blancs sur 854 × 480 à PBR 80 % / SSR 20 %,
sans bloom, sur la scène de contrôle Vulkan. Les captures vues du dessus et
à soleil bas montrent une empreinte large et une traînée allongée.
Bloom OFF libère sa cible.
- Mur, sol et escaliers en contact : 86 pixels sur 518 400 changent de plus
de 12 niveaux cumulés lors d’une rotation de 0,00002 degré ; seuil du test
0,1 %. Le cadre exclut l’eau animée, qui ne constitue pas une référence
de stabilité pour les blocs statiques.
- Eau : suites fonctionnelles Vulkan et OpenGL réussies
(`build/beta146-water-vulkan.log`, `build/beta146-water-opengl.log`).
Profils, mélange 5/9/17, changement de contexte transmis par le serveur,
préférences séparées, immersion, fond modifié, océans, eau courante,
waterlogging et rechargement. OpenGL contrôle aussi l’égalité des couleurs
aux frontières des copies de région et avec l’échantillonnage de brume.
- `./gradlew check build` exécuté dans un instantané isolé des sources :
252 tests serveur, 229 réussis et 23 échecs. Les identifiants des échecs
correspondent exactement au reçu archivé beta.145 ; aucun nouvel identifiant.
Il ne s’agit pas d’une nouvelle exécution comparative de beta.145.
Journal : `build/beta146-check-build-isolated.log` ; comparaison :
`build/beta146-server-failures.json`. Les derniers changements après cet
instantané concernent le rendu client, ses réglages et ses tests.
Les preuves Vulkan finales sont dans `build/evidence/final-settings-vulkan/`.
La suite de régression PBR et de préférences finale réussit
(`build/beta146-final-pbr-preferences.log`) : PBR 80 %, SSR 20 %, persistance,
migration des anciennes préférences, FR/EN, OFF/zéro et rechargement.
La commande finale `./gradlew check build assemblePack -x :sanctuary:runGameTest`
réussit (125 tâches), sans répéter la suite serveur isolée déjà exécutée.
Journal : `build/beta146-final-build-pack.log`. Cette exclusion ne transforme
pas les 23 échecs serveur en validation globale réussie.
## Artefact local
Le pack [Sanctuary-beta.146.mrpack](../build/Sanctuary-beta.146.mrpack) est exporté
et copié dans le dossier `sanctuary-beta/build/`, à côté des autres versions.
Intégrité ZIP, version beta.146, Minecraft 26.3 et identité du JAR embarqué
avec le JAR construit contrôlées ; shaders finaux présents et identiques aux sources.
Taille : 10 519 634 octets. SHA-256 :
`9f3f7a840652d401741cbe3c85bbb5626326542179754cb599479b01a6b4c955`.
Reçu : `build/beta146-artifacts.json`.
Aucun benchmark isolé de performance de beta.146 n’est revendiqué : des
contrôles serveur peuvent tourner simultanément. Les limites SSR hors écran,
de maillage à grande portée et de compatibilité avec d’autres GPU subsistent.
Aucune publication ou synchronisation Prism.
+115
View File
@@ -0,0 +1,115 @@
# WG-215 — Relais régionaux visibles
Branche `codex/regional-relays-beta215`, depuis beta.214 (`b82ab37`).
## Contrat
Retirer le village Far West des nouvelles générations. Au Sud et au Nord,
remplacer le petit marqueur de relais par un monument compact, massif et
surélevé, apparenté aux ancres de Sanctuary, avec des matériaux régionaux.
La rosace allumée du relais reçoit entièrement la couleur de sa direction ;
le bloc originel conserve sa progression indépendante par huit gemmes.
Agrandir modérément la pyramide extérieure, sans changer le labyrinthe,
les coffres ou les pièges validés.
Nouveaux profils 215 uniquement ; les profils historiques gardent leur recette.
Aucun ancien monde ou chunk n’est retouché, aucune conversion de journal.
Les textures communes d’ancre changent d’aspect, sans changement de sauvegarde.
Essais autorisés sur des mondes jetables neufs : activation réelle des ancres
Nord/Sud, interruption et reprise. Nouvelle visite Vulkan 32 chunks et MRpack
local ; aucun canal public ou Prism modifié. Graines prévues : 42 et 0.
## État
Implémenté ; essais natifs et assemblage final réussis. Nouvelle visite ouverte.
Le rendu reste à apprécier en jeu.
## Réalisation
`RegionalRelay215` ajuste un socle octogonal de 13 blocs de large à une surface
rocheuse mesurée (feuilles et eau exclues). Recherche limitée à 64 blocs autour
du relais, dénivelé maximal de quatre blocs sous le socle, supports courts.
L’ancre est cinq blocs au-dessus de la base, accessible par un escalier de
largeur trois ; deux pylônes massifs encadrent la direction extérieure.
Améthyste sous le verre, tuff sculpté, éclairages limités. Au Sud, terracotta
de la strate locale et verre rouge ; au Nord, diorite, calcite, glace compacte
et verre bleu clair. Pas de toit masquant le bloc.
Plan immuable indexé par chunk, réservé avant végétation, compris dans les
chunks préparés avant l’annonce SGA. Le manoir du Nord évite cette emprise.
Le paiement du relais se réfère à la position surélevée. Aucun calcul permanent
ou nouveau format de sauvegarde. Les autres directions conservent leur recette.
Le village Far West est limité à son ancien profil 214.
Pyramide 215 : base 31 × 31 au lieu de 23 × 23, sommet quatre blocs plus haut,
même terracotta locale et entrée prolongée. Le gabarit souterrain, les dix
coffres et les huit pièges (24 TNT) sont conservés. La recherche contrôle toute
la nouvelle base ; une courte fondation raccorde la coque à la roche.
Les huit textures de relais allumés colorent toutes les gemmes d’une seule
teinte directionnelle, échantillonnée au cœur de chaque gemme de l’illustration.
Logo central, transparence et état éteint conservés. Les 514 ressources du
bloc originel (textures/modèles) sont comparées à l’artefact 214 ; sa progression
par gemmes reste indépendante.
## Essais natifs
Mondes jetables `south215-verified` (graine 42) et `north215-verified0` (0),
île principale Small 512, expansion de 1024. Paiement de l’ancre racine, rejet
d’un mauvais paiement et d’un doublon, interruption après réservation puis
reprise réussis. Aucun ancien monde utilisé.
| Relevé | Sud — 42 | Nord — 0 |
| --- | --- | --- |
| Ancre surélevée | 128, 258, 1224 | 352, 211, -1252 |
| Chunks du monument | 4 | 4 |
| Blocs comparés au plan | 2326 | 2390 |
| Profondeur maximale des supports | 6 | 8 |
| Marches d’approche | 5 | 14 |
| Chunks préparés | 67 | 58 |
Tous les blocs du monument, y compris les dégagements et les marches,
correspondent aux chunks produits. Le paiement incomplet sur la nouvelle
position est refusé avec `required`, confirmant que le relais est reconnu
(et non `invalid`). Reconstruction du cache identique après reprise.
Le village 214 n’est ni actif ni planifié dans ces profils.
Au Sud, pyramide en (32, 249, 848), largeur 31, dix coffres, dix piles
enchantées et 24 TNT vérifiées. Au Nord, le manoir reste planifié, séparé
du monument (origine 364, 255, −635). Pas de nouvelle passe de relief.
Ces essais sont fonctionnels : aucun benchmark, test Windows ou jugement
esthétique n’est déduit de leurs temps de génération.
## Vérifications et livraison locale
`./gradlew check build assemblePack assembleTestPack :sanctuary-test:exportDuoLaunch
-PsanctuaryFocusedTests=base204,north208,south213,relays215 -PsanctuaryAtlasOnly=true`
réussi en 3 min 56 s : contrôles purs et **10 GameTests ciblés**, journal
`build/relays215-final-build.log`. La suite historique complète des GameTests
n’est pas revendiquée. Tests de placement Nord/Sud sur graines directes 0 et 42,
accès à pied, supports bornés, palette et reconstruction déterministe ;
contrôle des anciens profils et de l’intérieur de la pyramide.
La première sélection des teintes pouvait choisir le même reflet clair pour
deux secteurs : corrigée par un échantillonnage des huit cœurs de gemmes.
Contrôle final : huit images distinctes, 103 pixels colorés chacune,
logo central et alpha préservés (`build/relays215-textures.log`). Les trois
fichiers de bruit de l’île principale sont identiques à 214.
MRpack normal : `/Users/koka/Downloads/Sanctuary-beta.215.mrpack`.
Intégrité ZIP, métadonnées, JAR exact, modèles et textures corrigées, trois tailles
et profils historiques contrôlés ; aucun module Test ou monde inclus.
SHA-256 : `8fb19d272fa56b47ac15e79c4ecdba8fcff784280bef0961c8c68c592aa3ba02`.
Reçu : `build/relays215-mrpack-receipt.json`. Aucun tag, canal public ou Prism
modifié. Une graine dont le terrain ne permet aucun site dans la recherche
bornée peut encore refuser le monument ; les quatre placements du test et
les deux expansions réelles ci-dessus passent.
## Visite
Solo neuf `Sanctuary-South-215-42`, ouvert le 5 octobre 2026 à **07:49:47 CEST**,
confirmé par `SOUTH215_VISIT_OPEN`. Départ (150.5, 269, 1200.5), face au relais
(128, 258, 1224). Pyramide en (32, 249, 848). Créatif en vol, commandes,
32 chunks / simulation 5. Backend Vulkan (MoltenVK 1.4.2) confirmé dans
`build/south215-launch.log` ; aucun essai OpenGL. Ancienne visite 214 arrêtée
proprement et conservée. Le joueur reste juge du rendu des monuments.
+196
View File
@@ -0,0 +1,196 @@
# WG-ECO-177 — écologie liée au relief
Branche `codex/relief-ecology-beta177`, base beta.176 `96433d3` conservée.
Demande : nouveau test solo à 32 chunks intégrant les retours R019–R021.
## Contrat
Nouveau preset de laboratoire `sanctuary_test:relief_ecology_v1`, graine 42.
Aucune migration ni réouverture des anciens laboratoires avec de nouveaux
chunks. Les sauvegardes beta.175 et beta.176 restent conservées.
- Plateau : forêts normales et plaines fleuries, sans bandes géographiques
automne/cerisiers. Classification par hauteur de surface et couverture.
- Creux à ciel ouvert : automne. Hauteurs : cerisiers. Une élévation locale
autour d'un sommet existant crée un relief arboré, sous le plafond 320 ;
la roche profonde et les cinq récifs conservent le champ précédent.
- Sous une couverture de roche : cavités humides, mousse, chêne noir et
champignons géants. Ne pas confondre sous-sol et vallée basse extérieure.
- Marais sur un récif uniquement, aucune mangrove. Petits fragments hauts
sobres, sans tapis fleuri. Températures chaudes et aucune décoration de gel.
- Géologie : conserver des strates lisibles, les interrompre avec des
gisements cohérents de pierre/andésite/granite/diorite ; deepslate profonde,
ressources conservées, aucun ajout d'or ni de redstone.
- Mares locales, pas d'hydrologie régionale, pas de structures natives.
Villages et structures aériennes restent à concevoir, pas livrés ici.
Le signalement « map cassée » reste sans symptôme précis : le créateur ne se
rappelle plus s'il parlait de la carte opérateur ou du monde. Vérifier le
chemin de lecture de l'atlas et les données du nouveau monde ; ne pas
inventer de diagnostic ni modifier une interface sans défaut identifié.
## Vérifications prévues
Relevés natifs du relief, biomes à la surface et sous roche, végétation des
cavités, eau après ticks, absence de neige/glace/mangrove, ciel 512–639 libre,
répartition minérale sur toute l'île 42 et carte lisible depuis les chunks.
Compilation, `check build`, assemblages, puis ouverture du solo Vulkan à
32 chunks avec commandes. La visite peut commencer dès les contrôles du
laboratoire terminés pendant que la suite générale continue, conformément
à la préférence exprimée pendant la visite précédente.
## Réalisation
Le profil CLI `terrain` sélectionne ce nouveau preset. Les anciens profils
gardent leur générateur. Tout le code de génération nouveau est dans le
module facultatif `sanctuary-test` ; le preset Sanctuary normal est conservé.
Le sélecteur de biomes partage une hauteur de surface par colonne de quatre
blocs, mise en cache dans les limites de l'île. Une couverture de roche de
plus de douze blocs prend priorité sur la tranche d'altitude : les grottes
restent des cavités humides. À l'extérieur, les seuils initiaux sont Y≈237
et Y≈264, avec une variation lente de trois blocs. Forêt et prairie fleurie
se partagent la tranche intermédiaire par un bruit de grande échelle.
Ces seuils sont des réglages de prototype, à juger pendant la visite.
Un sommet existant parmi douze candidats proches du centre reçoit une
élévation locale douce, de rayon 96 blocs, uniquement entre Y=216 et 319.
Le relief profond et le champ des récifs beta.175 sont conservés. Les trois
récifs bas reçoivent jungle, forêt et marais ; les deux fragments supérieurs
restent sobres. Le ciel 512–639 reste réservé à l'ISS.
Les biomes ont une température empêchant la neige aux altitudes du monde ;
la décoration native `freeze_top_layer` est aussi retirée. Sous roche, les
décorations natives de lush caves sont complétées par des tentatives bornées
de chêne noir et de champignons géants dans les cavités existantes. Un arbre
demande de l'air, un plafond de roche et un socle solide ; aucune salle n'est
excavée. Le sol autour reçoit de la mousse, puis les features natives 26.3
contrôlent et placent le végétal.
Sous la transition profonde, les lits rocheux précédents sont conservés.
Plus haut, deux bruits tridimensionnels forment des gisements d'andésite,
granite et diorite, avec des régions de pierre ordinaire et d'autres où les
strates restent visibles. Les minerais et mares utilisent les composants
précédents ; leurs quantités réelles sont remesurées après décoration.
## Reproduction
```sh
./gradlew :sanctuary-test:exportDuoLaunch
python3 scripts/worldgen_lab.py prepare --profile terrain --seed 42 --run nouvel-essai
python3 scripts/worldgen_lab.py server --profile terrain --seed 42 --run nouvel-essai --verify
```
Ajouter `--whole-island` à la préparation et au serveur pour le recensement
intégral. Le lanceur refuse de réutiliser un monde dont l'empreinte des
sources a changé. Les mesures sortent dans `relief-ecology-v1-cold` et
`relief-ecology-v1-warm`. `scripts/ecology_atlas.py` rend cartes, coupes et
recensement minéral à partir de ces données natives.
## Mesures natives — graine 42
Série `science177b`, Java 25 / Minecraft 26.3, heap serveur 1 536 MiB.
[Atlas et coupes](/Users/koka/Documents/sanctuary/retours-sessions/2026-09-29_1506-storyquest/releves-beta177/graine-42/atlas.png)
et [recensement minéral](/Users/koka/Documents/sanctuary/retours-sessions/2026-09-29_1506-storyquest/releves-beta177/graine-42/minerals.png).
L'archive conserve données, coupes binaires, identité et journaux.
| Contrôle | Résultat |
| --- | ---: |
| Densités profondes et aériennes identiques à beta.175 | 42 500 / 42 500 |
| Témoins de biome sous couverture rocheuse | 358 / 358 en cavités humides |
| Climats vérifiés contre la neige, neuf biomes × quatre altitudes | 36 / 36 |
| Neige, glace et blocs de mangrove dans l'enveloppe recensée | 0 |
| Végétaux natifs sous roche retrouvés dans les blocs | 8 chênes noirs, 3 champignons bruns, 6 rouges |
| Mares générées / mares témoins stables pendant 240 ticks | 60 / 8 |
| Ensembles de structures natives admissibles | 0 |
| Plans hydrologiques régionaux calculés | 0 |
| Air contrôlé en Y=512–639, autour des cinq récifs | 1 474 560 blocs |
| Tuile d'atlas du spawn | 256 pixels lisibles, aucun chargement de chunk ajouté |
La première tentative `science177a` avait été rejetée par le test des
chênes noirs. Les critères d'espace et de socle ont été assouplis : quatre
cases sous le tronc au lieu d'une fondation plane de six blocs de large,
et précontrôle d'air moins large. Le test passe dans le nouveau monde,
avec les vérifications natives des collisions conservées.
La carte de surface échantillonnée tous les huit blocs contient 32,86 % de
forêt, 24,87 % de prairie fleurie, 33,25 % d'automne et 8,36 % de cerisiers.
Le reste, 0,66 %, correspond à de petits reliefs périphériques classés en
vide par le sélecteur de surface. Ce ne sont pas des surfaces exactes au
bloc près. Le sommet local atteint Y≈302 ; son centre est `(38, 296, 88)`.
La proportion des vallées, les lisières et la silhouette restent à juger en jeu.
### Ressources sur toute l'île
Recensement réel de **2 000 chunks**, Y=0–639, après décoration, sans
extrapolation des chunks du spawn. Variantes pierre et deepslate additionnées :
| Ressource | Blocs |
| --- | ---: |
| Cuivre | 202 008 |
| Charbon | 144 464 |
| Fer | 5 592 |
| Lapis | 7 139 |
| Diamant | **304** |
| Or | 0 |
| Redstone | 0 |
Tous les diamants sont en deepslate, sous Y=136, sans voisin d'air.
Améthyste : 6 513 blocs ordinaires, 1 630 bourgeonnants et 269
bourgeons/cristaux. La décoration et les nouvelles surfaces changent certains
totaux par rapport à beta.176 ; aucune augmentation des paramètres de
placement des minerais n'est faite dans ce lot.
Réouverture : mêmes cartes de surface/récifs, mêmes palettes et coupes de
blocs octet par octet, mêmes sources d'eau après 240 ticks supplémentaires.
Les 17 végétaux témoins sous roche sont retrouvés. Ces résultats concernent
la graine 42 ; aucune généralisation à toutes les graines n'est revendiquée.
### Durées et portée
| Passage | Initialisation serveur hors bootstrap JVM | Processus → fin du diagnostic |
| --- | ---: | ---: |
| Création et recensement intégral | 6,126 s | 317,799 s |
| Réouverture et recensement intégral | 0,961 s | 41,350 s |
Le recensement à froid prend 207,176 s. Ce coût de diagnostic ne tourne pas
pendant la visite ; ces durées ont aussi été mesurées pendant les contrôles
généraux du pack et ne constituent pas un benchmark isolé ni une mesure de FPS.
## Solo et livraison
Le client est entré dans `Sanctuary-Relief-177-Solo` le 29 septembre à
22:07 CEST : serveur intégré, KokaLab à `(-9.5, 249, -4.5)`, backend Vulkan
(MoltenVK 1.4.2 / Apple M1), distance de vue passée à **32 chunks** dans le
journal. Commandes autorisées et mode créatif dans la copie neuve ;
`/gamemode spectator` permet la visite libre. Les réglages de la visite
beta.176 sont repris, shader de laboratoire désactivé. Les diagnostics ne
sont pas activés dans le client.
Le monde provient de la copie du serveur scientifique arrêté proprement
après réouverture. Les anciennes sauvegardes sont conservées. Aucun canal,
serveur personnel ni instance Prism n'est mis à jour.
Repères d'observation en spectateur :
| Lieu | Commande |
| --- | --- |
| Sommet à cerisiers | `/tp @s 38 318 88` |
| Chêne noir de cavité | `/tp @s -89 168 119` |
| Champignon rouge de cavité | `/tp @s 23 169 -57` |
| Récif forêt, ancienne place de la mangrove | `/tp @s -102 430 -172` |
| Récif marais | `/tp @s 219 470 22` |
Compilation et diagnostics du laboratoire réussis.
`./gradlew check build assemblePack assembleTestPack` : **BUILD SUCCESSFUL**
en 25 min 50 s, **265/265 GameTests réussis**, contrôles statiques et smokes
réussis. Le test de portage intermittent de beta.176 passe dans cette suite,
sans modification du code des familiers ; son ancien échec n'est pas effacé.
Versions, icône et hashes d'index du pack vérifiés ; distributions locales
dans `build/packwiz` et `build/packwiz-test`. Journal complet archivé dans
`releves-beta177/check-build.log`. Aucune nouvelle dépendance ajoutée.
L'esthétique attend les retours de visite. Les grands plans d'eau, cascades,
structures aériennes, villages Sanctuary et station ISS restent hors de ce lot.
Le contrôle d'atlas vérifie la lecture des données ; il ne diagnostique pas
le signalement imprécis « map cassée » ni l'ensemble de son interface.
+61
View File
@@ -0,0 +1,61 @@
# WG-RESTORE-191 — revenir avant les plateaux
Branche `codex/restore-relief-beta191`, Minecraft 26.3, graine de visite 42.
Nouveau profil `original`, preset `sanctuary_test:pre_terraces_v1`.
## Contrat
Le retour beta.190 rejette toujours le relief et les affleurements ajoutés depuis
les plateaux. Restaurer exactement le champ de densité **beta.188**, avant les
terrasses beta.189 et les épaules beta.190. Retirer leurs passes d’affleurements
et leur exclusion d’arbres sur ces affleurements. La géologie d’origine retrouve
sa responsabilité : pierre, strates, gisements, cavités et pointes existantes.
Conserver les corrections indépendantes appréciées : ancres au sol, berges,
cascade large, galerie éclairée et coffres de fer enchanté dans les ruines.
Cela restaure le relief et la géologie de base, pas tous les blocs d’un monde
beta.188 puisque ces aménagements récents restent présents.
L’intention pour la suite est un récif avec creux, cavités et pointes, avec
quelques formations singulières par endroits. Aucun nouveau lissage, plateau
ni déformation généralisée dans cette remise à plat du travail.
Les variantes 189/190 restent des références conservées, hors de ce nouveau profil.
Nouveaux mondes seulement ; aucune sauvegarde existante modifiée ou régénérée.
## Vérifications
Génération et réouverture natives réussies, graine 42 :
`build/original191a-cold.json` et `build/original191a-warm.json`.
- **134 480 densités identiques** aux paramètres enregistrés de beta.188, de
Y=0 à Y=632 sur l’île et ses îlots ; aucun remappage de hauteur activé.
- Passes d’affleurements 189/190 court-circuitées dans ce profil. Leur masque
est inactif sur les 1 681 colonnes contrôlées ; la règle de géologie d’origine
et les plantations natives reprennent la surface hors des aménagements réservés.
- Comparaison au commit beta.188 `658aaf8` : corps du calcul de densité, paramètres
de bruit, îlots aériens et règle de géologie identiques. Preuve locale :
`build/original191-baseline-receipt.json`.
- Huit ancres, 49 cartes et cadres du palais, salle inférieure et éclairage,
quatre ruines avec coffres enchantés, donjon, gemmes et soufre contrôlés.
- Cascade de cinq blocs de large conservée, chenal de 4–5 blocs et huit blocs
de roche retirés ; aucune nouvelle déformation de montagne pour la produire.
Zéro tronc dans les colonnes contrôlées des bassins et berges.
Démarrage natif : 12,281 s à froid et 0,738 s à chaud ; avec tous les contrôles
et le remplissage des cartes : 79,283 s / 22,798 s. Zéro région d’hydrologie.
Ces contrôles de laboratoire ne sont pas lancés au démarrage du solo.
`./gradlew check build assemblePack assembleTestPack` réussi en **7 min 40 s**,
**265 GameTests réussis**. Le JAR est identique aux classes et ressources compilées
et à sa copie distribuée dans le pack de test : `build/original191-pack-receipt.json`.
Aucune publication ni modification de l’installation Prism. Le client Vulkan est lancé avec la nouvelle
sauvegarde `Sanctuary-Original-Relief-191-Solo`, run `visite191`, profil `original`,
vue 32 et simulation 12, spectateur, commandes autorisées, position préparée
(94,316,153) face au relief. Connexion confirmée à **21:46:39**, vue 32 et simulation 12 ; Vulkan confirmé.
Les cartes et l’état initial des ancres ont été relus dans cette copie neuve.
Les sauvegardes 188/189/190 restent conservées.
Le créateur a confirmé l’ouverture ; la connexion est vérifiée dans
`build/original191-solo.log`. Cette confirmation porte sur l’entrée dans le solo,
pas encore sur l’appréciation esthétique du terrain restauré.
+91
View File
@@ -0,0 +1,91 @@
# Revue PR #1 de Chris — intégration sur beta.165
PR : [beta.144 — Code d’accès à la création Hello World](https://git.botsu.net/koka/sanctuary-beta/pulls/1).
Révision examinée : `8de569bbf188f7b76ede9235d3a2e5449907bcd5`.
Socle local : beta.165 + audit documentaire ; les corrections de GameTests restent
un chantier distinct. Dépôt web local examiné : `sanctuary-web-community`, commit
`1feab73`. Vérification du distant web après fetch : `6640966b7306b36735c622cc4e75f31467e6f249`, aucun écart sur `AccessCodeService.php` et `routes/api.php`. Inventaire API : une PR mod ouverte, aucune PR web ouverte.
## Verdict
**Intégrable, mais ne pas fusionner telle quelle.** Le principal blocage est la
reprise après consommation du code côté site. Aucun merge distant, publication,
activation du contrôle d’accès ou commentaire à Chris n’a été effectué.
## Constats
### P1 — code consommé sans possibilité de reprendre l’accueil
Dans `ProgressionService.java` de la PR, lignes 375–382, le serveur appelle
`redeem` puis ignore le résultat si la session s’est déconnectée avant le retour.
Le site peut donc avoir consommé le code alors que le ledger local n’a jamais
été écrit. Une coupure réseau après consommation, avant réception de la réponse,
produit la même fenêtre.
Le site actuel (`AccessCodeService.php:71–72`) répond `already_used` sans
`minecraft_username` ni `discord_id`. `AccessCodes.redeem` exige ces champs pour
la reprise et refuse donc. De plus, même si le site est corrigé pour les renvoyer,
`AccessCodes.verifyKey:50` transforme encore tout `already_used` en `code_used` ;
`HelloWorldScreen.updateSelection` ne permet de confirmer que `code_recognized`
ou un pending local. La réparation doit donc couvrir **le site, le serveur et
le parcours client**, pas seulement ajouter deux champs à la réponse API.
Correction recommandée : un contrat de consommation rejouable pour le même compte
et la même admission, avec identité confirmée par l’API serveur authentifiée ;
réconciliation du résultat après déconnexion et reprise au prochain accueil.
Un code révoqué, un autre compte et une requête non autorisée doivent rester
refusés. Vérifier l’identité complète et la portée du reçu avant de l’accepter.
Le ledger ne doit jamais conserver le code brut ni le jeton API.
La documentation actuelle de la PR dit qu’une déconnexion avant `redeemed`
ne consomme pas le code : ce n’est pas garanti dès que le POST est parti.
Le smoke teste un ledger après `remember`, pas la fenêtre avant cette écriture.
### P2 — compatibilité des clients existants à expliciter
Le nouveau contrôle de capacité `AccessPayloads.Gate` dans CONFIGURE est placé
avant la recherche de l’habitant. Activer l’accès impose donc aussi la mise à
jour des clients des habitants déjà enregistrés. La promesse « habitant existant
entre sans écran » ne signifie pas compatibilité avec un ancien client.
Décider et tester ce contrat avant activation : mise à jour coordonnée ou
capacité exigée uniquement pour les accueils qui utilisent le code.
## Compatibilité avec nos changements
`git merge-tree --write-tree HEAD origin/pr-1` a été exécuté sans changer le
checkout. Trace ignorée : `build/pr1-merge-tree.txt`.
- Conflits textuels uniquement dans `gradle.properties` et `packwiz/pack.toml`.
**Ne pas reprendre beta.144** : réserver le prochain numéro libre au moment
de la livraison, synchroniser les manifestes et garder les archives existantes.
- Les changements de progression et Hello World s’appliquent sans conflit textuel
au socle examiné. Cela ne constitue pas une preuve de compatibilité fonctionnelle.
- Pas de changement proposé aux tables communautaires ou aux pages Gazette/Tableau.
L’admission appelle une API HTTP du site ; elle n’utilise pas directement le
stockage des publications. Tester quand même fichier et MariaDB en régression.
- Sans URL/jeton, la fonctionnalité se désactive. Le laboratoire actuel ne doit pas
être activé implicitement : ses comptes locaux doivent rester accessibles.
- Le ledger ajoute `data/sanctuary-access.json` sans réécrire le registre des
habitants. Prévoir sauvegarde et comportement de retour arrière avant activation.
## Plan d’intégration concret
1. Finaliser et enregistrer les corrections de tests séparément.
2. Préparer une branche d’intégration depuis ce socle et importer le changement
de Chris, en résolvant uniquement les numéros de version puis les adaptations
réellement nécessaires. Conserver son attribution.
3. Corriger et documenter ensemble le contrat de reprise site/mod ; écrire les
tests du POST consommé avec réponse perdue et déconnexion concurrente.
4. Valider l’accueil sans configuration, l’accueil configuré neuf, un habitant
existant, client ancien, code invalide, mauvais pseudo, code révoqué, panne
du site, jeton rejeté, deux confirmations et redémarrage entre les écritures.
Vérifier qu’un seul habitant et un seul familier sont créés et qu’aucun coût
n’est dupliqué.
5. Jouer le parcours réel sur un serveur jetable avec API de test, puis rejouer
les échanges Gazette/Tableau en fichier et MariaDB. Garder le site public
communautaire en lecture seule.
6. Livrer et taguer le nouveau compteur ; activer seulement sur le serveur
explicitement visé, après configuration et sauvegarde.
Pas de compilation ni d’essai de handshake de cette PR revendiqués ici.
La suite en cours concerne les tests actualisés de beta.165, pas le code de Chris.
+30
View File
@@ -0,0 +1,30 @@
# WG-ECO-178 — vallées bornées et grottes minérales
Retour de visite beta.177 : automne trop envahissant sur le plateau et les
bords, cavités trop uniformément lush. Le créateur précise : roche dominante,
petites eaux et mousse localisée ; priorité au solo, sans nouveaux atlas.
Branche `codex/rocky-ecology-beta178`, base `9613322`. Nouveau preset de labo
`sanctuary_test:rocky_ecology_v1`, profil CLI `rocky`, graine 42. Aucune
migration : le solo beta.177 ouvert reste sur son ancien générateur.
Automne limité aux sols Y=200–232, entourés de relief plus haut et sans
chute périphérique. Sous Y=200 et sur les flancs raides : géologie exposée.
Les grottes gardent surtout leur roche ; mousse en plaques, poches végétales
rares, petits bassins retenus et décorations de stalactites. Les bosquets de
chênes noirs/champignons restent ponctuels. Relief, récifs, minerais et
absence d'hydrologie régionale conservent leurs composants précédents.
Contrôles ciblés de chargement et du comportement modifié avant le nouveau
solo ; `check build assemblePack assembleTestPack` exigé pour la livraison.
Pas de recensement complet ni de cartes scientifiques dans cette passe.
Contrôle natif `solo178d`, graine 42 : réussi, 567 comparaisons de densité
identiques au socle profond, aucun calcul d’hydrologie régionale. Dans les
neuf chunks centraux contrôlés, 380 sols rocheux sur 405, 23 en mousse et
cinq sources d’eau observées ; ce petit échantillon ne décrit pas toute l’île.
Solo neuf `visite178/rocky/42`, sauvegarde `Sanctuary-Rocky-178-Solo`,
vue 32, simulation 12, commandes activées. Compilation et `check build assemblePack assembleTestPack` réussis
(23 min 35 s, résultat du 29 septembre). Aucun ancien monde ni canal de distribution modifié.
Ouverture confirmée le 29 septembre à 22:47 : Vulkan sur Apple M1,
KokaLab connecté en solo et distance serveur passée à 32 chunks.
+143
View File
@@ -0,0 +1,143 @@
# EXP-199 — affiner les expansions et les raccorder au laboratoire
Branche `codex/runtime-expansions-beta199`, depuis beta.198. Retour R014.
Implémentation et validation locales ; aucune publication du canal packwiz ni mise à jour de Prism.
## Contrat retenu
Réutiliser `ExpansionJournal`, `ExpansionRuntime`, les contrôles d'occupation,
les contextes de bruit natifs et les biomes d'expansion existants. Les ancres
actuelles du laboratoire doivent désormais demander une vraie expansion.
Recherche automatique sur 360°, priorité à la proximité du parent parmi les
sites admissibles, une région immuable par relais, et un nouveau relais sur
chaque région prête. Relief fin : surface large et ondulée, quelques plateaux
souples, volumes amincis en conservant les cavités du bruit 3D.
Les lectures d'admission et la préparation native sont échelonnées entre les
ticks. Annonce SGA aux joueurs seulement après les chunks FULL et le relais.
Les doubles activations ne créent ni second continent ni double prélèvement.
La sauvegarde reprend une région réservée après interruption.
## Contrat de nouveaux mondes
Les profils 196–198 gardent leurs paramètres et leurs ancres de démonstration.
Les nouveaux profils 199 initialisent un journal d'expansions propre. Aucun
ancien monde n'est migré, aucun chunk existant régénéré, aucun ancien format
réécrit. Première admission limitée aux régions réellement vierges ; même du
vide déjà généré reste protégé. Cette contrainte peut éloigner une expansion
si le joueur a déjà exploré les alentours ; ce n'est pas une promesse de
contact bord à bord. La réutilisation du vide certifié reste le mécanisme
historique distinct, à ne pas activer implicitement dans une partie.
## Ciel et performance
Rotation stellaire : sept journées Minecraft, sur l'horloge du monde faisant
autorité ; conserver la même transformation pour la visée et les constellations.
Les saccades sont également signalées à l'arrêt, y compris shader Sanctuary désactivé (confirmation du créateur). Aucune cause n'est attribuée
au worldgen sans mesure ; préserver cette enquête séparément du réglage des
expansions. Les débordements de mares restent consignés sans nouvelle refonte.
## Première tranche jouable
Le relais demande les mêmes huit offrandes distinctes que le laboratoire. Le
joueur reste à proximité, offrande en main, pendant la recherche. Les matériaux
ne sont retirés qu'après réservation durable. Une seule préparation est active
à la fois ; chaque relais ouvre une région de diamètre nominal 256 blocs, avec
un relais de continuation. Le climat suit la couleur du relais d'origine ; la
position réelle est choisie automatiquement parmi 64 angles, par distances
croissantes sur la grille de chunks. Le relief réutilise la densité 3D historique,
comprimée verticalement autour de Y=220 et déformée par son bruit cohérent.
Les biomes naturels décorent ces nappes. Les villages et forteresses vanilla ne
sont pas réactivés par l'ajout de ces biomes à la palette : leurs structures
seront une tranche distincte. Les structures et reliefs de l'île centrale sont
conservés. Pour Small/42, une recherche locale plus précise peut retrouver les
sols d'ancres manqués par la grille historique ; les réservations d'eau suivent
alors leurs emprises réelles avec marge au lieu d'exclure un secteur entier.
Le moteur conserve son journal et sa file native, avec un adaptateur réservé aux
profils 199. Admission : 32 lectures asynchrones au maximum par lot, contrôle des
chunks chargés et des sauvegardes concurrentes, mémorisation des refus
pour éliminer les candidats qui recouvrent un chunk déjà trouvé occupé, puis réservation et publication
sur le même tour serveur. Le relais suivant est placé après les chunks FULL ;
l'annonce SGA possède une infobulle lisible donnant ses coordonnées.
Limites : pas de régénération du vide déjà exploré, pas de choix de direction,
pas encore de variation du prix/taille pour les relais successifs. La limite
historique reste de 64 régions, Sanctuary incluse. Le journal et l'inventaire
joueur sont deux fichiers Minecraft distincts : la protection contre le double
clic ne constitue pas une transaction atomique entre ces fichiers lors d'une
coupure brutale au milieu d'une sauvegarde.
## Périmètre de validation
Placement proche sur tous les angles et refus des emprises occupées, densités
bornées et nappes fines, horloge stellaire cyclique, activation réelle, deuxième
relais, double interaction, interruption/reprise et notification après FULL.
`check build`, assemblages et essai client Vulkan avant livraison locale.
## Relevés de validation
- Compilation et assemblages : `check build assemblePack assembleTestPack`,
avec les suites natives `operator,realtime`, réussis (7 GameTests et contrôles
purs). La vérification du placement couvre 9 couples graine/taille : 0, 42 et
4736390610738281858 × Small/Medium/Large, les huit secteurs, l'ordre de distance,
les conflits et la réouverture du journal.
Dernier passage complet : `build/expansion199-check-build-delivery.log`,
réussi en 3 min 40 s. Compilation finale des tests client réussie également.
- Nouveau Small, graine 42, 2 Gio : serveur prêt vers 14,2 s ; première expansion
au centre (368, -368), relais Y=231, après 418 chunks FULL. Le deuxième relais
réserve son enfant environ 11 s après l'annonce du premier. L'arrêt volontaire
a lieu avec cet enfant encore réservé. Cette durée inclut les essais et n'est
pas le temps normal de création d'un monde.
- Journaux finaux : `build/expansion199-check-build-final.log` et
`build/worldgen-lab/expansion199-native-final/small/42/`. Les premiers essais
interrompus restent conservés et ne sont pas des validations.
- Réouverture du même Small/42 : enfant repris, 418 chunks FULL, relais
(912, 236, -368), une seule annonce pour cet enfant et aucune répétition de
celle du parent. Sur 81 colonnes échantillonnées, 1380 blocs non vides, entre
Y=191 et Y=275 (végétation comprise) : ce relevé local ne mesure pas le volume
total de toutes les expansions.
- Client Vulkan, Small/42 : arrivée sur l'île, synchronisation native des étoiles
et pause de l'horloge, vraie interaction du joueur avec le relais, double clic
sans double prélèvement. Un bloc d'or placé dans le premier candidat reste
intact et force l'admission d'un autre emplacement. Les interfaces FR/EN,
trois tailles, profils historiques et aller-retour disque passent également.
- Deux essais client consécutifs terminent l'expansion puis sauvegardent et
ferment normalement (`build/expansion199-client-pass-a.log` et
`build/expansion199-client.log`). Le tout premier essai avait réussi les
assertions puis rencontré une exception dans `ChunkMap.tick`, lors du suivi
des entités. Cause non isolée : un contrôle de réentrance et 100 ticks
d'observation supplémentaires n'ont pas reproduit le défaut. Ce résultat
n'est pas un correctif prouvé du crash initial. Pas d'essai direct Windows.
### Saccades : capture locale, cause non isolée
Première capture client macOS Vulkan, Small/42, vue 8 chunks, shader désactivé, joueur immobile :
1241 images relevées, médiane 31,15 ms (limitation de cadence de l'environnement
de test), P95 33,12 ms, P99 33,71 ms, maximum 98,01 ms, 7 images au-delà de 50 ms.
258 sections ont encore été compilées pendant la capture. Le JFR contient 4152
échantillons de workers dans la génération, et des pauses GC jusqu'à 88,45 ms.
Le joueur immobile ne signifiait donc pas que le chargement avait terminé.
Ce relevé n'isole pas les saccades d'une partie complètement stabilisée, et ne
prouve pas leur cause chez le créateur. Le shader n'est pas nécessaire pour
reproduire quelques images longues dans cet environnement. Aucun correctif
général des saccades n'est revendiqué dans cette livraison.
Mesures ignorées par Git :
`build/expansion199-stationary-first/stationary.json` et `stationary.jfr`.
Les captures suivantes restent sous
`mods/sanctuary/build/run/clientGameTest/diagnostics/expansion199/`.
Pas de nouvelle campagne de screenshots.
## Livraison locale
`Sanctuary-Test-beta.199.mrpack`, 12 322 965 octets, copié dans
`/Users/koka/Downloads/` avec `Sanctuary-Test-beta.199-Guide.txt`.
SHA-256 : `fd2ebe4f43bf0d455377a2f456106165ff5e3519e5c3dce4126818c03f4ae44f`.
Intégrité ZIP, manifeste Minecraft 26.3/Fabric Loader 0.19.5, dépendances externes,
JAR intégrés comparés aux classes compilées et anciennes ressources vérifiés.
Les 142 ressources historiques de génération restent identiques à beta.198 ;
le preset public vise désormais 199. Reçu : `build/expansion199-artifact.json`.
Le canal packwiz et l'installation Prism n'ont pas été modifiés.
+93
View File
@@ -0,0 +1,93 @@
# SCULPT-10 — Une boîte par sculpture — beta.124
Contrat du 17 septembre 2026, branche `codex/sculpture-bounds-beta124`.
Le créateur choisit **une seule boîte pour la sélection et les collisions**.
Ce ticket remplace la forme physique détaillée de beta.122.
La boîte englobe exactement les dimensions occupées par la sculpture, après
orientation et ancrage au centre ou au bord. Elle suit toujours la grille 1/16,
y compris les tailles impaires et les modèles comportant des marges vides.
Les trous et petits détails restent visibles mais n'ont plus leurs propres
surfaces de collision : on ne grimpe plus sur leurs petites marches. Une arche
se sélectionne et bloque désormais sur tout son volume englobant.
La pose utilise la même boîte avant la création de l'entité de bloc : elle
refuse une intersection avec le joueur, y compris dans les trous visuels.
Les petites sculptures laissent libre le reste du bloc autour de leur boîte.
La forme reste mise en cache par modèle et état ; elle ne se recalcule qu'après
un changement de modèle, d'orientation ou d'ancrage. Les requêtes physiques et
le contour partagent cette même forme native.
Le calcul parcourt les cellules une seule fois, sans créer de copies tournées
ni de grille de collisions 16³. Le contour émet toujours douze arêtes.
Il s'agit d'une simplification du travail géométrique ; aucun gain de FPS global
n'est annoncé sans mesure sur une scène représentative.
Le rendu des sculptures et les règles de lumière de beta.122 restent inchangés :
pas d'occlusion de cube plein, pas d'émission artificielle de lumière. Aucun
identifiant, format d'item ou de sauvegarde ne change. Les anciennes sculptures
utilisent la nouvelle forme à partir de leurs données existantes, sans réécriture
des mondes ni régénération de chunks. L'atelier et les clés restent inchangés.
## Vérifications
Le parcours `Sculpture122ClientChecks`, adapté au nouveau contrat, passe en
**39 s** sur Minecraft 26.3, client macOS et serveur intégré jetable de graine 122.
- Sélection native de tout le volume, y compris le trou visuel d'une arche ;
contour rectangulaire relu dans la capture.
- Même boîte physique et de sélection sur client et serveur ; intérieur rempli,
dimensions exactes sans profondeur artificielle de bloc entier.
- **80 cas** : boîte unique comparée aux limites du maillage réellement émis,
douze arêtes exactement, même objet réutilisé lors des requêtes répétées.
Arche, marges vides, cube de 4 096 cellules et voxel unique, dans les quatre
orientations et cinq ancrages.
- **5 120 placements** de rendu toujours alignés sur la grille entière.
- Pose refusée dans le joueur, y compris entre deux piliers séparés ; petite
sculpture autorisée à côté du joueur, hors de sa boîte physique.
- Cache renouvelé après changement d'orientation/ancrage ou de modèle ;
conservation après sauvegarde/reconnexion.
- **75 sculptures superposées** : ciel à 15 ; toit de pierre témoin sombre ;
lumière de bloc transmise avec atténuation normale ; pièce close à 0.
Marqueurs dans `build/sculpture124-client.log`, notamment
`SCULPTURE124_BOUNDS_PASS 80`, plus les contrôles de régression de beta.122.
Captures relues dans `build/sculpture124-evidence/`. Aucun essai Windows,
client distant ou shader tiers ; le coût des boîtes est simplifié sans benchmark
FPS global.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 9 s**, 126 tâches (110 exécutées, 16 à jour).
Les sources des JAR correspondent aux sources du dépôt. La comparaison avec
beta.123 limite les différences de production aux trois classes de
`SculptureGeometry` ; ressources, clés, interfaces, données et éclairage restent
identiques. Les packs normal/Test contiennent le même JAR, sans sauvegarde
ni fixture. Le template personnel conserve exactement les ressources de beta.123.
- Pack normal : 10 271 059 octets, SHA-256
`2075e4ac7a7e7e2effcd82586d46769607ca1a67e8d9110b000fa378d1bc5506`.
- Pack Test : 10 289 985 octets, SHA-256
`88263e6896590ea9694b18084666e7234e934064e8d7d596d34866a68cc5ea23`.
- JAR Sanctuary : SHA-256
`b3969b1a3738b8a5d332b2083db0dd722900239f73035c335b738f70328d43f1`.
Reçu local : `build/sculpture124-artifact.json`. Les packs normal/Test et le
template sont aussi copiés, avec vérification octet pour octet, dans le dossier
habituel `sanctuary-beta/build/`.
Le GameTest dédié reste exclu conformément au refus antérieur de son EULA.
Aucun monde personnel n'est ouvert par les essais.
## Publication et installation
La [release beta.124](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.124)
est publiée depuis `00179e30ef0b45ef98378bc164a7810552dd1bdd`.
Le tag exact et les artefacts sont immuables, leurs téléchargements publics
vérifiés. Canal packwiz : `67ebcc7d07f8b75e8988f6099e3d6e5704f123fb`.
Deux synchronisations isolées puis deux dans **Sanctuary Beta** réussissent.
Un seul JAR Sanctuary beta.124 est actif, conforme au hash vérifié ; le second
passage ne change rien. Les **923 fichiers personnels et réglages suivis**
restent inchangés, sans ouverture de monde personnel. Copie préalable dans
`sanctuary-backups/before-beta.124/` de l'instance existante.
Reçus : `build/sculpture124-isolated.json` et `build/sculpture124-prism.json`.
+108
View File
@@ -0,0 +1,108 @@
# SCULPT-11 — Placement, éclats et modèles découverts — beta.125
Contrat du 17 septembre 2026, branche `codex/sculpture-placement-beta125`.
Le point visé choisit neuf positions horizontales (centre, quatre bords et quatre
coins) et trois hauteurs (bas, milieu et haut). Sur un support, la sculpture
repose au bas de son bloc ; sous un plafond, elle touche le haut ; sur une face
latérale, elle suit la hauteur visée et reste contre le support. Les sculptures
restent debout et s'orientent selon le regard horizontal du joueur.
La bande centrale occupe les huit pixels médians, limites incluses. Toute pose
reste sur la grille 1/16 : une dimension impaire utilise le centre entier le
plus proche, jamais un demi-voxel. Rendu, boîte unique de sélection et collision
partagent les mêmes offsets. La lumière conserve les règles de beta.122.
## Compatibilité additive des états existants
Les cinq anciennes valeurs `anchor` gardent exactement leurs noms. Quatre
valeurs de coin sont ajoutées. La nouvelle propriété `vertical_anchor` accepte
`bottom`, `center`, `top` et `original`, valeur par défaut réservée à la
compatibilité. La lecture d'un ancien bloc sans cette propriété conserve
l'ancienne hauteur, même si le modèle a des marges transparentes en bas.
Le bloc possède 144 états : 108 placements nouveaux et 36 états de compatibilité.
Le schéma 1 des sculptures, leurs données de voxels et tous leurs identifiants
restent inchangés. Aucun monde n'est parcouru ou réécrit, aucun chunk régénéré.
Les nouveaux ancrages nécessitent beta.125 ; le retour à une version antérieure
ne garantit pas leur position. Ce contrat autorise l'ajout compatible des états,
pas une migration destructive des sauvegardes personnelles.
## Particules
Les coups et la casse émettent des éclats de la couleur des surfaces voxelisées
réellement affichées, avec leur orientation et leur ancrage. Un coup vise la
surface réelle la plus proche du point sélectionné, même devant un trou visuel.
La casse échantillonne au plus 64 faces ; aucun calcul de texture n'est refait.
Les éclats utilisent une taille de voxel, la gravité et la lumière natives.
Une petite mémoire par monde (128 entrées de 64 faces, validité 40 ticks) conserve les
surfaces si la suppression du bloc précède l'événement de casse. Les autres
blocs gardent leurs particules habituelles.
## Clay Workshop
L'onglet Animaux utilise exactement les découvertes serveur du catalogue de
statues (rencontre, victoire ou mort face à l'espèce). Le menu transmet cette
liste à chaque ouverture, sans dépendre d'une visite préalable au Métabli.
Le modèle natif et sa texture sont capturés localement, voxelisés en miniature,
puis recolorés par la matière choisie. Le résultat reste fabriqué et payé côté
serveur. Les sélections d'espèces non découvertes sont refusées. L'onglet Imports
conserve les fichiers GLB. Aucun nouveau format de sculpture n'est introduit.
Libellés FR et EN.
## Vérifications
Le parcours natif `Sculpture125ClientChecks` passe en **1 min 2 s**, client
Minecraft 26.3 sur macOS et serveur intégré jetable (graines 125 et 122).
- 54 clics réels sur les six faces : centres, bords, coins et hauteurs.
- 432 contextes de pose, coordonnées positives/négatives, quatre orientations,
rotations et miroirs ; 144 états valides.
- 20 anciens états sans `vertical_anchor` conservent leur hauteur et marges.
- Couleur exacte des éclats au point frappé, surfaces réellement occupées,
limite de 64 fragments, événement après suppression et particules normales
d'un bloc de pierre témoin.
- Atelier : découvertes par rencontre, victoire et mort, transmission native
du menu, refus serveur d'une espèce inconnue, trois modèles natifs (vache,
mouton, cochon), paiement d'un bloc en survie et import GLB conservé.
- Sauvegarde et reconnexion avec les nouveaux coins et hauteurs.
- 576 formes comparées aux limites du maillage affiché, boîte unique partagée,
cache réutilisé et 12 arêtes ; 9 216 empreintes orientées sur grille entière.
- 75 sculptures superposées : ciel à 15, lumière de bloc à 13 après traversée,
pièce noire à 0. Pose dans le joueur refusée, même devant un trou visuel.
Marqueurs dans `build/sculpture125-client.log`. Captures de plafond, murs et
atelier relues dans `build/sculpture125-evidence/`. Aucun essai Windows,
client distant ou shader tiers ; trois espèces vérifiées visuellement, sans
prétendre avoir inspecté chaque espèce. Aucun benchmark FPS global.
Le GameTest dédié demeure exclu conformément au refus antérieur de son EULA.
Les mondes de test sont jetables ; aucun monde personnel n'est ouvert.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 16 s**, 126 tâches (110 exécutées, 16 à jour). Les sources
des JAR correspondent exactement au dépôt. La comparaison avec beta.124
limite les différences aux classes de placement, particules et atelier prévues,
aux nouveaux libellés FR/EN, au mixin client et à la source blanche de particules.
Les packs normal/Test partagent le même JAR, sans monde ni fixture ; le template
reproduit les ressources du mod et du pack intégré.
- Sanctuary-beta.125.mrpack : 10286360 octets, SHA-256 `9277e59c640c40392ab3750b402bb840020884878f6ece6978e6c4653e18655e`.
- Sanctuary-Test-beta.125.mrpack : 10305282 octets, SHA-256 `9e3dbfa14b5382ba4eb62a78fa7d2161758c2f0e1fdc50fbd5ed776fd4ce32c5`.
- JAR Sanctuary : SHA-256 `b38b75b900dd8cbe015318c739d5547fd7eac52f4337fa517e98f3f6f0ce3b46`.
Reçu local : `build/sculpture125-artifact.json`. Les deux packs et le template
sont copiés et vérifiés dans le dossier habituel `sanctuary-beta/build/`.
## Publication et installation
La [release beta.125](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.125)
est publiée depuis `4ec5b0d028a23a9f753770988ffba61015e2e49a`.
Tag et artefacts immuables, téléchargements publics vérifiés. Canal packwiz :
`47eb833911a96eef0b13805dafe65b2ab7b95c87`.
Deux synchronisations isolées puis deux dans l'instance **Sanctuary Beta**
réussissent. Un seul JAR Sanctuary beta.125 est actif, conforme au hash vérifié ;
le second passage ne change rien. Les **923 fichiers personnels et réglages
suivis** restent inchangés, sans ouverture de monde personnel. Copie préalable
sous `sanctuary-backups/before-beta.125/`. Reçus :
`build/sculpture125-isolated.json` et `build/sculpture125-prism.json`.
+78
View File
@@ -0,0 +1,78 @@
# beta.161 — correctifs de la séance du 23 septembre
Ticket : R002–R009 du carnet de séance. Branches `codex/session-fixes-beta161`.
## Contrat de données et migration additive
Aucun monde ni chunk n’est régénéré, aucun format existant n’est modifié.
Le nouveau fichier `data/sanctuary-server-metrics.json` version 1 conserve le temps
réel cumulé depuis l’activation du compteur, les morts connues par UUID et les
UUID des figurants exclus. Au premier démarrage, les morts sont importées des
statistiques Minecraft déjà présentes ; le temps antérieur n’est pas inventé.
Les valeurs vivantes sont relevées côté serveur, sauvegardées toutes les 30 secondes
et à l’arrêt. Les arrêts ne comptent pas dans la durée. Un crash peut perdre au
plus la période depuis le dernier relevé enregistré. Un fichier corrompu ou
modifié extérieurement arrête la collecte sans le remplacer.
En mode base, appliquer la migration Web additive `create_sanctuary_server_metrics_table`
avant de lancer le mod. Elle crée une table indépendante, une ligne par server_id ;
le schéma communautaire v3 et ses données restent inchangés. Le serveur publie un
instantané toutes les 30 secondes et un état arrêté à l’arrêt propre. En cas de
panne SQL le compteur local continue ; le site marque la dernière mesure périmée
après 90 secondes. Une table absente ne bloque pas les publications communautaires.
La suppression de cette nouvelle table au rollback perd uniquement les instantanés,
recréés depuis le fichier local à la prochaine publication. Ne pas supprimer le fichier
local pour revenir en arrière ; les anciennes versions l’ignorent.
Un seul serveur actif par server_id, comme pour les publications. Les morts de tous
les joueurs ayant des statistiques sont cumulées, y compris les joueurs déconnectés.
Les figurants du laboratoire sont exclus des morts et des joueurs en ligne.
## Résultat livré
Liste des joueurs sur U (migration unique de Tab ; autres choix conservés), suivi
et place unique expliqués dans les demandes. Site : retour au dessin d’origine,
intendance limitée au titre, page officielle avec retour, pas de navbar de rubriques
ni de sélecteur de langue ni d’incitation à se connecter dans les publications.
Gazette en accordéon exclusif : le dernier article visible est ouvert au chargement,
ouvrir un autre referme le précédent. Photo entière à gauche, extrait court à droite,
visage/pseudo/date et lien de lecture alignés en bas. Calendrier jour/mois encadré,
message officiel à droite, sans heure ; année dans le footer.
Les pages publiques du site sont en lecture seule, y compris leurs anciennes
routes d’écriture pour les comptes connectés et le staff. L’administration
Intendance réservée au staff reste disponible. Les joueurs publient, répondent
et suivent les demandes dans Minecraft. Compteurs réels et état périmé explicite.
## Vérifications
| Vérification | Résultat |
| --- | --- |
| `./gradlew check build assemblePack` | 252 GameTests : 229 réussis, les mêmes 23 échecs que beta.160, aucun nouvel échec dans cette passe. Comparaison dans `build/session161-server-failures.json`. |
| Contrôles JVM et persistance fichier/SQL | Réussis, dont `SERVER_METRICS161_PASS` et `COMMUNITY154_SQL_PASS` dans `build/beta161-release.log`. |
| Démarrage et raccourci U | `SESSION161_KEYS_PASS` : défaut U, migration unique depuis Tab, choix personnalisé conservé. |
| Parcours natif communautaire | `SEARCH159_CLIENT_PASS mode=file` : photos/galerie, FR/EN, GUI 2/3/4, recherche, bulletin en lecture seule, suivi et infobulle du repère. Captures dans `mods/sanctuary/build/run/clientGameTest/screenshots/`. |
| Web SQLite et MariaDB isolée | 29 tests, 252 assertions réussies ; lecture seule visiteurs/joueurs/staff, contrats de persistance, statistiques absentes/périmées/arrêtées. Pint et `git diff --check` réussis. |
| Navigateur | Accordéon exclusif, lien vers l’article, calendrier sans heure, visage/auteur/date et lecture en bas ; vérification desktop et 390 × 844. |
| Assemblage final | `./gradlew build assemblePack :sanctuary-test:exportDuoLaunch -x :sanctuary:check` réussi, après les vérifications ci-dessus. Exclusion ponctuelle des tests connus en échec, pas de suppression d’assertion. |
| Laboratoire réel | Monde existant `duo-flat-160` relancé, serveur 768 MiB/client 2048 MiB, shaders désactivés. KokaLab non OP, 26 niveaux conservés. Deux figurants, compteur SQL et Web : 1 humain. Journal de durée persisté et exclusions vérifiées. |
Le premier démarrage de test a révélé une mauvaise déclaration du nouveau mixin :
`PlayerListKeyMixin` au lieu de `client.PlayerListKeyMixin`. Elle est corrigée ;
la classe et sa déclaration sont présentes dans le JAR final. Le test natif a
ensuite réussi. L’assemblage avait redéclenché une seconde passe de GameTests
serveur ; cette répétition a été interrompue, la première passe complète faisant
foi. Logs distincts : `beta161-check-build.log`, `beta161-release.log`,
`beta161-client.log`, `beta161-assembly.log`, sous `build/`.
Livraison locale uniquement : `mods/sanctuary/build/libs/sanctuary-beta.161.jar`
et pack assemblé dans `build/packwiz`. SHA-256 du JAR :
`c6e0424bf091c41827730bc260dad3b95b7c949fb0dcc41811f0ae3d94bce79c`.
Les 29 ressources shader sont identiques à beta.160. Les anciens JAR beta.154–160
sont conservés. Aucun canal public ni instance Prism personnelle n’a été modifié.
Le téléchargement public du site reste l’ancien lien beta.151, hors de cette
livraison locale. Les 23 échecs préexistants restent ouverts.
Le compteur de jours débute à l’activation de cette version : le fonctionnement
antérieur n’était pas mesuré. Le site reçoit les nouveaux compteurs au rechargement
de la page. La mesure d’une mort réelle supplémentaire n’a pas été provoquée sur
le personnage de la séance ; l’import et l’incrément sont couverts par le test du
journal et les tests de lecture Web.
+88
View File
@@ -0,0 +1,88 @@
# SHADER-127 — intégration des ombres portées pixélisées
Demande du 17 septembre 2026 : livrer le shader dans **beta.127**.
Branche `codex/shader-beta127`, socle publié beta.126, Minecraft 26.3 / Java 25.
La préparation locale [des ombres pixélisées](pixel-shadows-source122.md) est
intégrée sans écraser les changements non publiés du dossier d'origine.
Les gemmes, dernières textures de rubis/saphir, l'argile spéciale et les
commandes de découverte de beta.126 sont conservées.
## Utilisation
**Options → Shaders → Sanctuary · Vanilla Light → Ombres portées pixélisées**.
L'option est désactivée par défaut ; son activation reste un choix du joueur.
Finesse : 8/16/32 pixels par bloc ; portée : 16/32/64 blocs. Défauts : 16 et 32.
Les paramètres FR/EN s'appliquent immédiatement et persistent dans
`config/sanctuary-shaders.json`. La mise à jour préserve les réglages personnels.
Le rendu est natif au mod : aucun pack Iris, téléchargement supplémentaire ou
nouvelle dépendance de rendu.
## Périmètre
Ombres solaires des formes d'occultation des blocs chargés, incluant dalles,
escaliers et obstacles hors écran. Carte de profondeur GPU, grille ancrée dans
le monde, atténuation selon soleil, pluie et brume. L'effet s'arrête la nuit,
dans les dimensions sans soleil, dans les fluides ou avec un moteur externe.
Le HUD et la main ne passent pas dans cet effet. La lumière de gameplay,
les règles serveur, les sauvegardes et la génération ne sont pas modifiées.
La préparation limite le cache à 96 Mio et sa construction à quatre sections
par image dans un budget souple de 3 ms. L'intégration supprime seulement une
invalidation de bord exécutée deux fois à l'identique dans le cache de terrain.
Les formes non occultantes, feuillages ajourés, eau/verre et entités animées ne
projettent pas de nouvelles silhouettes. Les transparences déjà composées
peuvent recevoir l'assombrissement du terrain situé derrière elles. Pas
d'ombres de torches/lune ni de mesure de FPS revendiquée.
## Vérifications et livraison
Client natif Minecraft 26.3 / Java 25 sur macOS, monde neuf plat, graine 122 :
`PixelShadows122ClientChecks` réussit sur la beta.127 en **1 min 26 s**.
Le nom de cette fixture historique est conservé pour suivre la même scène.
- Activation : 920 échantillons de sol assombris, 63 412 inchangés, aucun éclairci.
- Pilier hors écran : 42 048 échantillons restent ombrés ; le retrait du pilier
restitue la lumière sur les 42 048 et conserve les 23 616 déjà éclairés.
La repose rétablit la même ombre sans désactiver le cache.
- Trois finesses et trois portées, redimensionnement GPU, désactivation/libération,
arrêt nocturne, reprise diurne et rechargement des ressources vérifiés.
- Préférences persistantes et bornées ; captures FR/EN inspectées, sans texte
tronqué. La scène pilier/dalle/escalier est également inspectée visuellement.
Logs : `build/shader127-client.log`. Captures :
`mods/sanctuary/build/run/clientGameTest/screenshots/`.
Le serveur GameTest dédié reste exclu conformément au refus antérieur de son
EULA. Aucun monde personnel n'est ouvert. Aucun essai Windows/Vulkan ou FPS
n'est revendiqué ; la validation graphique est celle du client natif local.
Build `./gradlew check build assemblePack assembleTestPack
-x :sanctuary:runGameTest` réussi en **2 min 25 s**, 126 tâches. Les sources
Java dans les archives correspondent aux sources du ticket. La comparaison
avec le JAR beta.126 ne trouve que **21 entrées de production modifiées**,
toutes liées au shader, à son initialisation, ses mixins et ses libellés.
Les règles de jeu, données, textures de gemmes, sculptures et découvertes
sont identiques. Normal et Test contiennent le même JAR ; le template exporte
exactement les ressources du mod. Aucune fixture de test ni monde embarqué.
| Artefact | SHA-256 |
| --- | --- |
| `Sanctuary-beta.127.mrpack` | `23fa6ca0c5d1f1033e13e5370d669491b398d5a99e13f8bd1e983f998a24a20a` |
| `Sanctuary-Test-beta.127.mrpack` | `f185f3a743ba23cd6c024d1c1e46587706bf4f3edb5e14d7e5dee522a1ebf2c2` |
| `sanctuary-beta.127.jar` | `3ef3fab67f4f703864a1acc9ae2395c636d206f3128d3399140eaf045a46d5f3` |
## Publication et synchronisation
[Release beta.127](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.127)
publiée depuis `00be1eb0d0bfe042442d90255385033a7765092f` ; artefacts immuables retéléchargés
et vérifiés. Canal packwiz : `7fd24a43e01ee497a23311e3c78e1dd3dddd877a`.
Deux synchronisations isolées puis deux dans l'instance existante
**Sanctuary Beta** ont réussi. Les **923 fichiers personnels** suivis,
y compris les préférences de shaders, sont conservés. Aucun monde personnel
ouvert ; copie préalable dans `sanctuary-backups/before-beta.127/`.
Les packs normal/Test et le template sont aussi copiés et vérifiés dans
`sanctuary-beta/build/`. Reçus locaux : `build/shader127-artifact.json`,
`build/shader127-isolated.json`, `build/shader127-prism.json` et journal de
publication `build/shader127-publication.log`.
+106
View File
@@ -0,0 +1,106 @@
# SHADER-128 — stabilité, lune et feuillage
Demandes du 17 septembre 2026 : réduire le jitter des bords et à midi, conserver
des ombres de blocs nettes et un feuillage nuancé, ajouter une ombre lunaire
fine et une transmission
irrégulière du feuillage selon son épaisseur. Branche `codex/moon-foliage-beta128`,
socle publié beta.127, Minecraft 26.3 / Java 25.
## Résultat
Les faces de voxels reçoivent l'ombre sur une grille fixe ; leur plan est
stabilisé au 1/16 de bloc et les faces inclinées conservent leur normale. La
carte de profondeur utilise un ancrage par 16 blocs avec alignement de ses
texels. **Les ombres des blocs restent nettes** : le créateur a écarté leur
adoucissement après l'essai visuel. Le filtrage est réservé au feuillage.
Le soleil continue de se déplacer : ce mouvement naturel peut toujours faire
avancer une ombre d'une case. L'objectif est de supprimer les oscillations
liées à la caméra, pas de figer le temps.
Entre une élévation solaire de 0,92 et le zénith, l'intensité diminue doucement
jusqu'à 25 % de sa valeur habituelle : alpha maximal 0,095 au lieu de 0,38.
La lune réutilise la même carte et son angle natif ; alpha maximal 0,10 selon
sa phase, nul à la nouvelle lune. Horizon, pluie, portée et brume atténuent
les deux lumières. Pas de seconde passe de carte lunaire simultanée.
Les blocs du tag vanilla `leaves` projettent une couverture probabiliste fixe
sur une grille de quart de bloc. Les faces internes restent présentes : plus
le rayon traverse de couches, moins il a de chances de passer. Il s'agit d'une
approximation statistique de l'épaisseur, pas d'un comptage des feuilles ni
d'une lecture des trous de leur texture. Quatre échantillons bilinéaires sur
un quart de bloc mélangent cette couverture
en nuances, évaluées sur la grille pixélisée. Un masque R8 distingue feuilles
et blocs dans la même passe de profondeur, pour garder les silhouettes opaques
nettes. Les comparaisons suivent le plan récepteur pour éviter l'auto-ombrage
sur les surfaces obliques. Le motif ne dépend ni du temps ni de la caméra et
ne demande aucune lecture GPU côté CPU en production.
Les budgets du cache restent 96 Mio, quatre sections et 3 ms souples par image.
Le feuillage ajoute des faces ; son filtrage utilise seize comparaisons de
profondeur et, selon le cas, autant de lectures du masque. Les ombres opaques
pleines utilisent le chemin court. Le masque prend 4 Mio à la définition
par défaut, 16 Mio au maximum ; aucune promesse de FPS n'est faite.
Réglages existants et libellés FR/EN conservés/actualisés. Les ombres restent
optionnelles et désactivées par défaut. Règles, éclairage de gameplay, mondes
et génération inchangés. Les limitations de beta.127 concernant les entités,
fluides, verre et autres formes non occultantes subsistent.
## Vérifications
`PixelShadows122ClientChecks`, fixture historique étendue, réussit en **1 min
44 s** dans un monde neuf plat, graine 122, client natif macOS/OpenGL.
- Soleil : 920 échantillons de sol ombrés et 63 412 inchangés ; retrait/repose
d'un pilier hors écran restitue puis rétablit son ombre.
- Lune : ombre localisée mesurée ; arrêt des passes à la nouvelle lune.
- Midi : ombre atténuée et **zéro échantillon de transition adoucie sur 65 664**
dans la scène de contrôle du contour opaque.
- Caméra : petits déplacements autour de l'ancien ancrage entier et du nouvel
ancrage par 16 blocs, retour au point initial, petites rotations en vue
oblique, instants avant/après midi et passage de 5999 à 6001 ticks.
Comparaisons d'images avec tolérance de trois niveaux par canal et moins
de 1 % d'échantillons changés pour ces petits mouvements.
- Vue oblique : 19 637 échantillons ombrés, 46 027 inchangés sur le sol blanc.
- Feuillage : assombrissement moyen mesuré d'environ **18,6 %** pour une couche,
**31,7 %** pour quatre, contre **36,8 %** sous une couverture solide.
Motif fixe dans le temps ; modification des couches invalide le cache actif.
- Trois finesses/trois portées, désactivation/libération GPU, préférences
persistantes, rechargement des ressources, textes FR/EN et captures inspectés.
Commande native : `./gradlew :sanctuary:runClientGameTest
-PsanctuaryClientTests=true -PsanctuaryPixelShadows122ClientTests=true
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true` sous Java 25.
Logs : `build/shader128-client.log` ; captures sous
`mods/sanctuary/build/run/clientGameTest/screenshots/`.
`./gradlew check build assemblePack assembleTestPack
-x :sanctuary:runGameTest` réussit en **2 min 24 s**, 126 tâches.
Les sources archivées correspondent au ticket. **13 entrées de production**
diffèrent de beta.127, limitées aux classes du shader, GLSL et libellés FR/EN.
Gemmes, sculptures, découvertes, données et règles de jeu restent identiques.
Normal et Test embarquent le même JAR ; le template correspond exactement aux
ressources exportables. Aucun monde ni fixture de test embarqué.
Le serveur GameTest dédié reste exclu conformément au refus antérieur de son
EULA. Aucun monde personnel utilisé. Aucun essai Windows/Vulkan revendiqué.
## Artefacts vérifiés
| Artefact | SHA-256 |
| --- | --- |
| `Sanctuary-beta.128.mrpack` | `84125b18366afde52c8cba4bc7007257b1c3d8b79d413338abe64d0e0ae8feaf` |
| `Sanctuary-Test-beta.128.mrpack` | `6bfb10d8d63875bfb84e813d4f0a9faf5db30902cc0400deda0993c08b86e597` |
| `sanctuary-beta.128.jar` | `c54cbae7efaa7059c8fd4d28801087983379958fe34eedff51682d106d649c6a` |
## Publication et synchronisation
[Release beta.128](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.128)
publiée depuis `a4e96c0d99c976231d7ca92b1db6bdb6aa7083c6` ; les artefacts immuables ont été
retéléchargés et vérifiés. Canal packwiz : `eba01726ee132a6e548d129fa7ee04f24c880917`.
Deux synchronisations isolées puis deux dans l'instance existante
**Sanctuary Beta** ont réussi. Les **923 fichiers personnels** suivis,
y compris les réglages de shaders, sont conservés. Aucun monde personnel
ouvert ; copie préalable dans `sanctuary-backups/before-beta.128/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
Reçus locaux : `build/shader128-artifact.json`, `build/shader128-isolated.json`,
`build/shader128-prism.json` ; journal : `build/shader128-publication.log`.
+119
View File
@@ -0,0 +1,119 @@
# SHADER-129 — arêtes connectées et portées étendues
Demandes du 17 septembre 2026 : highlight optionnel, puis raccordement CTM de
tous les blocs coplanaires, portée indépendante 16–256 blocs, ombres à 128/256,
suppression de l'atténuation au zénith et du réalignement cyclique des ombres.
Branche `codex/edge-highlights-beta129`, socle beta.128, Minecraft 26.3 / Java 25.
## Résultat
Dans **Options → Shaders → Sanctuary · Vanilla Light**, les reflets sur les
arêtes sont désactivés par défaut. L'intensité va de 0 à 100 ; la valeur 30
éclaircit au maximum de 12 %. Leur portée se règle indépendamment des ombres :
**16, 32, 64, 128 ou 256 blocs**. Les anciens réglages restent conservés.
Le highlight raccorde les surfaces plates, y compris entre matériaux différents,
sans dessiner les jonctions intérieures. Il suit les contours visibles du relief,
y compris les dalles et escaliers. Il multiplie la couleur existante pour garder
les pixels des textures et composer avec les ombres. Ce CTM géométrique utilise
la profondeur déjà produite par Minecraft : aucune liste de blocs autorisés,
aucun pack CTM à fournir, aucune exploration CPU du volume de 256 blocs.
Une cassure/repose modifie le contour dès que le terrain natif est réaffiché.
Le trait proche suit la grille de 1/16 de bloc. À distance, la couverture devient
partielle pour limiter le scintillement des traits plus petits qu'un pixel.
La portée choisie s'efface progressivement dans son dernier quart et respecte
la brume ainsi que la distance de rendu. Une passe plein écran, quatre sondes
de profondeur et un tampon uniforme de 176 octets ; aucun retour GPU vers CPU
en production. L'arrêt de l'option ou une intensité nulle libèrent ce tampon.
Ce n'est pas un remplacement des textures par des variantes CTM. Le calcul
concerne les faces visibles alignées sur la grille : les faces hors écran,
les surfaces transparentes absentes de la profondeur et les géométries
arbitrairement inclinées ne sont pas reconstruites. À très grande distance,
les détails plus petits qu'un pixel peuvent rester imperceptibles. Aucun
chargement de chunk forcé, aucune promesse de FPS.
Les ombres proposent les cinq mêmes portées. La carte reste plafonnée à
4096 × 4096 : les grandes distances réduisent sa précision spatiale. Le cache
garde ses limites de 96 Mio, quatre sections et 3 ms souples de construction
par image ; la réconciliation des chunks est limitée aux ticks et changements
de caméra/terrain plutôt qu'à toutes les images.
L'intensité solaire reste pleine au zénith. Les contours opaques restent nets,
le filtrage du feuillage et les ombres légères de la lune sont conservés.
Le réalignement de la grille lumineuse a lieu au changement d'ancrage de la
caméra, avec transfert de phase par texels entiers. La rotation du soleil ne
réarrondit plus la projection de l'origine mondiale à chaque image, source
de sauts périodiques amplifiés aux grandes coordonnées. Le soleil continue
d'avancer ; une ombre pixélisée peut naturellement changer de case. Cette
correction ne modifie pas l'horloge serveur ni sa cadence native.
Textes FR/EN. Aucun changement de règles, sauvegardes, génération, gemmes,
sculptures ou découvertes.
## Vérifications et livraison
Le client natif réussit en **2 min 41 s**, dans un monde neuf plat, graine 122,
sur macOS / Apple M1 / OpenGL :
- CTM : 596 échantillons éclaircis sur le contour et 65 068 conservés ; les
20 centres et 20 jonctions coplanaires ciblés restent intacts, y compris
au changement de matériau. L'intensité 90 produit environ trois fois le gain.
- Ouverture d'un trou : 716 échantillons éclaircis ; la fermeture restitue
l'image connectée. Au-delà de 16 blocs, le réglage 16 supprime le contour ;
le réglage 64 le rétablit (254 échantillons éclaircis).
- Cinq portées CTM et cinq portées d'ombres, persistance/clamp, migration des
anciennes préférences, arrêt/libération, rechargement, caméra et vue oblique
avec ombres. Captures françaises/anglaises inspectées ; suppression ensuite
d'un préfixe redondant dans le libellé de portée.
- Soleil, lune, nouvelle lune, ombres opaques nettes à midi et transmission
du feuillage restent vérifiés. Casters hors écran et retrait/repose actifs.
- 2 000 petits pas solaires aux coordonnées ±100 000 vérifient l'absence de
saut de translation de la carte ; changement d'ancrage par texels entiers.
La séquence du vrai service realtime suit 294 images : angle avancé de
0,000694 radian, aucun rebond dans les 65 664 échantillons de sol suivis.
Sur cette courte séquence, aucune case opaque n'a changé ; cela ne constitue
pas une mesure de mouvement visible sur une journée entière.
La fixture initiale capturait parfois le terrain avant la fin de sa construction
native : elle attend désormais la réception de toute la plateforme et la fin
compilée des sections. Aucun changement de gameplay pour contourner ce problème.
Commande : `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true
-PsanctuaryQuickTests=true`. Log `build/shader129-client.log`, captures sous
`mods/sanctuary/build/run/clientGameTest/screenshots/`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 17 s**, 126 tâches. Une dernière passe d’assemblage intègre
la simplification du libellé de portée (2 min 18 s). Les archives sont vérifiées :
**17 entrées de production** diffèrent de beta.128, limitées au shader et à ses
interfaces. Même JAR dans normal/Test, sources archivées conformes, ressources
du template exactes, assets des gemmes inchangés. Aucun monde ni test embarqué.
Le serveur GameTest dédié
reste exclu conformément au refus antérieur de son EULA. Aucun monde personnel
utilisé pour les essais, aucun résultat Windows/Vulkan revendiqué.
Archives vérifiées dans `build/` et recopiées dans le dossier de livraison
habituel `sanctuary-beta/build/` :
- Normal : 10 353 946 octets, SHA-256
`2c7735194faab8a699004e69ad543ce6e8fabdebe297b759bffd31fea2dcc2e8`.
- Test : 10 372 872 octets, SHA-256
`cca572ee313d1d7e66ed745bb48bac62490998760d9b7bbfc7a1f6d60c430dce`.
- JAR Sanctuary :
`ca3e2ff4e0717a3a54c1d57478d43aade39d001b71c4eec745d76f010f7def54`.
[Release beta.129](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.129)
publiée depuis `35103a7ea8635dc4ed26293f00e86d99aaacfca8`. Canal packwiz
`2eaa0130a4cd475c598beefdab40f48fc8681ab7`. Deux synchronisations isolées puis deux synchronisations
dans l'instance **Sanctuary Beta** ont réussi. Les **923 fichiers personnels**
suivis, dont les réglages de shader, sont inchangés. Aucun monde personnel ouvert.
Sauvegarde préalable des fichiers gérés : `sanctuary-backups/before-beta.129/`.
Le JAR installé a le hash vérifié ci-dessus. Reçus locaux :
`build/shader129-artifact.json`, `build/shader129-isolated.json` et
`build/shader129-prism.json`. Le checkout initial avec ses modifications en
cours a été préservé ; seule la copie des archives versionnées rejoint son
répertoire `build/`.

Some files were not shown because too many files have changed in this diff Show More