社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

python • 4 年前 • 799 次点击  

从世界瞩目的围棋游戏 AlphaGo








突然袭来的回忆杀~

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





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

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

首先你需要准备的是

  • 操作系统:Linux

  • Python 版本:3.6+


▌安装

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



▌《街头霸王3》示例



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



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







▌游戏环境设置

  • 游戏 ID




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



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

  • 内存地址




可以使用以下命令运行 Debugger





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


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



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

  • 分步模拟


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



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

  • 发送输入


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



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



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



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




▌性能基准测试



▌简单的 ConvNet 智能体






*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

觉得不错,点个“在看”然后转发出去


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/73617
 
799 次点击