6.4 KiB
SCULPT-09 — Forme physique et lumière — beta.122
Contrat du 17 septembre 2026, branche codex/sculpture-shape-light-beta122.
Le créateur demande des bounding boxes adaptées aux sculptures et la suppression
des ombres cubiques visibles lorsqu'on en pose plusieurs côte à côte.
La sélection, le contact avec les entités et les collisions suivent les voxels occupés de chaque sculpture, y compris les creux. Le rendu et la forme physique partagent leur placement entier sur la grille 1/16, après orientation et ancrage. Le centre, les quatre bords et les dimensions impaires gardent leur alignement. La pose vérifie aussi les voxels portés avant que l’entité de bloc existe : elle refuse une intersection avec le joueur et autorise les espaces libres. La forme est construite directement sur une grille native 16³ et mise en cache par entité de bloc, modèle et état ; aucun calcul complet à chaque interrogation.
Les sculptures transmettent la lumière et ne sont plus utilisées comme cubes pleins par l'occlusion ambiante. Leurs faces restent éclairées par le monde, sans émission de lumière et sans rendu à luminosité maximale. Cette règle est commune aux sculptures : l'éclairage natif stocké par bloc ne permet pas une ombre distincte pour chaque petit voxel. L'atelier d'argile reste inchangé.
Aucun identifiant, blockstate, format d'item ou schéma sauvegardé ne change. Les formes sont recalculées à partir des voxels existants ; aucune migration, aucun parcours de monde ni régénération de chunk. Les données inconnues gardent leur conservation opaque et une petite base sélectionnable pour récupérer l'item. Le travail de documentation déjà présent dans l'autre branche reste intact.
Vérifications et livraison
Le parcours Sculpture122ClientChecks passe en 37 s sur Minecraft 26.3,
client macOS et serveur intégré, dans un monde plat jetable de graine 122 :
- Pose par la commande native d'utilisation ; sélection du pilier et visée à travers le trou d'une arche jusqu'au bloc derrière, captures relues.
- Requêtes natives de collision côté serveur et client : voxels occupés solides, espace vide libre, aucune profondeur artificielle d'un bloc entier.
- Pose refusée dans le joueur, sans consommer l'objet ; petite sculpture acceptée dans la partie libre du même bloc, sans intersection avec le joueur.
- 80 cas confrontent le volume et les faces de collision au maillage réellement émis : arche creuse, marges vides, cube de 4 096 voxels, voxel unique, quatre orientations et cinq ancrages. Chaque interrogation répétée réutilise la forme.
- Régression de 5 120 placements du rendu existant : dimensions paires/impaires, orientations et ancrages, plus marqueurs de direction et modèles avec marges.
- Changement d'orientation/ancrage puis changement des voxels sur la même entité : cache recalculé et forme client synchronisée.
- 75 sculptures en trois couches : skylight natif conservé à 15 partout. Un toit de pierre témoin produit toujours une ombre. La lumière d'un bloc traverse une sculpture avec l'atténuation de distance native (13 à deux blocs).
- Le rendu reçoit la lumière réelle du monde : 15 au ciel, 0 dans une pièce fermée et obscure. Aucun rendu artificiellement lumineux.
- Sauvegarde/reconnexion : modèle, collisions et lumière conservés sur les deux côtés, sans fichier 3D source.
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuarySculpture122ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
Marqueurs SCULPTURE122_PASS, SCULPTURE122_GEOMETRY_PASS,
SCULPTURE122_PLACEMENT_PASS, SCULPTURE122_LIGHT_PASS et
SCULPTURE113_GEOMETRY_PASS dans build/sculpture122-client.log ; captures
conservées dans build/sculpture122-evidence/. Le test prépare explicitement
son sol à Y=0 : le preset plat nu commence à Y=-1.
Aucun monde personnel ouvert ; pas d'essai Windows ni depuis deux ordinateurs,
ni de garantie sur les ombres ajoutées par des shaders tiers.
Le GameTest serveur dédié reste exclu conformément au refus antérieur de son EULA.
./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest
passe en 2 min 13 s, 126 tâches. Les sources JAR correspondent aux sources
Java du dépôt. Par rapport à beta.121, les différences de production se limitent
aux classes des sculptures et à la nouvelle géométrie partagée (14 entrées,
y compris le déplacement du sélecteur synthétique d'orientation). Toutes les
ressources client, données serveur et configurations de mixins sont identiques.
Les packs normal/Test contiennent le même JAR, sans sauvegarde ni fixture.
Le template beta.122 contient les mêmes ressources que beta.121, octet pour octet.
Reçu local : build/sculpture122-artifact.json.
Sanctuary-beta.122.mrpack: 10267459 octets, SHA-256b6e24d65797eb7f16670d2f3a591b5f2476820608f72241ecd37fb78a486008e.Sanctuary-Test-beta.122.mrpack: 10286380 octets, SHA-25690487ee3ad4298fccb8c24e8781af4cbf043d88dc0379fba5c21d99733dac92d.
JAR Sanctuary : SHA-256
ff8ebf89f39a64809fae6912253386793e9b5e66ec0adb9fa7521729893d406e.
Publication et installation
La release beta.122
est publiée depuis edc7fc3dfb117cde61be42c1d79b03af11f5dec6. Tag et artefacts immuables,
téléchargements publics vérifiés. Canal packwiz :
3d340bea0093b709c6018624795a1b3ca557b72d.
Deux synchronisations isolées puis deux dans Sanctuary Beta réussissent.
Un seul JAR Sanctuary beta.122 est actif ; le second passage est identique.
Les 923 fichiers personnels et réglages suivis restent inchangés.
Aucun monde personnel ouvert. Copie préalable dans
sanctuary-backups/before-beta.122/ de l'instance existante ; reçus
build/sculpture122-isolated.json et build/sculpture122-prism.json.
Le ticket a été réalisé dans le worktree sanctuary-sculpture-beta122 afin de
préserver les changements de docs/vision.md et docs/villageois-illageois.md
déjà présents sur la branche de documentation du checkout principal.