导语:HI~我来咯!!没错这期又是大家感兴趣的游戏part ~

今天给大家介绍一个在街机游戏《街头霸王3》中,进行模拟来训练强化学习算法的工具包。

不仅在 MAME 游戏模拟器中可以使用,这个 Python 库可以在绝大多数的街机游戏中都可以训练你的算法。

下面小编从安装、设置到测试分步为大家介绍一下!目前这个工具包支持在 Linux 系统,作为 MAME 的包装器来使用。通过这个工具包,你可以定制算法逐步完成游戏过程,同时接收每一帧的数据和内部存储器的地址值来跟踪游戏状态,以及发送与游戏交互的动作。

首先你需要准备的是:

操作系统:Linux

Python 版本:3.6+

01、安装

你可以使用 pip 来安装该库,运行下面的代码:

《街头霸王3》示例:

这个工具包目前已用于游戏《街头霸王3》(Street Fighter Ill Third Strike: Fight for the Future)还可以用于MAME上的任何游戏。

下面的代码演示了如何在街头霸王的环境下编写一个随机智能体。

此外,这个工具包还支持 hogwild 训练:

02、 游戏环境设置

在创建一个模拟环境之前,大家需要先加载游戏的ROM,并获取MAME所使用的游戏ID。

比如,这个版本街头霸王的游戏ID是“sfiii3n”

你可以通过运行以下代码来查看游戏ID:

该命令会打开 MAME 模拟器,你可以从游戏列表中选择你所要的那款游戏。

游戏的 ID 通常位于标题后面的括号中。

内存地址:实际上该工具包与模拟器本身不需要太多的交互,只需要查找和内部状态相关联的内存地址,同时用所选取的环境对状态进行跟踪。你可以使用MAME Cheat Debugger来观家随看时间的变化,内存地址值发生了怎样的改变。

可以使用以下命令运行 Debugger:

当你确定了所要跟踪的内存地址后,可以执行以下命令进行模拟:

该命令会启动模拟器,并在工具包导入到模拟器进程时暂停。

分步模拟:

在工具包导入完成后,你可以使用 step 函数分步进行模拟:

step 函数将以 Numpy 矩阵的形式返回 frame 和 data 的值,同时也会返回总时间步长的所有内存地址整数值。

发送输入:如果要向仿真器输入动作,你还需要确定游戏支持的输入端口和字段。

例如,在街头霸王游戏中需要执行以下代码进行投币:

可以使用 list actions 命令查看所支持的输入端口,代码如下:

以下返回的列表就包含了街头霸王游戏环境中可用于向 step 函数发送动作的所有端口和字段:

模拟器还有一个 frame_ratio 参数,可以用来调整你的算法帧率。

在默认设置下,NAME 每秒能生成 60 帧。

当然,如果你觉得这样太多了,你也能通过以下代码将其改为每秒 20 帧:

03、性能基准测试

目前该工具包的开发和测试已经在8核 AMD FX-83003.3 GHz CPU  以及 3 GB  Geforce GTX 1060 GPU上完成。

在使用单个随机智能体的情况下,街头霸王游戏环境可以以正常游戏速度的600%+运行。

而如果用8个随机智能体进行 hogwild 训练的话,街头霸王游戏环境能以正常游戏谏度的 300%+运行。

04、简单的 ConvNet 智能体

为了确保该工具包能够训练算法,我们还设置了一个包含5层 ConvNet的架构,只需进行微调,你就能用它来进行测试。

在街头霸王的实验中,这个算法能够成功学习到游戏中的一些简单技巧!如:连招〔combo) 和榴挡 ( blocking) 。

街头霸王的游戏机制是由易到难设置了10个关卡,玩家在每个关卡都要与不同的对手对战。

刚开始时,智能体平均只能打到第二关,而当经过了2200次训练后,它平均能打到第5关。学习率的设置是通过每一局中智能体所造成的净伤害和所承受的伤害来计算的。

end:

今日分享结束啦!喜欢的小可爱们记得三连噢~~家人们的支持是小编更新最大的动力!!

想领取更多完整源码或python学习资料可私信我或点击这行字体

