Tetris (NES) for OpenAI Gym
Project description
gym-tetris
An OpenAI Gym environment for Tetris on The Nintendo Entertainment System (NES) based on the nes-py emulator.
Installation
The preferred installation of gym-tetris
is from pip
:
pip install gym-tetris
Usage
Python
You must import gym_tetris
before trying to make an environment.
This is because gym environments are registered at runtime. By default,
gym_tetris
environments use the full NES action space of 256
discrete actions. To constrain this, gym_tetris.actions
provides
an action list called MOVEMENT
(20 discrete actions) for the
nes_py.wrappers.BinarySpaceToDiscreteSpaceEnv
wrapper. There is also
SIMPLE_MOVEMENT
with a reduced action space (6 actions). For exact details,
see gym_tetris/actions.py.
from nes_py.wrappers import BinarySpaceToDiscreteSpaceEnv
import gym_tetris
from gym_tetris.actions import MOVEMENT
env = gym_tetris.make('Tetris-v0')
env = BinarySpaceToDiscreteSpaceEnv(env, MOVEMENT)
done = True
for step in range(5000):
if done:
state = env.reset()
state, reward, done, info = env.step(env.action_space.sample())
env.render()
env.close()
NOTE: gym_tetris.make
is just an alias to gym.make
for
convenience.
NOTE: remove calls to render
in training code for a nontrivial
speedup.
Command Line
gym_tetris
features a command line interface for playing
environments using either the keyboard, or uniform random movement.
gym_tetris -e <`Tetris-v0` or `Tetris-v1`> -m <`human` or `random`>
Environments
Environment | Reward function |
---|---|
Tetris-v0 |
Instantaneous change in score |
Tetris-v1 |
The change in Number of lines cleared |
info
dictionary
The info
dictionary returned by the step
method contains the following
keys:
Key | Type | Description |
---|---|---|
current_piece |
str |
the current piece as a string |
number_of_lines |
int |
the number of cleared lines |
score |
int |
the current score of the game |
next_piece |
str |
the next piece on deck |
statistics |
dict |
statistics for each piece |
Citation
Please cite gym-tetris
if you use it in your research.
@misc{gym-tetris,
author = {Christian Kauten},
title = {{Tetris (NES)} for {OpenAI Gym}},
year = {2019},
publisher = {GitHub},
howpublished = {\url{https://github.com/Kautenja/gym-tetris}},
}
References
The following references contributed to the construction of this project.
- Tetris (NES): RAM Map. Data Crystal ROM Hacking.
- Tetris: Memory Addresses. NES Hacker.
- Applying Artificial Intelligence to Nintendo Tetris. MeatFighter.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for gym_tetris-2.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fce1c3a6e7641e57564fd01e10550eaa558946909ea7ed48c9e9fa7acd6fcd2 |
|
MD5 | 8208dfb84c7010ec7a1d61805009eb81 |
|
BLAKE2b-256 | 8c2f7212d751aab80f70ee666ce9bd2c8835a9693996bf7609f0a520ade7cc23 |