técnicas de gameai: uma visão geral -...

41
Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma visão geral - continuação

Upload: hoangkhanh

Post on 07-Mar-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Prof. Marcelo Henrique dos Santos

Técnicas de GameAI:

Uma visão geral - continuação

Page 2: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Técnicas de GameAI

Movimentação

“Estacionando”

”Vagando”

Desvio de Obstáculos

Pathfinding

Simples

Desvio de Obstáculos

A*

Waypoints

Page 3: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

“Estacionando”

d = distância calculada

dmin = distância mínima desejada do alvo

fdes = fator de desaceleração (< 1 e depende da dinâmica do jogo) Ex: 0.3

Vaprox = velocidade de aproximação

Vorig = velocidade sem levar em conta a aproximação

Page 4: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

”Vagando”

• passar a impressão de movimento aleatório

• 1ª idéia – variar direção do NPC aleatoriamente

problema ...

–não natural - movimentos bruscos

solução ...

Page 5: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

”Vagando”

a dinâmica do movimento é controlada por rv, dv e max_dram

Page 6: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

Desvio de Obstáculos

• retângulo de detecção ou outras formas. ex:

• largura igual ao raio de “batida”

• quanto mais rápido o veículo mais longo o retângulo fica

Page 7: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

Desvio de Obstáculos

• 1º passo – achar o ponto de intersecção mais próximo

...

A. desconsiderar obstáculos fora do alcance do retângulo de detecção

B. desconsiderar obstáculos atrás, converter coordenadas de obstáculos

com possível colisão para coordenadas locais e verificar coordenada y

C. verificar se obstáculos se sobrepõe ao retângulo, expandir raio do

obstáculo por metade da largura do retângulo e verificar coordenada

Page 8: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

Desvio de Obstáculos

D. achar o ponto de intersecção mais próximo

Page 9: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

Desvio de Obstáculos

• 2º passo – calcular força de frenagem e força lateral

Page 10: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Movimentação

Desvio de Obstáculos

• caso 3D ...

– obstáculos = esferas

– retângulo = cilindro

Page 11: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

• Pathfinding, ou busca de caminhos é um dos problemas mais

comuns no desenvolvimento de jogos, e está presente na maioria dos

gêneros.

• patrulhamento

• desvio de obstáculos

• perseguição

• planejamento de trajetória

• mirar (se tem obstáculo deve ser previsto) mover-se e atirar

Page 12: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

Caso Simples

• pode-se utilizar algoritmos de perseguição e fuga

abstração:

ponto inicial = predador

ponto final = presa

problema ...

obstáculos

Page 13: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

Desvio de Obstáculos

Estratégias

Contornar Obstáculos

– obstáculos maiores

– critério de saída do modo “contorno”...

pseudo-código pathfinding simples + desvio

Início

ENQUANTO

não chegou ao destino

ESCOLHA um próximo passo rumo ao destino

SE o local está vazio, mova-se até ele

SENÃO escolha outra direção segundo estratégia de

desvio de obstáculos

FIM ENQUANTO

Fim

Verificar textos deste slide que estão “Atrás” do código e

eu não consegui decifrar...)

Page 14: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

Waypoints

• utilização de rotas interligando os pontos principais

em um mapa é uma técnica usada em jogos.

• cada nó do grafo representa um waypoint que

contém informações sobre como chegar até os nós vizinhos.

exemplo: jogos de corrida.

Na pista pode ser definidas diversas

rotas com características diferentes.

Cada carro começa seguindo uma rota

e muda quando necessário

(ex: carros na sua frente)

Page 15: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

A*

• cálculo de caminho ótimo + desvio de obstáculos

• modelagem:

(quadrado, retângulos, hexágonos, outros)

– utilização de grafo (vizinhança)

– cada ladrilho = um nó no grafo

Page 16: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

A*

A* mantém duas listas:

– nós abertos: armazena todos os nós que precisam ser

verificados,

– nós fechados: armazena os nós que não precisam

mais ser verificados no momento.

Page 17: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

A*

• o ponto crucial aqui é escolher qual dos nós fará

parte do caminho a ser percorrido.

• função de avaliação F(n) que é o resultado da soma

F(n) = G(n) + H(n)

• onde G(n) custo do nó inicial ao nó candidato ex: 10 quadrado horizontal ou vertical e de 14 diagonal(~10*√2)

• e H(n) é a função heurística, indica o custo estimado do nó

candidato até o destino final

ex: método Manhattan, número de quadrados horizontal e

vertical até o alvo, ignorando movimento diagonal, e ignorando

qualquer obstáculo que pode estar no caminho

Page 18: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

A*

1. coloca-se o nó inicial na lista de abertos;

2. nós adjacentes (filhos) também na lista de abertos,

se não estiverem, menos obstáculos ou nós da lista de

fechados;

3. coloca-se o nó inicial na lista de nós fechados;

Page 19: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

A*

4. se nó adjacente está na lista aberta, verificar se o

G agora é mais baixo do que o já na lista se não for,

não fazer nada;

se for, trocar o pai do nó adjacente para o nó selecionado e

recalcular o F;

5. repetir até nó-destino ser adicionado à lista de abertos

(algoritmo termina em “sucesso”), ou a lista de abertos fique

vazia (falha na busca de um caminho).

Page 20: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Pathfinding

A*

Exemplo

legenda:

verde = lista aberta

azul = lista fechada

Page 21: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Algoritmos de busca em grafo:

B*

• Bellman-Ford algorithm

• Best-first search

