aluno: túlio ligneul santos dre: 106017420 orientador: ricardo marroquim um jogo de corrida em...
TRANSCRIPT
Deep Island Racer
Aluno: Túlio Ligneul Santos DRE: 106017420Orientador: Ricardo Marroquim
Um jogo de corrida em ambiente virtual
Apresentação de Projeto de Graduação
Agenda
Introdução Ambiente de Desenvolvimento Movimentação dos Carros Pista Tipo I Pista Tipo II Controlador Heurístico Controlador Neural Demonstração Conclusões Trabalhos Futuros
Introdução
Motivação: Industria de jogos em crescimento:
▪ Movimenta bilhões de dólares apenas nos Estados Unidos [10].
Principais atrativos dos jogos atuais:▪ Interatividade e realismo:
▪ Importantes para a imersão do jogador. Objetivo:
Implementar uma versão preliminar jogável de um jogo de corrida e analisar seus componentes;
Constituir uma fonte de estudo para o desenvolvimento de jogos.
Introdução
Metodologia: Preocupação com a imersão do usuário:
▪ Imersão sensorial (audiovisual):▪ Áudio 3D;▪ Efeitos gráficos (e.g. Cel Shading).
▪ Imersão baseada em desafios:▪ Inteligência, ou competitividade, dos oponentes:
Busca-se um controlador capaz de, pelo menos, completar o percurso de uma volta da corrida.
▪ Oponentes humanos: Partida multijogador em rede;
▪ Realismo físico.
▪ Imersão imaginativa:▪ Gerada pela narrativa, personagens e ambientação;▪ Não faz parte do foco do projeto.
Ambiente de Desenvolvimento Game engines ( ou Motores de jogos):
Fornecem ferramentas de desenvolvimento e componentes reusáveis;
Costumam operar através de um sistema integrado de desenvolvimento (IDE) :▪ Busca permitir que se produzam jogos de um modo rápido e simplificado.
Panda3D [22]:▪ Criada pela Disney e mantida por um grupo de pesquisa da Universidade
Carnegie Mellon;▪ Gratuita;▪ Fórum ativo;▪ Bastante completa:
▪ Simulações físicas;▪ Técnicas avançadas de renderização;▪ Monitoramento do desempenho;
▪ Alto grau de customização;
Ambiente de Desenvolvimento Game engines ( ou Motores de jogos):
Open Dynamics Engine (ODE) [23]▪ Engine de física.▪ Integrada com o Panda3D.▪ Permite maior controle das rotinas de simulação.▪ Viabiliza a construção de efeitos mais complexos.
Biblioteca neat-python [11] Mesma linguagem de programação utilizada pelo Panda3D; Base para a inteligência artificial dos oponentes; Treinamento de redes neurais:
▪ Através da neuroevolução com crescimento topológico (NEAT) [2].
Movimentação dos Carros
Carrega-se o modelo 3D do veículo;
Cria-se um corpo do ODE para o modelo:▪ Utilizado na simulação física; ▪ Define-se a massa do corpo/body;
▪ Distribuída na forma de uma caixa;▪ Densidade uniforme;▪ Envolve todo o volume do modelo.
Associa-se uma geometria ao corpo: Utilizada na detecção de colisão; Forma de caixa delimitadora:
▪ Envolve todo o volume do modelo;▪ Detecção de colisões entre carros ou com o cenário.
Movimentação dos Carros Cria-se um corpo do ODE para cada roda:
Utilizada na simulação física; Define-se a massa de cada corpo/body;
▪ Distribuída em forma de cilindro;▪ Densidade uniforme;▪ Envolve todo o volume de sua respectiva roda.
Define-se uma superfície/surface para as rodas:▪ Define atributos físicos;
▪ Ex: coeficiente de atrito.
Associa-se uma geometria ao corpo de cada roda: Para detecção de colisão: Geometrias em forma de esfera:
▪ Envolve todo o volume do roda;▪ Detecção de colisões entre as rodas e o chão.
Movimentação dos Carros
Resultado:
Movimentação dos Carros
Definem-se as articulações: Ligam corpos distintos; Permitem o movimento
conjunto entre os corpos das rodas e do carro;
Permite rotação e alteração da direção das rodas;
Simulam a suspensão do carro. Retirado do Manual do ODE[17].
Movimentação dos Carros Deslocamentos:
Para frente:▪ Uma força é aplicada ao corpo do carro no sentido para frente;▪ Rodas se movem devido às articulações:
▪ Rotacionadas sobre o eixo horizontal devido ao atrito com o chão.
Para trás ou frenagem:▪ Uma velocidade angular e uma força são aplicadas às rodas no sentido para trás.▪ Rodas se movem devido ao atrito com o chão:
▪ Articulações entre as rodas e o corpo do carro fazem com que o carro se mova.
Em curva:▪ Realizado através de mudanças na direção das rodas frontais.
▪ Rotacionadas sobre o eixo vertical.
▪ Deslocamento para frente ou para trás faz com que o carro realize uma curva.
Efeitos sonoros: Aceleração do motor; Motor ligado; Freio.
Pista Tipo I
Terreno 3D gerado através um mapa de altura: Imagem em escala de cinza; Cores representam deslocamentos em altura:
▪ Preto é altura mínima e branco a máxima; Textura aplicada sobre a topologia gerada. Um Shader simula um plano de água que reflete
o cenário.
Idealmente: permite corrida em terreno altamente irregular; Não foi encontrada uma configuração de
parâmetros do ODE para suportar tal cenário; Os carros escorregavam ao tentar subir uma
pequena elevação. Terreno projetado sobre o plano XY; Menu principal do jogo:
Demonstração do efeito visual planejado.
Pista Tipo I
Delimitação da pista sobre o cenário: Textura com o desenho do formato da pista .
Teste do jogador sobre a pista: Mapeamento direto:
▪ Entre coordenadas XY de mundo e posição do pixel na imagem do mapa da pista.
Verifica a cor do pixel correspondente. Aplica-se uma penalidade por estar fora da pista
Definição do centro de checkpoints: Definidos empiricamente:
▪ Distribuídos de modo uniforme e centrados ao longo da pista.
Checkpoints: Ativado quando um jogador está a um distância
mínima de seu centro. Acompanhamento do progresso dos jogadores; Definição da colocação de cada jogador na corrida.
Pista Tipo II
Modelo 3D : Concatenação de unidades Numeração das unidades:
▪ Define a ordem de cada unidade na pista.
Centros geométricos das unidades:▪ Definem as posições dos checkpoints.
Checkpoints:▪ Planos orientados de acordo com a pista.
Controlador Heurístico
Suposições: Percurso formado pelos checkpoints é um bom caminho. Ajuste incremental da direção do jogador para seguir este
caminho resulta em um bom controlador. Jogador se move para frente:
Realizam-se pequenos ajustes na direção do movimento em cada iteração.
Em cada iteração:▪ θ > 0 :
▪ Checkpoint à direita do carro ;▪ Virar para a direita.
▪ θ < 0:▪ Checkpoint à esquerda do carro;▪ Virar para a esquerda.
▪ θ = 0:▪ Checkpoint à frente;▪ Continuar em frente.
Checkpoint
θ
Direção do movimento
Controlador Neural Rede Neural:
Camada de SaídaCamada de Entrada
Camada de Intermediária (ou oculta)
Controlador Neural Rede Neural:
iiu z
11u
2u
3u
4u
iiuf yFunção de Ativação
Junção Aditiva
Saída
Pesos Sinápticos
2
3
4
Modelo Neural:
Camada de SaídaCamada de Entrada
Camada de Intermediária (ou oculta)
Controlador Neural
8 nós de entrada, referentes à: Sensores a -90, -60, -30, 30, 60 e 90 graus; Sensor frontal especializado:
▪ Retorna o maior valor entre os obtidos por sensores a -10, 0 e 10 graus;▪ Procura detectar mais precisamente o final de uma curva.
Velocidade instantânea do jogador.
Controlador Neural
2 nós de saída, onde: Variam entre -1 e 1; Saída Y1:
▪ Andar para frente ou para trás.
Saída Y2:▪ Virar para a direita ou esquerda.
Camadas intermediárias: Determinadas pelo algoritmo de treinamento.
Controlador Neural
Função Objetivo / Função de Aptidão: Procura-se a maximizar; F (controlador) = (C1 nCheckPointsReached - distance) + C2 avgSpeed;
▪ Maior progresso geral com a menor distância, maximizando a velocidade;▪ C1 e C2 definidos empiricamente para ajustar a ordem de grandeza das variáveis.
População de 100 indivíduos; Quantidade máxima de indivíduos em qualquer momento do treinamento.
100 Iterações ou épocas do treinamento;
Para cada iteração do treinamento: Controladores guiam um jogador durante 500 iterações do Panda3D. Calculam-se as aptidões de cada controlador;
Ao final, o indivíduo com melhor aptidão é escolhido; Rede obtida é salva; Pode ser carregada durante o jogo.
Algoritmo de Treinamento Neuroevolução com crescimento topológico
NeuroEvolution of Augmenting Topologies (NEAT); Utiliza algoritmos genéticos para treinar uma rede neural. Inicia com a menor topologia possível:
▪ Entradas ligadas diretamente as saídas. Crescimento incremental da topologia da rede:
▪ Dada pela inserção ou alteração de pesos, conexões e nós das camadas intermediárias;
▪ Somente as estruturas significantes são mantidas;▪ Buscas em espaços com complexidade incremental.
Especiação:▪ Protege inovações estruturais.
Ao final de cada iteração: Escolhem-se os indivíduos mais aptos de cada espécie; Realiza-se a reprodução dos indivíduos.
Representação das Características do Individuo Genoma(Genótipo):
▪ Genes dos Nós:
▪ Genes das Conexões:
Nó 1Entrad
a
Nó 2Entrad
a
Nó 3Entrad
a
Nó 4Saída
Nó 5Oculto
Inovação 1Entrada: 1Saída: 4Peso: 0.7Habilitado
Inovação 2Entrada: 2Saída: 4Peso: 0.5Desabilitado
Inovação 3Entrada: 3Saída: 4Peso: 0.5Habilitado
Inovação 4Entrada: 2Saída: 5Peso: 0.2Habilitado
Inovação 5Entrada: 5Saída: 4Peso: 0.4Habilitado
Inovação 6Entrada: 1Saída: 5Peso: 0.6Habilitado
Inovação 11
Entrada: 4Saída: 5Peso: 0.6Habilitado
Algoritmo de Treinamento
Representação das Características do Individuo Fenótipo:
1 23
4
5
Algoritmo de Treinamento
Operador de Crossover / Cruzamento:
Algoritmo de Treinamento
Inovação 1
Entrada: 1Saída: 4Habilitado
Inovação 2
Entrada: 2Saída: 4Desabilitado
Inovação 3Entrada: 5Saída: 4Habilitado
Inovação 5
Entrada: 2Saída: 5Habilitado
Pai 1
Inovação 1
Entrada: 1Saída: 4Habilitado
Inovação 2
Entrada: 2Saída: 4Desabilitado
Inovação 3Entrada: 5Saída: 4Desabilitado
Inovação 4
Entrada: 1Saída: 5Habilitado
Inovação 6
Entrada: 3Saída: 5Habilitado
Pai 2
Inovação 5
Entrada: 2Saída: 5Habilitado
Inovação 1
Entrada: 1Saída: 4Habilitado
Inovação 2
Entrada: 2Saída: 4Desabilitado
Inovação 4
Entrada: 1Saída: 5Habilitado
Inovação 6
Entrada: 3Saída: 5Habilitado
Inovação 3Entrada: 5Saída: 4Habilitado
Prole
Operador de Crossover / Cruzamento:
1 2
4
5
1 2 3
4
5
1 2 3
4
5
Algoritmo de Treinamento
1 2
4
5
1 2
4
56
Algoritmo de Treinamento
Mutação por inclusão de um novo nó.
Inovação 1Entrada: 1Saída: 4Habilitado
Inovação 2
Entrada: 2Saída: 4Desabilitado
Inovação 3
Entrada: 5Saída: 4Habilitado
Inovação 5
Entrada: 2Saída: 5Habilitado
Antes
Inovação 6
Entrada: 1Saída: 6Habilitado
Inovação 1Entrada: 1Saída: 4Desabilitado
Inovação 2
Entrada: 2Saída: 4Desabilitado
Inovação 3
Entrada: 5Saída: 4Habilitado
Inovação 5
Entrada: 2Saída: 5Habilitado
Inovação 7
Entrada: 6Saída: 4Habilitado
Depois
Controlador Treinado
Demonstração
Pista Tipo I
Demonstração
Pista Tipo II
Conclusões
Panda3D e ODE: Forneceram meios de se efetuar desde a criação de uma janela até a realização de
simulações de física.
Neuroevolução com crescimento topológico (NEAT): Permite construir controladores de carros em ambientes virtuais. Não é necessário se preocupar com a quantidade de camadas da rede neural:
▪ Não é preciso testar diferentes configurações topológicas de modo manual. Rede de baixa complexidade:
▪ Apenas três nós intermediários entre as entradas e as saídas.
Controlador neural pouco eficiente: Guia um carro para completar pelo menos uma volta; Facilmente derrotado pelo usuário ou pelo jogador controlado pelo método heurístico; Cardamone et al. [3] construiu um controlador com bom desempenho através do
mesmo método:▪ Rede obtida pode ser aprimorada.
Passo inicial para a construção de um jogo mais complexo: Base para estudo e aprendizagem de fundamentos e questões de implementação.
Trabalhos Futuros
Melhor imersão do usuário no jogo: Buscar mais fatores de caráter sensorial, baseado em desafios, ou
imaginativo, por exemplo:▪ Ambientação de cada corrida, introduzindo outros atores no mundo, fora os jogadores e
a pista.▪ Animais, pessoas, som do vento, objetos, como construções, etc.
Novo estudo para tornar mais eficiente o controlador neural Interagir com o usuário e não somente guiar um carro.
Abordagem mais competitiva pra o controlador neural: Constituído de dois controladores, ou duas redes neurais
▪ Um para guiar o carro para completar voltas▪ Outro para interação com o jogador, impedindo ou realizando uma ultrapassagem.
Gerador de Pistas Tipo II Pistas geradas pela concatenação de diversas unidades em um mesmo
plano. Permite a criação de conteúdo personalizado.
Referências
[2] Stanley, K. O., Miikkulainen, R. “Efficient Reinforcement Learning through Evolving Neural Network Topologies”, In: Proceedings of the Genetic and Evolutionary Computation Conference (GECCO), 2002.
[3] Cardamone, L., Loiacono, Daniele, Lanzi, P. L, “Evolving Competitive Car Controllers for Racing Games with Neuroevolution”, In: Proceedings of the Genetic and Evolutionary Computation Conference (GECCO), 2009.
[4] Togelius J., Lucas, S. M., Nardi, R. de, “Computational Intelligence in Racing Games”, Studies in Computational Intelligence, v. 71/2007, pp. 39-69, 2007.
[7] Ermy, L., Mäyrä, F., “Fundamental Components of the Gameplay Experience: Analysing Immersion”. In: Proceedings of DiGRA 2005 Conference: Changing Views – Worlds in Play, 2005.
[10] Entertainment Software Association, “The Entertainment Software Association – Industry Facts”, http://www.theesa.com/facts/index.asp, 2010, (Acesso em 11/11/2010).
[11] neat-python, “neat-python - Project Hosting on Google Code”, http://code.google.com/p/neat-python/, 2010 (Acesso em 11/11/2010).
[17] Open Dynamics Engine (ODE) Community Wiki, “Manual (All) - ODE Wiki”, http://opende.sourceforge.net/wiki/index.php/Manual_(All)#Hinge-2 (Acesso em 02/12/2010).
[22] Panda3D, “Panda3D – Free 3D Game Engine”, http://www.panda3d.org/, (Acesso em 03/12/10).
[23] Open Dynamics Engine, “Open Dynamics Engine – home”, http://www.ode.org, (Acesso em 05/12/10).
Deep Island Racer
Aluno: Túlio Ligneul Santos DRE: 106017420Orientador: Ricardo Marroquim
Um jogo de corrida em ambiente virtual
Apresentação de Projeto de Graduação