Skip to content

turing-usp/TuringRetro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎮 TuringRetro

O TuringRetro é o projeto de Aprendizado por Reforço do Turing USP que desenvolve agentes que aprendem sozinhos a jogar jogos retrô!

📑 Índice

Como rodar o TuringRetro

🕹️ Rodar um agente treinado

Para rodar o TuringRetro com um agente pré-treinado, deve-se rodar o arquivo run_rllib.py, indicando:

  • o nome do jogo: game
  • o estado do jogo: state
  • o agente salvo: checkpoint
  • a quantidade de episódios: numero_de_episodios
python run_rllib.py game state -c checkpoint -e numero_de_episodios

Por exemplo, para rodar 1 episódio de um agente de Super Mario Kart treinado na pista Rainbow Road, basta rodar o seguinte comando:

python run_rllib.py SuperMarioKart-Snes rainbow_road_yoshi.state -c trained_models/SuperMarioKart-Snes/rainbow_road/model -e 1

🏋️‍♂️ Treinar um agente

Caso deseje treinar um novo agente, deve-se rodar o arquivo run_rllib.py, indicando:

  • o nome do jogo: game
  • o estado do jogo: state
  • a flag de treino: -t
python run_rllib.py game state -t 

Por exemplo, para treinar um agente de Mega Man 2 contra o boss Airman, basta rodar o seguinte comando:

python run_rllib.py MegaMan2-Nes Normal.Airman.Fight.state -t

Sobre o Projeto

O objetivo do TuringRetro é testar algoritmos de Aprendizado por Reforço Profundo em diferentes ambientes de jogos retrô, como Mega Man e Super Mario Kart. Para isso, foram treinados algoritmos tanto disponibilizados na biblioteca RLLib quanto programados pelo próprio grupo Turing USP, encontrados na pasta agents.

Ambientes

Mega Man 2



Super Mario Kart



Guia de Instalação

🐋 Docker

Este repositório é acompanhado de uma Dockerfile, que faz todo o trabalho de instalação necessário para rodar o projeto de maneira fácil e automática. Para rodar o projeto com o Docker, basta rodar o seguinte comando na raiz do repositório:

docker build -t turing-retro .

Em seguida, para rodar a imagem baixada com o conteúdo deste projeto, é necessário usar o comando:

docker run --rm -it -v $PWD:/turing-retro turing-retro

Caso esteja usando o Docker no Windows, basta trocar o comando $PWD por %cd%.

Bibliotecas necessárias

  • RLlib - Biblioteca que utilizamos para usar os algoritmos de RL

  • Gym-retro - Biblioteca que utilizamos para emular os jogos e treiná-los

  • Tensorflow - Framework para criação e utilização de redes neurais

  • você também pode usar o Pytorch, mas em nossos testes Tensorflow funciona melhor com o RLlib.

Em seu terminal com Python execute os seguintes comandos para instalar as bibliotecas necessárias:

pip install tensorflow
pip install ray[rllib]
pip install gym-retro

Instalando jogos já integrados

Alguns jogos já são integrados com o gym-retro, você pode olhar esta lista aqui

Por questões legais não podemos passar os arquivos dos jogos no repositório, porém recomendamos que você os baixe do projeto archive.

Com as ROMs dos jogos baixadas, execute o seguinte comando para passar instalar os jogos no gym-retro:

python3 -m retro.import endereco/do/diretorio/das/ROMs/

Para jogos como o Mega Man 2, criamos uma série de estados e cenários de recompensas diferentes dos já instalados no gym-retro e colocamos na pasta environments. Desta forma, para instalar este ambiente e o Super Mario Kart, basta adicionar a ROM baixada do jogo na pasta referente com o nome rom.ext em que .ext é a extensão da ROM. (As extensões podem ser encontradas nesta seção da documentação do gym-retro)

Caso queira integrar algum outro jogo não presente na lista do gym-retro, vá para próxima seção Instalando jogos não instalados.

Instalando jogos não integrados

🚧 Em Construção 🏗️

About

Repositório desenvolvido pelo Turing USP que utiliza algoritmos de aprendizado por reforço para criar inteligências artificiais que jogam jogos antigos.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published