openAI的仿真环境Gym Retro的Python API接口(续1)—— 游戏过程记录及回放
如题,本文主要介绍仿真环境Gym Retro的Python API接口 。
官网地址:
https://retro.readthedocs.io/en/latest/python.html
本文环境配置:如何使用Python环境下的2D经典游戏仿真器(openai推出的)retro库运行游戏"刺猬索尼克" (SonicTheHedgehog-Genesis)
==============================================
游戏状态的记录,示例代码:
import retro env = 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 retro movie = 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)
openAI的仿真环境Gym Retro的Python API接口(续1)—— 游戏过程记录及回放的更多相关文章
- 初识Django —Python API接口编程入门
初识Django —Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...
- Python api接口和SQL数据库关联
数据库表创建 服务器环境配置.连接 .操作.数据库 API接口 原则:
- kafka环境搭建和使用(python API)
引言 上一篇文章了解了kafka的重要组件zookeeper,用来保存broker.consumer等相关信息,做到平滑扩展.这篇文章就实际操作部署下kafka,用几个简单的例子加深对kafka的理解 ...
- Python Api接口自动化测试框架 excel篇
工作原理: 测试用例在excel上编辑,使用第三方库xlrd,读取表格sheet和内容,sheetName对应模块名,Jenkins集成服务发现服务moduleName查找对应表单,运用第三方库req ...
- Python Api接口自动化测试框架 代码写用例
公司新来两个妹子一直吐槽这个接口测试用例用excel维护起来十分费脑费事,而且比较low(内心十分赞同但是不能推翻自己),妹子说excel本来就很麻烦的工具,于是偷偷的进行了二次改版. 变更内容如下: ...
- ubuntu16.04x64环境下 tar方式 安装mysql-5.7.21 试水过程记录
前几天读研时候上铺的同学和我说到了一个问题,就是他们单位的redhat服务器给MySQL服务的数据库文件所在的磁盘空间不够了,对于这个问题我也是没有想过的,在受朋友之托下考虑自己做下复现,由于同学所在 ...
- python api接口认证脚本
import requests import sys def acces_api_with_cookie(url_login, USERNAME, PASSWORD, url_access): ...
- 如何在 Apache Flink 中使用 Python API?
本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink PMC,阿里巴巴高级技术专家 孙金城 分享.重点为大家介绍 Flink Python API 的现状及未来规划, ...
- 强化学习 平台 openAI 的 gym 安装 (Ubuntu环境下如何安装Python的gym模块)
openAI 公司给出了一个集成较多环境的强化学习平台 gym , 本篇博客主要是讲它怎么安装. openAI公司的主页: https://www.openai.com/systems/ 从主页上我 ...
- 【Python实例】用脚本自动拿一个或多个仿真环境
注1:之前使用的是perl,现在尝试切换到python; 注2:该脚本用于实现自动拿仿真环境,里面应该还有很多不足之处,后续逐渐完善; 注3:假设脚本名字为get_env.py,直接执行脚本,会有两次 ...
随机推荐
- C#.NET AES ECB 加密
加密: /// <summary> /// 加密 /// </summary> /// <param name="content">要加密的串& ...
- Kubernetes监控手册06-监控APIServer
写在前面 如果是用的公有云托管的 Kubernetes 集群,控制面的组件都交由云厂商托管的,那作为客户的我们就省事了,基本不用操心 APIServer 的运维.个人也推荐使用云厂商这个服务,毕竟 K ...
- == 和 equals 的区别是什么
== : 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象.(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址) equals() : 它的作用也是判断两个 ...
- Blender练习——SciFi枪械.md
Blender练习--SciFi枪械 一.基本操作 常用快捷键 E 挤出 B 倒角,中途可通过滚轮或S来调整细分 Alt+点选 循环选择 Ctrl Alt+点选 并排选择 F 补面,比如一个碗口,将碗 ...
- 深入理解Android View(1)
做android其实也有一段时间了,我们每个人都会碰到一些这样或那样的问题,碰到问题了就拼命百度,可是发现,我们解决问题的能力并没有提升很多,所以我才有想总结一下我项目中所用过的相关知识,并了解一下A ...
- vue中手写table的升降序
有些时候,我们总是无可避免的需要自己去手撸一些东西,因为需求总是在不断的变化.例如,最开始的需求,我们只是在首页展示一个数据列表,此时,我们可能直接就自己手写了一个table,后来,突然增加了一个需求 ...
- 在Linux驱动中使用timer定时器
在Linux驱动中使用timer定时器 原文(有删改): https://www.cnblogs.com/chen-farsight/p/6226562.html 介绍 内核定时器是内核用来控制在未来 ...
- SpringMVC原理(1)-文件上传请求
我们文件上传接口只需要在方法参数上写MultipartFile类,mvc就可以帮我们把上传的文件封装为这个类的对 象供我们非常方便的操作,那它是怎么做的呢?我们一起来看看 我们发的请求默认都是由Dis ...
- Nuxt3 的生命周期和钩子函数(七)
title: Nuxt3 的生命周期和钩子函数(七) date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要:文章阐述了Nuxt ...
- 【论文阅读】ICRA2022: Panoptic Multi-TSDFs: a Flexible Representation for Online Multi-resolution Volumetric Mapping and Long-term Dynamic Scene Consistency
Type: ICRA Year: 2022 tag: SLAM 参考与前言 论文链接:https://arxiv.org/abs/2109.10165 代码链接:https://github.com/ ...