Skip to content
Rede Neural aplicada ao jogo do Dinossauro do Google Chrome!
C C++ Objective-C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore Initial commit Feb 25, 2019
Alocacoes.h Add files via upload Feb 25, 2019
Atualizar.h Add files via upload Feb 25, 2019
Colisao.h Add files via upload Feb 25, 2019
DNAs.h Add files via upload Feb 25, 2019
Desenhar.h Add files via upload Feb 25, 2019
Dinossauro Treinando.zip Add files via upload Aug 29, 2019
Dinossauro x1.zip Add files via upload Aug 29, 2019
FuncoesAuxiliares.h Add files via upload Feb 25, 2019
GeradorObstaculos.h Add files via upload Feb 25, 2019
Inicializar.h Add files via upload Feb 25, 2019
InputsRedeNeural.h Add files via upload Feb 25, 2019
Movimentar.h
README.md Update README.md Oct 15, 2019
Sprites.h Add files via upload Feb 25, 2019
Tipos.h Add files via upload Feb 25, 2019
Variaveis.h Add files via upload Feb 25, 2019
main.cpp Update main.cpp Feb 28, 2019
preview.gif Add files via upload Oct 14, 2019
redeNeural.c

README.md

Google Dino I.A.

Projeto onde várias Redes Neurais competem para aprender a jogar o jogo do dinossauro no navegador Google Chrome.

Preview-Screens

Sobre o Projeto

A ideia consiste em utilizar uma "seleção artificial" para evoluir os pesos de várias redes neurais, com o propósito de encontrar a melhor combinação e assim obter o melhor comportamento para o personagem.

O jogo foi recriado do zero(sem engines) utilizando a biblioteca gráfica Programming Interface Gaming (PIG) que por sua vez é baseada na tradicional Simple DirectMedia Layer (SDL).

A Rede Neural Artificial utilizada foi uma Perceptron Multilayer com 3 camadas!

  • Camada de Entrada com 6 sensores + 1 Viés, totalizando 7 Neurônios

  • Camada Escondida com 6 neurônios + 1 Viés, totalizando 7 Neurônios

  • Camada de Saída com 3 neurônios (Pular, Abaixar, Avião)

  • A função de ativação utilizada em todos os neurônios foi a ReLU.

  • O método de aprendizagem é comumente chamado de "Random Mutations".

  • O tamanho da população que utilizei variou entre 1000 ~ 5000 indivíduos.

  • O tempo de aprendizagem variou entre 15 ~ 60 minutos por modo de Jogo.

    Para mais informações e explicações acesse o vídeo demonstrativo.

Por quê?

Desenvolvi esse projeto por curiosidade e diversão :)

Para mais projetos como esse visite o canal.

Observações:

  • O arquivo 'redeNeural.c' contém todas as funções relativas à implementação da Rede Neural (tudo sobre a rede neural está nesse arquivo). Ele está genérico, ou seja, você pode baixar o arquivo e incluir no seu projeto e você conseguirá usar a rede neural facilmente.

    Exemplo:

    RedeNeural* Dino = RNA_CriarRedeNeural(1,2,3,4);
    

    Nesse exemplo nós estamos criando uma variável chamada 'Dino' que vai receber a Rede Neural que foi alocada dentro da função RNA_CriarRedeNeural()... Não esqueça de destruí-la após usar, utilizando a função:

    RNA_DestruirRedeNeural(Dino);
    
  • A função 'ControlarEstadoDinossauros' dentro do arquivo 'main.cpp' contém o código que faz a comunicação entre o jogo e a rede neural.

  • O resto dos arquivos são apenas os códigos da implementação do jogo.

Os arquivos "Dinossauro Treinando.zip" e "Dinossauro x1.zip" contém o executável para Windows :)

Um grande abraço!

You can’t perform that action at this time.