我正在尝试在OpenAI基准中运行SuperMarioBros环境。通常,这些复古环境与健身房图书馆支持的本地attari 2600不同。
为了使其能够与基准一起运行,需要安装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错误。
尽管在安装了外部Retro之后,应该可以,但是需要直接从游戏模拟器中获取Raw-rom文件。有没有可能找到转身的方法?还是我在这里想念东西
Process SpawnProcess-2: Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/retro/__init__.py", line 49, in make retro.data.get_romfile_path(game, inttype)
File "/usr/local/lib/python3.6/dist-packages/retro/data/__init__.py", line 288, in get_romfile_path
raise FileNotFoundError("No romfiles found for game: %s" % game) FileNotFoundError:
No romfiles found for game: SuperMarioBros-Nes
答案 0 :(得分:0)
默认情况下,Retro只安装1个游戏ROM。
您尝试过这个吗?它不使用复古环境(或者不确定使用内部)。但这对我有用:
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给了麻烦)
答案 1 :(得分:0)
我做了一次破解,能够以复古的方式(在Windows本身中)运行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()
一个额外的提示:如果您要在此之后手动玩mario,请运行以下命令。 (Z代表跳跃,x代表射击):python -m retro.examples.interactive --game SuperMarioBros-Nes
[欣赏]