我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第1张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第2张

从世界瞩目的围棋游戏 AlphaGo

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第3张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第4张

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第5张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第6张

 

 

 我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第7张

 

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第8张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第9张

 

突然袭来的回忆杀~

今天为大家介绍一个在街机游戏《街头霸王 3》中进行模拟来训练改进强化学习算法的工具包。不仅在 MAME 游戏模拟器中可以使用,这个 Python 库可以在绝大多数的街机游戏中都可以训练你的算法。

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第10张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第11张

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第12张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第13张

 

下面营长就从安装、设置到测试分步为大家介绍一下。

目前这个工具包支持在 Linux 系统,作为 MAME 的包装器来使用。通过这个工具包,你可以定制算法逐步完成游戏过程,同时接收每一帧的数据和内部存储器的地址值来跟踪游戏状态,以及发送与游戏交互的动作。

首先你需要准备的是:

  • 操作系统:Linux

  • Python 版本:3.6+

 

▌安装

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第14张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第15张

 

▌《街头霸王3》示例

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第16张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第17张

 

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第18张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第19张

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第20张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第21张

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第22张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第23张

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第24张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第25张

 

▌游戏环境设置

  • 游戏 ID

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第26张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第27张

 

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第28张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第29张

 

该命令会打开 MAME 模拟器,你可以从游戏列表中选择你所要的那款游戏。游戏的 ID 通常位于标题后面的括号中。

  • 内存地址

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第30张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第31张

 

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第32张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第33张

 

 

 

更多关于该调试工具的使用说明请参考此教程:https://www.dorkbotpdx.org/blog/skinny/use_mames_debugger_to_reverse_engineer_and_extend_old_games

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第34张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第35张

 

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

  • 分步模拟

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第36张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第37张

 

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

  • 发送输入

 

如果要向仿真器输入动作,你还需要确定游戏支持的输入端口和字段。例如,在街头霸王游戏中需要执行以下代码进行投币:

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第38张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第39张

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第40张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第41张

 

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

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第42张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第43张

 

模拟器还有一个 frame_ratio 参数,可以用来调整你的算法帧率。在默认设置下,NAME 每秒能生成 60 帧。当然,如果你觉得这样太多了,你也能通过以下代码将其改为每秒 20 帧:

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第44张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第45张

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第46张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第47张

 

▌性能基准测试

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第48张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第49张

 

 我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第50张

 

▌简单的 ConvNet 智能体

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第51张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第52张

 

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第53张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第54张

 

 

我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第55张我用python训练了一个拳皇模型,从此在各地游戏厅再也没输过! Python 第56张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