Bug : aliens trop gros pour passer les portes
Après s13h (porte traversable par le joueur), l’utilisateur signale que les
aliens le voient à travers la porte (LOS OK grâce à s13h) mais ne peuvent
pas le suivre physiquement. Hypothèse confirmée par lecture ASM :
diststowall:
dc.w 0, 40 <- girth=0 (mince) : ExtLen = 40 unites
dc.w 1, 80 <- girth=1 (normal) : ExtLen = 80 unites
dc.w 2, 160 <- girth=2 (large) : ExtLen = 160 unites
Notre AlienDef.collisionRadius() retournait 80/160/320, soit 2x trop
large. Origine probable : confusion avec une convention SCALE=32 antérieure
(avant la sess 132 ou XZ_SCALE est passé à 64).
Conséquence sur les portes
Pour une porte de 2m JME (= 128 unités X/Z Amiga) :
| girth | ASM (40/80/160) | Notre code (80/160/320) | Verdict notre code |
|---|---|---|---|
| 0 mince | 0.625 m JME | 1.25 m JME | bloqué (besoin 2.5m) |
| 1 normal | 1.25 m JME | 2.5 m JME | bloqué (besoin 5m) |
| 2 large | 2.5 m JME | 5 m JME | bloqué (besoin 10m) |
Avec les vraies valeurs ASM, l’alien girth=0 passe une porte de 2m
(besoin 1.25m), girth=1 passe une porte de 2.5m+, etc. Beaucoup plus
cohérent avec la géométrie des niveaux du jeu original.
Fix
// AlienDef.java::collisionRadius()
return switch (girth) {
case 0 -> 40; // mince (etait 80)
case 1 -> 80; // normal (etait 160)
case 2 -> 160; // large (etait 320)
default -> 80;
};
Lien avec l’ancien bug canPass (s13h)
Les deux bugs combinés donnaient un symptôme « alien passif derrière la
porte » :
1. canPass inversé (s13h) : le rbc Bullet de la porte restait actif,
le LOS des aliens était bloqué → ils ne voyaient pas le joueur →
ils restaient en patrouille.
2. collisionRadius doublé (s14) : même quand un alien voyait le joueur
et essayait de le suivre, son rayon de collision rendait le passage
physiquement impossible.
Le fix s13h résoud le LOS, le fix s14 résoud le mouvement.
Fichiers modifiés
AlienDef.java:collisionRadius(): 80/160/320 → 40/80/160- JavaDoc complète avec extrait ASM et tableau des conversions JME
Tests prévus
- Zone 10 (level A) : approcher la porte, vérifier que les aliens
derrière franchissent enfin. - Test général : aucun alien coincé dans des passages étroits qu’il pouvait
déjà traverser dans le jeu original. - Risque : un alien
girth=0un peu trop « mince » passera dans des espaces
où il ne devrait pas. À vérifier visuellement dans 1-2 niveaux test.