MiniHCraft environments

List of environments representing abstractions from minigrid environments.

See submodules for each individual environement:

Minigrid name Hcraft reference
Empty hcraft.examples.minicraft.empty
FourRooms hcraft.examples.minicraft.fourrooms
MultiRoom hcraft.examples.minicraft.multiroom
Crossing hcraft.examples.minicraft.crossing
KeyCorridor hcraft.examples.minicraft.keycorridor
DoorKey hcraft.examples.minicraft.doorkey
Unlock hcraft.examples.minicraft.unlock
UnlockPickup hcraft.examples.minicraft.unlockpickup
BlockedUnlockPickup hcraft.examples.minicraft.unlockpickupblocked
 1"""# MiniHCraft environments
 2
 3List of environments representing abstractions from
 4[minigrid environments](https://minigrid.farama.org/environments/minigrid/).
 5
 6See submodules for each individual environement:
 7
 8| Minigrid name       | Hcraft reference                                |
 9|:--------------------|:------------------------------------------------|
10| Empty               | `hcraft.examples.minicraft.empty`               |
11| FourRooms           | `hcraft.examples.minicraft.fourrooms`           |
12| MultiRoom           | `hcraft.examples.minicraft.multiroom`           |
13| Crossing            | `hcraft.examples.minicraft.crossing`            |
14| KeyCorridor         | `hcraft.examples.minicraft.keycorridor`         |
15| DoorKey             | `hcraft.examples.minicraft.doorkey`             |
16| Unlock              | `hcraft.examples.minicraft.unlock`              |
17| UnlockPickup        | `hcraft.examples.minicraft.unlockpickup`        |
18| BlockedUnlockPickup | `hcraft.examples.minicraft.unlockpickupblocked` |
19
20
21"""
22
23import inspect
24from pathlib import Path
25from typing import List, Type
26
27
28from hcraft.examples.minicraft.minicraft import MiniCraftEnv
29
30import hcraft.examples.minicraft.empty as empty
31import hcraft.examples.minicraft.fourrooms as fourrooms
32import hcraft.examples.minicraft.multiroom as multiroom
33import hcraft.examples.minicraft.crossing as crossing
34import hcraft.examples.minicraft.doorkey as doorkey
35import hcraft.examples.minicraft.unlock as unlock
36import hcraft.examples.minicraft.unlockpickup as unlockpickup
37import hcraft.examples.minicraft.unlockpickupblocked as unlockpickupblocked
38import hcraft.examples.minicraft.keycorridor as keycorridor
39
40from hcraft.examples.minicraft.empty import MiniHCraftEmpty
41from hcraft.examples.minicraft.fourrooms import MiniHCraftFourRooms
42from hcraft.examples.minicraft.multiroom import MiniHCraftMultiRoom
43from hcraft.examples.minicraft.crossing import MiniHCraftCrossing
44from hcraft.examples.minicraft.doorkey import MiniHCraftDoorKey
45from hcraft.examples.minicraft.unlock import MiniHCraftUnlock
46from hcraft.examples.minicraft.unlockpickup import MiniHCraftUnlockPickup
47from hcraft.examples.minicraft.unlockpickupblocked import MiniHCraftBlockedUnlockPickup
48from hcraft.examples.minicraft.keycorridor import MiniHCraftKeyCorridor
49
50
51MINICRAFT_ENVS: List[Type[MiniCraftEnv]] = [
52    MiniHCraftEmpty,
53    MiniHCraftFourRooms,
54    MiniHCraftMultiRoom,
55    MiniHCraftCrossing,
56    MiniHCraftDoorKey,
57    MiniHCraftUnlock,
58    MiniHCraftUnlockPickup,
59    MiniHCraftBlockedUnlockPickup,
60    MiniHCraftKeyCorridor,
61]
62
63MINICRAFT_NAME_TO_ENV = {env.MINICRAFT_NAME: env for env in MINICRAFT_ENVS}
64
65__all__ = [
66    "empty",
67    "fourrooms",
68    "multiroom",
69    "crossing",
70    "doorkey",
71    "unlock",
72    "unlockpickup",
73    "unlockpickupblocked",
74    "keycorridor",
75]
76
77MINICRAFT_GYM_ENVS = []
78
79try:
80    import gymnasium as gym
81
82    ENV_PATH = "hcraft.examples.minicraft"
83
84    for env_name, env_class in MINICRAFT_NAME_TO_ENV.items():
85        submodule = Path(inspect.getfile(env_class)).name.split(".")[0]
86        env_path = f"{ENV_PATH}.{submodule}:{env_class.__name__}"
87        gym_name = f"{env_name}-v1"
88        gym.register(id=gym_name, entry_point=env_path)
89        MINICRAFT_GYM_ENVS.append(gym_name)
90
91
92except ImportError:
93    pass

API Documentation