Comment faire le guidage de Starcraft?


8

J'ai essayé de comprendre comment implémenter quelque chose comme le pathfinding dans Starcraft 2. Je ne cherche pas toutes les fonctionnalités sophistiquées comme le flocage, la file d'attente, etc. En fait, j'aime la façon dont dans Starcraft 1 les unités interféreraient avec chacune autre. Mais je veux un meilleur localisateur de chemin que celui utilisé dans Starcraft 1.

D'après les recherches Google que j'ai faites, les différentes réponses ont quelque chose à voir avec A * sur un maillage de navigation et / ou avec une sorte de "graphique de visibilité". Mais j'ai obtenu des réponses quelque peu contradictoires ou peu claires sur ce que je dois faire.

Une chose que j'ai lue a quelque chose à voir avec faire A * sur les sommets d'un maillage triangulaire (le maillage de navigation). Et puis en quelque sorte "redresser le chemin" que je ne sais pas faire. Mais cela ne garantit pas l'optimalité, n'est-ce pas?

Une autre question que je me posais est de savoir comment le guidage de Starcraft 2 gère le fait que les unités sont des disques avec un rayon fini et non des points lorsqu'il s'agit de coins? Et comment gérer les obstacles dynamiques comme les unités inactives ou même d'autres unités mobiles.

Je cherche des explications détaillées et non les aperçus génériques de très haut niveau qui sont typiques dans les résultats de recherche.

Si c'est important, j'ai déjà regardé les notes d'Amit sur la recherche de chemin . J'ai entendu parler de Géométrie informatique: algorithmes et applications, mais je ne l'ai pas lu . Et un article de blog sur une présentation de navigation sur l'IA au GDC 2011 a mentionné que Starcraft 2 utilise une triangulation delaunay contrainte pour un navmesh. Bien que le billet de blog mentionne la direction Boids et l '"analyse d'horizon", il ne mentionne pas exactement comment le cheminement de base est effectué sur le navmesh.


d'autres unités sont juste écartées, vous les verrez se cogner et glisser les unes contre les autres alors qu'elles tentent d'atteindre le point suivant
ratchet freak

3
Je pense que la plupart de vos questions recevront une réponse si vous consultez la colonne correspondante à droite. Par exemple: gamedev.stackexchange.com/questions/20392/… gamedev.stackexchange.com/questions/54361/… gamedev.stackexchange.com/questions/28041/… . Fondamentalement, un peu plus de recherche devrait clarifier les choses pour vous.
MichaelHouse

Réponses:


10

Si vous avez installé Starcraft 2, ouvrez l' éditeur de carte et basculez le pathfinding . Vous pourrez voir comment le maillage de navigation est construit lorsque vous placez des bâtiments et d'autres obstacles autour.

En fait, j'aime la façon dont dans Starcraft 1 les unités interféreraient entre elles. Mais je veux un meilleur localisateur de chemin que celui utilisé dans Starcraft 1.

Cela ne devrait pas être un problème - la recherche de chemin de Starcraft 1 était idiote. Ce billet de blog par l'un des programmeurs en parle.

Une chose que j'ai lue a quelque chose à voir avec faire A * sur les sommets d'un maillage triangulaire (le maillage de navigation). Et puis en quelque sorte "redresser le chemin" que je ne sais pas faire. Mais cela ne garantit pas l'optimalité, n'est-ce pas?

Il s'agit de rendre l'IA plus stupide qu'optimale. Vos unités se retrouvent avec un mouvement en zigzag entre les nœuds si vous n'appliquez pas un peu de lissage.

Lors de la planification du chemin, vous aurez une étape de raffinement où vous regarderez les nœuds que votre unité doit traverser pour atteindre son objectif, puis vous commencerez à supprimer les nœuds excédentaires au milieu du chemin que nous n'avons pas besoin de suivez, c'est-à-dire que nous pouvons directement passer du nœud A au nœud C via B sans collisions statiques, donc ignorez complètement B.

Cela finit par redresser le chemin.

Je cherche des explications détaillées et non les aperçus génériques de très haut niveau qui sont typiques dans les résultats de recherche.

Si vous voulez une explication solide, cela est déjà bien couvert dans les livres (avec le code de jeu fonctionnel, même). Donc, si vous avez de l'argent à dépenser, consultez Programmation de l'IA de jeu par exemple et / ou Intelligence artificielle pour les jeux . Tous deux discutent ces sujets en profondeur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.