Bug fix apres analyse des logs diagnostic
| Bug observe | Fix |
|---|---|
| 2 chevrons cote a cote au lieu d’1 seul | uM_jme = L_pixels / texW (formule ASM) |
Diagnostic (logs build s13d)
[door seg_0] texW=128 texH=128 tileW=128 tileH=128 fromTile=0 yOffset=0 L_jme=2.000
Observation : la PNG wall_05_chevrondoor.png fait 128×128 et contient
2 chevrons cote a cote. Pour la porte zone 5 (la plus visible), L_jme=2.000
metres = 64 pixels en espace texture (L_pixels = L_jme * 32 = 64).
Donc l’ASM original mappait U de 0 a 64/128 = 0.5 -> on voit la moitie
gauche de la PNG = 1 chevron. C’est ca le comportement attendu !
Fix : formule ASM-fidele
// s13d (mauvais) : uM_jme = tileW/texW = 1 -> texture entiere = 2 chevrons
// s13d-fix : uM_jme = L_pixels/texW (= longueur reelle / texture entiere)
float uM_jme = (texW>0) ? L_pixels/texW : 1f;
Effet sur les portes du level A :
– Porte 2m (zone 5) : 64 / 128 = 0.5 -> 1 chevron
– Porte 4m : 128 / 128 = 1.0 -> texture entiere (2 chevrons)
– Porte 5m : 160 / 128 = 1.25 -> texture + 1/4 (la repetition est
voulue, c’est le comportement Amiga)
C’est ASM-fidele : la longueur reelle de la porte determine la quantite de
texture vue. Pas de truc artificiel pour forcer « 1 tile par porte ».
Fichiers modifies
LevelSceneBuilder.java: retour auM_jme = L_pixels/texWdans
makeDoorSegGeo.
Tests prevus
- Niveau A premiere porte (zone 5) : 1 chevron unique, texture qui glisse
derriere le linteau. - Si une autre porte (genre 4m+ de large) montre 2 chevrons, c’est NORMAL :
c’est le comportement ASM, la texture est faite pour. La porte est juste
large.