Skip to main content

Tetris (NES) for OpenAI Gym

Project description

gym-tetris

BuildStatus PackageVersion PythonVersion Stable Format License

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 2^(Number of lines cleared) - 1

Note on v1: The number of lines cleared is managed by the NES and fires until the PPU removes the cleared line from the screen. In other words, the reward is triggered for every frame that cleared lines are visible.

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.

  1. Tetris (NES): RAM Map. Data Crystal ROM Hacking.
  2. Tetris: Memory Addresses. NES Hacker.
  3. Applying Artificial Intelligence to Nintendo Tetris. MeatFighter.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gym_tetris-2.2.0.tar.gz (35.0 kB view details)

Uploaded Source

Built Distribution

gym_tetris-2.2.0-py2.py3-none-any.whl (33.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file gym_tetris-2.2.0.tar.gz.

File metadata

  • Download URL: gym_tetris-2.2.0.tar.gz
  • Upload date:
  • Size: 35.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.3

File hashes

Hashes for gym_tetris-2.2.0.tar.gz
Algorithm Hash digest
SHA256 9784648f12896cf7d61a739597dc9f8ac6c741de73d0a74e5c27f84275764dcd
MD5 2e402d23c8e08ca0d6a067c203951890
BLAKE2b-256 82e9f629b959d143c11267022e74aecd16af167a31d8075109752f61baa539ef

See more details on using hashes here.

File details

Details for the file gym_tetris-2.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: gym_tetris-2.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 33.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.3

File hashes

Hashes for gym_tetris-2.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 555d0e8a2845906c4538de1f49337a0560861deb29f7462524a7bd7455011ab9
MD5 deae3e673d8a8eb7ec4119eaf3274393
BLAKE2b-256 cd541a1c030167a82c4e63c27cdd595bcd912cc8520aeec33ffbe4d31743d1b2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page