Inteligência Artificial em Jogos de Java ME MicroAI Engine.

31
Inteligência Artificial em Jogos de Java ME MicroAI Engine MicroAI Engine

Transcript of Inteligência Artificial em Jogos de Java ME MicroAI Engine.

Page 1: Inteligência Artificial em Jogos de Java ME MicroAI Engine.

Inteligência Artificial em Jogos de Java ME

MicroAI EngineMicroAI Engine

Page 2: Inteligência Artificial em Jogos de Java ME MicroAI Engine.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

Page 28: Inteligência Artificial em Jogos de Java ME MicroAI Engine.

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.

JavaME MicroAI

Demonstração

Page 30: Inteligência Artificial em Jogos de Java ME MicroAI Engine.

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.

JavaME MicroAI

Perguntas?