Giter VIP home page Giter VIP logo

geneticsonic's Introduction

Sonic Genetic Sonic

Um Algoritmo Genético para o jogo Sonic The Hedgehog 1.

Sonic

Motivação

Implementação de um algoritmo genético capaz de jogar e eventualmente, passar as fases do jogo sonic the hedgehog 1. Se trata de uma implementação baseada no conceito de algoritmos genéticos, que utiliza o conceito da evolução dos seres vivos para que eventualmente o algoritmo consiga vencer os desafios da fase e chegar até o final.

Pre-requisitos

Este programa é composto por um Dashboard, que foi implementado em Electron, e pela implementação do algoritmo genético que foi implementada em python. Com isso será necessária a instalação das seguintes dependências para execução do algoritmo:

* [Python 3](https://www.python.org/downloads/) - Implementação do algoritmo Genético
* [Node JS](https://nodejs.org/) - Implementação do Dashboard (Opcional)

* [Gens](https://segaretro.org/Gens/GS) - Emulador Utilizado para rodar o jogo
* [Alguma Hack Rom do jogo] - ¯\_(ツ)_/¯

Sonic Configurando o Emulador

Para que o algoritmo genético consiga jogar o jogo normalmente, será necessário utilizar o buffer do teclado diretamente, logo este ficará impossibilitado de ser utilizado. Também será necessário configurar as teclas do teclado na seguinte ordem: I ( Cima ), K (Baixo), L (Direita), J (Esquerda). Será também necessário criar um ponto de partida na fase em que deseja jogar. Para isso basta pressionar F5 no inicio da fase que deseja começar :) .

Sonic Rodando pela primeira vez

Ao rodar o algoritmo deve se levar em consideração que como utilizamos o buffer do teclado para injetar os comandos, é necessário que o emulador esteja SEMPRE em foco na tela. Sabendo disso, para executar tanto o dashboard, quanto o algoritmo genético basta executar o seguinte conjunto de passos no prompt de comando do windows.

npm install - Deve ser executado uma única vez para baixar as dependências do projeto
npm start - Irá inicializar o dashboard.
Abrir o Gens e carregar a rom do jogo.
python main.py - Dentro da pasta do emulador

O código irá aguardar cerca de 3 segundos para que o usuário posicione a tela do emulador em foco e o processo evolutivo irá iniciar.

eggman Contribua !

Se você gostou do projeto, faça um fork e contribua adicionando novas funcionalidades e corrigindo bugs tanto no algoritmo genético quanto no dashboard.

Assista em tempo real

Se você curtiu o projeto se inscreva nos dois canais e ajude o projeto a alcançar mais pessoas :D.

geneticsonic's People

Contributors

danilo94 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.