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.JoypadSpace 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 JoypadSpace
import gym_tetris
from gym_tetris.actions import MOVEMENT
env = gym_tetris.make('TetrisA-v0')
env = JoypadSpace(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 <environment ID> -m <`human` or `random`>
Environments
There are two game modes define in NES Tetris, namely, A-type and B-type. A-type is the standard endurance Tetris game and B-type is an arcade style mode where the agent must clear a certain number of lines to win. There are three potential reward streams: (1) the change in score, (2) the change in number of lines cleared, and (3) a penalty for an increase in board height. The table below defines the available environments in terms of the game mode (i.e., A-type or B-type) and the rewards applied.
| Environment | Game Mode | reward score | reward lines | penalize height |
|---|---|---|---|---|
TetrisA-v0 |
A-type | ✅ | ✕ | ✕ |
TetrisA-v1 |
A-type | ✕ | ✅ | ✕ |
TetrisA-v2 |
A-type | ✅ | ✕ | ✅ |
TetrisA-v3 |
A-type | ✕ | ✅ | ✅ |
TetrisB-v0 |
B-type | ✅ | ✕ | ✕ |
TetrisB-v1 |
B-type | ✕ | ✅ | ✕ |
TetrisB-v2 |
B-type | ✅ | ✕ | ✅ |
TetrisB-v3 |
B-type | ✕ | ✅ | ✅ |
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 in [0, 999] |
score |
int |
the current score of the game in [0, 999999] |
next_piece |
str |
the next piece on deck as a string |
statistics |
dict |
the number of tetriminos dispatched (by type) |
board_height |
int |
the height of the board in [0, 20] |
Citation
Please cite gym-tetris if you use it in your research.
@misc{gym-tetris,
author = {Christian Kauten},
howpublished = {GitHub},
title = {{Tetris (NES)} for {OpenAI Gym}},
URL = {https://github.com/Kautenja/gym-tetris},
year = {2019},
}
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gym_tetris-3.0.4.tar.gz.
File metadata
- Download URL: gym_tetris-3.0.4.tar.gz
- Upload date:
- Size: 36.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
993bfd335b1fea6153b99d599899470a218197ec0ecbe3f6b19383c5c03825de
|
|
| MD5 |
f0af315361019cc9c13c2cf6dfed5c93
|
|
| BLAKE2b-256 |
3b54dcd9f9b64349dbedd43a464b718c819f281d230e0229279e09ee87a41ac3
|
File details
Details for the file gym_tetris-3.0.4-py3-none-any.whl.
File metadata
- Download URL: gym_tetris-3.0.4-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a0290a78e685fb055288335c05b825bc06a358db33957d9378dda43d04da2d9
|
|
| MD5 |
4be3b233dc51040cb046c3a501aa03f6
|
|
| BLAKE2b-256 |
75378bce3a7f74e7059c03e8c41ba7d47b5046fa86efbc99132ac671d20f215c
|