28-07-2011, 05:40 PM
Bonjour!
J'étudie actuellement la faisabilité d'un jeu web en PHP, de type Tactical RPG.
Je planche actuellement sur l'IA des ennemis.
Comme je l'ai dit dans ma présentation, c'est ma première expérience, et tout avis ou coup de pouce est bon à prendre.
Le calcul du chemin à parcourir se fait grâce via le "Pathfinding" disponible sur le wiki. Mais il ne marche pas tout à fait pour le moment.
La fonction de calcul retourne un tableau de l'ensemble des coordonnées à parcourir
exemple: si l'ennemi est en (0,0) et cible (6,0), le tableau du chemin sera par exemple ((0,0),(1,0),(2,0),(3,0),etc...).
Test 1 : pas d'obstacle
L'itinéraire est bien calculé
Test 2 : obstacle en (2,0)
L'itinéraire est modifié, et fait bien un détour
Test 3 : obstacle en (2,0) et (2,1)
Bug. Bien qu'il existe un chemin alternatif en faisait un plus gros détour, la fonction ne renvoi aucune solution.
Pour info, le cout pour passer sur un obstacle est de 9999.
Et j'ai rentré coutMax=9000 pour avoir suffisamment de points pour arriver à la cible en évitant les obstacles, via la fonction : chemin($tableau, 0, 0, 6, 0, 9000)
Quelqu'un a-t-il une idée de où peut venir le problème ? Une faille est-elle connue dans cette fonction ?
J'étudie actuellement la faisabilité d'un jeu web en PHP, de type Tactical RPG.
Je planche actuellement sur l'IA des ennemis.
Comme je l'ai dit dans ma présentation, c'est ma première expérience, et tout avis ou coup de pouce est bon à prendre.
Le calcul du chemin à parcourir se fait grâce via le "Pathfinding" disponible sur le wiki. Mais il ne marche pas tout à fait pour le moment.
La fonction de calcul retourne un tableau de l'ensemble des coordonnées à parcourir
exemple: si l'ennemi est en (0,0) et cible (6,0), le tableau du chemin sera par exemple ((0,0),(1,0),(2,0),(3,0),etc...).
Test 1 : pas d'obstacle
L'itinéraire est bien calculé
Test 2 : obstacle en (2,0)
L'itinéraire est modifié, et fait bien un détour
Test 3 : obstacle en (2,0) et (2,1)
Bug. Bien qu'il existe un chemin alternatif en faisait un plus gros détour, la fonction ne renvoi aucune solution.
Pour info, le cout pour passer sur un obstacle est de 9999.
Et j'ai rentré coutMax=9000 pour avoir suffisamment de points pour arriver à la cible en évitant les obstacles, via la fonction : chemin($tableau, 0, 0, 6, 0, 9000)
Quelqu'un a-t-il une idée de où peut venir le problème ? Une faille est-elle connue dans cette fonction ?