Buscar

IA e Jogos - Movimentação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 82 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 82 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 82 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

IA e Jogos - Jamisson Freitas
IA e Jogos
Jamisson Freitas (James)
profjamissonfreitas@gmail.com
1
mailto:profjamissonfreitas@gmail.com
IA e Jogos - Jamisson Freitas
Apresentação
● Jamisson Freitas (James)
● Doutorando em Ciência da Computação 
(Cin-UFPE)
● Data Science Manager na Passei Direto
● Co-fundador da WeUp.ai
● Professor e Tutor em cursos de Graduação 
e Pós-Graduação
2
IA e Jogos - Jamisson Freitas
Conteúdo
● Game AI
● Inteligência artificial e Jogos Digitais
● Agentes Inteligentes
● Aplicações
● Técnicas
● Motores de Jogos
● Projeto
3
IA e Jogos - Jamisson Freitas
Referências
4
IA e Jogos - Jamisson Freitas
Técnicas
Movimentação
Pathfinding
Tomada de Decisão
Tática e Estratégia
5
IA e Jogos - Jamisson Freitas
Visão geral
● Técnicas de IA exploradas pela indústria de jogos são mais 
simples quando comparadas com as técnicas exploradas 
na academia e utilizadas em aplicações industriais. 
● Uma das causas desse fato é falta de tempo 
disponibilizado ao desenvolvimento de um jogo digital.
6
IA e Jogos - Jamisson Freitas
Visão geral
● A indústria de jogos digitais passou a pesquisar técnicas 
não só em seus ambientes gráficos, mas também, no 
desempenho, nos movimentos e estratégias calculadas 
pelos personagens.
7
IA e Jogos - Jamisson Freitas
Movimentação
8
IA e Jogos - Jamisson Freitas
Movimentação
Algoritmos básicos de movimento
Movimento em 2D e 3D
Movimento cinemático
Comportamentos de direção
9
IA e Jogos - Jamisson Freitas
Movimentação - Visão Geral
● Um dos requisitos mais fundamentais da IA é mover os 
personagens no jogo de maneira sensata.
● Mesmo os primeiros personagens controlados por IA (os 
fantasmas em Pac-Man ou o adversário em algumas 
variantes de Pong) tinham algoritmos de movimento que 
não eram muito distantes dos jogos na prateleira hoje. 
10
IA e Jogos - Jamisson Freitas
Movimentação - Visão Geral
● O movimento forma o nível mais baixo de técnicas de IA:
11
IA e Jogos - Jamisson Freitas
Movimentação - Visão Geral
● Existem diferentes algoritmos de movimento controlados 
por IA, desde o nível simples do Pac-Man até os 
complexos comportamentos de direção usados para 
dirigir um carro num simulador de corrida.
12
IA e Jogos - Jamisson Freitas
Movimentação - Estrutura do algoritmo
13
IA e Jogos - Jamisson Freitas
Movimentação
● Alguns algoritmos de movimento requerem poucos 
inputs. 
○ Ex. posição do personagem e a posição de um inimigo para 
perseguir, por exemplo. 
● Outros exigem muita interação com o jogo:
○ Um algoritmo de movimento que evita colisões nas paredes, precisa 
ter acesso à geometria da parede para verificar possíveis colisões.
14
IA e Jogos - Jamisson Freitas
Movimentação
● A saída pode variar também. Na maioria dos jogos, é 
normal que os algoritmos de movimento gerem uma 
velocidade desejada.
○ Ex: Um personagem pode ver seu inimigo 
imediatamente a oeste dele e responder que seu 
movimento deve estar a oeste a toda velocidade.
15
IA e Jogos - Jamisson Freitas
Movimentação
● Em muitos jogos antigos → duas velocidades: 
estacionárias e em execução
○ Saída simples: uma direção para se mover. 
(movimento cinemático - não explica como os 
personagens aceleram e diminuem a velocidade).
16
IA e Jogos - Jamisson Freitas
Movimentação
● Algoritmo de Craig Reynolds → movimento dinâmico
○ leva em conta o movimento atual do personagem.
https://www.youtube.com/watch?v=86iQiV3-3IA
17
https://www.youtube.com/watch?v=86iQiV3-3IA
IA e Jogos - Jamisson Freitas
Movimentação
18
http://www.youtube.com/watch?v=86iQiV3-3IA
IA e Jogos - Jamisson Freitas
Movimentação - 2 dimensões
● Muitos jogos têm AI que funciona em duas dimensões. 
● Embora os jogos raramente sejam desenhados em duas 
dimensões, seus personagens geralmente estão sob a 
influência da gravidade, colando-os no chão e 
restringindo seu movimento a duas dimensões.
19
IA e Jogos - Jamisson Freitas
Movimentação - 2 dimensões
● Maioria dos algoritmos clássicos de IA para movimento 
são definidos para 2 dimensões.
● Antes de examinarmos os algoritmos, precisamos 
rapidamente cobrir os dados necessários para lidar com 
matemática e movimentos bidimensionais (2D).
20
IA e Jogos - Jamisson Freitas
Movimentação - Personagens modelados como um ponto
● Um personagem geralmente consiste de um modelo 
tridimensional (3D) que ocupa espaço no mundo do jogo, 
apesar disso, muitos algoritmos de movimento assumem 
que o personagem pode ser tratado como um único 
ponto.
21
IA e Jogos - Jamisson Freitas
Movimentação - Personagens modelados como um ponto
● A geometria do modelo 
tem uma base ortonormal 
em 3D contendo três 
eixos: x, y e z.
● É mais comum que o eixo 
y esteja na direção oposta 
da gravidade (ou seja, 
“para cima”) e os eixos x e 
z no plano do solo.
22
IA e Jogos - Jamisson Freitas
Movimentação - Personagens modelados como um ponto
23
IA e Jogos - Jamisson Freitas
Movimentação - Geometria 2 ½ D
● Matemática da geometria 3D é complicada;
● O movimento linear em três dimensões é bastante 
simples e uma extensão natural do movimento 2D;
● Representar uma orientação tem consequências 
complicadas que é melhor evitar (neste curso);
● Híbrido entre o 2D e o 3D → 2 ½ D
24
IA e Jogos - Jamisson Freitas
Movimentação - Geometria 2 ½ D
● Nós lidamos com uma posição 3D completa, mas 
representamos a orientação como um único valor, como 
se estivéssemos em duas dimensões. 
● Isso é bastante lógico quando você considera que a 
maioria dos jogos envolve personagens sob a influência da 
gravidade.
25
IA e Jogos - Jamisson Freitas
Movimentação - Geometria 2½ D
● Devido a gravidade o personagem é puxado para o chão 
→ opera como se estivesse em 2D, embora saltar, soltar 
saliências e usar elevadores envolva movimentos 3D;
26
IA e Jogos - Jamisson Freitas
Movimentação - Geometria 2½ D
● Se um personagem permanece em pé, então o único 
componente de sua orientação com que precisamos nos 
preocupar é a rotação na direção para cima.
● Trabalhando em 2½ D → a simplificação na matemática 
compensa a menor flexibilidade na maioria dos casos.
27
IA e Jogos - Jamisson Freitas
Movimentação - Geometria 2½ D
● Duas dimensões → precisamos apenas de um ângulo para 
representar a orientação (representação escalar).
● O ângulo é medido a partir do eixo z positivo, em uma 
direção à direita em relação ao eixo y positivo (sentido 
anti-horário ao olhar para baixo no plano x – z acima).
28
IA e Jogos - Jamisson Freitas
Movimentação - Geometria 2½ D
29
IA e Jogos - Jamisson Freitas
Movimentação - Geometria 2½ D
● Representação vetorial
30
IA e Jogos - Jamisson Freitas
Movimentação - Cinemática
● Cinemática (do grego movimento) é o ramo da Física que 
se ocupa da descrição dos movimentos dos corpos.
● Por norma caracteriza-se por partículas ou pontos 
materiais, corpos em que todos os seus pontos se movem 
de maneira igual e em que são desprezadas suas 
dimensões em relação ao problema e à resistência.
31
IA e Jogos - Jamisson Freitas
Movimentação - Cinemática
● Precisamos fazer com que o movimento dos personagens 
pareça mais realista possível;
● Podemos criar algoritmos de movimento para calcular 
uma velocidade-alvo com base apenas na posição e 
orientação, permitindo que a velocidade de saída mude 
instantaneamente.
32
IA e Jogos - Jamisson Freitas
Movimentação - Cinemática
● Algoritmos para suavizar → alterar gradualmente a 
velocidade ao longo do tempo.
33
IA e Jogos - Jamisson Freitas
Movimentação - Cinemática
● Os personagens precisam manter o controle de ambas as 
velocidades lineares e angulares;
○ Rotação → velocidade angular;
○ Velocidade linear → velocidade. 
34
IA e Jogos - Jamisson Freitas
Movimentação - Cinemática
● Comportamentos de direção operam com esses dados 
cinemáticos. 
● Eles retornam acelerações que alteram as velocidades de 
um personagem para movê-las pelo nível. 
●Sua saída é um conjunto de acelerações:
35
IA e Jogos - Jamisson Freitas
Movimentação - Direção do movimento
● Suavizar a mudança de direção
36
IA e Jogos - Jamisson Freitas
Movimentação - Atualizando direção e movimento
● Algoritmo 
simples
37
IA e Jogos - Jamisson Freitas
Movimentação - Taxas de quadros variáveis
38
IA e Jogos - Jamisson Freitas
Movimentação - Taxas de quadros variáveis
● Os jogos mais antigos costumavam usar velocidades por 
quadro, mas essa prática desapareceu em grande parte.
● Atualmente, os jogos (em maioria) são escritos para 
suportar taxas de quadros variáveis, portanto, um
o tempo de atualização é usado.
39
IA e Jogos - Jamisson Freitas
Movimentação - Taxas de quadros variáveis
Testando velocidade dos frames:
https://frames-per-second.appspot.com/
Apesar do padrão ser 24 fps, YouTube libera vídeos de 
jogos com 60 fps:
https://bit.ly/2TG8A7E
40
https://frames-per-second.appspot.com/
https://bit.ly/2TG8A7E
IA e Jogos - Jamisson Freitas
Movimentação - Forças e atuação
● No mundo real, não podemos simplesmente aplicar uma 
aceleração a um objeto e movê-lo. 
● Nós aplicamos forças, e estas causam uma mudança na 
energia cinética do objeto. 
41
IA e Jogos - Jamisson Freitas
Movimentação - Forças e atuação
● Eles vão acelerar, é claro, mas a aceleração dependerá da 
inércia do objeto. A inércia age para resistir à aceleração; 
quanto maior a inércia, menos aceleração para a mesma 
força.
42
IA e Jogos - Jamisson Freitas
Movimentação - Forças e atuação
● Num Jogo, a massa do objeto é a inércia linear e o 
momento de inércia (ou tensor de inércia em três 
dimensões) é aceleração angular. 
● A IA controla o movimento de um personagem aplicando 
forças nele. Essas forças representam as maneiras pelas 
quais o personagem pode afetar seu movimento.
43
IA e Jogos - Jamisson Freitas
Movimentação - Seek e Flee
● Seek (procurar, buscar) tenta corresponder a posição do 
personagem com a posição do alvo. 
● Flee (caminho de fuga) Flee é o oposto de Seek. Tentar 
chegar o mais longe possível do alvo.
44
IA e Jogos - Jamisson Freitas
Movimentação - Seek
● Exatamente como no algoritmo de busca cinemática, ele 
encontra a direção para o alvo e se dirige a ele o mais 
rápido possível.
● Como a saída da direção é agora uma aceleração, ela 
acelerará o máximo possível.
45
IA e Jogos - Jamisson Freitas
Movimentação - Seek
● A maioria dos personagens tem uma velocidade máxima 
que eles podem se deslocar; eles não podem acelerar 
indefinidamente. 
● O máximo pode ser explícito, mantido em uma variável 
ou constante.
46
IA e Jogos - Jamisson Freitas
Movimentação - Seek
47
IA e Jogos - Jamisson Freitas
Movimentação - Seek (pseudo-código)
48
IA e Jogos - Jamisson Freitas
Movimentação - Seek (pseudo-código)
49
IA e Jogos - Jamisson Freitas
Movimentação - Seek
50
IA e Jogos - Jamisson Freitas
Movimentação - Flee
● Fazer um personagem mover-se o mais longe possível do 
alvo. 
● Assim como para a fuga cinemática, basta inverter a 
ordem dos termos na segunda linha da função:
51
IA e Jogos - Jamisson Freitas
Movimentação - Laboratório
https://editor.p5js.org/simontiger/sketches/B1GtGlDGb
52
https://editor.p5js.org/simontiger/sketches/B1GtGlDGb
IA e Jogos - Jamisson Freitas
Movimentação - Arrive (chegada, aproximação)
● Em seek (busca) o personagem sempre se moverá em 
direção ao seu objetivo com a maior aceleração possível.
● Para um alvo constantemente em movimento e o 
personagem precisar persegui-lo a toda velocidade: 
○ Se o personagem chegar ao alvo, ele irá ultrapassar, 
reverter e oscilar pelo alvo, ou será mais provável 
orbitar em volta do alvo sem se aproximar.
53
IA e Jogos - Jamisson Freitas
Movimentação - Arrive (chegada, aproximação)
● Se o personagem deve chegar ao alvo, ele precisa 
desacelerar para que chegue exatamente no local correto
● No arrive o personagem vai direto ao seu alvo, enquanto 
no seek o personagem órbita um pouco e acaba oscilando.
● Naturalmente, o comportamento dinâmico do Arrive é 
um pouco mais complexo que a versão cinemática.
54
IA e Jogos - Jamisson Freitas
Movimentação - Arrive
Alvo
Fixo
55
IA e Jogos - Jamisson Freitas
Movimentação - Arrive (chegada, aproximação)
● A oscilação não é tão ruim para a busca dinâmica quanto 
na busca cinemática: o personagem não pode mudar de 
direção imediatamente.
56
IA e Jogos - Jamisson Freitas
Movimentação - Arrive (Pseudo-código)
57
IA e Jogos - Jamisson Freitas
Movimentação - Arrive (Pseudo-código)
58
IA e Jogos - Jamisson Freitas
Movimentação - Arrive (Pseudo-código)
59
IA e Jogos - Jamisson Freitas
Movimentação - Pursue e Evade
● Qual(is) problema(s) podemos identificar se movemos 
nosso personagens apenas com base na posição?
60
IA e Jogos - Jamisson Freitas
Movimentação - Perseguição 
● Se estamos perseguindo um alvo em movimento, então 
um movimento constantemente na direção do alvo não 
será suficiente.
● No momento em que chegarmos onde está agora, ele já 
terá se deslocado.
61
IA e Jogos - Jamisson Freitas
Movimentação - Perseguição 
● Isso não é um grande problema quando o alvo está 
próximo e estamos reconsiderando a localização dele a 
cada frame.
62
IA e Jogos - Jamisson Freitas
Movimentação - Perseguição 
63
IA e Jogos - Jamisson Freitas
Movimentação - Perseguição 
64
IA e Jogos - Jamisson Freitas
Movimentação - Perseguição - (Pseudo-código) 
65
IA e Jogos - Jamisson Freitas
Movimentação - Perseguição - (Pseudo-código) 
66
IA e Jogos - Jamisson Freitas
Movimentação - Face
● O comportamento do rosto faz um personagem olhar 
para o alvo. 
● Delega ao comportamento de alinhamento para executar 
a rotação, mas calcula a orientação do alvo primeiro.
● A orientação do alvo é gerada a partir da posição relativa 
do alvo para o personagem. 
67
IA e Jogos - Jamisson Freitas
Movimentação - Path Following
● Seguindo um caminho é um comportamento de direção 
que considera um caminho inteiro como um destino. 
● Um personagem com este comportamento deve se mover 
ao longo do caminho em uma direção.
● Calcula a posição de um alvo com base na localização 
atual do personagem e na forma do caminho.
68
IA e Jogos - Jamisson Freitas
Movimentação - Path Following
● Em seguida, entrega seu alvo para o algoritmo de Seek. 
● Não há necessidade de usar o algoritmo do Arrive, porque 
o alvo deve estar sempre se movendo ao longo do 
caminho.
69
IA e Jogos - Jamisson Freitas
Movimentação - Path Following
● A posição final é calculada em duas etapas:
○ 1. A posição atual do personagem é mapeada para o 
ponto mais próximo ao longo do caminho.
○ 2. É selecionado um alvo que está mais adiante no 
caminho do que o ponto mapeado por uma distância 
fixa.
70
IA e Jogos - Jamisson Freitas
Movimentação - Path Following
● Essa abordagem às vezes é chamada de "perseguir o 
coelho", após a maneira como os cães caçam um coelho 
de pano na trilha.
71
IA e Jogos - Jamisson Freitas
Movimentação - Path Following
72
IA e Jogos - Jamisson Freitas
Movimentação - Prevenção de colisões
● Algumas áreas é comum ter um grande número de 
personagens movendo-se pelo mesmo espaço. 
● Desafio: trajetórias que se cruzam e precisam evitar 
colisões constantes com outros personagens em 
movimento. O que pode-se fazer?
73
IA e Jogos - Jamisson Freitas
Movimentação - Prevenção de colisões
● Solução simples: usar uma variação do comportamento de 
evade ou separação, que só é acionado se o alvo estiver 
dentro de um cone na frente do personagem.
74
IA e Jogos - Jamisson Freitas
Movimentação - Prevenção de colisões
75
IA e Jogos - Jamisson Freitas
Movimentação - Prevenção de colisões
● Se houver vários personagens do jogo no cone é 
necessário evitar todos eles;
● Eficiente para poucos personagens;
● O personagem não leva em conta se vai realmente colidir, 
mas ao invés disso, tem uma reação de “pânico” atémesmo se aproximando.
76
IA e Jogos - Jamisson Freitas
Movimentação - Prevenção de colisões
77
IA e Jogos - Jamisson Freitas
Movimentação - Prevenção de colisões
78
IA e Jogos - Jamisson Freitas
Movimentação
79
IA e Jogos - Jamisson Freitas
Referências
80
IA e Jogos - Jamisson Freitas
Referências
● Programming Game AI by Example. Mat Buckland. 
● Artificial Intelligence for Games. Ian Millington, John 
Funge.
81
IA e Jogos - Jamisson Freitas
Links
https://meiobit.com/310886/deepmind-google-inteligencia-artificial-jogos-atari/
https://www.maxwell.vrac.puc-rio.br/7861/7861_3.PDF
https://www.red3d.com/cwr/boids/
https://www.youtube.com/channel/UCC0RqWklkXJwAd_HIsxRZDg
https://github.com/idmillington/aicore
82
https://meiobit.com/310886/deepmind-google-inteligencia-artificial-jogos-atari/
https://www.maxwell.vrac.puc-rio.br/7861/7861_3.PDF
https://www.red3d.com/cwr/boids/
https://www.youtube.com/channel/UCC0RqWklkXJwAd_HIsxRZDg
https://github.com/idmillington/aicore

Outros materiais