openAI的仿真环境Gym Retro的Python API接口(续1)—— 游戏过程记录及回放(openAi)

网友投稿 3117 2022-09-03


openAI的仿真环境Gym Retro的Python API接口(续1)—— 游戏过程记录及回放(openAi)

如题,本文主要介绍仿真环境Gym Retro的Python API接口 。

官网地址:

​​(SonicTheHedgehog-Genesis)​​

==============================================

游戏状态的记录,示例代码:

import retroenv = retro.make(game='Airstriker-Genesis', record='.')env.reset()while True: _obs, _rew, done, _info = env.step(env.action_space.sample()) if done: break

运行后将游戏的过程保存为文件:Airstriker-Genesis-Level1-000000.bk2

游戏过程的记录只需要在环境生成函数  retro.make  中指定 record 参数即可。

注意:

游戏过程文件只保存了游戏开始时的状态及过程中的所有按键,所以要对过程记录文件进行游戏回放的话我还是需要有相应的游戏ROM文件的。

游戏记录的回放,示例代码:

import retromovie = retro.Movie('Airstriker-Genesis-Level1-000000.bk2')movie.step()env = retro.make( game=movie.get_game(), state=None, # bk2s can contain any button presses, so allow everything use_restricted_actions=retro.Actions.ALL, players=movie.players, obs_type=retro.Observations.IMAGE)env.initial_state = movie.get_state()env.reset()while movie.step(): keys = [] for p in range(movie.players): for i in range(env.num_buttons): keys.append(movie.get_key(i, p)) env.render() observation, reward, done, info = env.step(keys) print(keys) print(observation) print(reward) print(done) print(info)

由前文可知,

use_restricted_actions=retro.Actions.ALL    代表动作为 MultiBinary 类型,因此执行的动作形式大致为:

[True, False, False, False, False, False, True, False, True, False, False, False]

这个类型的。

其中,代码:

for p in range(movie.players): for i in range(env.num_buttons): keys.append(movie.get_key(i, p))

就是从记录文件中取出当前步骤中不同player的动作(MultiBinary 类型),该动作是分别判断MultiBinary 类型不同位置对应的动作(env.num_buttons)是否被选择,具体代码为:

movie.get_key(i, p)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:运行openai的gym代码报错提示import pyglet,安装后依然报错:ImportError: s
下一篇:Java中守护线程介绍及使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~