首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SuperMarioBros-Nes与OpenAI基线,如何?

SuperMarioBros-Nes与OpenAI基线,如何?
EN

Stack Overflow用户
提问于 2019-03-23 08:44:19
回答 2查看 1.5K关注 0票数 2

我正在尝试在OpenAI基线中运行SuperMarioBros环境。通常这些复古环境不同于健身房库所支持的原生attari 2600。

为了使其与基线一起运行,需要使用此链接的帮助代码(https://www.videogames.ai/2019/01/29/Setup-OpenAI-baselines-retro.html)安装retro附带的第三方库。

代码语言:javascript
复制
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文件直接从游戏模拟器。有没有可能找到转身的方法?还是我错过了什么

代码语言:javascript
复制
    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
EN

回答 2

Stack Overflow用户

发布于 2019-03-23 23:34:18

默认情况下,只有一个游戏ROM是由复古安装的。

你有没有试过这个。它没有使用retro env (或者可能在内部使用,不确定)。但它对我来说是有效的:

https://pypi.org/project/gym-super-mario-bros/

代码语言:javascript
复制
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出了点问题)

票数 0
EN

Stack Overflow用户

发布于 2019-03-24 00:44:44

我做了一个hack并且能够在复古(在windows本身)中运行mario。下面是技巧的一步一步:

  1. 安装复古和安装https://pypi.org/project/gym-super-mario-bros/在我之前的回答中给出了
  2. 将.nes文件从Lib\site-packages\retro\data\stable\SuperMarioBros-Nes (这是安装在站点包中的gym-super-mario-bros )复制到-> (这是将复古安装在站点包中的位置)。
  3. 将超级mario-bros.nes重命名为rom.nes
  4. You done。您可以使用以下代码启动mario:

游戏导入retro def main():env =retro.make(

=‘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 Enjoy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55309518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档