06-03-2012, 12:10 AM
Évidement il faut activer ignore_user_abort, ou utiliser des transactions (bien mieux)
Mais sinon c'est simple:
Perso, j'ai une table de ce type:
A chaque page, je résout les actions du joueur courant (WHERE joueur = X AND start+duration < NOW() AND lock_nb == 0)
Si le tableau d'action est vide je charge une dizaine d'actions dans les prochaines a résoudre.
Une fois les actions résolues, je les lock (ou delete)
Pour le gameplay de mon jeu, je suis obligé de tenir un tableau associatif avec comme premier id, l'id du joueur, comme second le type de la dernière action, et comme 3éme l'heure de la dernière action.
Ceci car un même joueur ne peut effectuer qu'une action de chaque type a la fois, bien que plusieurs peuvent êtres programmées a la suite.
C'est plus rapide que de prendre une action, la résoudre, définir la valeur start de la suivante du même type, reprendre la suivante, etc etc.
Bref comme quoi avec un peu de logique, on s'en sort pas si mal...
Enfin j’attends d'avoir un truc jouable pour tester dans le feu de l'action!
Mais sinon c'est simple:
Perso, j'ai une table de ce type:
Code :
actions (
`id` int(10) auto_increment
`joueur` int(10)
`start` DATETIME
`duration` DATETIME
`type` int(2)
`data` text
`linkaction` int(10)
`lock_nb` int(1)
PRIMARY KEY (`id`)
KEY `joueur` (`joueur`)
)
A chaque page, je résout les actions du joueur courant (WHERE joueur = X AND start+duration < NOW() AND lock_nb == 0)
Si le tableau d'action est vide je charge une dizaine d'actions dans les prochaines a résoudre.
Une fois les actions résolues, je les lock (ou delete)
Pour le gameplay de mon jeu, je suis obligé de tenir un tableau associatif avec comme premier id, l'id du joueur, comme second le type de la dernière action, et comme 3éme l'heure de la dernière action.
Ceci car un même joueur ne peut effectuer qu'une action de chaque type a la fois, bien que plusieurs peuvent êtres programmées a la suite.
C'est plus rapide que de prendre une action, la résoudre, définir la valeur start de la suivante du même type, reprendre la suivante, etc etc.
Bref comme quoi avec un peu de logique, on s'en sort pas si mal...
Enfin j’attends d'avoir un truc jouable pour tester dans le feu de l'action!