Bug fix apres test utilisateur de la suite 13c
| Bug observe | Fix |
|---|---|
| Texture porte coupee : 2 chevrons cote a cote au lieu | uM_jme = tileW/texW (= 1 tile par edge en largeur) |
| d’1 chevron complet |
Analyse
L’utilisateur a observe sur le test de la suite 13c que la porte zone 2/5
montre 2 chevrons cote a cote alors qu’elle devrait montrer 1 seul
chevron complet. La hauteur (vM=1) etait correcte, c’est l’axe U
horizontal qui etait mal calibre.
Hypothese : la PNG wall_05_chevrondoor.png fait 128×128 et contient en
realite 2 chevrons cote a cote (texture LevelED qui contient 2 « tiles »
logiques de 64×128, declarees via wMask=63). En forcant uM_jme = 1
(s13c) on echantillonnait toute la PNG (= les 2 chevrons), au lieu de
1 tile (= 1 chevron).
Fix : 1 tile par edge
Dans LevelSceneBuilder.makeDoorSegGeo(), on change la formule :
// Avant (s13c) : uM_jme = 1 -> echantillonne TOUTE la texture
float uM_jme = 1f;
// Apres (s13d) : uM_jme = tileW/texW -> echantillonne 1 tile
float uM_jme = (texW>0) ? tileW/texW : 1f;
Effet :
– texW=128, tileW=64 (chevron) -> uM_jme=0.5 -> on voit 1 chevron
– texW=128, tileW=128 (autre porte) -> uM_jme=1 -> on voit la texture entiere
– texW=64, tileW=64 -> uM_jme=1 -> idem
Le tileW vient de wMask+1 du JSON, declare par LevelED (= la vraie
largeur de tile logique du jeu). Cette approche est ASM-fidele : c’est
exactement comment l’Amiga decide ou wrapper l’echantillonnage horizontal.
Ajout aussi d’un log diagnostic (system property ab3d2.dumpDoorUv=true,
on par defaut) pour calibrer si le bug revient sur d’autres portes.
Fichiers modifies
LevelSceneBuilder.java:uM_jme = tileW/texWdansmakeDoorSegGeo- log diagnostic.
Tests prevus
- Niveau A premiere porte (zone 5/2) : 1 chevron unique en largeur, pas
2 cote a cote. - Mouvement (slide V) : doit toujours fonctionner (texture qui rentre
dans le linteau). - Collision : toujours active porte fermee.
- Le log au build doit afficher
texW=... tileW=...pour chaque porte
rencontree, ce qui permet de calibrer si on rencontre des cas non
conformes.