mardi, avril 06, 2010

un rien de mise au point

Bonne petite journée bien remplie ... Le nouveau système de debugging pour Bilou avance, avec déjà la possibilité de placer des "breakpoints" sur les transition de la machine d'état, et l'affichage des coordonnées des zones de test. Je n'ai pas encore toutes les fonctions souhaitées, bien sûr. Je dois encore rajouter la possibilité d'interrompre l'exécution lorsqu'un nouveau monstre apparaît dans le voisinage immédiat de Bilou, histoire de pouvoir faire un break *aussi* sur les transitions des monstres proches.

Par contre, le jeu est actuellement interrompu immédiatement après la collision qui m'intéresse -- et non pas immédiatement avant, comme je l'aurais voulu :-/

At last a little day off. I've been working a bit on the in-game debugger for Bilou, giving it the ability to set breakpoints on state transitions. That's not yet covering 10% of the desired features, but it can already be somehow handy. Unfortunately, the game is interrupted *right after* the collision of interest, rather than *right before* it happens... I need to think about that a bit more, but first, some dish-washing is waiting for me: I've got some friends at home last Friday, and the glasses aren't clean yet...

4 commentaires:

mojo jojo a dit…

Il y a quelque chose qui s'est perdu dans la traduction:-). (And don't tell me you have to program your dishwasher, too). J'ai bien ri en voyant les "dead beef" - un des rares trucs dont je me souviens de mes essais de programmation sur mac (68xxx), peut etre a ranger dans les bons "easter eggs".

sylvainulg a dit…

la difficulté majeure vient du fait que le GuiEngine n'accepte pas de changer de "fenêtre" lors du traitement des animations. Or c'est précisément ce que je dois faire pour pouvoir utiliser l'interface du débuggeur après une collision ou une tentative de transition.

Si ma mémoire est bonne, la raison pour laquelle j'avais introduit cette contrainte est qu'il faut éviter que le GameScript ne soit détruit pendant que le système traite les sprites, et le changement de fenêtre est donc post-posé jusqu'à la fin des animations.

Je pourrais envisager d'annuler cette "post-position" lorsqu'il n'y a aucune fenêtre à "relâcher" mais qu'on ajoute tout simplement une fenêtre par-dessus celles qui sont déjà actives.

sylvainulg a dit…

bingo.

sylvainulg a dit…

@mojo : oui, je ne fais jamais une traduction parfaite, histoire de garder l'un ou l'autre "bonus" pour ceux qui comprennent les 2 langues.

Pour ce qui est des "0xdeadbeef", j'ai découvert leur usage dans le noyau linux (tous les process démarrent à cette adresse, qui est traitée d'une manière particulière par le gestionnaire d'exceptions). Je m'en sers régulièrement comme indicateur que "il n'y a pas de valeur valide à afficher ici", genre

int val = 0xdeadbeef;
if (obj) val=obj->getValue();
iprintf("val=%x", val);

C'est comme ça qu'un jour, le routeur de ma thèse m'a dit "va prendre un café" : "Kernel panic at PC = cafebabe"