• Bidirectional search

• Breadth-first search

D*

• Depth-first search

• Depth-limited search

• Dijkstra's algorithm

• Floyd–Warshall algorithm

• Hill climbing

• Iterative deepening depth-first search

• Johnson's algorithm

• Uniform-cost search

Page 22: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Algoritmo MiniMax

• Faz uma caminhamento em profundidade completo da árvore!

• Se a profundidade é m e em cada estado existem b jogadas

possíveis, a ordem de complexidade é O(bm)

• Ou seja esse algoritmo não é prático para jogos reais

• Mas serve para análise matemática e como base para

algoritmos mais eficientes

Page 23: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Multiplayer games

O MiniMax pode ser estendido para jogos com múltiplos jogadores

Uso de um vetor de utilidades

Alianças

Podem ocorrer naturalmente no processo de maximizar a função de

utilidade

Page 24: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Qual o problema com o MiniMax?

Page 25: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Alpha-Beta Pruning

Problema com o MiniMax

# de estados é exponencial

Pruning = Poda

Não examinar grandes partes da árvore,

diminuindo assim o custo

Alpha-Beta Prunning

Retorna a mesma ação do MiniMax, mas elimina

caminhos que não influenciam a decisão

Page 26: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

α-β pruning example

Page 27: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

α-β pruning example

Page 28: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

α-β pruning example

Page 29: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

α-β pruning example

Page 30: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

α-β pruning example

Page 31: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Alpha-Beta Pruning

a = o maior valor já

encontrado no caminho

(melhor alternativa p/ MAX)

ß = o menor valor já

encontrado no caminho

(melhor alternativa p/ MIN)

Se v é pior que alpha,

MAX vai evitá-lo

Page 32: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Alpha-Beta Pruning

• A eficiência do algoritmo depende da ordem

em que os nodos são examinados

Page 33: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Decisões Imperfeitas, em Tempo Real

Minimax mesmo c/ Alpha Beta Prunning não

é factível para jogos complexos

Solução:

Parar a busca antes de chegar ao final

É necessário:

Função de Avaliação (Evaluation Function):

fornece uma estimativa da utilidade daquele

estado (Heurística)

Teste de Parada (Cutoff Test): decide em quando

parar a busca

Page 34: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Funções de Avaliação

• Devem tentar manter a mesma ordenação da função de utilidade final

• Não podem demorar muito

• Devem estar relacionadas com as “chances de ganhar o jogo”

• Chances? Jogo é determinístico!?

• Incerteza computacional ao invés de incerteza da informação

Page 35: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Funções de Avaliação

• Análise de características (features) do estado corrente

• Divisão em classes de equivalência • Conjuntos de estados com características similares

• Para cada classe, determina-se por experiência: •%Vitórias, %Empates, %Derrotas

• Função de avaliação é calculada como uma média ponderada. •Ex. 72% Vitória, 20% Derrota, 8% empate

Eval(S) = (0.72 x 1) + (0.2 x -1) + (0.08 x 0) = 0.52

•Requer muitas classes e experiência...

Page 36: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Funções de Avaliação

• Uma forma mais fácil é dar valor diretamente as

features •Xadrez: Peão = 1, Cavalo / Bispo = 3, etc...

•“Estrutura de peões”, “Proteção do rei”, etc...

• A função de avaliação é computada através de uma

combinação linear ponderada •Eval(S) = w1.f1 (s) + w2.f2 (s) + ... + wn.fn (s)

•Funções não lineares também podem ser usadas •Um par de bispos tem mais valor que o dobro de um só

•Leva em consideração as outras peças

•De novo, experiência / aprendizado é necessário

Page 37: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Teste de Parada

• If Cutoff-Test(State, Depth) return Eval(state)

• Forma mais comum: profundidade fixa

• Problemas: e se na próxima jogada...

Page 38: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Teste de Parada

• A função de avaliação somente deve ser aplicada

a estados que não vão sofrer mudanças bruscas

de valor •Quiescence Search

• Efeito Horizonte: jogada

catastrófica que vai

acontecer inevitavelmente

em um futuro próximo,

fora do horizonte de busca

Page 39: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Poda

• Singular Extensions • Ultrapassar a profundidade limite para ações que

são “claramente melhores”

Na prática, diminui o branching factor (poda)

• Forward Prunning • Ignorar certos movimentos possíveis

• Humanos fazem isso inconscientemente

• Não há garantias...

• Interessante para movimentos simétricos

Page 40: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Xadrez na Prática

• Suponha uma função de avaliação e um PC que

• consiga investigar 10^6 nodos/s

• 200 x 10^6 nodos por jogada (3 minutos)

• Branching Factor: 35: 35^5 = 50 x 10^6

• Minimax = 5 jogadas (jogador mediano)

• Alpha-Beta = 10 Jogadas (expert)

• Para virar um Grande-Mestre: • Função de avaliação bem ajustada

• Banco de jogadas (abertura e término)

• Supercomputador...

Page 41: Técnicas de GameAI: Uma visão geral - continuaçãomarcelohsantos.com/aulas/include/2Sem_2018/inteligenciaArtificial...Prof. Marcelo Henrique dos Santos Técnicas de GameAI: Uma

Jogos Não-Determinísticos (sorte)

• Exemplo: Gamão

• As jogadas possíveis são determinadas

depois que se jogam os dados

• Não é possível construir uma árvore como no

caso do xadrez e aplicar o minimax

• Solução: • Incluir nodos intermediários com as chances

• Algoritmo: ExpectiMinimax