inteligência artificial em jogos de java me microai engine

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

Upload: internet

Post on 22-Apr-2015

111 views

Category:

Documents


0 download

TRANSCRIPT

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?