用Python玩任何一款街机,带你一起回味童年!

街机想必大家都不会很陌生,还记得以前的时候,为了玩上一会儿街机,每次放假都会疯狂的往游戏厅狂奔,现在回想起那时,还是别有一番韵味。今天我们来利用Python弄一个操作方式非常亲民,并且可以玩任意一款旧街机游戏的API的开源Python库。

这是一个允许你在几乎任何街机游戏中训练你的强化学习算法的Python库,它目前在Linux系统上可用。通过这个工具包,你可以定制算法逐步完成游戏过程,同时接收每一帧的数据和内部存储器地址值以跟踪游戏状态,以及发送与游戏交互的动作。

安装

GitHub地址:http://github.com/M-J-Murray/MAMEToolkit/blob/master/README.md

你可以用pip安装这个库,只需运行以下命令:

pipinstallMAMEToolkit

演示示例:街霸

在街机爱好者心中,街霸是史上最经典的游戏之一。现在工具包内包含的街霸版本是街头霸王3:三度冲击(Japan 990608, NO CD),我们以此为例,用以下代码写一个随机智能体:

这个工具包还支持hogwild!训练:

什么是hogwild!?Niu等人引入了一个叫做 Hogwild! 的更新策略,可以使 SGD 可以在多 CPU 上并行更新。处理器在无需对参数加锁的情况下就可以访问共享内存。但仅在输入的是稀疏数据时才有效,因为每次更新仅修改所有参数的一小部分。他们展示了在这种情况下,更新策略几乎可以达到一个最优的收敛率,因为处理器不太可能覆盖掉有用的信息。

建立自己的游戏环境

这个工具包之所以易于上手,是因为它和模拟器本身不需要太多交互,只需注意两点——一是查找你关注的内部状态相关联的内存地址值,二是用选取的环境跟踪状态。你可以用MAME Cheat Debugger,它会反馈游戏的内存地址值如何随时间变化。如果要创建游戏模拟,你得先获得正在模拟的游戏的ROM,并知道MAME使用的游戏ID,比如街霸的ID是‘sfiii3n‘。

游戏ID

你可以通过运行以下代码找到游戏的ID:

fromMAMEToolkit.emulatorimportEmulatoremulator = Emulator("env1","","", memory_addresses)

这个命令会打开MAME仿真器。你可以搜索游戏列表以找到想要的游戏,游戏的ID位于游戏标题末尾的括号中。

内存地址

如果获得了ID,也有了想要跟踪的内存地址,你可以开始模拟:

这会启动仿真器,并在工具包连接到模拟器进程时暂停。

分步运行仿真器

连接工具箱后,你可以分步运行仿真器:

step函数会把帧数据作为NumPy矩阵返回,同时,它也会返回该时间步长的所有内存地址整数值。

如果要向仿真器输入动作,你还需要确定游戏支持的输入端口和字段。比如玩街霸需要先投币,这个代码是:

要确定哪些端口可用,请使用list actions命令:

下面这个返回的列表就包含街霸环境中可用于向步骤函数发送动作的所有端口和字段:

仿真器类还有一个frame_ratio参数,可用于调整算法所见的帧速率。默认情况下,MAME以每秒60帧的速度生成帧,如果你觉得这太多了,想把它改成每秒20帧,可以输入以下代码:

MAME性能基准测试

目前这个工具包的开发和测试已在8核AMD FX-8300 3.3GHz CPU以及3GB GeForce GTX 1060 GPU上完成。在使用单个随机智能体的情况下,街头霸王环境可以以正常游戏速度的600%+运行。而如果是用8个随机智能体进行hogwild!训练,环境可以以正常游戏速度的300%+运行。

ConvNet智能体

为了确保工具包能够训练算法,作者还设置了一个简单的5层ConvNet,只需少量调整,你就可以用它进行测试。在街霸实验中,这个算法能够成功学习到游戏的一些简单技巧,比如连击(combo)和格挡(blocking)。街霸本身的游戏机制是分成10个关卡(难度递增),玩家在每个关卡都要迎战不同的对手。刚开始的时候,这个智能体平均只能打到第2关。但在经过2200次训练后,它平均能打到第5关。

至于智能体的学习率,它是用每一局智能体所造成的净伤害和所承受的伤害来计算的。

怎么样?这样的Python库有木有让你心动?心动不如行动,马上动手操作一番吧!喜欢有本文的小伙伴或者觉得本文对你有帮助可以点播关注或转发。

写在最后:

有需要Python学习资料,或者需要Python环境的老铁可以加群571799375,群里的资料免费发送给大家!(Python学习资料是2018年最新版)

本文来自网络,如有侵权,请联系小编删除!

原文地址:https://www.cnblogs.com/666fx/p/10174495.html

时间: 2024-11-02 18:03:03

用Python玩任何一款街机,带你一起回味童年!的相关文章

街机模拟器Callus下载

