109 lines
6.4 KiB
Markdown
109 lines
6.4 KiB
Markdown
# 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.
|
||
|
||
```sh
|
||
./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-256
|
||
`b6e24d65797eb7f16670d2f3a591b5f2476820608f72241ecd37fb78a486008e`.
|
||
- `Sanctuary-Test-beta.122.mrpack` : 10286380 octets, SHA-256
|
||
`90487ee3ad4298fccb8c24e8781af4cbf043d88dc0379fba5c21d99733dac92d`.
|
||
|
||
JAR Sanctuary : SHA-256
|
||
`ff8ebf89f39a64809fae6912253386793e9b5e66ec0adb9fa7521729893d406e`.
|
||
|
||
## Publication et installation
|
||
|
||
La [release beta.122](https://git.botsu.net/koka/sanctuary-beta/releases/tag/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.
|
||
|
||
- [Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-beta.122.mrpack).
|
||
- [Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-Test-beta.122.mrpack).
|
||
- [Template personnel](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-Template-beta.122.zip).
|