Je développe un bot pour un simulateur de jeux de société BattleTech http://en.wikipedia.org/wiki/BattleTech , il est au tour par tour.
Le plateau est divisé en hexagones, chacun ayant un type de terrain et une élévation différents. Vous conduisez un robot qui se déplace sur eux, pour détruire d'autres robots.
Je ne connais que les algorithmes de guidage de Dijkstra et A *, mais le problème est qu'il existe 3 types de mouvements: marcher, courir et sauter plusieurs hexagones (chacun d'eux a ses propres règles). Marcher et courir sont presque les mêmes.
Le meilleur chemin pourrait être une combinaison ou chaque type de mouvement. Voici un exemple de carte http://megamek.info/sites/default/files/isometric_view.png
Connaissez-vous un bon algorithme pour cette recherche de chemin complexe ou un moyen de combiner les résultats A * pour chaque type de mouvement?
la source
Réponses:
Dijkstra et A * peuvent ajouter des coûts différents aux bords (= connexions) d'une tuile à l'autre. Ils permettent également de connecter deux nœuds (= tuiles) avec plus d'un bord, chacun avec un coût différent.
Le mode de saut alternatif signifierait qu'il existe un bord direct alternatif de chaque tuile à chaque tuile dans la distance de saut. Mais comme un robot peut marcher ou sauter dans un tour, le coût d'utilisation de cette arête serait les points de mouvement d'un tour entier, plus les points restants du tour en cours lorsqu'il y avait déjà un mouvement ce tour.
Selon votre description, la décision de marcher ou de courir ne fait pas beaucoup de différence en ce qui concerne le choix du chemin, mais cela semble plutôt être une décision stratégique à prendre. L'acteur peut certainement marcher quand la destination peut être atteinte dans le virage en cours sans recourir à la course. Mais sinon, il y a de nombreux facteurs à prendre en compte, comme:
Il n'y a pas de règle stricte pour prendre cette décision. Le mieux que vous puissiez faire est d'utiliser une approche heuristique. Attribuez des valeurs de points positives ou négatives à toutes les circonstances, additionnez-les et voyez si le résultat est positif ou négatif.
Il y a aussi un autre facteur dans la recherche de chemin que vous devez prendre en compte: dans certaines conditions, il peut être logique qu'un mécène évite de terminer son tour à certains endroits. Lorsque vous êtes dans une zone dangereuse, utiliser trois tours pour aller de A à B mais terminer chacun à l'abri peut être mieux que d'en utiliser seulement deux, mais être exposé à la fin de chacun. Ou peut être pas. Cela dépend des circonstances et des mécanismes de jeu exacts. Encore une fois, c'est une décision stratégique que vous devez prendre sur la base de l'heuristique. Vous pouvez le représenter en ajoutant un coût supplémentaire aux bords qui terminent le tour sur une tuile dangereuse pour décourager l'IA de faire ce mouvement.
la source