用Python 做一个拳皇模型,风迷当年的经典游戏——街头霸王相关推荐

  1. 利用Python做一个简单的对战小游戏

    利用Python做一个简单的文字对战小游戏 一.游戏介绍 1.大体介绍:文字版的对战小游戏,可以利用Python随机生成两个角色,角色带有各自的血量和攻击值两个指标.两人在对战时同时攻击对方,同时造成 ...

  2. 用Python做一个房价预测小工具!

    哈喽,大家好. 今天给大家介绍一个非常适合新手入门的机器学习实战案例. 这是一个房价预测的案例,来源于 Kaggle 网站,是很多算法初学者的第一道竞赛题目. 该案例有着解机器学习问题的完整流程,包含 ...

  3. 用Python做一个“以图搜番“的应用程序,再也不用愁动漫图片的出处了!

    文章目录 前言 PyQt5界面设计 使用Qt Designer绘制界面 视频部件插入小技巧 解码器下载 功能实现 trace.moe API介绍与视频 使用Nuitka打包成exe文件 前言 喜欢看动 ...

  4. python可以做动漫吗_用Python做一个以图搜番的应用程序,再也不用愁动漫图片的出处了!...

    前言 喜欢看动漫的朋友们大概都能体会到一个难受的事情,就是在论坛或者群聊里面看到一张动漫截图,很想知道它的出处,但百度搜了一圈却也没有一个可靠结果,就很郁闷.今天就来带大家用Python做一个简单的& ...

  5. 用python做一个不需要谷歌的翻译器

    要用 Python 做一个不需要谷歌的翻译器,你可以使用 Python 的第三方库来实现. 一种常用的方法是使用 googletrans 库.它是一个简单易用的翻译库,可以在线翻译文本或者网页.它使用 ...

  6. 用python写搜索引擎_用python做一个搜索引擎(Pylucene)的实例代码

    1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信 ...

  7. 在哪里能收到python实例代码-用python做一个搜索引擎(Pylucene)的实例代码

    1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信 ...

  8. python恶搞-python—做一个恶搞程序

    python-做一个恶搞程序 very easy print("You can't win this game") #你不可能赢这个游戏 n = int(input("B ...

  9. 【Python】如何用python做一个简单的输入输出交互界面?

    看到知乎上有人在问,如何使用Python做一个简单的输入输出交互界面? 交互界面就涉及到GUI编程. Python有很多GUI框架,功能大同小异. 其中比较出名的有「PyQT」.**wxPython. ...

最新文章

  1. Redis使用认证密码登录
  2. 20个经典函数细说 Pandas 中的数据读取与存储,强烈建议收藏
  3. WIN7的CMD界面下输入ipconfig后提示不是内部或外外部命令,也不是可运行的程序或批处理文件...
  4. 浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
  5. python程序设计报告-20183215 实验三《Python程序设计》实验报告
  6. java jni 方法描述,五、JNI提供的函数介绍(一):类和对象操作
  7. [云炬创业基础笔记]第十章企业的利润计划测试3
  8. 安装SQLserver2008
  9. [html] 如何优化大数据列表(10万+)的性能?说说你的方案
  10. 我用了20年ERP系统,但是用它做报表,我却后悔了
  11. 【渝粤教育】国家开放大学2019年春季 1349学前教育科研方法 参考试题
  12. WebService:JAX-WS实现WebService
  13. 搭建sspanel 教程三(后端教程)
  14. wso2_使用WSO2开发
  15. android简繁体切换快捷键,我的Android进阶之旅------Android中如何高效率的进行简繁体转换...
  16. 1024:程序员,你的身体还好吗?
  17. 基于领域模型的微服务划分--实战案例解析
  18. 用python实现自动化办公------定时发送微信消息
  19. 浙大计算机科学基础实验,想加实验室的看过来-浙大计算机实验室详细推介
  20. 控制windows 8,win8.1 win10 虚拟键盘

热门文章

  1. 关于实现国密sm3的一些问题
  2. 好用的汉字 英文 数字 符号 统计器 还可自动搜寻文本里的数字相加
  3. 数据治理:数据集成的关键技术
  4. ecognition 易康 ESP插件的使用
  5. [linux从无到有]上面是权限粘滞位
  6. Hadoop:MapReduce应用
  7. Windows10蓝牙驱动丢失,100%解决方案
  8. 不吹牛,全网最全程序员效率工具及小技巧
  9. JS 经典闭包面试题
  10. 使用c#重绘凸出的3d边框