Hello,
Je m'interesse (comme 99% des codeurs du dimanche) aux jeux videos mais j'ai le gros defaut de toujours vouloir reinventer la roue (par exemple je n'utilise pas boost car c'est trop lourd pour le peu de metaprogramming que je fais)
Comme d'habitude j'ai voulu utiliser kekchose et je ressens le besoin inexplicable de le recoder moi meme a cause de micro-defauts (qui ont une certaines importance quand meme, c'est pas juste debile!)
Donc voila, dans mon petit moteur qui ne fait pour l'instant rien, j'ai codé un sequenceur c'est a dire un objet qui, independamment de la frame, va pouvoir faire tourner du code sur plusieurs frames.
Le but est de corriger le genre de defaut :
- je veux que mon panel se deplace de 10 pixels en 10 pixels
- je le mets dans une boucle for
- mais comme l'ecran n'est pas rafraichi je ne vois que le resultat final
- donc dans la boucle for je rafraichis l'ecran
- ah mais oui mais le jeu est en "pause" pendant ce temps, la physique n'est plus mise a jour ni rien! je n'avais pas pensé a ca.
Pour contrer ce "probleme" toutes les taches a effectuer sont donc mise dans un sequenceur.
En gros le sequenceur est une classe singleton Updater qui contient une liste de IUpdatable.
Le sequenceur appelle a chaque frame pour chaque objet la methode update(double time); de chaque IUpdatable.
Si l'updatable a fini son travail i lrenvoie true et on passe a la suite.
Sinon, il reste dans la liste et la methode sera encore appelée au prochain tour.
je compte utiliser cela tres tres beaucoup! Le probleme c'est que du coup c'est assez difficile a creer (faire un arbre de IUpdatable, c'est chiant).
Du coup je pensais, au lieu de faire simplement comme les autres et de prendre lua, creer un language de script se traduisant par un arbre de IUpdtabale.
Donc une fonction pourrait (enfin) s'etendre sur plusieurs frame, avec la possibilité egalement de rendre la main au moteur avec l'instruction yield. par exemple, pour le cas precedent :
un langage serait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 { for(i in [1..10]) { panel->move(+10,0); //deplaces le panel de 10 pixels a droite yield; // on reprendra a la frame suivante } }
Je cherche un retour d'experience sur des gens qui auraient utilise un sequenceur dans leur developpement et/ou lua pour soit me dire que ce que je fais est inutile, soit me dire que c'est trop cool ^^
qu'en pensez vous ? suis je (de nouveau) en train de recreer un truc connu depuis 10 000 ans ?
Partager