使用OpenAI基线的超级魔术师,如何?

2024-04-19 15:53:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在OpenAI基线中运行SuperMarioBros环境。通常这些复古环境不同于由健身房图书馆支持的本地Attari2600。在

为了使它与基线一起运行,需要安装一个第三方库,该库由retro提供,使用从该链接(https://www.videogames.ai/2019/01/29/Setup-OpenAI-baselines-retro.html)获取帮助的代码

python -m retro.import .
python -m baselines.run --alg=a2c --env=SuperMarioBros-Nes --gamestate=Level3-1.state --network=cnn --num_env=2 --num_timesteps=1e3

但不幸的是,即使在这之后,它也没有运行,并给出了rom找不到的错误。在

虽然安装了外部复古后,它应该可以,但它需要原始的rom文件直接从游戏模拟器。有没有什么办法可以找到转机?还是我在这里遗漏了什么

^{pr2}$

Tags: httpsenv环境图书馆链接wwwromnum
2条回答

默认情况下,只有1个游戏ROM是由retro安装的。在

你试过了吗。它没有使用retro env(或者可能在内部使用,不确定)。但它对我有效:
https://pypi.org/project/gym-super-mario-bros/

Python 2.7.16 |Anaconda, Inc.| (default, Mar 14 2019, 21:00:58)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from nes_py.wrappers import BinarySpaceToDiscreteSpaceEnv
>>> import gym_super_mario_bros
>>> from gym_super_mario_bros.actions import SIMPLE_MOVEMENT
>>> env = gym_super_mario_bros.make('SuperMarioBros-v0')
>>> env = BinarySpaceToDiscreteSpaceEnv(env, SIMPLE_MOVEMENT)
>>> done = True
>>> for step in range(5000):
...     if done:
...         state = env.reset()
...     state, reward, done, info = env.step(env.action_space.sample())
...     env.render()
...

注意:我在linux机器上运行(Windows给我带来了麻烦)

我做了一个黑客和能够运行马里奥在复古(在windows本身)。下面是一步一步的技巧:

  1. 重新安装并安装 https://pypi.org/project/gym-super-mario-bros/在我以前的 回答
  2. 从复制.nes文件 lib/python3.7/site-packages/gym_super\u mario_bros/\u roms(这是 如果健身超级马里奥兄弟安装在现场包中)—>;到 Lib\site packages\retro\data\stable\SuperMarioBros Nes(这是 在站点包中安装retro)。在
  3. 重命名 超级马里奥-兄弟到rom.nes公司在
  4. 你完成了。可以使用以下代码启动mario:
import retro
def main():
    env = retro.make(game='SuperMarioBros-Nes')
    obs = env.reset()
    while True:
        obs, rew, done, info = env.step(env.action_space.sample())
        env.render()
        if done:
            obs = env.reset()
    env.close()

if __name__ == "__main__":
    main()

另外一个提示:如果您想在这之后手动播放马里奥,那么运行以下命令。(Z代表跳跃,x代表射击):python -m retro.examples.interactive game SuperMarioBros-Nes[享受]

相关问题 更多 >