昨天把以前玩过的一款街机模拟器提供下载.欢迎大家下载游戏. 1.设置模拟器兼容模式. 2.设置游戏ROM路径 3.设置... 4. 5.选择ROM进行游戏. 下载地址:http://pan.baidu.com/s/1kTpkFVx

Atitit. 常用街机系统and 模拟器总结 snk neo geo cps mame sfc smc

Atitit. 常用街机系统and 模拟器总结 snk neo geo cps mame sfc smc 1. #-------常用 游戏类型 1 2. 街机的历史 2 3. #=====================常用街机系统 3 4. NEO GEO,SNK之系统 3 5. SNK新日本企划 3 6. CPS2和CPS1,,CAPCOM早期街机的机版系统 4 7. MAME系统 4 8. SFC/SMC (这个是使用 手柄的,不是 摇杆) 4 9. 游戏)三大组成部分 Arcade, C

最牛叉的街机游戏合集 & 模拟器

亲爱的小伙伴们,是否还记得那年我们玩的疯狂的街机游戏吗,街机中心提供400多个街机游戏,让你爽到底. 例如:拳皇96,拳皇97,恐龙新世纪.名将.快打旋风.惩罚者.魂斗罗.超级玛丽.雪山兄弟.忍者神龟.格斗之王系列.合金弹头系列.侍魂系列.龙虎之拳系列.街头霸王系列.西游释厄传系列和三国战纪系列等经典街机游戏. 性能高的手机可以打开显示设置内的平滑拉伸,缩放模式设置为拉伸至全屏,横屏需要开启系统的自动旋转屏幕.Xperia Play用户可以自定义物理按键,然后把触摸控制可见关闭,屏幕上就不会再显

python玩转街机游戏,操作亲民!

这是一个允许你在几乎任何街机游戏中训练你的强化学习算法的Python库,它目前在Linux系统上可用.通过这个工具包,你可以定制算法逐步完成游戏过程,同时接收每一帧的数据和内部存储器地址值以跟踪游戏状态,以及发送与游戏交互的动作. 推荐一下我的Python学习交流q-u-n-[ 784758214 ]内有安装包和学习视频资料,零基础,进阶,,大牛在线解答疑问.希望可以帮助你快速了解Python.学习python 安装 GitHub地址:github.com/M-J-Murray/MAMETool

街机扫描线

软件界面及详细说明 简介:理论上可以在任何你想使用的游戏“上”使用,甚至是任何程序上. 使用扫描线来优化马赛克游戏的一款小工具,基本不占内存,适用于任何windows平台,高配低配电脑均可使用本程序,比游戏内的滤镜好的多,虽然操作稍显繁琐,不过这就是你想要的. 版本号:1.0918 压缩包大小:432KB 百度网盘下载地址:街机扫描线1.0918 360云盘下载地址:阶级扫描线1.0918 提取码(1bfb) CSDN下载地址:待加入... 软件界面: 详细说明: 1.锁定窗口 选中锁定窗口以后

街机扫描线之校正屏幕色彩与对比度

有些非硬屏液晶显示器或一些笔记本的显示屏,由于做工不到位的原因,屏幕的对比度与颜色会有一定程度的失真.例如白色看起来并不是纯白色,而是有些偏黄或偏其他颜色,再例如非广角显示器,不同的角度观看也会少许变化,那么在不想更换新显示器的情况下要怎么解决这个问题呢?本文要介绍的正是解决这个问题的方法. 在街机扫描线(正式版)中,有一项软件自带的扫描模式-非扫描亮度调节.在没有加入自定义配置工具的阶级扫描线旧版本中,这个模式只能做单一的亮度调节使用,可以理解为:将原屏幕亮度做为0,黑色做为255来取0-25

MAME 0.201 发布,重温童年的街机模拟器

MAME 0.201 已发布,MAME 最初是街机模拟器,随着时间的推移,MAME 吸收了姊妹项目 MESS(多机种模拟器超级系统),所以 MAME 现在还记录了各种各样的(大多是老式的)电脑游戏.掌机游戏和电子游戏(视频游戏). 新版本修复了与 MAMETesters 相关的一些 bug ,并新增几款游戏支持,具体详情可查阅更新日志. mame0201b_32bit.exe mame0201b_64bit.exe mame0201lx.zip http://mamedev.org/roms/

程序员带你十天快速入门Python,玩转电脑软件开发(二)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群538742639.群马上就满了,名额不多. 上节课主要讲解了以下内容: 为什么学习Pyth

程序员带你十天快速入门Python,玩转电脑软件开发(三)

声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群538742639.群马上就满了,名额不多. 这是高级程序员快速入门Python语言课程.助你快速学习Python语言.这是第三课. 程序员带你十天快速入门Python,玩转电脑软件开发(一) 程序员带你十天快速入门Python,玩转电脑软件开发(二) 因技术知识连贯性,还没有学习前两课的同学,建议点