Skip to main content

Super Mario Bros. for OpenAI Gym

Project description

gym-super-mario-bros

PackageVersion PythonVersion Stable Format License

Mario

An OpenAI Gym environment for Super Mario Bros. & Super Mario Bros. 2 (Lost Levels) on The Nintendo Entertainment System (NES) using the nes-py emulator.

Installation

The preferred installation of gym-super-mario-bros is from pip:

pip install gym-super-mario-bros

Usage

Python

You must import gym_super_mario_bros before trying to make an environment. This is because gym environments are registered at runtime. By default, gym_super_mario_bros environments use the full NES action space of 256 discrete actions. To contstrain this, gym_super_mario_bros.actions provides three actions lists (RIGHT_ONLY, SIMPLE_MOVEMENT, and COMPLEX_MOVEMENT) for the nes_py.wrappers.BinarySpaceToDiscreteSpaceEnv wrapper. See gym_super_mario_bros/actions.py for a breakdown of the legal actions in each of these three lists.

from nes_py.wrappers import BinarySpaceToDiscreteSpaceEnv
import gym_super_mario_bros
from gym_super_mario_bros.actions import SIMPLE_MOVEMENT
env = gym_super_mario_bros.make('SuperMarioBros-v0')
env = BinarySpaceToDiscreteSpaceEnv(env, SIMPLE_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_super_mario_bros.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_super_mario_bros feature a command line interface for playing environments using either the keyboard, or uniform random movement.

gym_super_mario_bros -e <the environment ID to play> -m <`human` or `random`>

NOTE: by default, -e is set to SuperMarioBros-v0 and -m is set to human.

Environments

These environments allow 3 attempts (lives) to make it through the 32 levels of the game. The environments only send reward-able game-play frames to agents; No cut-scenes, loading screens, etc. are sent from the NES emulator to an agent nor can an agent perform actions during these occurrences. If a cut-scene is not able to be skipped by hacking the NES's RAM, the environment will lock the Python process until the emulator is ready for the next action.

Environment Game Frameskip ROM Screenshot
SuperMarioBros-v0 SMB 4 standard
SuperMarioBros-v1 SMB 4 downsample
SuperMarioBros-v2 SMB 4 pixel
SuperMarioBros-v3 SMB 4 rectangle
SuperMarioBrosNoFrameskip-v0 SMB 1 standard
SuperMarioBrosNoFrameskip-v1 SMB 1 downsample
SuperMarioBrosNoFrameskip-v2 SMB 1 pixel
SuperMarioBrosNoFrameskip-v3 SMB 1 rectangle
SuperMarioBros2-v0 SMB2 4 standard
SuperMarioBros2-v1 SMB2 4 downsample
SuperMarioBros2NoFrameskip-v0 SMB2 1 standard
SuperMarioBros2NoFrameskip-v1 SMB2 1 downsample

Individual Levels

These environments allow a single attempt (life) to make it through a single level of the game.

Use the template

SuperMarioBros-<world>-<level>-v<version>

where:

  • <world> is a number in {1, 2, 3, 4, 5, 6, 7, 8} indicating the world
  • <level> is a number in {1, 2, 3, 4} indicating the level within a world
  • <version> is a number in {0, 1, 2, 3} specifying the ROM mode to use
    • 0: standard ROM
    • 1: downsampled ROM
    • 2: pixel ROM
    • 3: rectangle ROM
  • NoFrameskip can be added before the first hyphen to disable frame skip

For example, to play 4-2 on the downsampled ROM, you would use the environment id SuperMarioBros-4-2-v1. To disable frame skip you would use SuperMarioBrosNoFrameskip-4-2-v1.

Citation

Please cite gym-super-mario-bros if you use it in your research.

@misc{gym-super-mario-bros,
  author = {Christian Kauten},
  title = {{S}uper {M}ario {B}ros for {O}pen{AI} {G}ym},
  year = {2018},
  publisher = {GitHub},
  howpublished = {\url{https://github.com/Kautenja/gym-super-mario-bros}},
}

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

gym_super_mario_bros-3.0.7.tar.gz (195.2 kB view details)

Uploaded Source

Built Distribution

gym_super_mario_bros-3.0.7-py2.py3-none-any.whl (194.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file gym_super_mario_bros-3.0.7.tar.gz.

File metadata

  • Download URL: gym_super_mario_bros-3.0.7.tar.gz
  • Upload date:
  • Size: 195.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/2.7.15

File hashes

Hashes for gym_super_mario_bros-3.0.7.tar.gz
Algorithm Hash digest
SHA256 3375c58b1a4dc0cde91e96301416b5ad20624254230847008a21e14b30edad29
MD5 a4bc8b45c9499a4a08616e72ddded2e4
BLAKE2b-256 253e0a4861ed160ab0aeff48f7ce1b088375e5e980041edf0dd6fb1c80d34366

See more details on using hashes here.

File details

Details for the file gym_super_mario_bros-3.0.7-py2.py3-none-any.whl.

File metadata

  • Download URL: gym_super_mario_bros-3.0.7-py2.py3-none-any.whl
  • Upload date:
  • Size: 194.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/2.7.15

File hashes

Hashes for gym_super_mario_bros-3.0.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 05c1e6c62924f512a9d629244a8097804898ca6fd637848723b5086c8ac3c7d4
MD5 2c9cc0eaab1fcac4d38483cec5e4aba9
BLAKE2b-256 ff9b03a28fd1c868e65dcbb9da8b647fa71e9a0c3af57d5f2f79319b698680dc

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