当前位置: 首页 > news >正文

python王者战斗_用 Python 自动玩王者荣耀,简直不要太秀!

「王者荣耀」想必大家就算没有玩过,也都听过。

腾讯 AI Lab 开发的策略协作型“绝悟”,最强 AI 分分教你做人。

但那个是像 Alpha Go 一样,需要掌握海量数据和机器的团队,才能玩得起的。

今天,就给大家带来一个「平民版」,咱们都能玩的王者荣耀 AI。

今天继续手把手教学,你准备好了吗?

1. 实现原理

为了让我们的代码能够控制手机的「王者荣耀」,我们需要实现在电脑上操控手机。

需要用到什么呢?scrcpy 和 minitouch。

scrcpy 可以将安卓手机的画面投屏到电脑桌面显示上并进行操控。

简单地说,就是可以让你在电脑上控制手机!它支持鼠标控制、键盘输入、电脑剪切板复制粘贴、拖放文件传输到手机、以及拖放 APK 文件进行安装。

使用 scrcpy 你无需 ROOT 手机,也不需在手机上安装 APP,只需在系统设置里启用“USB调试”( adb 调试) 即可。

minitouch 提供了一个 socket 接口用在 Android 设备上的多点触摸事件以及手势。也是无需 ROOT 手机。

用 scrcpy 获取游戏画面,获取 scrcpy 的句柄,然后截图,根据图片生成操作指令,然后利用 minitouch 高效的执行这些操作指令。

所以关键在于,如何根据图片生成操作指令。

没错,用 Transformer。

上两天火的 DALL·E 都见到了吧?OpenAI 最新发布的,它可以魔法一般按照自然语言文字描述直接生成对应图片!

比如输入文本:鳄梨形状的扶手椅。

AI 生成的图像:

ee5594b8e7334d4dfdd5599b3cfa9452.png

这生产效果真是堪称神奇!自然语言与视觉的壁垒正在被逐渐打通。e640768b36a718ca278392c9aa1de77d.png

反过来,图片生成描述,更简单了,这样的工作几年前就用了。

使用 Transformer,根据游戏图像,生成当前画面的操作描述。ad8daa329e968efd80cb2f363419f871.png

比如前进、攻击、释放技能。

2. 算法测试

首先你得有个能跑 Transformer 的显卡,安装需要的第三方库,例如 pyminitouch、pytorch 等。

然后安装 scrcpy,这个安装教程很多,百度一搜一大把,将所有东西放在与下载的代码同级目录下。bf314918ddd591d0ce2ee8aac5ee2800.png

下载训练好的模型文件。

还是老规矩,我将代码和模型打包了,方便大家直接下载(提取码:jack)。

https://pan.baidu.com/s/19kjTuX4DeTVE3B3HGw0uOw

需要注意的是,不同手机的 minitouch 配置可能有所不同,代码的测试机器分辨率是 1080*2160,这里需要根据自己的情况进行修改。

配置好环境后,就可以运行代码了。

运行文件“启动和结束进程.py”,启动scrcpy。把“训练数据截取_A.py” 中的两项改成你的设备:ccee6948081c9cbd5f9c2325708cf26d.png

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

赶快自己体验一波吧!训练一个你最爱的英雄!

项目地址:https://github.com/FengQuanLi/ResnetGPT

3. 写在最后

这个项目的代码,有些凌乱,还有硬核的中文变量。

算法性能有待提高,目前打打人机还行。

后面有时间,我会做整理和升级,在这个基础上改进版本,看情况吧~

相关文章:

  • 大家在申请内存时都是如何做的?[ask in smth]
  • 单例模式获取mysql连接_获取JDBC Connection单例模式
  • centos7安装源mysql5.6_centos7.4 mysql5.6 源码安装
  • 系统安装时文件系统的选择
  • python super 多重继承_Python的super()如何处理多重继承?
  • debian系统安装
  • qt修改程序图标名称_Qt for Android修改应用程序的图标和名称
  • 一些有用的打电话,写email,写信一些有用的知识
  • vscode自动快捷格式化代码_vsCode 代码格式化(Ctrl+S自动格式化代码+保存)
  • java数组定义错误_JAVA定义数组 int a[]=new int[100000] 错误
  • java 执行查询_java执行SQL语句实现查询的通用方法详解
  • linux使用学习手记[不断更新]
  • htmlparser的使用java_HTMLParser的使用
  • 访《桃花源记》之桃花源
  • java做题没思路_学java快两月,代码能看懂什么意思干什么用的,就是一到做题,脑子一片空白什么思路都没有这是为什么?...
  • ----------
  • docker容器内的网络抓包
  • gops —— Go 程序诊断分析工具
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • jquery ajax学习笔记
  • springboot_database项目介绍
  • Twitter赢在开放,三年创造奇迹
  • 给新手的新浪微博 SDK 集成教程【一】
  • 七牛云假注销小指南
  • 前端面试之闭包
  • 巧用 TypeScript (一)
  • 驱动程序原理
  • 我有几个粽子,和一个故事
  • 学习Vue.js的五个小例子
  • hi-nginx-1.3.4编译安装
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 如何正确理解,内页权重高于首页?
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # C++之functional库用法整理
  • #Linux(权限管理)
  • $(function(){})与(function($){....})(jQuery)的区别
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (SpringBoot)第二章:Spring创建和使用
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (原)Matlab的svmtrain和svmclassify
  • (转载)Google Chrome调试JS
  • .Family_物联网
  • .NET 5种线程安全集合
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net中wcf服务生成及调用
  • ?.的用法
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [2016.7.Test1] T1 三进制异或
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [Bada开发]初步入口函数介绍