inteligência artificial em jogos de java me microai engine
TRANSCRIPT
![Page 1: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/1.jpg)
Inteligência Artificial em Jogos de Java ME
MicroAI EngineMicroAI Engine
![Page 2: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/2.jpg)
JavaME MicroAI
Palestrantes
• Marivaldo Cabral – Procwork, Analista Programador Java
• Reinaldo Ramos– Instrutor Apha Channel,
• Desenvolvimento de Jogos usando Game Studio
![Page 3: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/3.jpg)
JavaME MicroAI
Conteúdo
• Conhecendo o micro ambiente JavaME;
• Arquitetura da MicroAI Engine;
• Detalhes dos principais comportamentos;
• Demonstrar sua utilização;
![Page 4: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/4.jpg)
JavaME MicroAI
Conteúdo
• Conhecendo o micro ambiente JavaME;
• Arquitetura da MicroAI Engine;
• Detalhes dos principais comportamentos;
• Demonstrar sua utilização;
![Page 5: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/5.jpg)
JavaME MicroAI
Conhecendo o micro ambiente JavaME
• Introdução de Configuração;– CDC: Configuração de Dispositivo Conectado
• 512 kilobytes para executar o Java;• 256 kilobytes para alocação em tempo de execução;
– CLDC: Configuração de Dispositivo Conectado Limitado;
• 128 kilobytes para executar o Java;• 32 kilobytes para alocação em tempo de execução;
![Page 6: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/6.jpg)
JavaME MicroAI
Conhecendo o micro ambiente JavaME
• Como lidar com a ampla variedade de aparelhos:– Por exemplo, existem aparelhos que tem mais
recurso que outro;
• Conceito de perfil– Trata desta grande variações de recursos;– Flexibilidade à medida que a tecnologia muda;
![Page 7: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/7.jpg)
JavaME MicroAI
Conhecendo o micro ambiente JavaME
• Maquinas Virtuais Java esta diretamente ligada as configurações:
– CDC - Tem as mesmas especificações para JavaSE;
– CLDC – Existe a implementação de referencia da Sun chamada de KVM:
• 40 a 80 kilobytes de memória;• 20 a 40 kilobytes para alocação;• Pode ser executada em processadores de 16 bits com 25 MHz
![Page 8: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/8.jpg)
JavaME MicroAI
Conhecendo o micro ambiente JavaME
• Arquitetura Genérica
Sistema Operacional HospedeiroSistema Operacional Hospedeiro
Máquina Virtual JavaMáquina Virtual Java
ConfiguraçãoConfiguração
PerfilPerfil
![Page 9: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/9.jpg)
JavaME MicroAI
Conteúdo
• Conhecendo o micro ambiente JavaME;
• Arquitetura da MicroAI Engine;
• Detalhes dos principais comportamentos;
• Demonstrar sua utilização;
![Page 10: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/10.jpg)
JavaME MicroAI
Arquitetura da MicroAI Engine
• Motivação – Facilitar a criação de agentes nos jogos;
– Implementar comportamentos que possam ser reutilizados, como, por exemplo:
• Busca, Perseguição, Seguir caminho, etc...
• Projeto Referência– Craing Reynolds engenheiro da SCE
• Criador do Projeto OpenSteer (opensteer.sourceforge.net)
![Page 11: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/11.jpg)
JavaME MicroAI
Arquitetura da MicroAI Engine<<interface>>
Behaviors
+seek(target : Vector2D) : Vector2D
+flee(target : Vector2D) : Vector2D
+arrive(target : Vector2D) : Vector2D
+pursuit(evader : BaseEntity) : Vector2D
+followPath(path : Path) : Vector2D
+evade(pursuer : BaseEntity) : Vector2D
<<interface>>
BaseEntity
+getPosition() : Vector2D
+getHeading() : Vector2D
+getVelocity() : Vector2D
AbstractBehaviors
-entity: BaseEnity
+AbstractBehaviors(entity : BaseEntity)
+calculate() : Vector2D
-behaviorType : int
#path : Path
+calculate() : Vector2D
SteeringBehaviors
Path
-pointList: Vector
-currentPoint: int
-looped: boolean
+Path(pointList: Vector)
![Page 12: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/12.jpg)
JavaME MicroAI
Arquitetura da MicroAI Engine
• Utilização de engines em celular– Pontos fortes
• Aumento da produtividade;• Reuso de arquitetura;
– Pontos fracos• Aumento do consumo de memória;• Incompatibilidade entre aparelhos;
![Page 13: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/13.jpg)
JavaME MicroAI
Arquitetura da MicroAI Engine
• Simulação ponto flutuante;
• Biblioteca MathFP– Representação através de inteiro;– Conversões:
• int Math.toFP(String)• int Math.toInt(int)
3 2 0 3 Ex: 32.03
Parte Inteira
Parte Flutuante
Inteiro = 4 bytes
![Page 14: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/14.jpg)
JavaME MicroAI
Conteúdo
• Conhecendo o micro ambiente JavaME;
• Arquitetura da MicroAI Engine;
• Detalhes dos principais comportamentos;
• Demonstrar sua utilização;
![Page 15: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/15.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Agente autônomo divido em três partes:– Selecionar ação;
• Definir qual comportamento;
– Direção (Steering)• Camada responsável por definir a trajetória;
– Locomoção• Tipo de agente e mecanismo de movimentação;
![Page 16: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/16.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Comportamentos implementados:– Seek;– Flee;– Arrive;– Pursuit;– Evade;– Path Following;
![Page 17: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/17.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Seek (Busca):– Base para maioria dos outros comportamentos
V
Velocidade Corrente
Velocidade Desejada
W
VD = W.pos – V.pos
VD = VD – V.vel
VD = W.pos – V.pos
VD = VD – V.vel
![Page 18: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/18.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Flee (Fugir)– O oposto da busca
VD = V.pos - W.pos
VD = VD – V.vel
VD = V.pos - W.pos
VD = VD – V.velV
Velocidade Corrente
Velocidade Desejada
W
![Page 19: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/19.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Arrive (Chegar)– Produz uma “desaceleração” sobre o alvo;
V
Velocidade Corrente
Velocidade Desejada
W
Enum{slow=3, normal=2, fast=1}Alvo = W.pos – V.posDist = Alvo.Length();
Se Dist > 0
Vel = Dist / (Enum * 0.3) Vel = min(Vel, V.maxVel) VD = Alvo * Vel / Dist VD = VD – V.velSenão VD = 0
Enum{slow=3, normal=2, fast=1}Alvo = W.pos – V.posDist = Alvo.Length();
Se Dist > 0
Vel = Dist / (Enum * 0.3) Vel = min(Vel, V.maxVel) VD = Alvo * Vel / Dist VD = VD – V.velSenão VD = 0
![Page 20: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/20.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Pursuit (Perseguição)– Usado para interceptar o alvo;
V
Ponto de interceptação
W
Alvo
Velocidade
Direção
Desejada
![Page 21: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/21.jpg)
JavaME MicroAI
• Pursuit (Perseguição) continuação
• Interceptação:– Proporcional a distância entre agente e o alvo;– Inversamente proporcional a soma das velocidades;
Alvo = W.pos – V.posPosRelativa = dot(V.Face, W.Face)
Se PosRelativa < -0.95 //(20 graus) VD = Seek(W)Senão Interceptação = Len(Alvo) / (V.MaxVel + W.vel) VD = Seek(W.pos + W.vel * Interceptação)
Alvo = W.pos – V.posPosRelativa = dot(V.Face, W.Face)
Se PosRelativa < -0.95 //(20 graus) VD = Seek(W)Senão Interceptação = Len(Alvo) / (V.MaxVel + W.vel) VD = Seek(W.pos + W.vel * Interceptação)
Detalhes dos principais comportamentos
![Page 22: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/22.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Evade– Fuga com o estimativa de posição futura;
Alvo = W.pos – V.posPosicaoFutura = Len(Alvo) / (V.MaxVel + W.vel)VD = Flee(W.pos + W.vel * PosicaoFutura )
Alvo = W.pos – V.posPosicaoFutura = Len(Alvo) / (V.MaxVel + W.vel)VD = Flee(W.pos + W.vel * PosicaoFutura )
![Page 23: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/23.jpg)
JavaME MicroAIDetalhes dos principais comportamentos
• Path Following– Usado para seguir um caminho pré-definido;
Inicio Fim Inicio
![Page 24: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/24.jpg)
JavaME MicroAI
Detalhes dos principais comportamentos
• Path Following (continuação)
Se Distancia(Path.pontoAtual – PosicaoAgente) < 0 SetaProximoPonto()
Se Path.loopFechado VD = Seek(Path.pontoAtual)Senão VD = Arrive(Path.pontoAtual)
Se Distancia(Path.pontoAtual – PosicaoAgente) < 0 SetaProximoPonto()
Se Path.loopFechado VD = Seek(Path.pontoAtual)Senão VD = Arrive(Path.pontoAtual)
![Page 25: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/25.jpg)
JavaME MicroAI
Conteúdo
• Conhecendo o micro ambiente JavaME;
• Arquitetura da MicroAI Engine;
• Detalhes dos principais comportamentos;
• Demonstrar sua utilização;
![Page 26: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/26.jpg)
JavaME MicroAI
Demonstrar sua utilização• Atualização Física
– Usando Leis de Newton:• f = m*a;
– f - será obtido através dos comportamentos
– Atualização da velocidade:• v = at + u;
– u - representa uma constante para velocidade em t = 0
– Atualização da posição x = v *t
![Page 27: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/27.jpg)
JavaME MicroAI
Demonstrar sua utilização
• Rotação
– a = b.x – a.x – b = b.y – a.y– ө = atan(a / b)
• O ângulo 0 e 90 graus
b
aө
![Page 28: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/28.jpg)
JavaME MicroAI
Demonstrar sua utilização
• Rotação continuação– índice = ө / largura do frame
0
15
1 2 3 4 5 6 7
8 9 10 11 12 13 14
![Page 29: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/29.jpg)
JavaME MicroAI
Demonstração
![Page 30: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/30.jpg)
JavaME MicroAI
Referências
• Programming Game AI by Example– Mat Buckland
• OpenSteer - opensteer.sourceforge.net– Craing Reynolds
![Page 31: Inteligência Artificial em Jogos de Java ME MicroAI Engine](https://reader035.vdocuments.site/reader035/viewer/2022062418/552fc170497959413d8eda5d/html5/thumbnails/31.jpg)
JavaME MicroAI
Perguntas?
INF 1771 – Inteligência Artificial Edirlei Soares de Lima Aula 19 – Inteligência Artificial em Jogos
INF 1771 – Inteligência Artificial Aula 24 – Inteligência Artificial em Jogos Edirlei Soares de Lima
INF 1771 – Inteligência Artificial Edirlei Soares de Lima Aula 20 – Inteligência Artificial em Jogos