05-03-2012, 10:02 PM
J'ai déjà réfléchis a ce genre de problème donc jvais partager la solution a laquelle j'ai pensé...
Je sais pas comment tu gère mais pour moi mes attaques sont des actions
Je les stocke donc dans une table action
Pour chaque action, j'avais pensé implémenter une colonne lock.
Ainsi, pour résoudre:
On récupère les actions a effectuer (celles du joueur en priorité, puis d'autres sinon)
On lock les actions (avec un id unique au script)
Une boucle s'occupe d'appeler la résolution sur toutes ces actions
On dé-lock les actions de ce script (grace a l'id unique)
On s'occupe du reste...
Actuellement avec des actions simples, je plafonne a +/- 0.0145 au niveau de la boucle (donc il s'écoule 0.0145 sec max entre le moment ou on est sur qu'une action existe, et le moment ou l'action est résolue et retirée de la liste)
Au vu de ces chiffres, le risque de résolution concourantes est minime, je n'ai donc pas implémenté le système de lock décrit plus haut, je n'ai donc aucun retour sur ma méthode.
M'enfin bon, en attendant mieux, c'est l'idée que je me fait du probléme et de sa résolution...
C'est moins fiable que du vrai queuing, mais c'est plus flexible a mon gout... et puis j'ai pas de dédié sous la main non plus!
Je sais pas comment tu gère mais pour moi mes attaques sont des actions
Je les stocke donc dans une table action
Pour chaque action, j'avais pensé implémenter une colonne lock.
Ainsi, pour résoudre:
On récupère les actions a effectuer (celles du joueur en priorité, puis d'autres sinon)
On lock les actions (avec un id unique au script)
Une boucle s'occupe d'appeler la résolution sur toutes ces actions
On dé-lock les actions de ce script (grace a l'id unique)
On s'occupe du reste...
Actuellement avec des actions simples, je plafonne a +/- 0.0145 au niveau de la boucle (donc il s'écoule 0.0145 sec max entre le moment ou on est sur qu'une action existe, et le moment ou l'action est résolue et retirée de la liste)
Au vu de ces chiffres, le risque de résolution concourantes est minime, je n'ai donc pas implémenté le système de lock décrit plus haut, je n'ai donc aucun retour sur ma méthode.
M'enfin bon, en attendant mieux, c'est l'idée que je me fait du probléme et de sa résolution...
C'est moins fiable que du vrai queuing, mais c'est plus flexible a mon gout... et puis j'ai pas de dédié sous la main non plus!