O TuringRetro é o projeto de Aprendizado por Reforço do Turing USP que desenvolve agentes que aprendem sozinhos a jogar jogos retrô!
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
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
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.
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%
.
-
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
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.
🚧 Em Construção 🏗️