En combinant les tests automatique, la guru-meditation sur base d'écran bleus interactifs et le debugging à l'aide de DDD sur émulateur, j'ai fini par régler les différents problèmes liés au changement de type de gestion de mémoire concernant les machines d'état. Mais si, souvenez-vous, cet ensemble de règles qui indiquent au jeu comment le comportement des différents personnages évoluent au cours du temps.
J'ai donc à nouveau un chargement correct du niveau, y compris sur la vraie console, et j'ai réparé mon moteur de collision qui avait souffert du mécanisme de "verouillage" de cette machine d'état à la fin du traitement des scripts. Tout ça entrecoupé de parties de "Mario & Luigi : Dream Team" que ma fée a été chercher pour moi à la médiathèque ♥
All debugging tools have been used, so that I finally restored level parsing and collision system. The core difficulty has been to correctly manage the 'freeze()' calls used to drop malloc-driven stdlib objects used during parsing and coerce e.g. std::vectors into arrays that can safely be stored in the "memory tank" (essentially chained bottom-up allocators) for safer management while we're in-game.
I cannot call it really "repaired" yet, though.
- There is something clearly wrong with the music-track followers that fire actions at specified moments in music (TrackSequence), and that are heavily used during level changes. I'll need dedicated tests that focus on the checking that this components performs as expected.
- I would also like to perform more systematic testing on the state/areas parsing by generating arbitrary -- but known -- code chunks that can be fed to the parser so that data structure inspection can later indicate whether the proper objects were created.
Il faudra d'ailleurs que je vous parle du système des badges, une alternative intéressante aux
objets de soin puisqu'ils peuvent être utilisés en plus d'une autre action dans son tour. Il faudra aussi que je vous parle de la manière dont les effets 3D ont été utilisés dans les combats pour dynamiser un peu les rencontres contre les boss qui font courir les frère Mario pendant leur attaques. Et des "pantalons d'expert" qui proposent un nouveau moyen de récompenser le joueur en lui permettant d'acquérir dès le début du jeu de l'équippement dont l'efficacité augmente ... avec le nombre de défis (une variante des achievement) qu'il a réussi à relever.