Eu tenho tentado descobrir como implementar algo como a busca de caminhos no Starcraft 2. Não estou procurando todos os recursos sofisticados, como flocagem, filas etc. Na verdade, eu gosto de como no Starcraft 1 as unidades interferem entre si. de outros. Mas eu quero um localizador de caminho melhor do que o usado no Starcraft 1.
Nas pesquisas do Google que fiz, as várias respostas têm algo a ver com A * em uma malha de navegação e / ou lidar com algum tipo de "gráfico de visibilidade". Mas recebi respostas um tanto conflitantes ou pouco claras sobre o que devo fazer.
Uma coisa sobre a qual li tem algo a ver com A * sobre os vértices de uma malha de triângulo (a malha de navegação). E então, de alguma forma, "endireitando o caminho", que eu não sei fazer. Mas isso não garante a otimização, certo?
Outra pergunta que eu tive é como o caminho do starcraft 2 lida com o fato de que as unidades são discos com um raio finito e não apontam ao lidar com cantos? E como lidar com obstáculos dinâmicos, como unidades inativas ou mesmo outras unidades móveis.
Estou procurando algumas explicações detalhadas e não as visões gerais genéricas de alto nível, típicas dos resultados de pesquisa.
Se isso importa, eu já vi as anotações de Amit sobre localização de caminhos . Já ouvi falar, mas não li, de Geometria Computacional: Algoritmos e Aplicações . E um post de blog sobre uma apresentação de navegação de IA na GDC 2011 mencionou que Starcraft 2 usa uma triangulação delaunay restrita para uma malha de navegação. Embora a postagem do blog mencione Boids steering e "horizon analysis", ela não menciona exatamente como a busca de caminho principal é feita na navmesh.