09-11-2008, 03:01 PM
(Modification du message : 09-11-2008, 05:48 PM par Sephi-Chan.)
bonjour à tous !
j'ai un soucis (qui arrive très rarement, mais qui est très génant) sur mon jeu, je vais vous donner un exemple concret :
joueur A et joueur B tapent joueur C en même temps
le jeu effectue une requête pour chaque joueur pour récupérer les infos requises et notament la vie restante du joueur C, mettons 200points de vie, comme les requêtes sont quasiment simultannées, A et B récupèrent tous les deux la même information : C a 200 en vie
ensuite, A fait 150points de dégâts et B fait 250points de dégâts, mais malheureusement l'attaque étant simultannée, quand les deux scripts font leur update une fraction de seconde plus tard, il peut se passer la chose suivante : B passe en premier, mettant C à -50points de vie (et son écran lui indique qu'il l'a tué) puis A update la base en mettant C à 50points de vie, et celui-ci est donc toujours en vie...
bien sur je n'ai pas réussi à reproduire la situation, mais je l'ai déduit par rapport à certaines choses qui se sont passées, et pour lesquelles je ne vois pas d'autres explications
quelqu'un sait comment gérer ce problème?
j'ai un soucis (qui arrive très rarement, mais qui est très génant) sur mon jeu, je vais vous donner un exemple concret :
joueur A et joueur B tapent joueur C en même temps
le jeu effectue une requête pour chaque joueur pour récupérer les infos requises et notament la vie restante du joueur C, mettons 200points de vie, comme les requêtes sont quasiment simultannées, A et B récupèrent tous les deux la même information : C a 200 en vie
ensuite, A fait 150points de dégâts et B fait 250points de dégâts, mais malheureusement l'attaque étant simultannée, quand les deux scripts font leur update une fraction de seconde plus tard, il peut se passer la chose suivante : B passe en premier, mettant C à -50points de vie (et son écran lui indique qu'il l'a tué) puis A update la base en mettant C à 50points de vie, et celui-ci est donc toujours en vie...
bien sur je n'ai pas réussi à reproduire la situation, mais je l'ai déduit par rapport à certaines choses qui se sont passées, et pour lesquelles je ne vois pas d'autres explications
quelqu'un sait comment gérer ce problème?