Aller au contenu principal

Session 89bis — Revert fix arme + decouvertes ASM

Retour de test session 89

FaceCullMode.Back = pire : l’arme apparait inversee (normales mal
orientees dans les vectobj)
depthTest=true + Translucent : ne corrige pas les trous, ne change rien
visuellement
TARGET_WEAPON_SIZE=0.7 : arme trop grande
✅ Position bas-droite : tendance correcte mais trop extreme

Decouvertes ASM (apres etude de objdrawhires.s + player.s)

1. Pas de position/rotation speciale par arme dans l’ASM. L’arme est
dessinee comme n’importe quel objet 3D (draw_PolygonModel) via un cas
special :

move.l a0,a3
sub.l  Plr1_ObjectPtr_l,a3
cmp.l  #DRAW_VECTOR_NEAR_PLANE,a3    ; = 130
bne    polybehind
...
move.w #1,d1                         ; force z=1 pour l'arme
move.w #SMALL_HEIGHT/2,draw_PolygonCentreY_w

Donc l’arme est rendue a z=1 avec le centre ecran vertical ajuste. La
difference de taille/position entre armes vient du modele vectobj lui-meme
(chaque gun a son propre centre et sa propre echelle dans son .3D).

2. Consequence : notre normalizeModelVertices() qui force toutes les
armes a TARGET_WEAPON_SIZE=0.5 est incorrect. On devrait :
– Preserver l’echelle native de chaque vectobj
– Avoir un offset/scale par arme dans WeaponType

3. Les « trous » dans l’arme viennent probablement de l’ordre des polygones
dans le .j3o. L’ASM trie les polygones back-to-front via la liste
Draw_PolyObjects_vl + draw_PartBuffer_vw. Notre conversion .j3o ne
respecte peut-etre pas cet ordre. A traiter dans VectObjConverter.

4. SHOTGUN = arme par defaut (confirme par l’ordre des GunNames dans le
GLF : index 0 = Shotgun).

Fix session 89bis (revert + default weapon)

WeaponViewAppState.java :
TARGET_WEAPON_SIZE : 0.7 -> 0.5 (revert)
WEAPON_OFFSET : (0.45, -0.45, -0.55) -> (0.40, -0.38, -0.55) (compromis)
fixWeaponMaterials : revert session 85 (depthTest=false, FaceCullMode.Off,
Bucket.Transparent)

GameAppState.java :
– Arme par defaut : ASSAULT_RIFLE -> SHOTGUN (conforme a l’ASM)

A faire en session 90 (gros chantier arme)

  1. Offset/scale/rotation par arme dans WeaponType :
    java
    SHOTGUN("...", new Vector3f(0.4f, -0.4f, -0.6f), 1.0f, quatIdentite),
    PLASMA_GUN("...", new Vector3f(0.35f, -0.3f, -0.5f), 0.8f, ...),
    ...
  2. Preserver l’echelle native des vectobj (retirer
    normalizeModelVertices ou le rendre optionnel)
  3. Fixer l’ordre des polygones dans VectObjConverter (back-to-front
    depuis les faces + ordre de tri ASM)
  4. Animations de tir : declencher playFireAnimation() sur chaque tir
  5. Investiguer les slots 0 et 9 (mines vertes/rouges ?)
  6. 2 comportements de tir ? (ex. Shotgun hitscan + Grenade Launcher pourrait
    avoir un tir secondaire ?)

Fichiers modifies

  • src/main/java/com/ab3d2/weapon/WeaponViewAppState.java (revert)
  • src/main/java/com/ab3d2/app/GameAppState.java (arme par defaut)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *