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.