Post on 04-Jan-2016
description
1
Motivação Técnicas clássicas e otimizações
Transformação do espaço de busca
Pathfinding
Geber Ramalho
2
Pathfinding
Definição
Obtenção de um melhor caminho de um ponto
inicial para um objetivo de acordo com um ou
mais critérios Ex.: tempo, distância, periculosidade dos inimigos,
velocidade, ocupação do mapa, etc. diferente steering behaviors...
É um dos poucos consensos em termos de AI
Engine
Pathfinding: motivações
Aplicável para o cálculo de rotas Cidadão comum: GPS, Google maps, etc.
Meio empresarial: Problemas de logística
Meio militar: Problemas táticos
Jogos digitais Deslocamento dos NPCs
Análise de terreno e situação
Um dos poucos consensos em termos de AI Engine
3
4
Pathfinding: jogos
Ainda não é um problema resolvido Dave Pottinger: “AOE2 gasta 60-70% do tempo de
simulação fazendo pathfinding”
Dificuldades Evitar obstáculos, sobretudo os largos e côncavos Levar em conta os pesos (tipos de terreno) Diferentes critérios (mais curto, mais seguro, etc.) Memória e tempo de processamento em função de
tamanho do terreno número de unidades número de jogadores
5
Pathfinding: Exemplo
Napoléon en Russie - V. Corruble (LIP6) Caminho mais curto
início
objetivo
6
Pathfinding: Exemplo
Napoléon en Russie - V. Corruble (LIP6) caminho menos visível
7
Pathfinding: Exemplo
Napoléon en Russie - V. Corruble (LIP6) caminho mais seguro
8
Path-Finding - Estratégias
Reativas (online: executa enquanto procura) Campos potenciais Aleatórias Traçado simples e robusto
Busca/planejamento (offline: busca e depois excuta) Não Informadas (busca cega) Informadas (busca heurística)
9
Campos potenciais
Usa o princípio de campo gravitacional para determinar a direção do movimento Alvo tem campo gravitacional atrativo Obstáculos têm campo gravitacional repulsivo
Duas abordagens para Soma vetorial (Attractor-repulsor)
online Potential fields ou método gradiente
Pré-calculado e marcado no terreno
10
Attractor-repulsor
Soma vetorial Vetor do alvo: linha do alvo até o ponto em
questão Vetores dos campos dos obstáculos: a partir dos
centros geométricos
Cálculo da direção e movimento Intensidades dos campos são inversamente
proporcionais às distâncias entre as entidades e o ponto em questão
Direção resultante em um ponto é a soma vetorial dos campos atrativo e repulsivo
Esta direção resultante é calculada a cada ciclo de tempo T segundos
A entidade se move na direção calculada por T segundos
11
t0=0
t1=Tt2=2T
t3=3T
t4=4Tt5=5T
Obstáculo
Alvo
Cálculo da resultante
Attractor-repulsor
Obs Caro, pois calcula tudo na hora, mas
adaptativo Pode ficar preso em mínimos locais
12
Potential Fields
Método discreto Cada tile do terreno tem um valor de
potencial determinado pela influencia de destino = potencial baixo obstáculo e ponto de partida =
potencial alto O elemento “escorrega” para o
potencial mais baixo Obs
Barato, pois pré-calcula tudo, mas ruim se obstáculos se movimentam (recalcular)
Pode ficar preso em mínimos locais Combinar informação local e global
via propagação
13
Path-Finding reativo (online)
Idéia se movimentar em direção ao objetivo e pegar
outra direção quando esbarrar nos obstáculos
Tecnicas Aleatória Tracing Robust tracing
14
Path-Finding reativo (online)
Direção aleatória ao esbarrar, move em direção aleatoriamente
e tenta de novo problema: obstáculos grandes e côncavos
15
Path-Finding reativo (online)
Simple Tracing ao esbarrar, segue, em uma direção fixa,
“tateando” o obstáculo até contorná-lo Problema: quando parar de tatear?
Quando mudar de direção, testa se pode andar na direção do alvo sem voltar por onde já passou
Nem sempre funciona...
Tateando sempre à direita
16
Path-Finding reativo (online)
Robust tracing Uma vez começado a tatear, se o ponto inicial de
bloqueio está entre o objetivo e o agente, ao cruzar com a semi-reta traçada entre a posição original e o objetivo, não para de tatear
Caso volte à posição original, aborta problema: pode tomar muito tempo fazendo tracing
17
Path-Findingonline
Solução Usar simple trace de cara Quando um loop é detectado, mudar para
Robust tracing
Infelizmente, há situações onde é preciso uma busca
inteligente em particular para tratar “pesos de regiões”
(estradas, rios, florestas, campos,...)
18
Path-FindingBuscas Não-Informadas (offline)
Estratégias: Busca em largura (Breadth-first search) Busca em profundidade (Depth-first search) Busca em profundidade limitada Busca de custo uniforme (Dijkstra’s search) Busca em profundidade iterativa
Direção Início para meta Meta para início Bidirecional
19
Path-FindingBuscas Informadas (offline)
Estratégias: A* Combina a busca de custo uniforme (Dijkstra) com
best-first f(x) = g(x) + h(x), onde g = o que custou até agora h = função heurística (o que provavelmente ainda
vai custar) Heurística determina eficiência: quanto mais
próximo do real, embora sempre otimista, melhor Completo, ótimo e correto Listas Closed (já visitados) e Open (a visitar -
fronteira)
Melhor Primeiro: Busca Gulosa
Melhor Primeiro: Busca A*
22
Adaptações de A*
Mesmo sendo a melhor técnica, A* ainda tem limitações devido aos Requisitos de tempo real Limitações de memória disponível Ineficiência dos algoritmos de manipulação das
listas Open e Close Qualidade da função h(n)
23
Adaptações de A*
Alternativas para melhorias Ajustes para melhorar desempenho/memória
(visto em SI) Iterative Deepening A* Beam Search – Simplified Memory A* Alterações na função h(x) Algoritmo de Floyd-Warshall
Estruturas de dados Representação do campo do jogo Dados do estado da busca Melhorias na manipulação das listas
Transformação do espaço de busca
24
Estrutura de dadosRepresentação do mapa do jogo
Representação das áreas acessíveis de cada ponto e dos esforços para a movimentação Diretamente no mapa, em uma estrutura separada, ou calculadas quando necessário
Representação das características na área Diretamente no mapa, ou em uma estrutura separada
25
Estrutura de dados Dados do Estado da Busca
Pode-se incluir no nós, além da estrutura de busca básica,... Coordenadas da posição do mapa Atributos relevantes da entidade, como orientação
e velocidade Custo estimado até o objetivo (ou até o objetivo
mais próximo) Referências adicionais para outros nós
próximo elemento, elemento anterior ,“esquerda”, “direita”, ...
26
Melhorias Estéticas
Obter trajetórias mais macias... Ver demo de Marco Pinter
27
Transformação do espaço de busca
28
Transformação do espaço de busca
Idéia básica: Busca realizada com “menos estados” para reduzir
a complexidade da busca inicial
Técnicas Hierarquização e agregação de células (ambiente
discreto) Discretização de ambientes contínuos
29
Hierarquização e Agregação
Idéia decompor busca inicial em sub-buscas mais
simples => agrupar células (quadradinhos) em áreas
maiores e fazer a busca hierarquicamente do maior para os menores
Divisão do mapa Mapa deve ser dividido em grandes áreas
contíguas cujas conectividades são conhecidas Um ou dois “quadradinhos” (células) da borda
entre cada par de áreas adjacentes são escolhidos
30
Hierarquização e Agregação
Uma sucessão de buscas irá ser realizada A primeira busca irá ser realizada em cima deste
novo “espaço com menos quadradinhos” As buscas sucessivas, em espaços transformados
com mais “quadradinhos”, evitam iterações desnecessárias determinadas pelas buscas anteriores
31
Hierarquização e Agregação
Exemplo: determinar a melhor rota terrestre entre Madri e Atenas utilizando o mapa da Europa Cada país pode ser considerado uma área Pontos nas bordas (fronteiras) dos países são
definidos para a primeira busca Melhor rota na primeira iteração: Espanha - França
- Itália - Iugoslávia - Grécia A primeira iteração evita que a bota
correspondente à Itália seja incluída nos próximos passos da sequência hierárquica de buscas
32
Hierarquização e Agregação
33
Discretização de Espaço Contínuo
E se o jogo for em um espaço contínuo (não baseado em tiles)?
2 abordagens vindas do planejamento de movimento de robôs Cell decomposition Skeletomization
34
Discretização de Espaço Contínuo
Cell decomposition discretização em células menores (idênticas ou
não) e fixação de spots (pontos no “centro” das células) que serão ligados formando um grafo de caminhamento
exemplos: tiles, tiras, células cilíndricas, quadtrees,...
35
Discretização de Espaço Contínuo
Tiles Dividir o espaço em “ladrilhos” de resolução pré-
definida Ladrilhos inseridos total ou parcialmente em
obstáculos são marcados como bloqueados Permite movimento sem risco de colisão Problema: difícil ajustar a granularidade
36
Discretização de Espaço Contínuo
Tiles (ladrilhos)
37
Discretização de Espaço Contínuo
Quadtrees O espaço é dividido em quadrados (tiles) Cada quadrado que não é suficientemente
homogêneo é recursivamente dividido em quatro quadrados
Os centros dos quadrados homogêneos que não estão em obstáculos são usados pela busca (spots)
Regiões das bordas dos obstáculos são consideradas bloqueadas
38
Discretização de Espaço Contínuo
Quadtrees
Subdivisão do espaço
Grafo (azul)
39
Discretização de Espaço Contínuo
Tiras verticais ou horizontais a dimensão em um dos eixos (x ou y) se expande
até “esbarrar” em um obstáculo problema: sobram espaços que, no entanto, não
podem ser usados para manobras
40
Discretização de Espaço Contínuo
Skeletomization superposição de um grafo de caminhamento
diretamente em função dos obstáculos As buscas consideram apenas os caminhos do
grafo exemplos: manual (waypoints), grafo de
visibilidade, polígonos convexos, diagrama de Voronoi, ...
41
Discretização de Espaço Contínuo
Pontos de visibilidade São os pontos críticos (quinas dos obstáculos) mas
com uma folga para evitar colisões Os caminhos possíveis (conexões) definidos entre
os pontos críticos visíveis entre si ou seja... não deve existir obstáculos entre estes
pontos
42
Discretização de Espaço Contínuo
Pontos de Visibilidade
Grafo (azul)
43
Discretização de Espaço Contínuo
Polígonos convexos Passo inicial
Quebrar o espaço (sem obstáculos) em polígonos convexos
A partir daí define os spots segundo 2 técnicas C-Cells: cada vértice é conectado ao ao vértice
mais próximo subdividindo o espaço em polígonos cujos centroides serão os spots
Maximum-area decomposition: similar mas os spots estão no meio das arestas que ligam os vértices
44
Discretização de Espaço Contínuo
Polígonos Convexos
Subdivisão do espaço
Grafo (azul) segundo “Maximum-area decomposition”
45
Colaboração
Eduardo Calabria (egc@cin.ufpe.br) Eduardo Laureano (eagcl@cin.ufpe.br) Charles Madeira (Charles.MADEIRA@poleia.lip6.fr)
46
Bibliografia & Links
Russel & Norvig: AIMA (cap 4, 5 e 25)
Bryan Stout, Smart Moves: Intelligent Path-Finding http://www.gamasutra.com/features/programming/080197/pathfinding.htm demo: ftp://ftp.gdmag.com/pub/src/oct96.zip
Game AI: The State of Industry http://www.gamasutra.com/features/20001101/woodcock_pfv.htm
Stefan Baert, Motion Planning Using Potential Fields http://www.gamedev.net/reference/articles/article1125.asp
Amit Patel, Amit´s Thoughts on Pathfinding http://theory.stanford.edu/~amit/GameProgramming/index.html
Marco Pinter, Toward More Realistic Pathfinding http://www.gamasutra.com/features/200103014/pinter_01.htm
Paul Tozour, Influence Mapping, in (ed) Mark Deloura, Game Programming Gems II.