Aller au contenu principal

Session 132duodecimus (suite 13g) — Phase C portes : logs diagnostic verbeux

Pourquoi ce patch

Apres s13f, les logs runtime de l’utilisateur ne montrent aucun message
[DoorControl]
. Or les logs ne s’impriment que quand canPass change
d’etat. Donc soit :

  1. Aucune porte ne s’ouvre vraiment (logique wantOpen jamais vraie)
  2. Les portes s’ouvrent mais pas assez pour franchir le seuil canPass
  3. Le controlUpdate ne tourne pas du tout
  4. Le rbc est null (mesh degenere a l’init -> exception silencieuse)

Impossible de patcher a l’aveugle. On installe des logs qui couvrent les
4 hypotheses et on ré-teste.

Logs ajoutes

Au demarrage (apres setSpatial, par porte) :

[DoorControl INIT] door zone=N : closedRoofY=X.XXX openRoofY=X.XXX \
  corridorFloorY=X.XXX corridorRoofY=X.XXX panCount=N rbc=OK/NULL \
  raise=N lower=N openSpeedJ=X.XXX closeSpeedJ=X.XXX triggerDist=X.XXX

Permet de verifier :
– Les valeurs Y (sont-elles dans le bon ordre ?)
– Le nombre de panneaux (panCount > 0 ?)
– Si rbc a ete cree (= collision shape OK)
– La vitesse d’ouverture, le triggerDist

Au runtime (toutes les 0.5s, pour les portes proches) :

[DoorControl RUN] zone=N dist=X.XX trigger=X.XX currentRoofY=X.XXX \
  want=true/false canPass=true/false rbcInSpace=true/false \
  player=(X.XX, Y.YY, Z.ZZ)

Permet de verifier :
– Distance joueur a la porte (pour savoir si on est dans triggerDist)
– Si la porte essaie d’ouvrir (want=true)
– Si currentRoofY evolue
– Si canPass est correctement calcule
– Si le rbc est bien dans le space ou pas

A l’ouverture/fermeture (deja present en s13f, on garde) :

[DoorControl] door zone=N : OPEN, collision REMOVED (currentRoofY=...)
[DoorControl] door zone=N : CLOSED, collision ADDED

Properties pour controler les logs

-Dab3d2.dumpDoorInit=true   # logs INIT (ON par defaut)
-Dab3d2.dumpDoorRun=true    # logs RUN periodiques (ON par defaut)
-Dab3d2.dumpDoorCol=true    # logs OPEN/CLOSED collision (ON par defaut)

Mettre =false pour desactiver une fois le diagnostic termine.

Fichiers modifies

  • DoorControl.java :
  • Logs INIT a la fin de setSpatial
  • Logs RUN au debut de controlUpdate (throttled a 0.5s)
  • Catch + log d’erreur dans le createMeshShape (avant on swallow)

Action utilisateur attendue

  1. ./gradlew buildScenes
  2. ./gradlew run
  3. Rejoindre une porte (s’approcher a moins de 3-4m)
  4. M’envoyer TOUS les logs [DoorControl ...] qui apparaissent
    (au moins 5-10 secondes apres etre proche de la porte)

A partir de ces logs on saura precisement pourquoi la porte ne se laisse
pas traverser. Promis, on debloque ensuite !

Laisser un commentaire

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