from __future__ import annotations
"""Enumerations that describe the Gym GUI domain model."""
from enum import Enum, auto
from typing import Iterable
class StrEnum(str, Enum):
"""Minimal stand-in for :class:`enum.StrEnum` (Python 3.11+)."""
def __new__(cls, value: str) -> "StrEnum":
obj = str.__new__(cls, value)
obj._value_ = value
return obj
class EnvironmentFamily(StrEnum):
"""High-level groupings that organise Gymnasium environments."""
TOY_TEXT = "toy_text"
BOX2D = "box2d"
CLASSIC_CONTROL = "classic_control"
ATARI = "atari"
ALE = "ale"
MUJOCO = "mujoco"
MINIGRID = "minigrid"
BABYAI = "babyai" # BabyAI language-grounded instruction following (built on MiniGrid)
VIZDOOM = "vizdoom"
MINIHACK = "minihack" # MiniHack sandbox environments (built on NLE)
NETHACK = "nethack" # Full NetHack game (via NLE)
CRAFTER = "crafter" # Crafter open world survival benchmark
PROCGEN = "procgen" # Procgen procedural benchmark (16 environments)
JUMANJI = "jumanji" # Jumanji JAX-based logic puzzle environments
TEXTWORLD = "textworld" # TextWorld text-based game environment (Microsoft Research)
BABAISAI = "babaisai" # BabaIsAI rule manipulation puzzle benchmark (ICML 2024)
PYBULLET_DRONES = "pybullet_drones" # PyBullet Drones quadcopter environments (University of Toronto)
PETTINGZOO = "pettingzoo"
PETTINGZOO_CLASSIC = "pettingzoo_classic" # PettingZoo Classic: turn-based games (Chess, Go, Connect Four, etc.)
OPEN_SPIEL = "open_spiel" # OpenSpiel + custom draughts variants (American, Russian, International)
MOSAIC_MULTIGRID = "mosaic_multigrid" # mosaic_multigrid (PyPI): Competitive team-based (Soccer, Collect) - view_size=3
INI_MULTIGRID = "ini_multigrid" # INI multigrid: Cooperative exploration (Empty, BlockedUnlockPickup, etc.) - view_size=7
MELTINGPOT = "meltingpot" # Melting Pot multi-agent social scenarios (Google DeepMind) via Shimmy
OVERCOOKED = "overcooked" # Overcooked-AI cooperative cooking (2 agents, human-AI coordination)
SMAC = "smac" # SMAC v1: StarCraft Multi-Agent Challenge - hand-designed cooperative micromanagement maps
SMACV2 = "smacv2" # SMACv2: StarCraft Multi-Agent Challenge v2 - procedural unit generation
RWARE = "rware" # Robotic Warehouse: cooperative multi-agent shelf delivery
OTHER = "other" # Fallback for unknown environments (not displayed in UI)
class GameId(StrEnum):
"""Canonical Gymnasium environment identifiers supported by the GUI."""
FROZEN_LAKE = "FrozenLake-v1"
FROZEN_LAKE_V2 = "FrozenLake-v2"
CLIFF_WALKING = "CliffWalking-v0" # Gymnasium 1.0.0 only has v0
TAXI = "Taxi-v3"
BLACKJACK = "Blackjack-v1"
LUNAR_LANDER = "LunarLander-v3"
CAR_RACING = "CarRacing-v3"
BIPEDAL_WALKER = "BipedalWalker-v3"
CART_POLE = "CartPole-v1"
ACROBOT = "Acrobot-v1"
MOUNTAIN_CAR = "MountainCar-v0"
PONG_NO_FRAMESKIP = "PongNoFrameskip-v4"
BREAKOUT_NO_FRAMESKIP = "BreakoutNoFrameskip-v4"
ADVENTURE_V4 = "Adventure-v4"
ALE_ADVENTURE_V5 = "ALE/Adventure-v5"
AIR_RAID_V4 = "AirRaid-v4"
ALE_AIR_RAID_V5 = "ALE/AirRaid-v5"
ASSAULT_V4 = "Assault-v4"
ALE_ASSAULT_V5 = "ALE/Assault-v5"
# ─────────────────────────────────────────────────────────────────────────
# ALE (Arcade Learning Environment) - Complete 128 Game Library
# Using ALE/{GameName}-v5 format (recommended for new projects)
# ─────────────────────────────────────────────────────────────────────────
ALE_ALIEN_V5 = "ALE/Alien-v5"
ALE_AMIDAR_V5 = "ALE/Amidar-v5"
ALE_ASTERIX_V5 = "ALE/Asterix-v5"
ALE_ASTEROIDS_V5 = "ALE/Asteroids-v5"
ALE_ATLANTIS_V5 = "ALE/Atlantis-v5"
ALE_ATLANTIS2_V5 = "ALE/Atlantis2-v5"
ALE_BACKGAMMON_V5 = "ALE/Backgammon-v5"
ALE_BANK_HEIST_V5 = "ALE/BankHeist-v5"
ALE_BASIC_MATH_V5 = "ALE/BasicMath-v5"
ALE_BATTLE_ZONE_V5 = "ALE/BattleZone-v5"
ALE_BEAM_RIDER_V5 = "ALE/BeamRider-v5"
ALE_BERZERK_V5 = "ALE/Berzerk-v5"
ALE_BLACKJACK_V5 = "ALE/Blackjack-v5"
ALE_BOWLING_V5 = "ALE/Bowling-v5"
ALE_BOXING_V5 = "ALE/Boxing-v5"
ALE_BREAKOUT_V5 = "ALE/Breakout-v5"
ALE_CARNIVAL_V5 = "ALE/Carnival-v5"
ALE_CASINO_V5 = "ALE/Casino-v5"
ALE_CENTIPEDE_V5 = "ALE/Centipede-v5"
ALE_CHOPPER_COMMAND_V5 = "ALE/ChopperCommand-v5"
ALE_CRAZY_CLIMBER_V5 = "ALE/CrazyClimber-v5"
ALE_CROSSBOW_V5 = "ALE/Crossbow-v5"
ALE_DARKCHAMBERS_V5 = "ALE/Darkchambers-v5"
ALE_DEFENDER_V5 = "ALE/Defender-v5"
ALE_DEMON_ATTACK_V5 = "ALE/DemonAttack-v5"
ALE_DONKEY_KONG_V5 = "ALE/DonkeyKong-v5"
ALE_DOUBLE_DUNK_V5 = "ALE/DoubleDunk-v5"
ALE_EARTHWORLD_V5 = "ALE/Earthworld-v5"
ALE_ELEVATOR_ACTION_V5 = "ALE/ElevatorAction-v5"
ALE_ENDURO_V5 = "ALE/Enduro-v5"
ALE_ENTOMBED_V5 = "ALE/Entombed-v5"
ALE_ET_V5 = "ALE/Et-v5"
ALE_FISHING_DERBY_V5 = "ALE/FishingDerby-v5"
ALE_FLAG_CAPTURE_V5 = "ALE/FlagCapture-v5"
ALE_FREEWAY_V5 = "ALE/Freeway-v5"
ALE_FROGGER_V5 = "ALE/Frogger-v5"
ALE_FROSTBITE_V5 = "ALE/Frostbite-v5"
ALE_GALAXIAN_V5 = "ALE/Galaxian-v5"
ALE_GOPHER_V5 = "ALE/Gopher-v5"
ALE_GRAVITAR_V5 = "ALE/Gravitar-v5"
ALE_HANGMAN_V5 = "ALE/Hangman-v5"
ALE_HAUNTED_HOUSE_V5 = "ALE/HauntedHouse-v5"
ALE_HERO_V5 = "ALE/Hero-v5"
ALE_HUMAN_CANNONBALL_V5 = "ALE/HumanCannonball-v5"
ALE_ICE_HOCKEY_V5 = "ALE/IceHockey-v5"
ALE_JAMESBOND_V5 = "ALE/Jamesbond-v5"
ALE_JOURNEY_ESCAPE_V5 = "ALE/JourneyEscape-v5"
ALE_KABOOM_V5 = "ALE/Kaboom-v5"
ALE_KANGAROO_V5 = "ALE/Kangaroo-v5"
ALE_KEYSTONE_KAPERS_V5 = "ALE/KeystoneKapers-v5"
ALE_KING_KONG_V5 = "ALE/KingKong-v5"
ALE_KLAX_V5 = "ALE/Klax-v5"
ALE_KOOLAID_V5 = "ALE/Koolaid-v5"
ALE_KRULL_V5 = "ALE/Krull-v5"
ALE_KUNG_FU_MASTER_V5 = "ALE/KungFuMaster-v5"
ALE_LASER_GATES_V5 = "ALE/LaserGates-v5"
ALE_LOST_LUGGAGE_V5 = "ALE/LostLuggage-v5"
ALE_MARIO_BROS_V5 = "ALE/MarioBros-v5"
ALE_MINIATURE_GOLF_V5 = "ALE/MiniatureGolf-v5"
ALE_MONTEZUMA_REVENGE_V5 = "ALE/MontezumaRevenge-v5"
ALE_MR_DO_V5 = "ALE/MrDo-v5"
ALE_MS_PACMAN_V5 = "ALE/MsPacman-v5"
ALE_NAME_THIS_GAME_V5 = "ALE/NameThisGame-v5"
ALE_OTHELLO_V5 = "ALE/Othello-v5"
ALE_PACMAN_V5 = "ALE/Pacman-v5"
ALE_PHOENIX_V5 = "ALE/Phoenix-v5"
ALE_PITFALL_V5 = "ALE/Pitfall-v5"
ALE_PITFALL2_V5 = "ALE/Pitfall2-v5"
ALE_PONG_V5 = "ALE/Pong-v5"
ALE_POOYAN_V5 = "ALE/Pooyan-v5"
ALE_PRIVATE_EYE_V5 = "ALE/PrivateEye-v5"
ALE_QBERT_V5 = "ALE/Qbert-v5"
ALE_RIVERRAID_V5 = "ALE/Riverraid-v5"
ALE_ROAD_RUNNER_V5 = "ALE/RoadRunner-v5"
ALE_ROBOTANK_V5 = "ALE/Robotank-v5"
ALE_SEAQUEST_V5 = "ALE/Seaquest-v5"
ALE_SIR_LANCELOT_V5 = "ALE/SirLancelot-v5"
ALE_SKIING_V5 = "ALE/Skiing-v5"
ALE_SOLARIS_V5 = "ALE/Solaris-v5"
ALE_SPACE_INVADERS_V5 = "ALE/SpaceInvaders-v5"
ALE_SPACE_WAR_V5 = "ALE/SpaceWar-v5"
ALE_STAR_GUNNER_V5 = "ALE/StarGunner-v5"
ALE_SUPERMAN_V5 = "ALE/Superman-v5"
ALE_SURROUND_V5 = "ALE/Surround-v5"
ALE_TENNIS_V5 = "ALE/Tennis-v5"
ALE_TETRIS_V5 = "ALE/Tetris-v5"
ALE_TIC_TAC_TOE_3D_V5 = "ALE/TicTacToe3D-v5"
ALE_TIME_PILOT_V5 = "ALE/TimePilot-v5"
ALE_TRONDEAD_V5 = "ALE/Trondead-v5"
ALE_TURMOIL_V5 = "ALE/Turmoil-v5"
ALE_TUTANKHAM_V5 = "ALE/Tutankham-v5"
ALE_UP_N_DOWN_V5 = "ALE/UpNDown-v5"
ALE_VENTURE_V5 = "ALE/Venture-v5"
ALE_VIDEO_CHECKERS_V5 = "ALE/VideoCheckers-v5"
ALE_VIDEO_CHESS_V5 = "ALE/VideoChess-v5"
ALE_VIDEO_CUBE_V5 = "ALE/VideoCube-v5"
ALE_VIDEO_PINBALL_V5 = "ALE/VideoPinball-v5"
ALE_WIZARD_OF_WOR_V5 = "ALE/WizardOfWor-v5"
ALE_WORD_ZAPPER_V5 = "ALE/WordZapper-v5"
ALE_YARS_REVENGE_V5 = "ALE/YarsRevenge-v5"
ALE_ZAXXON_V5 = "ALE/Zaxxon-v5"
ANT = "Ant-v5"
HALF_CHEETAH = "HalfCheetah-v5"
HOPPER = "Hopper-v5"
HUMANOID = "Humanoid-v5"
HUMANOID_STANDUP = "HumanoidStandup-v5"
INVERTED_DOUBLE_PENDULUM = "InvertedDoublePendulum-v5"
INVERTED_PENDULUM = "InvertedPendulum-v5"
PUSHER = "Pusher-v5"
REACHER = "Reacher-v5"
SWIMMER = "Swimmer-v5"
WALKER2D = "Walker2d-v5"
MINIGRID_EMPTY_5x5 = "MiniGrid-Empty-5x5-v0"
MINIGRID_EMPTY_RANDOM_5x5 = "MiniGrid-Empty-Random-5x5-v0"
MINIGRID_EMPTY_6x6 = "MiniGrid-Empty-6x6-v0"
MINIGRID_EMPTY_RANDOM_6x6 = "MiniGrid-Empty-Random-6x6-v0"
MINIGRID_EMPTY_8x8 = "MiniGrid-Empty-8x8-v0"
MINIGRID_EMPTY_16x16 = "MiniGrid-Empty-16x16-v0"
MINIGRID_DOORKEY_5x5 = "MiniGrid-DoorKey-5x5-v0"
MINIGRID_DOORKEY_6x6 = "MiniGrid-DoorKey-6x6-v0"
MINIGRID_DOORKEY_8x8 = "MiniGrid-DoorKey-8x8-v0"
MINIGRID_DOORKEY_16x16 = "MiniGrid-DoorKey-16x16-v0"
MINIGRID_LAVAGAP_S5 = "MiniGrid-LavaGapS5-v0"
MINIGRID_LAVAGAP_S6 = "MiniGrid-LavaGapS6-v0"
MINIGRID_LAVAGAP_S7 = "MiniGrid-LavaGapS7-v0"
MINIGRID_DYNAMIC_OBSTACLES_5X5 = "MiniGrid-Dynamic-Obstacles-5x5-v0"
MINIGRID_DYNAMIC_OBSTACLES_RANDOM_5X5 = "MiniGrid-Dynamic-Obstacles-Random-5x5-v0"
MINIGRID_DYNAMIC_OBSTACLES_6X6 = "MiniGrid-Dynamic-Obstacles-6x6-v0"
MINIGRID_DYNAMIC_OBSTACLES_RANDOM_6X6 = "MiniGrid-Dynamic-Obstacles-Random-6x6-v0"
MINIGRID_DYNAMIC_OBSTACLES_8X8 = "MiniGrid-Dynamic-Obstacles-8x8-v0"
MINIGRID_DYNAMIC_OBSTACLES_16X16 = "MiniGrid-Dynamic-Obstacles-16x16-v0"
MINIGRID_BLOCKED_UNLOCK_PICKUP = "MiniGrid-BlockedUnlockPickup-v0"
MINIGRID_MULTIROOM_N2_S4 = "MiniGrid-MultiRoom-N2-S4-v0"
MINIGRID_MULTIROOM_N4_S5 = "MiniGrid-MultiRoom-N4-S5-v0"
MINIGRID_MULTIROOM_N6 = "MiniGrid-MultiRoom-N6-v0"
MINIGRID_OBSTRUCTED_MAZE_1DLHB = "MiniGrid-ObstructedMaze-1Dlhb-v1"
MINIGRID_OBSTRUCTED_MAZE_FULL = "MiniGrid-ObstructedMaze-Full-v1"
MINIGRID_LAVA_CROSSING_S9N1 = "MiniGrid-LavaCrossingS9N1-v0"
MINIGRID_LAVA_CROSSING_S9N2 = "MiniGrid-LavaCrossingS9N2-v0"
MINIGRID_LAVA_CROSSING_S9N3 = "MiniGrid-LavaCrossingS9N3-v0"
MINIGRID_LAVA_CROSSING_S11N5 = "MiniGrid-LavaCrossingS11N5-v0"
MINIGRID_SIMPLE_CROSSING_S9N1 = "MiniGrid-SimpleCrossingS9N1-v0"
MINIGRID_SIMPLE_CROSSING_S9N2 = "MiniGrid-SimpleCrossingS9N2-v0"
MINIGRID_SIMPLE_CROSSING_S9N3 = "MiniGrid-SimpleCrossingS9N3-v0"
MINIGRID_SIMPLE_CROSSING_S11N5 = "MiniGrid-SimpleCrossingS11N5-v0"
MINIGRID_REDBLUE_DOORS_6x6 = "MiniGrid-RedBlueDoors-6x6-v0"
MINIGRID_REDBLUE_DOORS_8x8 = "MiniGrid-RedBlueDoors-8x8-v0"
# ─────────────────────────────────────────────────────────────────────────
# BabyAI Environments (language-grounded instruction following on MiniGrid)
# ─────────────────────────────────────────────────────────────────────────
# GoTo family
BABYAI_GOTO_REDBALL_GREY = "BabyAI-GoToRedBallGrey-v0"
BABYAI_GOTO_REDBALL = "BabyAI-GoToRedBall-v0"
BABYAI_GOTO_REDBALL_NODISTS = "BabyAI-GoToRedBallNoDists-v0"
BABYAI_GOTO_OBJ = "BabyAI-GoToObj-v0"
BABYAI_GOTO_LOCAL = "BabyAI-GoToLocal-v0"
BABYAI_GOTO = "BabyAI-GoTo-v0"
BABYAI_GOTO_IMPUNLOCK = "BabyAI-GoToImpUnlock-v0"
BABYAI_GOTO_SEQ = "BabyAI-GoToSeq-v0"
BABYAI_GOTO_REDBLUEBALL = "BabyAI-GoToRedBlueBall-v0"
BABYAI_GOTO_DOOR = "BabyAI-GoToDoor-v0"
BABYAI_GOTO_OBJDOOR = "BabyAI-GoToObjDoor-v0"
# Open family
BABYAI_OPEN = "BabyAI-Open-v0"
BABYAI_OPEN_REDDOOR = "BabyAI-OpenRedDoor-v0"
BABYAI_OPEN_DOOR = "BabyAI-OpenDoor-v0"
BABYAI_OPEN_TWODOORS = "BabyAI-OpenTwoDoors-v0"
BABYAI_OPEN_DOORSORDER_N2 = "BabyAI-OpenDoorsOrderN2-v0"
BABYAI_OPEN_DOORSORDER_N4 = "BabyAI-OpenDoorsOrderN4-v0"
# Pickup family
BABYAI_PICKUP = "BabyAI-Pickup-v0"
BABYAI_UNBLOCK_PICKUP = "BabyAI-UnblockPickup-v0"
BABYAI_PICKUP_LOC = "BabyAI-PickupLoc-v0"
BABYAI_PICKUP_DIST = "BabyAI-PickupDist-v0"
BABYAI_PICKUP_ABOVE = "BabyAI-PickupAbove-v0"
# Unlock family
BABYAI_UNLOCK = "BabyAI-Unlock-v0"
BABYAI_UNLOCK_LOCAL = "BabyAI-UnlockLocal-v0"
BABYAI_KEY_INBOX = "BabyAI-KeyInBox-v0"
BABYAI_UNLOCK_PICKUP = "BabyAI-UnlockPickup-v0"
BABYAI_BLOCKED_UNLOCK_PICKUP = "BabyAI-BlockedUnlockPickup-v0"
BABYAI_UNLOCK_TO_UNLOCK = "BabyAI-UnlockToUnlock-v0"
# PutNext family
BABYAI_PUTNEXT_LOCAL = "BabyAI-PutNextLocal-v0"
BABYAI_PUTNEXT = "BabyAI-PutNext-v0"
# Complex environments
BABYAI_ACTION_OBJDOOR = "BabyAI-ActionObjDoor-v0"
BABYAI_FINDOBJ_S5 = "BabyAI-FindObjS5-v0"
BABYAI_KEYCORRIDOR_S3R1 = "BabyAI-KeyCorridorS3R1-v0"
BABYAI_KEYCORRIDOR_S3R2 = "BabyAI-KeyCorridorS3R2-v0"
BABYAI_KEYCORRIDOR_S3R3 = "BabyAI-KeyCorridorS3R3-v0"
BABYAI_ONEROOM_S8 = "BabyAI-OneRoomS8-v0"
BABYAI_MOVETWOACROSS_S8N9 = "BabyAI-MoveTwoAcrossS8N9-v0"
BABYAI_SYNTH = "BabyAI-Synth-v0"
BABYAI_SYNTHLOC = "BabyAI-SynthLoc-v0"
BABYAI_SYNTHSEQ = "BabyAI-SynthSeq-v0"
BABYAI_MINIBOSSLEVEL = "BabyAI-MiniBossLevel-v0"
BABYAI_BOSSLEVEL = "BabyAI-BossLevel-v0"
BABYAI_BOSSLEVEL_NOUNLOCK = "BabyAI-BossLevelNoUnlock-v0"
VIZDOOM_BASIC = "ViZDoom-Basic-v0"
VIZDOOM_DEADLY_CORRIDOR = "ViZDoom-DeadlyCorridor-v0"
VIZDOOM_DEFEND_THE_CENTER = "ViZDoom-DefendTheCenter-v0"
VIZDOOM_DEFEND_THE_LINE = "ViZDoom-DefendTheLine-v0"
VIZDOOM_HEALTH_GATHERING = "ViZDoom-HealthGathering-v0"
VIZDOOM_HEALTH_GATHERING_SUPREME = "ViZDoom-HealthGatheringSupreme-v0"
VIZDOOM_MY_WAY_HOME = "ViZDoom-MyWayHome-v0"
VIZDOOM_PREDICT_POSITION = "ViZDoom-PredictPosition-v0"
VIZDOOM_TAKE_COVER = "ViZDoom-TakeCover-v0"
VIZDOOM_DEATHMATCH = "ViZDoom-Deathmatch-v0"
# PettingZoo Classic Board Games
CHESS = "chess_v6"
CONNECT_FOUR = "connect_four_v3"
GO = "go_v5"
TIC_TAC_TOE = "tictactoe_v3"
# ─────────────────────────────────────────────────────────────────────────
# MiniHack Environments (sandbox RL environments built on NLE)
# ─────────────────────────────────────────────────────────────────────────
# Navigation
MINIHACK_ROOM_5X5 = "MiniHack-Room-5x5-v0"
MINIHACK_ROOM_15X15 = "MiniHack-Room-15x15-v0"
MINIHACK_CORRIDOR_R2 = "MiniHack-Corridor-R2-v0"
MINIHACK_CORRIDOR_R3 = "MiniHack-Corridor-R3-v0"
MINIHACK_CORRIDOR_R5 = "MiniHack-Corridor-R5-v0"
MINIHACK_MAZEWALK_9X9 = "MiniHack-MazeWalk-9x9-v0"
MINIHACK_MAZEWALK_15X15 = "MiniHack-MazeWalk-15x15-v0"
MINIHACK_MAZEWALK_45X19 = "MiniHack-MazeWalk-45x19-v0"
MINIHACK_RIVER = "MiniHack-River-v0"
MINIHACK_RIVER_NARROW = "MiniHack-River-Narrow-v0"
# Skills
MINIHACK_EAT = "MiniHack-Eat-v0"
MINIHACK_WEAR = "MiniHack-Wear-v0"
MINIHACK_WIELD = "MiniHack-Wield-v0"
MINIHACK_ZAP = "MiniHack-Zap-v0"
MINIHACK_READ = "MiniHack-Read-v0"
MINIHACK_QUAFF = "MiniHack-Quaff-v0"
MINIHACK_PUTON = "MiniHack-PutOn-v0"
MINIHACK_LAVACROSS = "MiniHack-LavaCross-v0"
MINIHACK_WOD_EASY = "MiniHack-WoD-Easy-v0"
MINIHACK_WOD_MEDIUM = "MiniHack-WoD-Medium-v0"
MINIHACK_WOD_HARD = "MiniHack-WoD-Hard-v0"
# Exploration
MINIHACK_EXPLOREMAZE_EASY = "MiniHack-ExploreMaze-Easy-v0"
MINIHACK_EXPLOREMAZE_HARD = "MiniHack-ExploreMaze-Hard-v0"
MINIHACK_HIDENSEEK = "MiniHack-HideNSeek-v0"
MINIHACK_MEMENTO_F2 = "MiniHack-Memento-F2-v0"
MINIHACK_MEMENTO_F4 = "MiniHack-Memento-F4-v0"
# ─────────────────────────────────────────────────────────────────────────
# NetHack (Full Game via NLE)
# ─────────────────────────────────────────────────────────────────────────
NETHACK_FULL = "NetHackChallenge-v0"
NETHACK_SCORE = "NetHackScore-v0"
NETHACK_STAIRCASE = "NetHackStaircase-v0"
NETHACK_STAIRCASE_PET = "NetHackStaircasePet-v0"
NETHACK_ORACLE = "NetHackOracle-v0"
NETHACK_GOLD = "NetHackGold-v0"
NETHACK_EAT = "NetHackEat-v0"
NETHACK_SCOUT = "NetHackScout-v0"
# ─────────────────────────────────────────────────────────────────────────
# Crafter (Open World Survival Benchmark)
# ─────────────────────────────────────────────────────────────────────────
CRAFTER_REWARD = "CrafterReward-v1"
CRAFTER_NO_REWARD = "CrafterNoReward-v1"
# ─────────────────────────────────────────────────────────────────────────
# TextWorld (Text-Based Game Environment - Microsoft Research)
# ─────────────────────────────────────────────────────────────────────────
TEXTWORLD_SIMPLE = "TextWorld-Simple-v0"
TEXTWORLD_COIN_COLLECTOR = "TextWorld-CoinCollector-v0"
TEXTWORLD_TREASURE_HUNTER = "TextWorld-TreasureHunter-v0"
TEXTWORLD_COOKING = "TextWorld-Cooking-v0"
TEXTWORLD_CUSTOM = "TextWorld-Custom-v0"
# ─────────────────────────────────────────────────────────────────────────
# BabaIsAI (Rule Manipulation Puzzle Benchmark - ICML 2024)
# ─────────────────────────────────────────────────────────────────────────
BABAISAI_DEFAULT = "BabaIsAI-Default-v0"
# ─────────────────────────────────────────────────────────────────────────
# Procgen (Procedurally Generated Benchmark - 16 environments)
# ─────────────────────────────────────────────────────────────────────────
PROCGEN_BIGFISH = "procgen:procgen-bigfish-v0"
PROCGEN_BOSSFIGHT = "procgen:procgen-bossfight-v0"
PROCGEN_CAVEFLYER = "procgen:procgen-caveflyer-v0"
PROCGEN_CHASER = "procgen:procgen-chaser-v0"
PROCGEN_CLIMBER = "procgen:procgen-climber-v0"
PROCGEN_COINRUN = "procgen:procgen-coinrun-v0"
PROCGEN_DODGEBALL = "procgen:procgen-dodgeball-v0"
PROCGEN_FRUITBOT = "procgen:procgen-fruitbot-v0"
PROCGEN_HEIST = "procgen:procgen-heist-v0"
PROCGEN_JUMPER = "procgen:procgen-jumper-v0"
PROCGEN_LEAPER = "procgen:procgen-leaper-v0"
PROCGEN_MAZE = "procgen:procgen-maze-v0"
PROCGEN_MINER = "procgen:procgen-miner-v0"
PROCGEN_NINJA = "procgen:procgen-ninja-v0"
PROCGEN_PLUNDER = "procgen:procgen-plunder-v0"
PROCGEN_STARPILOT = "procgen:procgen-starpilot-v0"
# Jumanji (JAX-based Logic Puzzle Environments)
JUMANJI_GAME2048 = "jumanji/Game2048-v1"
JUMANJI_MINESWEEPER = "jumanji/Minesweeper-v0"
JUMANJI_RUBIKS_CUBE = "jumanji/RubiksCube-v0"
JUMANJI_SLIDING_PUZZLE = "jumanji/SlidingTilePuzzle-v0"
JUMANJI_SUDOKU = "jumanji/Sudoku-v0"
JUMANJI_GRAPH_COLORING = "jumanji/GraphColoring-v1"
# Jumanji Phase 2: Packing Environments
JUMANJI_BINPACK = "jumanji/BinPack-v2"
JUMANJI_FLATPACK = "jumanji/FlatPack-v0"
JUMANJI_JOBSHOP = "jumanji/JobShop-v0"
JUMANJI_KNAPSACK = "jumanji/Knapsack-v1"
JUMANJI_TETRIS = "jumanji/Tetris-v0"
# Jumanji Phase 3: Routing Environments
JUMANJI_CLEANER = "jumanji/Cleaner-v0"
JUMANJI_CONNECTOR = "jumanji/Connector-v3"
JUMANJI_CVRP = "jumanji/CVRP-v1"
JUMANJI_MAZE = "jumanji/Maze-v0"
JUMANJI_MMST = "jumanji/MMST-v0"
JUMANJI_MULTI_CVRP = "jumanji/MultiCVRP-v0"
JUMANJI_PACMAN = "jumanji/PacMan-v1"
JUMANJI_ROBOT_WAREHOUSE = "jumanji/RobotWarehouse-v0"
JUMANJI_SNAKE = "jumanji/Snake-v1"
JUMANJI_SOKOBAN = "jumanji/Sokoban-v0"
JUMANJI_TSP = "jumanji/TSP-v1"
# ─────────────────────────────────────────────────────────────────────────
# PyBullet Drones - Quadcopter Control Environments (University of Toronto)
# Paper: Panerati et al. (2021) "Learning to Fly"
# Repository: https://github.com/utiasDSL/gym-pybullet-drones
# ─────────────────────────────────────────────────────────────────────────
PYBULLET_HOVER_AVIARY = "hover-aviary-v0"
PYBULLET_MULTIHOVER_AVIARY = "multihover-aviary-v0"
PYBULLET_CTRL_AVIARY = "ctrl-aviary-v0"
PYBULLET_VELOCITY_AVIARY = "velocity-aviary-v0"
# ─────────────────────────────────────────────────────────────────────────
# OpenSpiel - Board Games via Shimmy PettingZoo Wrapper
# Repository: https://github.com/google-deepmind/open_spiel
# Shimmy: https://shimmy.farama.org/environments/open_spiel/
# ─────────────────────────────────────────────────────────────────────────
OPEN_SPIEL_CHECKERS = "open_spiel/checkers"
# ─────────────────────────────────────────────────────────────────────────
# Draughts/Checkers Variants (Custom implementations with proper rules)
# ─────────────────────────────────────────────────────────────────────────
# American Checkers (8x8) - No backward captures, no flying kings
AMERICAN_CHECKERS = "draughts/american_checkers"
# Russian Checkers (8x8) - Men can capture backward, flying kings
RUSSIAN_CHECKERS = "draughts/russian_checkers"
# International Draughts (10x10) - Men can capture backward, flying kings, 20 pieces
INTERNATIONAL_DRAUGHTS = "draughts/international_draughts"
# ─────────────────────────────────────────────────────────────────────────
# mosaic_multigrid (Multi-Agent Grid Environments)
# Repository (old): https://github.com/ArnaudFickinger/gym-multigrid
# Repository (new): https://github.com/ini/multigrid
# ─────────────────────────────────────────────────────────────────────────
# MOSAIC MultiGrid (PyPI: mosaic-multigrid v6.0.0)
# Competitive team-based multi-agent games with view_size=3
# Action space v6: noop=0, left=1, right=2, forward=3, pickup=4, drop=5, toggle=6, done=7
# PyPI: https://pypi.org/project/mosaic-multigrid/
# GitHub: https://github.com/Abdulhamid97Mousa/mosaic_multigrid
# ─────────────────────────────────────────────────────────────────────────
MOSAIC_MULTIGRID_SOCCER = "MosaicMultiGrid-Soccer-v0" # 4 agents, 2v2 soccer, zero-sum (Deprecated)
MOSAIC_MULTIGRID_COLLECT = "MosaicMultiGrid-Collect-v0" # 3 agents, individual competition (Deprecated)
MOSAIC_MULTIGRID_COLLECT2VS2 = "MosaicMultiGrid-Collect-2vs2-v0" # 4 agents, 2v2 teams, 7 balls (no draws) (Deprecated)
MOSAIC_MULTIGRID_COLLECT_1VS1 = "MosaicMultiGrid-Collect-1vs1-v0" # 2 agents, 1v1 teams, 3 balls (Deprecated)
# IndAgObs variants (v4.0.0) - Individual Agent Observations, RECOMMENDED for RL training
MOSAIC_MULTIGRID_SOCCER_2VS2_INDAGOBS = "MosaicMultiGrid-Soccer-2vs2-IndAgObs-v0" # Ball respawn, first-to-2-goals, 16x11 FIFA grid
MOSAIC_MULTIGRID_SOCCER_1VS1_INDAGOBS = "MosaicMultiGrid-Soccer-1vs1-IndAgObs-v0" # 1v1 soccer, same FIFA grid
MOSAIC_MULTIGRID_COLLECT_INDAGOBS = "MosaicMultiGrid-Collect-IndAgObs-v0" # Natural termination, 35x faster
MOSAIC_MULTIGRID_COLLECT2VS2_INDAGOBS = "MosaicMultiGrid-Collect-2vs2-IndAgObs-v0" # Natural termination, 7 balls
MOSAIC_MULTIGRID_COLLECT_1VS1_INDAGOBS = "MosaicMultiGrid-Collect-1vs1-IndAgObs-v0" # Natural termination, 3 balls
MOSAIC_MULTIGRID_BASKETBALL_INDAGOBS = "MosaicMultiGrid-Basketball-3vs3-IndAgObs-v0" # 6 agents, 3v3 basketball, court rendering
# TeamObs variants (v4.0.0) - SMAC-style teammate awareness
MOSAIC_MULTIGRID_SOCCER_2VS2_TEAMOBS = "MosaicMultiGrid-Soccer-2vs2-TeamObs-v0" # IndAgObs + teammate features
MOSAIC_MULTIGRID_COLLECT2VS2_TEAMOBS = "MosaicMultiGrid-Collect-2vs2-TeamObs-v0" # IndAgObs + teammate features
MOSAIC_MULTIGRID_BASKETBALL_TEAMOBS = "MosaicMultiGrid-Basketball-3vs3-TeamObs-v0" # IndAgObs + teammate features
# Solo variants (v6.0.0) - Single-agent, no opponent, for curriculum pre-training
MOSAIC_MULTIGRID_SOCCER_SOLO_GREEN = "MosaicMultiGrid-Soccer-Solo-Green-IndAgObs-v0" # 1 agent (Green), scores right
MOSAIC_MULTIGRID_SOCCER_SOLO_BLUE = "MosaicMultiGrid-Soccer-Solo-Blue-IndAgObs-v0" # 1 agent (Blue), scores left
MOSAIC_MULTIGRID_BASKETBALL_SOLO_GREEN = "MosaicMultiGrid-Basketball-Solo-Green-IndAgObs-v0" # 1 agent (Green), scores right
MOSAIC_MULTIGRID_BASKETBALL_SOLO_BLUE = "MosaicMultiGrid-Basketball-Solo-Blue-IndAgObs-v0" # 1 agent (Blue), scores left
# ─────────────────────────────────────────────────────────────────────────
# INI MultiGrid (Local: 3rd_party/multigrid-ini/)
# Cooperative exploration tasks with view_size=7
# GitHub: https://github.com/ini/multigrid
# ─────────────────────────────────────────────────────────────────────────
INI_MULTIGRID_BLOCKED_UNLOCK_PICKUP = "MultiGrid-BlockedUnlockPickup-v0" # Blocked door puzzle
INI_MULTIGRID_EMPTY_5X5 = "MultiGrid-Empty-5x5-v0" # Empty 5x5 grid
INI_MULTIGRID_EMPTY_RANDOM_5X5 = "MultiGrid-Empty-Random-5x5-v0" # Empty 5x5 with random start
INI_MULTIGRID_EMPTY_6X6 = "MultiGrid-Empty-6x6-v0" # Empty 6x6 grid
INI_MULTIGRID_EMPTY_RANDOM_6X6 = "MultiGrid-Empty-Random-6x6-v0" # Empty 6x6 with random start
INI_MULTIGRID_EMPTY_8X8 = "MultiGrid-Empty-8x8-v0" # Empty 8x8 grid (default)
INI_MULTIGRID_EMPTY_16X16 = "MultiGrid-Empty-16x16-v0" # Empty 16x16 grid
INI_MULTIGRID_LOCKED_HALLWAY_2ROOMS = "MultiGrid-LockedHallway-2Rooms-v0" # 2 rooms with locked doors
INI_MULTIGRID_LOCKED_HALLWAY_4ROOMS = "MultiGrid-LockedHallway-4Rooms-v0" # 4 rooms with locked doors
INI_MULTIGRID_LOCKED_HALLWAY_6ROOMS = "MultiGrid-LockedHallway-6Rooms-v0" # 6 rooms with locked doors
INI_MULTIGRID_PLAYGROUND = "MultiGrid-Playground-v0" # Playground with various objects
INI_MULTIGRID_RED_BLUE_DOORS_6X6 = "MultiGrid-RedBlueDoors-6x6-v0" # Red/Blue door puzzle 6x6
INI_MULTIGRID_RED_BLUE_DOORS_8X8 = "MultiGrid-RedBlueDoors-8x8-v0" # Red/Blue door puzzle 8x8
# ─────────────────────────────────────────────────────────────────────────
# Melting Pot (Multi-Agent Social Scenarios - Google DeepMind)
# Repository: https://github.com/google-deepmind/meltingpot
# Shimmy: https://shimmy.farama.org/environments/meltingpot/
# NOTE: Linux/macOS only (Windows NOT supported)
# All 49 substrates organized by category
# ─────────────────────────────────────────────────────────────────────────
# Allelopathic Harvest (resource competition with color preferences)
MELTINGPOT_ALLELOPATHIC_HARVEST__OPEN = "meltingpot/allelopathic_harvest__open"
# Bach or Stravinsky (coordination game)
MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__ARENA = "meltingpot/bach_or_stravinsky_in_the_matrix__arena"
MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__REPEATED = "meltingpot/bach_or_stravinsky_in_the_matrix__repeated"
# Boat Race (team racing)
MELTINGPOT_BOAT_RACE__EIGHT_RACES = "meltingpot/boat_race__eight_races"
# Chemistry (metabolic cycles cooperation)
MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES = "meltingpot/chemistry__three_metabolic_cycles"
MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES_WITH_PLENTIFUL_DISTRACTORS = "meltingpot/chemistry__three_metabolic_cycles_with_plentiful_distractors"
MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES = "meltingpot/chemistry__two_metabolic_cycles"
MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES_WITH_DISTRACTORS = "meltingpot/chemistry__two_metabolic_cycles_with_distractors"
# Chicken (anti-coordination game)
MELTINGPOT_CHICKEN_IN_THE_MATRIX__ARENA = "meltingpot/chicken_in_the_matrix__arena"
MELTINGPOT_CHICKEN_IN_THE_MATRIX__REPEATED = "meltingpot/chicken_in_the_matrix__repeated"
# Clean Up (public goods / tragedy of the commons)
MELTINGPOT_CLEAN_UP = "meltingpot/clean_up"
# Coins (simple resource collection)
MELTINGPOT_COINS = "meltingpot/coins"
# Collaborative Cooking (cooperative cooking scenarios)
MELTINGPOT_COLLABORATIVE_COOKING__ASYMMETRIC = "meltingpot/collaborative_cooking__asymmetric"
MELTINGPOT_COLLABORATIVE_COOKING__CIRCUIT = "meltingpot/collaborative_cooking__circuit"
MELTINGPOT_COLLABORATIVE_COOKING__CRAMPED = "meltingpot/collaborative_cooking__cramped"
MELTINGPOT_COLLABORATIVE_COOKING__CROWDED = "meltingpot/collaborative_cooking__crowded"
MELTINGPOT_COLLABORATIVE_COOKING__FIGURE_EIGHT = "meltingpot/collaborative_cooking__figure_eight"
MELTINGPOT_COLLABORATIVE_COOKING__FORCED = "meltingpot/collaborative_cooking__forced"
MELTINGPOT_COLLABORATIVE_COOKING__RING = "meltingpot/collaborative_cooking__ring"
# Commons Harvest (tragedy of the commons)
MELTINGPOT_COMMONS_HARVEST__CLOSED = "meltingpot/commons_harvest__closed"
MELTINGPOT_COMMONS_HARVEST__OPEN = "meltingpot/commons_harvest__open"
MELTINGPOT_COMMONS_HARVEST__PARTNERSHIP = "meltingpot/commons_harvest__partnership"
# Coop Mining (cooperative resource extraction)
MELTINGPOT_COOP_MINING = "meltingpot/coop_mining"
# Daycare (supervision and care)
MELTINGPOT_DAYCARE = "meltingpot/daycare"
# Externality Mushrooms (externalities in resource collection)
MELTINGPOT_EXTERNALITY_MUSHROOMS__DENSE = "meltingpot/externality_mushrooms__dense"
# Factory Commons (production dilemma)
MELTINGPOT_FACTORY_COMMONS__EITHER_OR = "meltingpot/factory_commons__either_or"
# Fruit Market (trading scenario)
MELTINGPOT_FRUIT_MARKET__CONCENTRIC_RIVERS = "meltingpot/fruit_market__concentric_rivers"
# Gift Refinements (gift giving and reciprocity)
MELTINGPOT_GIFT_REFINEMENTS = "meltingpot/gift_refinements"
# Hidden Agenda (deception and inference)
MELTINGPOT_HIDDEN_AGENDA = "meltingpot/hidden_agenda"
# Paintball (team competition)
MELTINGPOT_PAINTBALL__CAPTURE_THE_FLAG = "meltingpot/paintball__capture_the_flag"
MELTINGPOT_PAINTBALL__KING_OF_THE_HILL = "meltingpot/paintball__king_of_the_hill"
# Predator Prey (asymmetric competition)
MELTINGPOT_PREDATOR_PREY__ALLEY_HUNT = "meltingpot/predator_prey__alley_hunt"
MELTINGPOT_PREDATOR_PREY__OPEN = "meltingpot/predator_prey__open"
MELTINGPOT_PREDATOR_PREY__ORCHARD = "meltingpot/predator_prey__orchard"
MELTINGPOT_PREDATOR_PREY__RANDOM_FOREST = "meltingpot/predator_prey__random_forest"
# Prisoners Dilemma (classic game theory)
MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__ARENA = "meltingpot/prisoners_dilemma_in_the_matrix__arena"
MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__REPEATED = "meltingpot/prisoners_dilemma_in_the_matrix__repeated"
# Pure Coordination (coordination game)
MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__ARENA = "meltingpot/pure_coordination_in_the_matrix__arena"
MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__REPEATED = "meltingpot/pure_coordination_in_the_matrix__repeated"
# Rationalizable Coordination (coordination with rationality)
MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__ARENA = "meltingpot/rationalizable_coordination_in_the_matrix__arena"
MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__REPEATED = "meltingpot/rationalizable_coordination_in_the_matrix__repeated"
# Running With Scissors (rock-paper-scissors variant)
MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ARENA = "meltingpot/running_with_scissors_in_the_matrix__arena"
MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ONE_SHOT = "meltingpot/running_with_scissors_in_the_matrix__one_shot"
MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__REPEATED = "meltingpot/running_with_scissors_in_the_matrix__repeated"
# Stag Hunt (coordination dilemma)
MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__ARENA = "meltingpot/stag_hunt_in_the_matrix__arena"
MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__REPEATED = "meltingpot/stag_hunt_in_the_matrix__repeated"
# Territory (area control)
MELTINGPOT_TERRITORY__INSIDE_OUT = "meltingpot/territory__inside_out"
MELTINGPOT_TERRITORY__OPEN = "meltingpot/territory__open"
MELTINGPOT_TERRITORY__ROOMS = "meltingpot/territory__rooms"
# ─────────────────────────────────────────────────────────────────────────
# Overcooked-AI (Cooperative Cooking - Human-AI Coordination)
# Repository: https://github.com/HumanCompatibleAI/overcooked_ai
# Paper: https://arxiv.org/abs/1910.05789 (NeurIPS 2019)
# Location: 3rd_party/overcooked_ai/
# ─────────────────────────────────────────────────────────────────────────
OVERCOOKED_CRAMPED_ROOM = "overcooked/cramped_room" # 2 agents, tight kitchen coordination
OVERCOOKED_ASYMMETRIC_ADVANTAGES = "overcooked/asymmetric_advantages" # 2 agents, asymmetric resource access
OVERCOOKED_COORDINATION_RING = "overcooked/coordination_ring" # 2 agents, circular kitchen layout
OVERCOOKED_FORCED_COORDINATION = "overcooked/forced_coordination" # 2 agents, explicit coordination required
OVERCOOKED_COUNTER_CIRCUIT = "overcooked/counter_circuit" # 2 agents, circuit-style counter layout
# ─────────────────────────────────────────────────────────────────────────
# SMAC v1 (StarCraft Multi-Agent Challenge - Hand-Designed Maps)
# Repository: https://github.com/oxwhirl/smac
# Paper: https://arxiv.org/abs/1902.04043
# Location: pip install smac (requires StarCraft II binary)
# ─────────────────────────────────────────────────────────────────────────
SMAC_3M = "SMAC-3m-v0" # 3 Marines vs 3 Marines (Easy, symmetric)
SMAC_8M = "SMAC-8m-v0" # 8 Marines vs 8 Marines (Easy, symmetric)
SMAC_2S3Z = "SMAC-2s3z-v0" # 2 Stalkers + 3 Zealots vs same (Easy, mixed)
SMAC_3S5Z = "SMAC-3s5z-v0" # 3 Stalkers + 5 Zealots vs same (Easy, mixed)
SMAC_5M_VS_6M = "SMAC-5m_vs_6m-v0" # 5 Marines vs 6 Marines (Hard, asymmetric)
SMAC_MMM2 = "SMAC-MMM2-v0" # 1 Medivac + 2 Marauders + 7 Marines (Super Hard, mixed)
# ─────────────────────────────────────────────────────────────────────────
# SMACv2 (StarCraft Multi-Agent Challenge v2 - Procedural Generation)
# Repository: https://github.com/oxwhirl/smacv2
# Location: pip install smacv2 (requires StarCraft II binary)
# ─────────────────────────────────────────────────────────────────────────
SMACV2_TERRAN = "SMACv2-10gen_terran-v0" # 10 units, random Terran composition per episode
SMACV2_PROTOSS = "SMACv2-10gen_protoss-v0" # 10 units, random Protoss composition per episode
SMACV2_ZERG = "SMACv2-10gen_zerg-v0" # 10 units, random Zerg composition per episode
# ── RWARE (Robotic Warehouse) ────────────────────────────────────
RWARE_TINY_2AG = "rware-tiny-2ag-v2"
RWARE_TINY_4AG = "rware-tiny-4ag-v2"
RWARE_SMALL_2AG = "rware-small-2ag-v2"
RWARE_SMALL_4AG = "rware-small-4ag-v2"
RWARE_MEDIUM_2AG = "rware-medium-2ag-v2"
RWARE_MEDIUM_4AG = "rware-medium-4ag-v2"
RWARE_MEDIUM_4AG_EASY = "rware-medium-4ag-easy-v2"
RWARE_MEDIUM_4AG_HARD = "rware-medium-4ag-hard-v2"
RWARE_LARGE_4AG = "rware-large-4ag-v2"
RWARE_LARGE_4AG_HARD = "rware-large-4ag-hard-v2"
RWARE_LARGE_8AG = "rware-large-8ag-v2"
RWARE_LARGE_8AG_HARD = "rware-large-8ag-hard-v2"
def get_game_display_name(game_id: GameId) -> str:
"""Get the display name for a GameId with family prefix.
Converts actual environment IDs to user-friendly display names:
- 'FrozenLake-v1' → 'Gym-ToyText-FrozenLake-v1'
- 'LunarLander-v3' → 'Gym-Box2D-LunarLander-v3'
- 'MiniGrid-Empty-5x5-v0' → 'MiniGrid-Empty-5x5-v0' (no prefix, separate library)
"""
value = game_id.value
# MiniGrid is a separate library, not part of Gym - keep as-is
if value.startswith("MiniGrid-"):
return value
# ALE is a separate namespace (Atari via ALE) - keep as-is
if value.startswith("ALE/"):
return value
# ViZDoom games already include descriptive prefix
if value.startswith("ViZDoom-"):
return value
# MiniHack environments already include descriptive prefix
if value.startswith("MiniHack-"):
return value
# NetHack environments already include descriptive prefix
if value.startswith("NetHack"):
return value
# Crafter environments
if value.startswith("Crafter"):
return value
# Procgen environments (procgen:procgen-name-v0 → Procgen-Name)
if value.startswith("procgen:"):
# Extract game name: "procgen:procgen-coinrun-v0" → "coinrun"
env_part = value.split(":")[1] # "procgen-coinrun-v0"
name_part = env_part.replace("procgen-", "").replace("-v0", "") # "coinrun"
return f"Procgen-{name_part.title()}"
# PettingZoo board games
if game_id == GameId.CHESS:
return "PettingZoo-Chess"
if game_id == GameId.CONNECT_FOUR:
return "PettingZoo-ConnectFour"
if game_id == GameId.GO:
return "PettingZoo-Go"
if game_id == GameId.TIC_TAC_TOE:
return "PettingZoo-TicTacToe"
# OpenSpiel board games (via Shimmy)
if value.startswith("open_spiel/"):
game_name = value.split("/")[1].replace("_", " ").title()
return f"OpenSpiel-{game_name}"
# MultiGrid environments (multi-agent grid worlds)
if value.startswith("MultiGrid-"):
return value
# Determine Gym family based on enum
if game_id in (GameId.FROZEN_LAKE, GameId.FROZEN_LAKE_V2, GameId.CLIFF_WALKING,
GameId.TAXI, GameId.BLACKJACK):
return f"Gym-ToyText-{value}"
elif game_id in (GameId.LUNAR_LANDER, GameId.CAR_RACING, GameId.BIPEDAL_WALKER):
return f"Gym-Box2D-{value}"
elif game_id in (
GameId.CART_POLE,
GameId.ACROBOT,
GameId.MOUNTAIN_CAR,
):
return f"Gym-ClassicControl-{value}"
elif game_id in (
GameId.PONG_NO_FRAMESKIP,
GameId.BREAKOUT_NO_FRAMESKIP,
):
return f"Gym-Atari-{value}"
elif game_id in (
GameId.ADVENTURE_V4,
GameId.AIR_RAID_V4,
GameId.ASSAULT_V4,
):
# Legacy non-namespaced Atari environments
return f"Atari-{value}"
elif game_id in (
GameId.ANT,
GameId.HALF_CHEETAH,
GameId.HOPPER,
GameId.HUMANOID,
GameId.HUMANOID_STANDUP,
GameId.INVERTED_DOUBLE_PENDULUM,
GameId.INVERTED_PENDULUM,
GameId.PUSHER,
GameId.REACHER,
GameId.SWIMMER,
GameId.WALKER2D,
):
return f"Gym-MuJoCo-{value}"
else:
return f"Gym-{value}"
class ControlMode(StrEnum):
"""Who is currently in control of the environment."""
HUMAN_ONLY = "human_only"
AGENT_ONLY = "agent_only"
HYBRID_TURN_BASED = "hybrid_turn_based"
HYBRID_HUMAN_AGENT = "hybrid_human_agent"
MULTI_AGENT_COOP = "multi_agent_coop"
MULTI_AGENT_COMPETITIVE = "multi_agent_competitive"
class InputMode(StrEnum):
"""Input mode for keyboard controls.
Controls how keyboard input is processed for human gameplay.
Users can choose between these modes in the Game Configuration panel.
"""
STATE_BASED = "state_based"
"""Tracks all currently pressed keys and computes combined actions.
- Enables simultaneous key presses (e.g., Up+Right for diagonal movement)
- Best for real-time arcade games (Procgen, Atari, ViZDoom, etc.)
- Keys are sampled on each game tick
- Supports WASD and arrow keys interchangeably
"""
SHORTCUT_BASED = "shortcut_based"
"""Uses Qt's QShortcut mechanism for single-key actions.
- Each key press immediately triggers an action
- Best for turn-based or step-by-step games
- Traditional input mode with immediate response
- No simultaneous key combination support
"""
# Human-readable labels and descriptions for InputMode
INPUT_MODE_INFO: dict[InputMode, tuple[str, str]] = {
InputMode.STATE_BASED: (
"State-Based (Real-time)",
"Enables simultaneous key combinations (e.g., Up+Right for diagonal). "
"Best for arcade games where you hold multiple keys at once.",
),
InputMode.SHORTCUT_BASED: (
"Shortcut-Based (Immediate)",
"Each key press triggers an immediate action. "
"Best for turn-based games or step-by-step control.",
),
}
class RenderMode(StrEnum):
"""Rendering strategies supported by the UI."""
ANSI = "ansi"
ASCII = "ascii"
GRID = "grid"
RGB_ARRAY = "rgb_array"
SURFACE = "surface"
class ActionSpaceType(StrEnum):
"""Simplified view over Gymnasium action space types."""
DISCRETE = "discrete"
CONTINUOUS = "continuous"
MULTI_BINARY = "multi_binary"
MULTI_DISCRETE = "multi_discrete"
class AgentRole(StrEnum):
"""Roles an agent can play when multiple controllers are present."""
PRIMARY = "primary"
ASSIST = "assist"
SPECTATOR = "spectator"
class AdapterCapability(Enum):
"""Flags that describe optional behaviours for adapters."""
RECORD_SUPPORT = auto()
FAST_RESET = auto()
MULTI_AGENT = auto()
[docs]
class SteppingParadigm(StrEnum):
"""Defines how RL agents interact with the environment.
This enum describes the stepping model - how actions are collected and applied.
It is orthogonal to ControlMode (who controls) and EnvironmentFamily (library).
NOTE: This enum is for RL training paradigms ONLY.
Non-RL systems like MuJoCo MPC (optimal control) are managed separately
by gym_gui/services/mujoco_mpc_controller/.
See Also:
- :doc:`/documents/architecture/paradigms` for POSG vs AEC details
- :doc:`/documents/architecture/operators/concept` for operator architecture
"""
SINGLE_AGENT = "single_agent"
"""Gymnasium single-agent: one agent, one action per step.
Used by: CleanRL, stable-baselines3, MuJoCo envs (HalfCheetah, etc.)
API: obs, reward, done, info = env.step(action)
"""
SEQUENTIAL = "sequential"
"""PettingZoo AEC / OpenSpiel: agents take turns, one at a time.
Used by: PettingZoo env(), Chess, Go, turn-based games
API: for agent in env.agent_iter(): env.step(action)
"""
SIMULTANEOUS = "simultaneous"
"""RLlib / PettingZoo Parallel: all agents act at once.
Used by: RLlib MultiAgentEnv, PettingZoo parallel_env(), MPE
API: obs_dict, rewards, dones, infos = env.step(action_dict)
"""
ENVIRONMENT_FAMILY_BY_GAME: dict[GameId, EnvironmentFamily] = {
GameId.FROZEN_LAKE: EnvironmentFamily.TOY_TEXT,
GameId.FROZEN_LAKE_V2: EnvironmentFamily.TOY_TEXT,
GameId.CLIFF_WALKING: EnvironmentFamily.TOY_TEXT,
GameId.TAXI: EnvironmentFamily.TOY_TEXT,
GameId.BLACKJACK: EnvironmentFamily.TOY_TEXT,
GameId.LUNAR_LANDER: EnvironmentFamily.BOX2D,
GameId.CAR_RACING: EnvironmentFamily.BOX2D,
GameId.BIPEDAL_WALKER: EnvironmentFamily.BOX2D,
GameId.CART_POLE: EnvironmentFamily.CLASSIC_CONTROL,
GameId.ACROBOT: EnvironmentFamily.CLASSIC_CONTROL,
GameId.MOUNTAIN_CAR: EnvironmentFamily.CLASSIC_CONTROL,
GameId.PONG_NO_FRAMESKIP: EnvironmentFamily.ATARI,
GameId.BREAKOUT_NO_FRAMESKIP: EnvironmentFamily.ATARI,
GameId.ADVENTURE_V4: EnvironmentFamily.ALE,
GameId.ALE_ADVENTURE_V5: EnvironmentFamily.ALE,
GameId.AIR_RAID_V4: EnvironmentFamily.ALE,
GameId.ALE_AIR_RAID_V5: EnvironmentFamily.ALE,
GameId.ASSAULT_V4: EnvironmentFamily.ALE,
GameId.ALE_ASSAULT_V5: EnvironmentFamily.ALE,
# ALE Complete Game Library
GameId.ALE_ALIEN_V5: EnvironmentFamily.ALE,
GameId.ALE_AMIDAR_V5: EnvironmentFamily.ALE,
GameId.ALE_ASTERIX_V5: EnvironmentFamily.ALE,
GameId.ALE_ASTEROIDS_V5: EnvironmentFamily.ALE,
GameId.ALE_ATLANTIS_V5: EnvironmentFamily.ALE,
GameId.ALE_ATLANTIS2_V5: EnvironmentFamily.ALE,
GameId.ALE_BACKGAMMON_V5: EnvironmentFamily.ALE,
GameId.ALE_BANK_HEIST_V5: EnvironmentFamily.ALE,
GameId.ALE_BASIC_MATH_V5: EnvironmentFamily.ALE,
GameId.ALE_BATTLE_ZONE_V5: EnvironmentFamily.ALE,
GameId.ALE_BEAM_RIDER_V5: EnvironmentFamily.ALE,
GameId.ALE_BERZERK_V5: EnvironmentFamily.ALE,
GameId.ALE_BLACKJACK_V5: EnvironmentFamily.ALE,
GameId.ALE_BOWLING_V5: EnvironmentFamily.ALE,
GameId.ALE_BOXING_V5: EnvironmentFamily.ALE,
GameId.ALE_BREAKOUT_V5: EnvironmentFamily.ALE,
GameId.ALE_CARNIVAL_V5: EnvironmentFamily.ALE,
GameId.ALE_CASINO_V5: EnvironmentFamily.ALE,
GameId.ALE_CENTIPEDE_V5: EnvironmentFamily.ALE,
GameId.ALE_CHOPPER_COMMAND_V5: EnvironmentFamily.ALE,
GameId.ALE_CRAZY_CLIMBER_V5: EnvironmentFamily.ALE,
GameId.ALE_CROSSBOW_V5: EnvironmentFamily.ALE,
GameId.ALE_DARKCHAMBERS_V5: EnvironmentFamily.ALE,
GameId.ALE_DEFENDER_V5: EnvironmentFamily.ALE,
GameId.ALE_DEMON_ATTACK_V5: EnvironmentFamily.ALE,
GameId.ALE_DONKEY_KONG_V5: EnvironmentFamily.ALE,
GameId.ALE_DOUBLE_DUNK_V5: EnvironmentFamily.ALE,
GameId.ALE_EARTHWORLD_V5: EnvironmentFamily.ALE,
GameId.ALE_ELEVATOR_ACTION_V5: EnvironmentFamily.ALE,
GameId.ALE_ENDURO_V5: EnvironmentFamily.ALE,
GameId.ALE_ENTOMBED_V5: EnvironmentFamily.ALE,
GameId.ALE_ET_V5: EnvironmentFamily.ALE,
GameId.ALE_FISHING_DERBY_V5: EnvironmentFamily.ALE,
GameId.ALE_FLAG_CAPTURE_V5: EnvironmentFamily.ALE,
GameId.ALE_FREEWAY_V5: EnvironmentFamily.ALE,
GameId.ALE_FROGGER_V5: EnvironmentFamily.ALE,
GameId.ALE_FROSTBITE_V5: EnvironmentFamily.ALE,
GameId.ALE_GALAXIAN_V5: EnvironmentFamily.ALE,
GameId.ALE_GOPHER_V5: EnvironmentFamily.ALE,
GameId.ALE_GRAVITAR_V5: EnvironmentFamily.ALE,
GameId.ALE_HANGMAN_V5: EnvironmentFamily.ALE,
GameId.ALE_HAUNTED_HOUSE_V5: EnvironmentFamily.ALE,
GameId.ALE_HERO_V5: EnvironmentFamily.ALE,
GameId.ALE_HUMAN_CANNONBALL_V5: EnvironmentFamily.ALE,
GameId.ALE_ICE_HOCKEY_V5: EnvironmentFamily.ALE,
GameId.ALE_JAMESBOND_V5: EnvironmentFamily.ALE,
GameId.ALE_JOURNEY_ESCAPE_V5: EnvironmentFamily.ALE,
GameId.ALE_KABOOM_V5: EnvironmentFamily.ALE,
GameId.ALE_KANGAROO_V5: EnvironmentFamily.ALE,
GameId.ALE_KEYSTONE_KAPERS_V5: EnvironmentFamily.ALE,
GameId.ALE_KING_KONG_V5: EnvironmentFamily.ALE,
GameId.ALE_KLAX_V5: EnvironmentFamily.ALE,
GameId.ALE_KOOLAID_V5: EnvironmentFamily.ALE,
GameId.ALE_KRULL_V5: EnvironmentFamily.ALE,
GameId.ALE_KUNG_FU_MASTER_V5: EnvironmentFamily.ALE,
GameId.ALE_LASER_GATES_V5: EnvironmentFamily.ALE,
GameId.ALE_LOST_LUGGAGE_V5: EnvironmentFamily.ALE,
GameId.ALE_MARIO_BROS_V5: EnvironmentFamily.ALE,
GameId.ALE_MINIATURE_GOLF_V5: EnvironmentFamily.ALE,
GameId.ALE_MONTEZUMA_REVENGE_V5: EnvironmentFamily.ALE,
GameId.ALE_MR_DO_V5: EnvironmentFamily.ALE,
GameId.ALE_MS_PACMAN_V5: EnvironmentFamily.ALE,
GameId.ALE_NAME_THIS_GAME_V5: EnvironmentFamily.ALE,
GameId.ALE_OTHELLO_V5: EnvironmentFamily.ALE,
GameId.ALE_PACMAN_V5: EnvironmentFamily.ALE,
GameId.ALE_PHOENIX_V5: EnvironmentFamily.ALE,
GameId.ALE_PITFALL_V5: EnvironmentFamily.ALE,
GameId.ALE_PITFALL2_V5: EnvironmentFamily.ALE,
GameId.ALE_PONG_V5: EnvironmentFamily.ALE,
GameId.ALE_POOYAN_V5: EnvironmentFamily.ALE,
GameId.ALE_PRIVATE_EYE_V5: EnvironmentFamily.ALE,
GameId.ALE_QBERT_V5: EnvironmentFamily.ALE,
GameId.ALE_RIVERRAID_V5: EnvironmentFamily.ALE,
GameId.ALE_ROAD_RUNNER_V5: EnvironmentFamily.ALE,
GameId.ALE_ROBOTANK_V5: EnvironmentFamily.ALE,
GameId.ALE_SEAQUEST_V5: EnvironmentFamily.ALE,
GameId.ALE_SIR_LANCELOT_V5: EnvironmentFamily.ALE,
GameId.ALE_SKIING_V5: EnvironmentFamily.ALE,
GameId.ALE_SOLARIS_V5: EnvironmentFamily.ALE,
GameId.ALE_SPACE_INVADERS_V5: EnvironmentFamily.ALE,
GameId.ALE_SPACE_WAR_V5: EnvironmentFamily.ALE,
GameId.ALE_STAR_GUNNER_V5: EnvironmentFamily.ALE,
GameId.ALE_SUPERMAN_V5: EnvironmentFamily.ALE,
GameId.ALE_SURROUND_V5: EnvironmentFamily.ALE,
GameId.ALE_TENNIS_V5: EnvironmentFamily.ALE,
GameId.ALE_TETRIS_V5: EnvironmentFamily.ALE,
GameId.ALE_TIC_TAC_TOE_3D_V5: EnvironmentFamily.ALE,
GameId.ALE_TIME_PILOT_V5: EnvironmentFamily.ALE,
GameId.ALE_TRONDEAD_V5: EnvironmentFamily.ALE,
GameId.ALE_TURMOIL_V5: EnvironmentFamily.ALE,
GameId.ALE_TUTANKHAM_V5: EnvironmentFamily.ALE,
GameId.ALE_UP_N_DOWN_V5: EnvironmentFamily.ALE,
GameId.ALE_VENTURE_V5: EnvironmentFamily.ALE,
GameId.ALE_VIDEO_CHECKERS_V5: EnvironmentFamily.ALE,
GameId.ALE_VIDEO_CHESS_V5: EnvironmentFamily.ALE,
GameId.ALE_VIDEO_CUBE_V5: EnvironmentFamily.ALE,
GameId.ALE_VIDEO_PINBALL_V5: EnvironmentFamily.ALE,
GameId.ALE_WIZARD_OF_WOR_V5: EnvironmentFamily.ALE,
GameId.ALE_WORD_ZAPPER_V5: EnvironmentFamily.ALE,
GameId.ALE_YARS_REVENGE_V5: EnvironmentFamily.ALE,
GameId.ALE_ZAXXON_V5: EnvironmentFamily.ALE,
GameId.ANT: EnvironmentFamily.MUJOCO,
GameId.HALF_CHEETAH: EnvironmentFamily.MUJOCO,
GameId.HOPPER: EnvironmentFamily.MUJOCO,
GameId.HUMANOID: EnvironmentFamily.MUJOCO,
GameId.HUMANOID_STANDUP: EnvironmentFamily.MUJOCO,
GameId.INVERTED_DOUBLE_PENDULUM: EnvironmentFamily.MUJOCO,
GameId.INVERTED_PENDULUM: EnvironmentFamily.MUJOCO,
GameId.PUSHER: EnvironmentFamily.MUJOCO,
GameId.REACHER: EnvironmentFamily.MUJOCO,
GameId.SWIMMER: EnvironmentFamily.MUJOCO,
GameId.WALKER2D: EnvironmentFamily.MUJOCO,
GameId.MINIGRID_EMPTY_5x5: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_EMPTY_RANDOM_5x5: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_EMPTY_6x6: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_EMPTY_RANDOM_6x6: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_EMPTY_8x8: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_EMPTY_16x16: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_DOORKEY_5x5: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_DOORKEY_6x6: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_DOORKEY_8x8: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_DOORKEY_16x16: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_LAVAGAP_S5: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_LAVAGAP_S6: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_LAVAGAP_S7: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_LAVA_CROSSING_S9N1: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_LAVA_CROSSING_S9N2: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_LAVA_CROSSING_S9N3: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_LAVA_CROSSING_S11N5: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_SIMPLE_CROSSING_S9N1: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_SIMPLE_CROSSING_S9N2: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_SIMPLE_CROSSING_S9N3: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_SIMPLE_CROSSING_S11N5: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_REDBLUE_DOORS_6x6: EnvironmentFamily.MINIGRID,
GameId.MINIGRID_REDBLUE_DOORS_8x8: EnvironmentFamily.MINIGRID,
# BabyAI environments
GameId.BABYAI_GOTO_REDBALL_GREY: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_REDBALL: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_REDBALL_NODISTS: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_OBJ: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_LOCAL: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_IMPUNLOCK: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_SEQ: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_REDBLUEBALL: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_DOOR: EnvironmentFamily.BABYAI,
GameId.BABYAI_GOTO_OBJDOOR: EnvironmentFamily.BABYAI,
GameId.BABYAI_OPEN: EnvironmentFamily.BABYAI,
GameId.BABYAI_OPEN_REDDOOR: EnvironmentFamily.BABYAI,
GameId.BABYAI_OPEN_DOOR: EnvironmentFamily.BABYAI,
GameId.BABYAI_OPEN_TWODOORS: EnvironmentFamily.BABYAI,
GameId.BABYAI_OPEN_DOORSORDER_N2: EnvironmentFamily.BABYAI,
GameId.BABYAI_OPEN_DOORSORDER_N4: EnvironmentFamily.BABYAI,
GameId.BABYAI_PICKUP: EnvironmentFamily.BABYAI,
GameId.BABYAI_UNBLOCK_PICKUP: EnvironmentFamily.BABYAI,
GameId.BABYAI_PICKUP_LOC: EnvironmentFamily.BABYAI,
GameId.BABYAI_PICKUP_DIST: EnvironmentFamily.BABYAI,
GameId.BABYAI_PICKUP_ABOVE: EnvironmentFamily.BABYAI,
GameId.BABYAI_UNLOCK: EnvironmentFamily.BABYAI,
GameId.BABYAI_UNLOCK_LOCAL: EnvironmentFamily.BABYAI,
GameId.BABYAI_KEY_INBOX: EnvironmentFamily.BABYAI,
GameId.BABYAI_UNLOCK_PICKUP: EnvironmentFamily.BABYAI,
GameId.BABYAI_BLOCKED_UNLOCK_PICKUP: EnvironmentFamily.BABYAI,
GameId.BABYAI_UNLOCK_TO_UNLOCK: EnvironmentFamily.BABYAI,
GameId.BABYAI_PUTNEXT_LOCAL: EnvironmentFamily.BABYAI,
GameId.BABYAI_PUTNEXT: EnvironmentFamily.BABYAI,
GameId.BABYAI_ACTION_OBJDOOR: EnvironmentFamily.BABYAI,
GameId.BABYAI_FINDOBJ_S5: EnvironmentFamily.BABYAI,
GameId.BABYAI_KEYCORRIDOR_S3R1: EnvironmentFamily.BABYAI,
GameId.BABYAI_KEYCORRIDOR_S3R2: EnvironmentFamily.BABYAI,
GameId.BABYAI_KEYCORRIDOR_S3R3: EnvironmentFamily.BABYAI,
GameId.BABYAI_ONEROOM_S8: EnvironmentFamily.BABYAI,
GameId.BABYAI_MOVETWOACROSS_S8N9: EnvironmentFamily.BABYAI,
GameId.BABYAI_SYNTH: EnvironmentFamily.BABYAI,
GameId.BABYAI_SYNTHLOC: EnvironmentFamily.BABYAI,
GameId.BABYAI_SYNTHSEQ: EnvironmentFamily.BABYAI,
GameId.BABYAI_MINIBOSSLEVEL: EnvironmentFamily.BABYAI,
GameId.BABYAI_BOSSLEVEL: EnvironmentFamily.BABYAI,
GameId.BABYAI_BOSSLEVEL_NOUNLOCK: EnvironmentFamily.BABYAI,
GameId.VIZDOOM_BASIC: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_DEADLY_CORRIDOR: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_DEFEND_THE_CENTER: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_DEFEND_THE_LINE: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_HEALTH_GATHERING: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_HEALTH_GATHERING_SUPREME: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_MY_WAY_HOME: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_PREDICT_POSITION: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_TAKE_COVER: EnvironmentFamily.VIZDOOM,
GameId.VIZDOOM_DEATHMATCH: EnvironmentFamily.VIZDOOM,
GameId.CHESS: EnvironmentFamily.PETTINGZOO_CLASSIC,
GameId.CONNECT_FOUR: EnvironmentFamily.PETTINGZOO_CLASSIC,
GameId.GO: EnvironmentFamily.PETTINGZOO_CLASSIC,
GameId.TIC_TAC_TOE: EnvironmentFamily.PETTINGZOO_CLASSIC,
# MiniHack environments
GameId.MINIHACK_ROOM_5X5: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_ROOM_15X15: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_CORRIDOR_R2: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_CORRIDOR_R3: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_CORRIDOR_R5: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_MAZEWALK_9X9: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_MAZEWALK_15X15: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_MAZEWALK_45X19: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_RIVER: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_RIVER_NARROW: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_EAT: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_WEAR: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_WIELD: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_ZAP: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_READ: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_QUAFF: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_PUTON: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_LAVACROSS: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_WOD_EASY: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_WOD_MEDIUM: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_WOD_HARD: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_EXPLOREMAZE_EASY: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_EXPLOREMAZE_HARD: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_HIDENSEEK: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_MEMENTO_F2: EnvironmentFamily.MINIHACK,
GameId.MINIHACK_MEMENTO_F4: EnvironmentFamily.MINIHACK,
# NetHack (full game) environments
GameId.NETHACK_FULL: EnvironmentFamily.NETHACK,
GameId.NETHACK_SCORE: EnvironmentFamily.NETHACK,
GameId.NETHACK_STAIRCASE: EnvironmentFamily.NETHACK,
GameId.NETHACK_STAIRCASE_PET: EnvironmentFamily.NETHACK,
GameId.NETHACK_ORACLE: EnvironmentFamily.NETHACK,
GameId.NETHACK_GOLD: EnvironmentFamily.NETHACK,
GameId.NETHACK_EAT: EnvironmentFamily.NETHACK,
GameId.NETHACK_SCOUT: EnvironmentFamily.NETHACK,
# Crafter environments
GameId.CRAFTER_REWARD: EnvironmentFamily.CRAFTER,
GameId.CRAFTER_NO_REWARD: EnvironmentFamily.CRAFTER,
# TextWorld environments (text-based games)
GameId.TEXTWORLD_SIMPLE: EnvironmentFamily.TEXTWORLD,
GameId.TEXTWORLD_COIN_COLLECTOR: EnvironmentFamily.TEXTWORLD,
GameId.TEXTWORLD_TREASURE_HUNTER: EnvironmentFamily.TEXTWORLD,
GameId.TEXTWORLD_COOKING: EnvironmentFamily.TEXTWORLD,
GameId.TEXTWORLD_CUSTOM: EnvironmentFamily.TEXTWORLD,
# BabaIsAI environments (rule manipulation puzzles)
GameId.BABAISAI_DEFAULT: EnvironmentFamily.BABAISAI,
# Procgen environments (16 procedurally generated games)
GameId.PROCGEN_BIGFISH: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_BOSSFIGHT: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_CAVEFLYER: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_CHASER: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_CLIMBER: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_COINRUN: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_DODGEBALL: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_FRUITBOT: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_HEIST: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_JUMPER: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_LEAPER: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_MAZE: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_MINER: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_NINJA: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_PLUNDER: EnvironmentFamily.PROCGEN,
GameId.PROCGEN_STARPILOT: EnvironmentFamily.PROCGEN,
# Jumanji Logic Puzzle Environments
GameId.JUMANJI_GAME2048: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_MINESWEEPER: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_RUBIKS_CUBE: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_SLIDING_PUZZLE: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_SUDOKU: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_GRAPH_COLORING: EnvironmentFamily.JUMANJI,
# Jumanji Phase 2: Packing
GameId.JUMANJI_BINPACK: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_FLATPACK: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_JOBSHOP: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_KNAPSACK: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_TETRIS: EnvironmentFamily.JUMANJI,
# Jumanji Phase 3: Routing
GameId.JUMANJI_CLEANER: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_CONNECTOR: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_CVRP: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_MAZE: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_MMST: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_MULTI_CVRP: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_PACMAN: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_ROBOT_WAREHOUSE: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_SNAKE: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_SOKOBAN: EnvironmentFamily.JUMANJI,
GameId.JUMANJI_TSP: EnvironmentFamily.JUMANJI,
# PyBullet Drones
GameId.PYBULLET_HOVER_AVIARY: EnvironmentFamily.PYBULLET_DRONES,
GameId.PYBULLET_MULTIHOVER_AVIARY: EnvironmentFamily.PYBULLET_DRONES,
GameId.PYBULLET_CTRL_AVIARY: EnvironmentFamily.PYBULLET_DRONES,
GameId.PYBULLET_VELOCITY_AVIARY: EnvironmentFamily.PYBULLET_DRONES,
# OpenSpiel + custom draughts variants (all under open_spiel family)
GameId.OPEN_SPIEL_CHECKERS: EnvironmentFamily.OPEN_SPIEL,
GameId.AMERICAN_CHECKERS: EnvironmentFamily.OPEN_SPIEL, # Custom implementation
GameId.RUSSIAN_CHECKERS: EnvironmentFamily.OPEN_SPIEL, # Custom implementation
GameId.INTERNATIONAL_DRAUGHTS: EnvironmentFamily.OPEN_SPIEL, # Custom implementation
# MOSAIC MultiGrid (PyPI: mosaic-multigrid - competitive team-based)
GameId.MOSAIC_MULTIGRID_SOCCER: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_COLLECT: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_COLLECT2VS2: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_COLLECT_1VS1: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_SOCCER_2VS2_INDAGOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_SOCCER_1VS1_INDAGOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_COLLECT_INDAGOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_COLLECT2VS2_INDAGOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_COLLECT_1VS1_INDAGOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
# IndAgObs + TeamObs Basketball (v4.0.0)
GameId.MOSAIC_MULTIGRID_BASKETBALL_INDAGOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_BASKETBALL_TEAMOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
# TeamObs variants (v4.0.0)
GameId.MOSAIC_MULTIGRID_SOCCER_2VS2_TEAMOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_COLLECT2VS2_TEAMOBS: EnvironmentFamily.MOSAIC_MULTIGRID,
# Solo variants (v6.0.0)
GameId.MOSAIC_MULTIGRID_SOCCER_SOLO_GREEN: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_SOCCER_SOLO_BLUE: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_BASKETBALL_SOLO_GREEN: EnvironmentFamily.MOSAIC_MULTIGRID,
GameId.MOSAIC_MULTIGRID_BASKETBALL_SOLO_BLUE: EnvironmentFamily.MOSAIC_MULTIGRID,
# INI MultiGrid (Local: cooperative exploration)
GameId.INI_MULTIGRID_BLOCKED_UNLOCK_PICKUP: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_EMPTY_5X5: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_EMPTY_RANDOM_5X5: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_EMPTY_6X6: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_EMPTY_RANDOM_6X6: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_EMPTY_8X8: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_EMPTY_16X16: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_LOCKED_HALLWAY_2ROOMS: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_LOCKED_HALLWAY_4ROOMS: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_LOCKED_HALLWAY_6ROOMS: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_PLAYGROUND: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_RED_BLUE_DOORS_6X6: EnvironmentFamily.INI_MULTIGRID,
GameId.INI_MULTIGRID_RED_BLUE_DOORS_8X8: EnvironmentFamily.INI_MULTIGRID,
# Melting Pot (all 49 multi-agent social scenarios)
GameId.MELTINGPOT_ALLELOPATHIC_HARVEST__OPEN: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__ARENA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__REPEATED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_BOAT_RACE__EIGHT_RACES: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES_WITH_PLENTIFUL_DISTRACTORS: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES_WITH_DISTRACTORS: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_CHICKEN_IN_THE_MATRIX__ARENA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_CHICKEN_IN_THE_MATRIX__REPEATED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_CLEAN_UP: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COINS: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__ASYMMETRIC: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CIRCUIT: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CRAMPED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CROWDED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__FIGURE_EIGHT: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__FORCED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__RING: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COMMONS_HARVEST__CLOSED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COMMONS_HARVEST__OPEN: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COMMONS_HARVEST__PARTNERSHIP: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_COOP_MINING: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_DAYCARE: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_EXTERNALITY_MUSHROOMS__DENSE: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_FACTORY_COMMONS__EITHER_OR: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_FRUIT_MARKET__CONCENTRIC_RIVERS: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_GIFT_REFINEMENTS: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_HIDDEN_AGENDA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PAINTBALL__CAPTURE_THE_FLAG: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PAINTBALL__KING_OF_THE_HILL: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PREDATOR_PREY__ALLEY_HUNT: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PREDATOR_PREY__OPEN: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PREDATOR_PREY__ORCHARD: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PREDATOR_PREY__RANDOM_FOREST: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__ARENA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__REPEATED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__ARENA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__REPEATED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__ARENA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__REPEATED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ARENA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ONE_SHOT: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__REPEATED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__ARENA: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__REPEATED: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_TERRITORY__INSIDE_OUT: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_TERRITORY__OPEN: EnvironmentFamily.MELTINGPOT,
GameId.MELTINGPOT_TERRITORY__ROOMS: EnvironmentFamily.MELTINGPOT,
# Overcooked-AI (cooperative cooking)
GameId.OVERCOOKED_CRAMPED_ROOM: EnvironmentFamily.OVERCOOKED,
GameId.OVERCOOKED_ASYMMETRIC_ADVANTAGES: EnvironmentFamily.OVERCOOKED,
GameId.OVERCOOKED_COORDINATION_RING: EnvironmentFamily.OVERCOOKED,
GameId.OVERCOOKED_FORCED_COORDINATION: EnvironmentFamily.OVERCOOKED,
GameId.OVERCOOKED_COUNTER_CIRCUIT: EnvironmentFamily.OVERCOOKED,
# SMAC v1 (StarCraft Multi-Agent Challenge - hand-designed maps)
GameId.SMAC_3M: EnvironmentFamily.SMAC,
GameId.SMAC_8M: EnvironmentFamily.SMAC,
GameId.SMAC_2S3Z: EnvironmentFamily.SMAC,
GameId.SMAC_3S5Z: EnvironmentFamily.SMAC,
GameId.SMAC_5M_VS_6M: EnvironmentFamily.SMAC,
GameId.SMAC_MMM2: EnvironmentFamily.SMAC,
# SMACv2 (procedural unit generation)
GameId.SMACV2_TERRAN: EnvironmentFamily.SMACV2,
GameId.SMACV2_PROTOSS: EnvironmentFamily.SMACV2,
GameId.SMACV2_ZERG: EnvironmentFamily.SMACV2,
# RWARE (Robotic Warehouse)
GameId.RWARE_TINY_2AG: EnvironmentFamily.RWARE,
GameId.RWARE_TINY_4AG: EnvironmentFamily.RWARE,
GameId.RWARE_SMALL_2AG: EnvironmentFamily.RWARE,
GameId.RWARE_SMALL_4AG: EnvironmentFamily.RWARE,
GameId.RWARE_MEDIUM_2AG: EnvironmentFamily.RWARE,
GameId.RWARE_MEDIUM_4AG: EnvironmentFamily.RWARE,
GameId.RWARE_MEDIUM_4AG_EASY: EnvironmentFamily.RWARE,
GameId.RWARE_MEDIUM_4AG_HARD: EnvironmentFamily.RWARE,
GameId.RWARE_LARGE_4AG: EnvironmentFamily.RWARE,
GameId.RWARE_LARGE_4AG_HARD: EnvironmentFamily.RWARE,
GameId.RWARE_LARGE_8AG: EnvironmentFamily.RWARE,
GameId.RWARE_LARGE_8AG_HARD: EnvironmentFamily.RWARE,
}
DEFAULT_RENDER_MODES: dict[GameId, RenderMode] = {
GameId.FROZEN_LAKE: RenderMode.GRID,
GameId.FROZEN_LAKE_V2: RenderMode.GRID,
GameId.CLIFF_WALKING: RenderMode.GRID,
GameId.TAXI: RenderMode.GRID,
GameId.BLACKJACK: RenderMode.RGB_ARRAY,
GameId.LUNAR_LANDER: RenderMode.RGB_ARRAY,
GameId.CAR_RACING: RenderMode.RGB_ARRAY,
GameId.BIPEDAL_WALKER: RenderMode.RGB_ARRAY,
GameId.CART_POLE: RenderMode.RGB_ARRAY,
GameId.ACROBOT: RenderMode.RGB_ARRAY,
GameId.MOUNTAIN_CAR: RenderMode.RGB_ARRAY,
GameId.PONG_NO_FRAMESKIP: RenderMode.RGB_ARRAY,
GameId.BREAKOUT_NO_FRAMESKIP: RenderMode.RGB_ARRAY,
GameId.ADVENTURE_V4: RenderMode.RGB_ARRAY,
GameId.ALE_ADVENTURE_V5: RenderMode.RGB_ARRAY,
GameId.AIR_RAID_V4: RenderMode.RGB_ARRAY,
GameId.ALE_AIR_RAID_V5: RenderMode.RGB_ARRAY,
GameId.ASSAULT_V4: RenderMode.RGB_ARRAY,
GameId.ALE_ASSAULT_V5: RenderMode.RGB_ARRAY,
GameId.ANT: RenderMode.RGB_ARRAY,
GameId.HALF_CHEETAH: RenderMode.RGB_ARRAY,
GameId.HOPPER: RenderMode.RGB_ARRAY,
GameId.HUMANOID: RenderMode.RGB_ARRAY,
GameId.HUMANOID_STANDUP: RenderMode.RGB_ARRAY,
GameId.INVERTED_DOUBLE_PENDULUM: RenderMode.RGB_ARRAY,
GameId.INVERTED_PENDULUM: RenderMode.RGB_ARRAY,
GameId.PUSHER: RenderMode.RGB_ARRAY,
GameId.REACHER: RenderMode.RGB_ARRAY,
GameId.SWIMMER: RenderMode.RGB_ARRAY,
GameId.WALKER2D: RenderMode.RGB_ARRAY,
GameId.MINIGRID_EMPTY_5x5: RenderMode.RGB_ARRAY,
GameId.MINIGRID_EMPTY_RANDOM_5x5: RenderMode.RGB_ARRAY,
GameId.MINIGRID_EMPTY_6x6: RenderMode.RGB_ARRAY,
GameId.MINIGRID_EMPTY_RANDOM_6x6: RenderMode.RGB_ARRAY,
GameId.MINIGRID_EMPTY_8x8: RenderMode.RGB_ARRAY,
GameId.MINIGRID_EMPTY_16x16: RenderMode.RGB_ARRAY,
GameId.MINIGRID_DOORKEY_5x5: RenderMode.RGB_ARRAY,
GameId.MINIGRID_DOORKEY_6x6: RenderMode.RGB_ARRAY,
GameId.MINIGRID_DOORKEY_8x8: RenderMode.RGB_ARRAY,
GameId.MINIGRID_DOORKEY_16x16: RenderMode.RGB_ARRAY,
GameId.MINIGRID_LAVAGAP_S5: RenderMode.RGB_ARRAY,
GameId.MINIGRID_LAVAGAP_S6: RenderMode.RGB_ARRAY,
GameId.MINIGRID_LAVAGAP_S7: RenderMode.RGB_ARRAY,
GameId.MINIGRID_LAVA_CROSSING_S9N1: RenderMode.RGB_ARRAY,
GameId.MINIGRID_LAVA_CROSSING_S9N2: RenderMode.RGB_ARRAY,
GameId.MINIGRID_LAVA_CROSSING_S9N3: RenderMode.RGB_ARRAY,
GameId.MINIGRID_LAVA_CROSSING_S11N5: RenderMode.RGB_ARRAY,
GameId.MINIGRID_SIMPLE_CROSSING_S9N1: RenderMode.RGB_ARRAY,
GameId.MINIGRID_SIMPLE_CROSSING_S9N2: RenderMode.RGB_ARRAY,
GameId.MINIGRID_SIMPLE_CROSSING_S9N3: RenderMode.RGB_ARRAY,
GameId.MINIGRID_SIMPLE_CROSSING_S11N5: RenderMode.RGB_ARRAY,
GameId.MINIGRID_REDBLUE_DOORS_6x6: RenderMode.RGB_ARRAY,
GameId.MINIGRID_REDBLUE_DOORS_8x8: RenderMode.RGB_ARRAY,
# BabyAI environments
GameId.BABYAI_GOTO_REDBALL_GREY: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_REDBALL: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_REDBALL_NODISTS: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_OBJ: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_LOCAL: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_IMPUNLOCK: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_SEQ: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_REDBLUEBALL: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_DOOR: RenderMode.RGB_ARRAY,
GameId.BABYAI_GOTO_OBJDOOR: RenderMode.RGB_ARRAY,
GameId.BABYAI_OPEN: RenderMode.RGB_ARRAY,
GameId.BABYAI_OPEN_REDDOOR: RenderMode.RGB_ARRAY,
GameId.BABYAI_OPEN_DOOR: RenderMode.RGB_ARRAY,
GameId.BABYAI_OPEN_TWODOORS: RenderMode.RGB_ARRAY,
GameId.BABYAI_OPEN_DOORSORDER_N2: RenderMode.RGB_ARRAY,
GameId.BABYAI_OPEN_DOORSORDER_N4: RenderMode.RGB_ARRAY,
GameId.BABYAI_PICKUP: RenderMode.RGB_ARRAY,
GameId.BABYAI_UNBLOCK_PICKUP: RenderMode.RGB_ARRAY,
GameId.BABYAI_PICKUP_LOC: RenderMode.RGB_ARRAY,
GameId.BABYAI_PICKUP_DIST: RenderMode.RGB_ARRAY,
GameId.BABYAI_PICKUP_ABOVE: RenderMode.RGB_ARRAY,
GameId.BABYAI_UNLOCK: RenderMode.RGB_ARRAY,
GameId.BABYAI_UNLOCK_LOCAL: RenderMode.RGB_ARRAY,
GameId.BABYAI_KEY_INBOX: RenderMode.RGB_ARRAY,
GameId.BABYAI_UNLOCK_PICKUP: RenderMode.RGB_ARRAY,
GameId.BABYAI_BLOCKED_UNLOCK_PICKUP: RenderMode.RGB_ARRAY,
GameId.BABYAI_UNLOCK_TO_UNLOCK: RenderMode.RGB_ARRAY,
GameId.BABYAI_PUTNEXT_LOCAL: RenderMode.RGB_ARRAY,
GameId.BABYAI_PUTNEXT: RenderMode.RGB_ARRAY,
GameId.BABYAI_ACTION_OBJDOOR: RenderMode.RGB_ARRAY,
GameId.BABYAI_FINDOBJ_S5: RenderMode.RGB_ARRAY,
GameId.BABYAI_KEYCORRIDOR_S3R1: RenderMode.RGB_ARRAY,
GameId.BABYAI_KEYCORRIDOR_S3R2: RenderMode.RGB_ARRAY,
GameId.BABYAI_KEYCORRIDOR_S3R3: RenderMode.RGB_ARRAY,
GameId.BABYAI_ONEROOM_S8: RenderMode.RGB_ARRAY,
GameId.BABYAI_MOVETWOACROSS_S8N9: RenderMode.RGB_ARRAY,
GameId.BABYAI_SYNTH: RenderMode.RGB_ARRAY,
GameId.BABYAI_SYNTHLOC: RenderMode.RGB_ARRAY,
GameId.BABYAI_SYNTHSEQ: RenderMode.RGB_ARRAY,
GameId.BABYAI_MINIBOSSLEVEL: RenderMode.RGB_ARRAY,
GameId.BABYAI_BOSSLEVEL: RenderMode.RGB_ARRAY,
GameId.BABYAI_BOSSLEVEL_NOUNLOCK: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_BASIC: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_DEADLY_CORRIDOR: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_DEFEND_THE_CENTER: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_DEFEND_THE_LINE: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_HEALTH_GATHERING: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_HEALTH_GATHERING_SUPREME: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_MY_WAY_HOME: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_PREDICT_POSITION: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_TAKE_COVER: RenderMode.RGB_ARRAY,
GameId.VIZDOOM_DEATHMATCH: RenderMode.RGB_ARRAY,
# Board games use custom Qt widget rendering, not RGB_ARRAY
GameId.CHESS: RenderMode.RGB_ARRAY, # Fallback, but we use InteractiveChessBoard
GameId.CONNECT_FOUR: RenderMode.RGB_ARRAY, # Fallback, but we use InteractiveConnectFourBoard
GameId.GO: RenderMode.RGB_ARRAY, # Fallback, but we use InteractiveGoBoard
GameId.TIC_TAC_TOE: RenderMode.RGB_ARRAY, # Fallback, but we use InteractiveTicTacToeBoard
# MiniHack - pixel rendering (16x16 tiles)
GameId.MINIHACK_ROOM_5X5: RenderMode.RGB_ARRAY,
GameId.MINIHACK_ROOM_15X15: RenderMode.RGB_ARRAY,
GameId.MINIHACK_CORRIDOR_R2: RenderMode.RGB_ARRAY,
GameId.MINIHACK_CORRIDOR_R3: RenderMode.RGB_ARRAY,
GameId.MINIHACK_CORRIDOR_R5: RenderMode.RGB_ARRAY,
GameId.MINIHACK_MAZEWALK_9X9: RenderMode.RGB_ARRAY,
GameId.MINIHACK_MAZEWALK_15X15: RenderMode.RGB_ARRAY,
GameId.MINIHACK_MAZEWALK_45X19: RenderMode.RGB_ARRAY,
GameId.MINIHACK_RIVER: RenderMode.RGB_ARRAY,
GameId.MINIHACK_RIVER_NARROW: RenderMode.RGB_ARRAY,
GameId.MINIHACK_EAT: RenderMode.RGB_ARRAY,
GameId.MINIHACK_WEAR: RenderMode.RGB_ARRAY,
GameId.MINIHACK_WIELD: RenderMode.RGB_ARRAY,
GameId.MINIHACK_ZAP: RenderMode.RGB_ARRAY,
GameId.MINIHACK_READ: RenderMode.RGB_ARRAY,
GameId.MINIHACK_QUAFF: RenderMode.RGB_ARRAY,
GameId.MINIHACK_PUTON: RenderMode.RGB_ARRAY,
GameId.MINIHACK_LAVACROSS: RenderMode.RGB_ARRAY,
GameId.MINIHACK_WOD_EASY: RenderMode.RGB_ARRAY,
GameId.MINIHACK_WOD_MEDIUM: RenderMode.RGB_ARRAY,
GameId.MINIHACK_WOD_HARD: RenderMode.RGB_ARRAY,
GameId.MINIHACK_EXPLOREMAZE_EASY: RenderMode.RGB_ARRAY,
GameId.MINIHACK_EXPLOREMAZE_HARD: RenderMode.RGB_ARRAY,
GameId.MINIHACK_HIDENSEEK: RenderMode.RGB_ARRAY,
GameId.MINIHACK_MEMENTO_F2: RenderMode.RGB_ARRAY,
GameId.MINIHACK_MEMENTO_F4: RenderMode.RGB_ARRAY,
# NetHack - pixel rendering
GameId.NETHACK_FULL: RenderMode.RGB_ARRAY,
GameId.NETHACK_SCORE: RenderMode.RGB_ARRAY,
GameId.NETHACK_STAIRCASE: RenderMode.RGB_ARRAY,
GameId.NETHACK_STAIRCASE_PET: RenderMode.RGB_ARRAY,
GameId.NETHACK_ORACLE: RenderMode.RGB_ARRAY,
GameId.NETHACK_GOLD: RenderMode.RGB_ARRAY,
GameId.NETHACK_EAT: RenderMode.RGB_ARRAY,
GameId.NETHACK_SCOUT: RenderMode.RGB_ARRAY,
# Crafter - RGB observation (64x64x3)
GameId.CRAFTER_REWARD: RenderMode.RGB_ARRAY,
GameId.CRAFTER_NO_REWARD: RenderMode.RGB_ARRAY,
# TextWorld - ANSI text output
GameId.TEXTWORLD_SIMPLE: RenderMode.ANSI,
GameId.TEXTWORLD_COIN_COLLECTOR: RenderMode.ANSI,
GameId.TEXTWORLD_TREASURE_HUNTER: RenderMode.ANSI,
GameId.TEXTWORLD_COOKING: RenderMode.ANSI,
GameId.TEXTWORLD_CUSTOM: RenderMode.ANSI,
# BabaIsAI - RGB observation
GameId.BABAISAI_DEFAULT: RenderMode.RGB_ARRAY,
# Procgen - RGB observation (64x64x3)
GameId.PROCGEN_BIGFISH: RenderMode.RGB_ARRAY,
GameId.PROCGEN_BOSSFIGHT: RenderMode.RGB_ARRAY,
GameId.PROCGEN_CAVEFLYER: RenderMode.RGB_ARRAY,
GameId.PROCGEN_CHASER: RenderMode.RGB_ARRAY,
GameId.PROCGEN_CLIMBER: RenderMode.RGB_ARRAY,
GameId.PROCGEN_COINRUN: RenderMode.RGB_ARRAY,
GameId.PROCGEN_DODGEBALL: RenderMode.RGB_ARRAY,
GameId.PROCGEN_FRUITBOT: RenderMode.RGB_ARRAY,
GameId.PROCGEN_HEIST: RenderMode.RGB_ARRAY,
GameId.PROCGEN_JUMPER: RenderMode.RGB_ARRAY,
GameId.PROCGEN_LEAPER: RenderMode.RGB_ARRAY,
GameId.PROCGEN_MAZE: RenderMode.RGB_ARRAY,
GameId.PROCGEN_MINER: RenderMode.RGB_ARRAY,
GameId.PROCGEN_NINJA: RenderMode.RGB_ARRAY,
GameId.PROCGEN_PLUNDER: RenderMode.RGB_ARRAY,
GameId.PROCGEN_STARPILOT: RenderMode.RGB_ARRAY,
# Jumanji Logic Puzzle Environments
GameId.JUMANJI_GAME2048: RenderMode.RGB_ARRAY,
GameId.JUMANJI_MINESWEEPER: RenderMode.RGB_ARRAY,
GameId.JUMANJI_RUBIKS_CUBE: RenderMode.RGB_ARRAY,
GameId.JUMANJI_SLIDING_PUZZLE: RenderMode.RGB_ARRAY,
GameId.JUMANJI_SUDOKU: RenderMode.RGB_ARRAY,
GameId.JUMANJI_GRAPH_COLORING: RenderMode.RGB_ARRAY,
# Jumanji Phase 2: Packing
GameId.JUMANJI_BINPACK: RenderMode.RGB_ARRAY,
GameId.JUMANJI_FLATPACK: RenderMode.RGB_ARRAY,
GameId.JUMANJI_JOBSHOP: RenderMode.RGB_ARRAY,
GameId.JUMANJI_KNAPSACK: RenderMode.RGB_ARRAY,
GameId.JUMANJI_TETRIS: RenderMode.RGB_ARRAY,
# Jumanji Phase 3: Routing
GameId.JUMANJI_CLEANER: RenderMode.RGB_ARRAY,
GameId.JUMANJI_CONNECTOR: RenderMode.RGB_ARRAY,
GameId.JUMANJI_CVRP: RenderMode.RGB_ARRAY,
GameId.JUMANJI_MAZE: RenderMode.RGB_ARRAY,
GameId.JUMANJI_MMST: RenderMode.RGB_ARRAY,
GameId.JUMANJI_MULTI_CVRP: RenderMode.RGB_ARRAY,
GameId.JUMANJI_PACMAN: RenderMode.RGB_ARRAY,
GameId.JUMANJI_ROBOT_WAREHOUSE: RenderMode.RGB_ARRAY,
GameId.JUMANJI_SNAKE: RenderMode.RGB_ARRAY,
GameId.JUMANJI_SOKOBAN: RenderMode.RGB_ARRAY,
GameId.JUMANJI_TSP: RenderMode.RGB_ARRAY,
# PyBullet Drones (3D physics simulation with PyBullet rendering)
GameId.PYBULLET_HOVER_AVIARY: RenderMode.RGB_ARRAY,
GameId.PYBULLET_MULTIHOVER_AVIARY: RenderMode.RGB_ARRAY,
GameId.PYBULLET_CTRL_AVIARY: RenderMode.RGB_ARRAY,
GameId.PYBULLET_VELOCITY_AVIARY: RenderMode.RGB_ARRAY,
# OpenSpiel (board games rendered via Shimmy)
GameId.OPEN_SPIEL_CHECKERS: RenderMode.RGB_ARRAY,
# Draughts/Checkers variants
GameId.AMERICAN_CHECKERS: RenderMode.RGB_ARRAY,
GameId.RUSSIAN_CHECKERS: RenderMode.RGB_ARRAY,
GameId.INTERNATIONAL_DRAUGHTS: RenderMode.RGB_ARRAY,
# mosaic_multigrid (multi-agent grid environments)
GameId.MOSAIC_MULTIGRID_SOCCER: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_COLLECT: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_COLLECT2VS2: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_COLLECT_1VS1: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_SOCCER_2VS2_INDAGOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_SOCCER_1VS1_INDAGOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_COLLECT_INDAGOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_COLLECT2VS2_INDAGOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_COLLECT_1VS1_INDAGOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_SOCCER_2VS2_TEAMOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_COLLECT2VS2_TEAMOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_BASKETBALL_INDAGOBS: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_BASKETBALL_TEAMOBS: RenderMode.RGB_ARRAY,
# Solo variants (v6.0.0)
GameId.MOSAIC_MULTIGRID_SOCCER_SOLO_GREEN: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_SOCCER_SOLO_BLUE: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_BASKETBALL_SOLO_GREEN: RenderMode.RGB_ARRAY,
GameId.MOSAIC_MULTIGRID_BASKETBALL_SOLO_BLUE: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_BLOCKED_UNLOCK_PICKUP: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_EMPTY_5X5: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_EMPTY_RANDOM_5X5: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_EMPTY_6X6: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_EMPTY_RANDOM_6X6: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_EMPTY_8X8: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_EMPTY_16X16: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_LOCKED_HALLWAY_2ROOMS: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_LOCKED_HALLWAY_4ROOMS: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_LOCKED_HALLWAY_6ROOMS: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_PLAYGROUND: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_RED_BLUE_DOORS_6X6: RenderMode.RGB_ARRAY,
GameId.INI_MULTIGRID_RED_BLUE_DOORS_8X8: RenderMode.RGB_ARRAY,
# Melting Pot (all 49 multi-agent social scenarios via Shimmy)
GameId.MELTINGPOT_ALLELOPATHIC_HARVEST__OPEN: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__ARENA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__REPEATED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_BOAT_RACE__EIGHT_RACES: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES_WITH_PLENTIFUL_DISTRACTORS: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES_WITH_DISTRACTORS: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_CHICKEN_IN_THE_MATRIX__ARENA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_CHICKEN_IN_THE_MATRIX__REPEATED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_CLEAN_UP: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COINS: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__ASYMMETRIC: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CIRCUIT: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CRAMPED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CROWDED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__FIGURE_EIGHT: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__FORCED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COLLABORATIVE_COOKING__RING: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COMMONS_HARVEST__CLOSED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COMMONS_HARVEST__OPEN: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COMMONS_HARVEST__PARTNERSHIP: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_COOP_MINING: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_DAYCARE: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_EXTERNALITY_MUSHROOMS__DENSE: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_FACTORY_COMMONS__EITHER_OR: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_FRUIT_MARKET__CONCENTRIC_RIVERS: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_GIFT_REFINEMENTS: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_HIDDEN_AGENDA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PAINTBALL__CAPTURE_THE_FLAG: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PAINTBALL__KING_OF_THE_HILL: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PREDATOR_PREY__ALLEY_HUNT: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PREDATOR_PREY__OPEN: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PREDATOR_PREY__ORCHARD: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PREDATOR_PREY__RANDOM_FOREST: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__ARENA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__REPEATED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__ARENA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__REPEATED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__ARENA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__REPEATED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ARENA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ONE_SHOT: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__REPEATED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__ARENA: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__REPEATED: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_TERRITORY__INSIDE_OUT: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_TERRITORY__OPEN: RenderMode.RGB_ARRAY,
GameId.MELTINGPOT_TERRITORY__ROOMS: RenderMode.RGB_ARRAY,
# Overcooked-AI (cooperative cooking)
GameId.OVERCOOKED_CRAMPED_ROOM: RenderMode.RGB_ARRAY,
GameId.OVERCOOKED_ASYMMETRIC_ADVANTAGES: RenderMode.RGB_ARRAY,
GameId.OVERCOOKED_COORDINATION_RING: RenderMode.RGB_ARRAY,
GameId.OVERCOOKED_FORCED_COORDINATION: RenderMode.RGB_ARRAY,
GameId.OVERCOOKED_COUNTER_CIRCUIT: RenderMode.RGB_ARRAY,
# SMAC v1 (StarCraft Multi-Agent Challenge)
GameId.SMAC_3M: RenderMode.RGB_ARRAY,
GameId.SMAC_8M: RenderMode.RGB_ARRAY,
GameId.SMAC_2S3Z: RenderMode.RGB_ARRAY,
GameId.SMAC_3S5Z: RenderMode.RGB_ARRAY,
GameId.SMAC_5M_VS_6M: RenderMode.RGB_ARRAY,
GameId.SMAC_MMM2: RenderMode.RGB_ARRAY,
# SMACv2 (procedural generation)
GameId.SMACV2_TERRAN: RenderMode.RGB_ARRAY,
GameId.SMACV2_PROTOSS: RenderMode.RGB_ARRAY,
GameId.SMACV2_ZERG: RenderMode.RGB_ARRAY,
# RWARE (Robotic Warehouse)
GameId.RWARE_TINY_2AG: RenderMode.RGB_ARRAY,
GameId.RWARE_TINY_4AG: RenderMode.RGB_ARRAY,
GameId.RWARE_SMALL_2AG: RenderMode.RGB_ARRAY,
GameId.RWARE_SMALL_4AG: RenderMode.RGB_ARRAY,
GameId.RWARE_MEDIUM_2AG: RenderMode.RGB_ARRAY,
GameId.RWARE_MEDIUM_4AG: RenderMode.RGB_ARRAY,
GameId.RWARE_MEDIUM_4AG_EASY: RenderMode.RGB_ARRAY,
GameId.RWARE_MEDIUM_4AG_HARD: RenderMode.RGB_ARRAY,
GameId.RWARE_LARGE_4AG: RenderMode.RGB_ARRAY,
GameId.RWARE_LARGE_4AG_HARD: RenderMode.RGB_ARRAY,
GameId.RWARE_LARGE_8AG: RenderMode.RGB_ARRAY,
GameId.RWARE_LARGE_8AG_HARD: RenderMode.RGB_ARRAY,
}
DEFAULT_CONTROL_MODES: dict[GameId, Iterable[ControlMode]] = {
GameId.FROZEN_LAKE: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.FROZEN_LAKE_V2: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.CLIFF_WALKING: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.TAXI: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.BLACKJACK: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.LUNAR_LANDER: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.CAR_RACING: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.BIPEDAL_WALKER: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.CART_POLE: (ControlMode.AGENT_ONLY,),
GameId.ACROBOT: (ControlMode.AGENT_ONLY,),
GameId.MOUNTAIN_CAR: (ControlMode.AGENT_ONLY,),
GameId.PONG_NO_FRAMESKIP: (ControlMode.AGENT_ONLY,),
GameId.BREAKOUT_NO_FRAMESKIP: (ControlMode.AGENT_ONLY,),
GameId.ADVENTURE_V4: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.ALE_ADVENTURE_V5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.AIR_RAID_V4: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.ALE_AIR_RAID_V5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.ASSAULT_V4: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.ALE_ASSAULT_V5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.ANT: (ControlMode.AGENT_ONLY,),
GameId.HALF_CHEETAH: (ControlMode.AGENT_ONLY,),
GameId.HOPPER: (ControlMode.AGENT_ONLY,),
GameId.HUMANOID: (ControlMode.AGENT_ONLY,),
GameId.HUMANOID_STANDUP: (ControlMode.AGENT_ONLY,),
GameId.INVERTED_DOUBLE_PENDULUM: (ControlMode.AGENT_ONLY,),
GameId.INVERTED_PENDULUM: (ControlMode.AGENT_ONLY,),
GameId.PUSHER: (ControlMode.AGENT_ONLY,),
GameId.REACHER: (ControlMode.AGENT_ONLY,),
GameId.SWIMMER: (ControlMode.AGENT_ONLY,),
GameId.WALKER2D: (ControlMode.AGENT_ONLY,),
GameId.MINIGRID_EMPTY_5x5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_EMPTY_RANDOM_5x5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_EMPTY_6x6: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_EMPTY_RANDOM_6x6: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_EMPTY_8x8: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_EMPTY_16x16: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_DOORKEY_5x5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_DOORKEY_6x6: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_DOORKEY_8x8: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_DOORKEY_16x16: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_LAVAGAP_S5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_LAVAGAP_S6: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_LAVAGAP_S7: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_LAVA_CROSSING_S9N1: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_LAVA_CROSSING_S9N2: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_LAVA_CROSSING_S9N3: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_LAVA_CROSSING_S11N5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_SIMPLE_CROSSING_S9N1: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_SIMPLE_CROSSING_S9N2: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_SIMPLE_CROSSING_S9N3: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_SIMPLE_CROSSING_S11N5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_REDBLUE_DOORS_6x6: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.MINIGRID_REDBLUE_DOORS_8x8: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
ControlMode.MULTI_AGENT_COOP,
ControlMode.MULTI_AGENT_COMPETITIVE,
),
GameId.VIZDOOM_BASIC: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_DEADLY_CORRIDOR: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_DEFEND_THE_CENTER: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_DEFEND_THE_LINE: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_HEALTH_GATHERING: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_HEALTH_GATHERING_SUPREME: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_MY_WAY_HOME: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_PREDICT_POSITION: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_TAKE_COVER: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
GameId.VIZDOOM_DEATHMATCH: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
ControlMode.HYBRID_HUMAN_AGENT,
),
# Board games - Human Only for now (both players are human)
GameId.CHESS: (
ControlMode.HUMAN_ONLY,
),
GameId.CONNECT_FOUR: (
ControlMode.HUMAN_ONLY,
),
GameId.GO: (
ControlMode.HUMAN_ONLY,
),
GameId.TIC_TAC_TOE: (
ControlMode.HUMAN_ONLY,
),
# MiniHack - turn-based roguelike (supports Human Control)
GameId.MINIHACK_ROOM_5X5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_ROOM_15X15: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_CORRIDOR_R2: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_CORRIDOR_R3: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_CORRIDOR_R5: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_MAZEWALK_9X9: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_MAZEWALK_15X15: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_MAZEWALK_45X19: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_RIVER: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_RIVER_NARROW: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_EAT: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_WEAR: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_WIELD: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_ZAP: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_READ: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_QUAFF: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_PUTON: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_LAVACROSS: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_WOD_EASY: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_WOD_MEDIUM: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_WOD_HARD: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_EXPLOREMAZE_EASY: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_EXPLOREMAZE_HARD: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_HIDENSEEK: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_MEMENTO_F2: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.MINIHACK_MEMENTO_F4: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
# NetHack (full game) - turn-based roguelike
GameId.NETHACK_FULL: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.NETHACK_SCORE: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.NETHACK_STAIRCASE: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.NETHACK_STAIRCASE_PET: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.NETHACK_ORACLE: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.NETHACK_GOLD: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.NETHACK_EAT: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.NETHACK_SCOUT: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
# Crafter - turn-based open world survival (supports Human Control)
GameId.CRAFTER_REWARD: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
GameId.CRAFTER_NO_REWARD: (
ControlMode.HUMAN_ONLY,
ControlMode.AGENT_ONLY,
ControlMode.HYBRID_TURN_BASED,
),
# TextWorld - text-based adventure games (text command input)
GameId.TEXTWORLD_SIMPLE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.TEXTWORLD_COIN_COLLECTOR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.TEXTWORLD_TREASURE_HUNTER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.TEXTWORLD_COOKING: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.TEXTWORLD_CUSTOM: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# BabaIsAI - turn-based puzzle game (supports Human Control)
GameId.BABAISAI_DEFAULT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# Procgen - procedurally generated games (supports Human Control)
GameId.PROCGEN_BIGFISH: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_BOSSFIGHT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_CAVEFLYER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_CHASER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_CLIMBER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_COINRUN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_DODGEBALL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_FRUITBOT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_HEIST: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_JUMPER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_LEAPER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_MAZE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_MINER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_NINJA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_PLUNDER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.PROCGEN_STARPILOT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# Jumanji - JAX-based logic puzzle environments (turn-based discrete actions)
GameId.JUMANJI_GAME2048: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_MINESWEEPER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_RUBIKS_CUBE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_SLIDING_PUZZLE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_SUDOKU: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_GRAPH_COLORING: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# Jumanji Phase 2: Packing (turn-based discrete actions)
GameId.JUMANJI_BINPACK: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_FLATPACK: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_JOBSHOP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_KNAPSACK: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_TETRIS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# Jumanji Phase 3: Routing (turn-based discrete actions)
GameId.JUMANJI_CLEANER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_CONNECTOR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_CVRP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_MAZE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_MMST: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_MULTI_CVRP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_PACMAN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_ROBOT_WAREHOUSE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_SNAKE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_SOKOBAN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.JUMANJI_TSP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# BabyAI - language-grounded instruction following (same controls as MiniGrid)
GameId.BABYAI_GOTO_REDBALL_GREY: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_REDBALL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_REDBALL_NODISTS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_OBJ: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_LOCAL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_IMPUNLOCK: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_SEQ: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_REDBLUEBALL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_DOOR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_GOTO_OBJDOOR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_OPEN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_OPEN_REDDOOR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_OPEN_DOOR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_OPEN_TWODOORS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_OPEN_DOORSORDER_N2: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_OPEN_DOORSORDER_N4: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_PICKUP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_UNBLOCK_PICKUP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_PICKUP_LOC: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_PICKUP_DIST: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_PICKUP_ABOVE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_UNLOCK: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_UNLOCK_LOCAL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_KEY_INBOX: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_UNLOCK_PICKUP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_BLOCKED_UNLOCK_PICKUP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_UNLOCK_TO_UNLOCK: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_PUTNEXT_LOCAL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_PUTNEXT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_ACTION_OBJDOOR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_FINDOBJ_S5: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_KEYCORRIDOR_S3R1: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_KEYCORRIDOR_S3R2: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_KEYCORRIDOR_S3R3: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_ONEROOM_S8: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_MOVETWOACROSS_S8N9: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_SYNTH: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_SYNTHLOC: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_SYNTHSEQ: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_MINIBOSSLEVEL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_BOSSLEVEL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.BABYAI_BOSSLEVEL_NOUNLOCK: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# PyBullet Drones - Continuous control quadcopter environments
# Note: These require continuous actions (RPM/velocity), primarily agent-controlled
GameId.PYBULLET_HOVER_AVIARY: (ControlMode.AGENT_ONLY,),
GameId.PYBULLET_MULTIHOVER_AVIARY: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.PYBULLET_CTRL_AVIARY: (ControlMode.AGENT_ONLY,),
GameId.PYBULLET_VELOCITY_AVIARY: (ControlMode.AGENT_ONLY,),
# OpenSpiel - Turn-based board games via Shimmy
GameId.OPEN_SPIEL_CHECKERS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# Draughts/Checkers variants - Turn-based board games with proper rule implementations
GameId.AMERICAN_CHECKERS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.RUSSIAN_CHECKERS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
GameId.INTERNATIONAL_DRAUGHTS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.HYBRID_TURN_BASED),
# mosaic_multigrid - Multi-agent environments (simultaneous stepping, multi-human gameplay)
GameId.MOSAIC_MULTIGRID_SOCCER: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_COLLECT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_COLLECT2VS2: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_COLLECT_1VS1: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_SOCCER_2VS2_INDAGOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_SOCCER_1VS1_INDAGOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_COLLECT_INDAGOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_COLLECT2VS2_INDAGOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_COLLECT_1VS1_INDAGOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_SOCCER_2VS2_TEAMOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_COLLECT2VS2_TEAMOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_BASKETBALL_INDAGOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MOSAIC_MULTIGRID_BASKETBALL_TEAMOBS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
# Solo variants (v6.0.0) - single-agent, human or agent control only
GameId.MOSAIC_MULTIGRID_SOCCER_SOLO_GREEN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY),
GameId.MOSAIC_MULTIGRID_SOCCER_SOLO_BLUE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY),
GameId.MOSAIC_MULTIGRID_BASKETBALL_SOLO_GREEN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY),
GameId.MOSAIC_MULTIGRID_BASKETBALL_SOLO_BLUE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY),
GameId.INI_MULTIGRID_BLOCKED_UNLOCK_PICKUP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_EMPTY_5X5: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_EMPTY_RANDOM_5X5: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_EMPTY_6X6: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_EMPTY_RANDOM_6X6: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_EMPTY_8X8: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_EMPTY_16X16: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_LOCKED_HALLWAY_2ROOMS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_LOCKED_HALLWAY_4ROOMS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_LOCKED_HALLWAY_6ROOMS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_PLAYGROUND: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_RED_BLUE_DOORS_6X6: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.INI_MULTIGRID_RED_BLUE_DOORS_8X8: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
# Melting Pot - All 49 multi-agent social scenarios (parallel stepping, multi-human gameplay)
GameId.MELTINGPOT_ALLELOPATHIC_HARVEST__OPEN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__ARENA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_BACH_OR_STRAVINSKY_IN_THE_MATRIX__REPEATED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_BOAT_RACE__EIGHT_RACES: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_CHEMISTRY__THREE_METABOLIC_CYCLES_WITH_PLENTIFUL_DISTRACTORS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_CHEMISTRY__TWO_METABOLIC_CYCLES_WITH_DISTRACTORS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_CHICKEN_IN_THE_MATRIX__ARENA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_CHICKEN_IN_THE_MATRIX__REPEATED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_CLEAN_UP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COINS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_COLLABORATIVE_COOKING__ASYMMETRIC: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CIRCUIT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CRAMPED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COLLABORATIVE_COOKING__CROWDED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COLLABORATIVE_COOKING__FIGURE_EIGHT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COLLABORATIVE_COOKING__FORCED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COLLABORATIVE_COOKING__RING: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_COMMONS_HARVEST__CLOSED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_COMMONS_HARVEST__OPEN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_COMMONS_HARVEST__PARTNERSHIP: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_COOP_MINING: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_DAYCARE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_EXTERNALITY_MUSHROOMS__DENSE: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_FACTORY_COMMONS__EITHER_OR: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_FRUIT_MARKET__CONCENTRIC_RIVERS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_GIFT_REFINEMENTS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_HIDDEN_AGENDA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PAINTBALL__CAPTURE_THE_FLAG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PAINTBALL__KING_OF_THE_HILL: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PREDATOR_PREY__ALLEY_HUNT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PREDATOR_PREY__OPEN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PREDATOR_PREY__ORCHARD: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PREDATOR_PREY__RANDOM_FOREST: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__ARENA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PRISONERS_DILEMMA_IN_THE_MATRIX__REPEATED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__ARENA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_PURE_COORDINATION_IN_THE_MATRIX__REPEATED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__ARENA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_RATIONALIZABLE_COORDINATION_IN_THE_MATRIX__REPEATED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ARENA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__ONE_SHOT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_RUNNING_WITH_SCISSORS_IN_THE_MATRIX__REPEATED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__ARENA: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_STAG_HUNT_IN_THE_MATRIX__REPEATED: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.MELTINGPOT_TERRITORY__INSIDE_OUT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_TERRITORY__OPEN: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
GameId.MELTINGPOT_TERRITORY__ROOMS: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COMPETITIVE),
# Overcooked-AI - 2-agent cooperative cooking (multi-human gameplay)
GameId.OVERCOOKED_CRAMPED_ROOM: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.OVERCOOKED_ASYMMETRIC_ADVANTAGES: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.OVERCOOKED_COORDINATION_RING: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.OVERCOOKED_FORCED_COORDINATION: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.OVERCOOKED_COUNTER_CIRCUIT: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
# SMAC v1 - cooperative multi-agent micromanagement (no human control)
GameId.SMAC_3M: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.SMAC_8M: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.SMAC_2S3Z: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.SMAC_3S5Z: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.SMAC_5M_VS_6M: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.SMAC_MMM2: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
# SMACv2 - cooperative multi-agent with procedural generation
GameId.SMACV2_TERRAN: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.SMACV2_PROTOSS: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.SMACV2_ZERG: (ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
# RWARE (Robotic Warehouse) -- human play supported via keyboard
GameId.RWARE_TINY_2AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_TINY_4AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_SMALL_2AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_SMALL_4AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_MEDIUM_2AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_MEDIUM_4AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_MEDIUM_4AG_EASY: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_MEDIUM_4AG_HARD: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_LARGE_4AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_LARGE_4AG_HARD: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_LARGE_8AG: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
GameId.RWARE_LARGE_8AG_HARD: (ControlMode.HUMAN_ONLY, ControlMode.AGENT_ONLY, ControlMode.MULTI_AGENT_COOP),
}
# ─────────────────────────────────────────────────────────────────────────────
# Stepping Paradigm Mappings
# ─────────────────────────────────────────────────────────────────────────────
DEFAULT_PARADIGM_BY_FAMILY: dict[EnvironmentFamily, SteppingParadigm] = {
# Maps environment families to their default stepping paradigm.
# Adapters can override this by setting their own `stepping_paradigm` attribute.
EnvironmentFamily.TOY_TEXT: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.BOX2D: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.CLASSIC_CONTROL: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.ATARI: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.ALE: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.MUJOCO: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.MINIGRID: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.BABYAI: SteppingParadigm.SINGLE_AGENT, # Language-grounded MiniGrid
EnvironmentFamily.VIZDOOM: SteppingParadigm.SINGLE_AGENT,
EnvironmentFamily.MINIHACK: SteppingParadigm.SINGLE_AGENT, # Turn-based roguelike
EnvironmentFamily.NETHACK: SteppingParadigm.SINGLE_AGENT, # Turn-based roguelike
EnvironmentFamily.CRAFTER: SteppingParadigm.SINGLE_AGENT, # Turn-based survival game
EnvironmentFamily.PROCGEN: SteppingParadigm.SINGLE_AGENT, # Procedurally generated games
EnvironmentFamily.JUMANJI: SteppingParadigm.SINGLE_AGENT, # JAX-based logic puzzles (turn-based)
EnvironmentFamily.TEXTWORLD: SteppingParadigm.SINGLE_AGENT, # Text-based adventure games
EnvironmentFamily.BABAISAI: SteppingParadigm.SINGLE_AGENT, # Turn-based puzzle game
EnvironmentFamily.PETTINGZOO: SteppingParadigm.SEQUENTIAL, # AEC by default
EnvironmentFamily.PETTINGZOO_CLASSIC: SteppingParadigm.SEQUENTIAL, # Chess, Go, etc.
EnvironmentFamily.PYBULLET_DRONES: SteppingParadigm.SINGLE_AGENT, # Single/multi-agent quadcopter control
EnvironmentFamily.OPEN_SPIEL: SteppingParadigm.SEQUENTIAL, # Turn-based board games (Checkers, etc.)
EnvironmentFamily.MOSAIC_MULTIGRID: SteppingParadigm.SIMULTANEOUS, # MOSAIC MultiGrid (Soccer, Collect) - all agents act at once
EnvironmentFamily.INI_MULTIGRID: SteppingParadigm.SIMULTANEOUS, # INI MultiGrid (Empty, BlockedUnlockPickup) - all agents act at once
EnvironmentFamily.MELTINGPOT: SteppingParadigm.SIMULTANEOUS, # Multi-agent social scenarios (parallel stepping)
EnvironmentFamily.OVERCOOKED: SteppingParadigm.SIMULTANEOUS, # 2-agent cooperative cooking (parallel stepping)
EnvironmentFamily.SMAC: SteppingParadigm.SIMULTANEOUS, # SMAC v1: all units act in parallel each timestep
EnvironmentFamily.SMACV2: SteppingParadigm.SIMULTANEOUS, # SMACv2: all units act in parallel (procedural gen)
EnvironmentFamily.RWARE: SteppingParadigm.SIMULTANEOUS, # RWARE: all robots act in parallel each timestep
EnvironmentFamily.OTHER: SteppingParadigm.SINGLE_AGENT, # Fallback
}
def get_stepping_paradigm(game_id: GameId) -> SteppingParadigm:
"""Infer the stepping paradigm for a game based on its environment family.
Args:
game_id: The game identifier.
Returns:
The stepping paradigm for the game. Defaults to SINGLE_AGENT if unknown.
"""
family = ENVIRONMENT_FAMILY_BY_GAME.get(game_id, EnvironmentFamily.OTHER)
return DEFAULT_PARADIGM_BY_FAMILY.get(family, SteppingParadigm.SINGLE_AGENT)
__all__ = [
"EnvironmentFamily",
"GameId",
"ControlMode",
"InputMode",
"INPUT_MODE_INFO",
"RenderMode",
"ActionSpaceType",
"AgentRole",
"AdapterCapability",
"SteppingParadigm",
"ENVIRONMENT_FAMILY_BY_GAME",
"DEFAULT_RENDER_MODES",
"DEFAULT_CONTROL_MODES",
"DEFAULT_PARADIGM_BY_FAMILY",
"get_game_display_name",
"get_stepping_paradigm",
]