Dans un jeu que je développe pour un client, un concept de jeu clé consiste à se déplacer sur une carte. Dans ce cas, les tailles et les formes et celles des différents pays ne sont pas pertinentes: passer d'un pays à un pays adjacent compte comme une seule étape.
J'essaie de trouver la meilleure structure de données pour représenter en interne les connexions entre les pays. Pour un pays donné, le jeu doit savoir quels pays sont adjacents, à la fois pour savoir de quelle manière les joueurs peuvent se déplacer et pour permettre à l'IA du jeu de tracer des itinéraires, en déterminant les chemins possibles d'un pays à l'autre. L'IA doit également évaluer dans quelle mesure un pays est bien connecté, non seulement à ses voisins immédiatement adjacents, mais aussi aux voisins de ces pays, etc.
J'ai trouvé quelques possibilités mais elles semblent disgracieuses et inefficaces. Parce que l'IA devra calculer un tas d'itinéraires possibles afin de prendre de bonnes décisions concernant son mouvement, "inefficace" est très problématique.
Je soupçonne qu'il s'agit d'un casse-tête CS quelque peu courant et qu'il existe une solution commune, mais je n'ai pas pu trouver grand-chose en cherchant. Toutes suggestions sont les bienvenues.
la source
Réponses:
Sonne comme un graphique et un algorithme de chemin le plus court
la source
Certainement un graphique. Vérifiez ici la théorie des graphes , en gros vous avez des nœuds et des arêtes. Un nœud peut contenir 0 ou plusieurs arêtes vers d'autres nœuds.
Il existe de nombreux algorithmes pour calculer le chemin le plus court (sauts ou distance), vérifier les cicles (plus d'une façon de se rejoindre), etc.
Maintenant, pour pouvoir mettre en œuvre des solutions efficaces, c'est un peu plus complexe, mais comme toujours, il existe des moyens.
la source
Comme déjà mentionné, vous auriez besoin d'un graphique représentant toutes les connexions possibles entre les pays. Chaque connexion détiendrait également la distance entre deux pays.
Ensuite, un algorithme de recherche de chemin comme A * peut être utilisé pour déterminer le chemin le plus court entre deux pays.
Il y a aussi de bons livres sur le jeu ai: Game AI par exemple par Mat Buckland http://www.ai-junkie.com/books/toc_pgaibe.html
ou la série AI Game Programming Wisdom. http://www.aiwisdom.com/ Le premier livre contient plusieurs chapitres sur la recherche de chemin.
la source