迷宫狂热¶

此环境是 Atari 环境 的一部分。请先阅读该页面以获取一般信息。
导入 |
|
---|---|
动作 |
离散 |
Parallel API |
是 |
手动控制 |
否 |
智能体 |
|
智能体 |
2 |
动作形状 |
(1,) |
动作值 |
[0,17] |
观测形状 |
(250, 160, 3) |
观测值 |
(0,255) |
一个关于记忆和规划的竞技游戏!
这是一个逃离迷宫的竞赛。游戏主要有 3 个版本。
竞赛:游戏的基本版本。第一个离开迷宫的获胜
强盗:迷宫中有 2 个随机移动的强盗。如果你被强盗抓到,你将输掉游戏,获得 -1 奖励并结束。未被抓到的玩家不会获得任何奖励,但他们仍然可以离开迷宫并获胜,获得 +1 奖励。
抓捕:每个玩家必须抓捕所有 3 个强盗才能离开迷宫。此外,你还可以通过创建一个看起来与迷宫中的墙壁相同的方块来迷惑你的对手(如果不小心也会迷惑自己!),但所有玩家都可以穿过它。你一次只能创建一个墙壁,当你创建一个新的时,旧的会消失。
第一个离开迷宫的玩家得 +1 分,另一个玩家得 -1 分(除非该玩家在强盗模式下已经被抓捕)。
迷宫狂热官方手册。请注意,模式表中存在一些不准确之处。特别是,游戏模式 12 启用了障碍(Blockade),而不是模式 11。
环境参数¶
一些环境参数对所有 Atari 环境通用,并在 基础 Atari 文档 中有描述。
Maze Craze 特有的参数有
maze_craze_v3.env(game_version="robbers", visibilty_level=0)
game_version
:可能的选项包括 “robbers”(强盗)、“race”(竞赛)、“capture”(抓捕),对应上述描述的 3 种游戏版本。
visibilty_level
:一个从 0 到 3 的数字。设置为 0 时地图完全可见 (100% visible),设置为 3 时地图完全不可见 (0% visibility)。
动作空间¶
在任何给定的回合中,智能体可以从 18 个动作中选择一个。
动作 |
行为 |
---|---|
0 |
无操作 |
1 |
开火 |
2 |
向上移动 |
3 |
向右移动 |
4 |
向左移动 |
5 |
向下移动 |
6 |
向上右移动 |
7 |
向上左移动 |
8 |
向下右移动 |
9 |
向下左移动 |
10 |
向上开火 |
11 |
向右开火 |
12 |
向左开火 |
13 |
向下开火 |
14 |
向上右开火 |
15 |
向上左开火 |
16 |
向下右开火 |
17 |
向下左开火 |
版本历史¶
v3: 最小动作空间 (1.18.0)
v2: 整个 API 的重大更改 (1.4.0)
v1: 修复了所有环境处理过早死亡的方式 (1.3.0)
v0: 初始版本发布 (1.0.0)
用法¶
AEC¶
from pettingzoo.atari import maze_craze_v3
env = maze_craze_v3.env(render_mode="human")
env.reset(seed=42)
for agent in env.agent_iter():
observation, reward, termination, truncation, info = env.last()
if termination or truncation:
action = None
else:
# this is where you would insert your policy
action = env.action_space(agent).sample()
env.step(action)
env.close()
Parallel¶
from pettingzoo.atari import maze_craze_v3
env = maze_craze_v3.parallel_env(render_mode="human")
observations, infos = env.reset()
while env.agents:
# this is where you would insert your policy
actions = {agent: env.action_space(agent).sample() for agent in env.agents}
observations, rewards, terminations, truncations, infos = env.step(actions)
env.close()