A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aluno: Túlio Ligneul Santos DRE: 106017420 Orientador: Ricardo Marroquim Um jogo de corrida em ambiente virtual Apresentação de Projeto de Graduação.

Apresentações semelhantes


Apresentação em tema: "Aluno: Túlio Ligneul Santos DRE: 106017420 Orientador: Ricardo Marroquim Um jogo de corrida em ambiente virtual Apresentação de Projeto de Graduação."— Transcrição da apresentação:

1 Aluno: Túlio Ligneul Santos DRE: 106017420 Orientador: Ricardo Marroquim Um jogo de corrida em ambiente virtual Apresentação de Projeto de Graduação

2 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

3 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.

4 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.

5 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;

6 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].

7 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.

8 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.

9 Resultado:

10 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].

11 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.

12 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.

13 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.

14 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.

15 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

16 Rede Neural: Camada de Saída Camada de Entrada Camada de Intermediária (ou oculta)

17 Rede Neural: Função de Ativação Junção Aditiva Saída Pesos Sinápticos Modelo Neural: Camada de Saída Camada de Entrada Camada de Intermediária (ou oculta)

18 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.

19 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.

20 Função Objetivo / Função de Aptidão: Procura-se a maximizar; F (controlador) = (C 1 nCheckPointsReached - distance) + C 2 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.

21 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.

22 Representação das Características do Individuo Genoma(Genótipo): Genes dos Nós: Genes das Conexões: Nó 1 Entrada Nó 1 Entrada Nó 2 Entrada Nó 2 Entrada Nó 3 Entrada Nó 3 Entrada Nó 4 Saída Nó 4 Saída Nó 5 Oculto Nó 5 Oculto Inovação 1 Entrada: 1 Saída: 4 Peso: 0.7 Habilitado Inovação 1 Entrada: 1 Saída: 4 Peso: 0.7 Habilitado Inovação 2 Entrada: 2 Saída: 4 Peso: 0.5 Desabilitado Inovação 2 Entrada: 2 Saída: 4 Peso: 0.5 Desabilitado Inovação 3 Entrada: 3 Saída: 4 Peso: 0.5 Habilitado Inovação 3 Entrada: 3 Saída: 4 Peso: 0.5 Habilitado Inovação 4 Entrada: 2 Saída: 5 Peso: 0.2 Habilitado Inovação 4 Entrada: 2 Saída: 5 Peso: 0.2 Habilitado Inovação 5 Entrada: 5 Saída: 4 Peso: 0.4 Habilitado Inovação 5 Entrada: 5 Saída: 4 Peso: 0.4 Habilitado Inovação 6 Entrada: 1 Saída: 5 Peso: 0.6 Habilitado Inovação 6 Entrada: 1 Saída: 5 Peso: 0.6 Habilitado Inovação 11 Entrada: 4 Saída: 5 Peso: 0.6 Habilitado Inovação 11 Entrada: 4 Saída: 5 Peso: 0.6 Habilitado 1 1 2 2 3 3 4 4 5 5

23 Representação das Características do Individuo Fenótipo: 1 1 2 2 3 3 4 4 5 5

24 Operador de Crossover / Cruzamento: Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Inovação 5 Entrada: 2 Saída: 5 Habilitado Inovação 5 Entrada: 2 Saída: 5 Habilitado Pai 1 Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 3 Entrada: 5 Saída: 4 Desabilitado Inovação 3 Entrada: 5 Saída: 4 Desabilitado Inovação 4 Entrada: 1 Saída: 5 Habilitado Inovação 4 Entrada: 1 Saída: 5 Habilitado Inovação 6 Entrada: 3 Saída: 5 Habilitado Inovação 6 Entrada: 3 Saída: 5 Habilitado Pai 2 Inovação 5 Entrada: 2 Saída: 5 Habilitado Inovação 5 Entrada: 2 Saída: 5 Habilitado Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 4 Entrada: 1 Saída: 5 Habilitado Inovação 4 Entrada: 1 Saída: 5 Habilitado Inovação 6 Entrada: 3 Saída: 5 Habilitado Inovação 6 Entrada: 3 Saída: 5 Habilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Prole

25 Operador de Crossover / Cruzamento: 1 1 2 2 4 4 5 5 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5

26 1 1 2 2 4 4 5 5 1 1 2 2 4 4 5 5 6 6 Mutação por inclusão de um novo nó. Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 1 Entrada: 1 Saída: 4 Habilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Inovação 5 Entrada: 2 Saída: 5 Habilitado Inovação 5 Entrada: 2 Saída: 5 Habilitado Antes Inovação 6 Entrada: 1 Saída: 6 Habilitado Inovação 6 Entrada: 1 Saída: 6 Habilitado Inovação 1 Entrada: 1 Saída: 4 Desabilitado Inovação 1 Entrada: 1 Saída: 4 Desabilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 2 Entrada: 2 Saída: 4 Desabilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Inovação 3 Entrada: 5 Saída: 4 Habilitado Inovação 5 Entrada: 2 Saída: 5 Habilitado Inovação 5 Entrada: 2 Saída: 5 Habilitado Inovação 7 Entrada: 6 Saída: 4 Habilitado Inovação 7 Entrada: 6 Saída: 4 Habilitado Depois

27

28 Pista Tipo I

29 Pista Tipo II

30 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.

31 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.

32 [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).

33 Aluno: Túlio Ligneul Santos DRE: 106017420 Orientador: Ricardo Marroquim Um jogo de corrida em ambiente virtual Apresentação de Projeto de Graduação


Carregar ppt "Aluno: Túlio Ligneul Santos DRE: 106017420 Orientador: Ricardo Marroquim Um jogo de corrida em ambiente virtual Apresentação de Projeto de Graduação."

Apresentações semelhantes


Anúncios Google