王者又连跪了?快让 AI 帮你上分!

去年 5 月初,王者荣耀上线了一个挑战 AI 「绝悟」的限时活动,当时打开游戏界面,就能看到 「挑战·绝悟」的入口,活动出来,我就去体验了一下。

这个挑战一共五关,一关比一关难,像我这样的农药大神前几关随便过,最后一关就只能推塔了,正面硬刚肯定刚不过。

这种不敢正面怼的感觉「似曾相识」,我在英雄联盟的末日人机中也体会过,拉克丝的天女散花我至今还有阴影。

腾讯的「绝悟」在世界冠军杯半决赛中打败了职业选手,随后又在面向顶级业余玩家开放的体验测试中拿下 99.8% 的胜率。

虽然输了一场,但这个出道没多久的 AI 玩家在电竞圈也算打出了名气,当然这个战绩和王校长比还差点,校长在 100% 胜率时宣布退役,是 LOL 电竞圈唯一一位主动放弃 S 赛名额的选手 

话说回来,训练出像「绝悟」这样吊的 AI,需要腾讯掌握的海量数据和强大的财力,平民也只能体会挨打的快乐,普通玩家要想训练出一个这样的人工智能不太现实。

不过,今天,我给大家带来一个「平民版」的王者农药 AI。这个项目已经在 GitHub 开源,作者是 FengQuanLi。下面是 AI 自己玩王者的视频,先睹为快:

视频来自公众号「Jack Cui」

该视频是两倍速播放,开源项目作者只训练了一个「后裔」英雄,如果想用其他英雄,可以自己训练。

实现原理

这个开源项目的实现原理是怎样的 ?下图是这个模型的核心代码,不算难,我一步步的拆解,我尽量用通俗的语言描述这些技术。

让电脑帮我们玩游戏可以分为如下几步,当然这种方式是比较容易实现的方式,并不会用到「强化学习」的东西,而屠杀围棋圈的 AlphaGo 算法是基于强化学习。

1. 获取当前游戏界面。既英雄现在是什么状态、周围有没有敌方英雄、小兵等等。

2. 根据当前游戏界面状态生成操作指令,是应该前进、攻击还是释放技能。

3. 根据生成的操作指令去控制手机,英雄做出相应的动作。

对于训练一个平民版的人工智能模型,大体流程就是这样。其中获取当前游戏界面、根据指令去控制手机都有成熟的技术。

比如这个项目中使用 scrcpy 获取安卓手机的投屏,这款安卓投屏神器可以将游戏画面投屏到电脑桌面上。

有了游戏画面,就得到了这时战局的状况。游戏画面是图片的形式,至于这个图片包含什么内容,人能看明白,但是电脑不懂。

这就需要我们自己去提取图片中的特征,这里便会用到深度学习算法的东西。基于卷积神经网络(CNN)来提取图片的特征,项目中使用的是 ResNet 101 分类网络。

通过训练这个卷积神经网络,该网络就会具备提取游戏画面特征的能量,有了这些,算法才能进行下一步操作指令的生成。

根据图片生成操作指令是开源项目的关键点,这里用的就是大名鼎鼎的 Transformer。

Transformer 是 2017 年的一篇论文《Attention is All You Need》提出的一种模型架构,其开创性的思想像一颗重磅炸弹,震惊了整个 NLP 领域。

目前在 NLP 各业务全面开花的语言模型如 GPT, BERT 等,都是基于这个模型,搞 Java 的读者可能没听说过这个东西,但是搞算法的小伙伴对这个技术肯定不陌生。

生成一系列操作指令,说白了就是生成序列数据,而 Transformer 的 Decoder 就是干这个的,该项目也是使用基于 Transformer 的技术 GPT 构建的。

当然图片特征提取和生成操作指令是一起进行「端到端」训练的,为了方便大家理解,我拆开说的。

能够生成操作指令了,下一步就就是使用这些指令控制英雄。minitouch 便可完成这一目的,它提供了一个 socket 接口,用于在 Android 设备上触发多点触控事件和手势。

总结来说:用 scrcpy 获取当前游戏画面,使用 Transformer 根据图片生成操作指令,然后利用 minitouch 执行这些操作指令,这时游戏中的英雄就会按照指令进行动作了。

至于会进行什么样的动作得看你喂给模型什么样的数据了。目前这个模型是使用「后裔」 100 多局对战数据下训练的,对局会表现出送人头之类的问题。

这是因为数据量少并且场景简单,有一些复杂场景的数据没有覆盖到,遇到这种不确定因素,英雄也不知道怎么办了。

如何使用

使用前,你需要安装好环境和依赖,比如:torch,scrcpy, minitouch 等。还得需要一部安卓手机,如果需要训练自己的英雄还需一块 6GB 显存的显卡。

一、首先下载模型 

你可以关注微信公众号「逛逛GitHub」回复「王者」下载训练过的模型,然后后放入weights 文件夹下

二、修改配置

先运行 「启动和结束进程.py”」启动 scrcpy 把「训练数据截取_A.py”」中的两项改成你设备的参数,_DEVICE_ID 是 adb devices后显示的那个id。


三、运行

这时启动王者荣耀进入 5v5 人机对战 运行 「训练数据截取_A.py”」即可。

如下想训练自己的英雄,项目描述中也有方法,如果需要可以去移步项目地址,不过该项目还只是一个雏形,如果有能力可以自己完善。

参考链接:

[1] 用自己训练的AI玩王者荣耀是什么体验?

[2] www.bilibili.com/video/BV1UK411g7sF

点分享点收藏点点赞点在看
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值