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.
la source
Réponses:
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.
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.
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.
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.
la source