Aller au contenu principal

Session 127 — Compteurs portails clarifies (flagPortals vs joinPortals)

Probleme observe

Le dump de scene affichait portails:0 sur 4297 edges et 11 portes
fonctionnelles, ce qui semblait incoherent. Apres investigation, le
compteur sp (alias « portails » dans le printf) ne mesurait pas du tout
ce que son nom suggerait.

Cause racine

Le compteur s’incrementait sur :

if ((fromTile & 0x8000) != 0) { sp++; continue; }

C’est-a-dire les walls dont le bit 15 du texIndex est leve. C’est un flag
LevelED tres specifique (« flag-portal ») qui ne represente qu’une partie
minime des connexions zone-a-zone. Le vrai indicateur de portail est
ZEdge.joinZoneId >= 0 (cf. zone.h:71, ou SOLID_WALL = -1 dans
ZEdge.java).

Modifications

tools/LevelSceneBuilder.java
– Renomme la variable sp en flagPortalCount pour clarte.
– Le printf affiche maintenant deux compteurs :
flagPortals (= ancien portails, walls avec bit 15 du texIndex)
joinPortals (= nouveau, edges avec joinZoneId >= 0)
– Ajout de la methode countJoinPortals(String json) qui itere les edges
du JSON et compte ceux avec joinZone >= 0.
– Documentation inline pour expliquer la difference semantique des deux
metriques.

Impact attendu

Au prochain build (./gradlew buildScenes suffit, pas de re-conversion
requise) le dump devrait afficher :

[A] murs:N flagPortals:0 joinPortals:M ...

ou M est typiquement de l’ordre de plusieurs centaines a quelques
milliers selon la connectivite des zones du niveau.

Laisser un commentaire

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