基于视觉识别的游戏自动点击方案
在一些休闲游戏中,很多重复性的操作(如打怪、治疗、采集等)往往需要大量的时间和精力。前段时间实现了一套基于视觉识别的 UI 自动点击方案,通过截图分析、目标识别和模拟点击,实现游戏任务的自动化执行。
相比传统的内存修改或协议注入方式,这种方案有几个明显的优势:
- 非侵入式,不修改游戏客户端,只通过屏幕截图和模拟点击进行交互;
- 成本可控,无需复杂的逆向工程,基于开源模型即可快速搭建;
- 响应速度快,视觉识别+点击的闭环可以在毫秒级完成;
- 模拟真人操作,点击位置和时间间隔都可以加入随机扰动,低频使用时风控特征不明显。
工作流程
架构设计
整个自动点击方案采用分层架构设计,将设备操作、视觉识别和任务逻辑解耦,便于扩展和维护。
核心模块
设备抽象层 (AutomationDevice)
设备层负责与不同平台进行交互,提供统一的接口:
- 设备信息获取:分辨率、设备状态等
- 屏幕截图:获取当前游戏画面
- 点击操作:坐标点击、滑动等交互
通过抽象设备接口,可以轻松适配不同的运行环境,如 MuMu、雷电、夜神等常见模拟器,以及真机 ADB、微信小程序等平台。
任务抽象层 (Automator)
任务层是整个方案的核心,集成了设备操作和视觉识别能力:
- 集成设备、OCR、模板识别等模块
- 提供截图和事件触发接口
- 定义任务执行流程
具体的任务(如打怪、自动治疗)继承自 Automator,实现各自的任务逻辑。
视觉识别模块
方案提供多种视觉识别方式,应对不同的游戏场景:
| 模块 | 用途 | 特点 |
|---|---|---|
| OCRProcessor | 文字识别 | 适用于血量、数值等文本信息提取 |
| TemplateMatcher | 模板匹配 | 适用于固定图标、按钮识别 |
| DetInferencer | 目标检测 | 基于 ONNX 的 YOLO 模型,适用于复杂场景的目标识别 |
训练目标检测模型
在复杂游戏场景中,模板匹配和 OCR 往往不够用,需要借助目标检测模型来识别怪物、道具等动态目标。为了快速提升模型能力,采用了一套迭代训练流程。
迭代步骤
1. 程序化生成基础数据集
从游戏截图中手动框选目标区域,通过随机裁剪、旋转、亮度调整、噪声添加等数据增强手段,快速生成一批基础训练数据。这一步成本低、速度快,可以让模型先建立初步的目标认知。
2. 基础模型训练
使用生成的基础数据集对 YOLO 模型进行初步训练,得到一个可用的基础检测模型。虽然此时模型在真实场景下的表现可能不够理想,但已经具备了基本的目标识别能力。
3. 真机验证与微调
将基础模型应用于真机截图进行识别,人工确认识别结果后,将真机样本加入训练集对模型进行微调。这一步是提升模型精度的关键,因为真机数据包含了真实的光照、分辨率和渲染差异。
训练循环
以上三个步骤构成一个完整的训练循环,通过不断重复"识别 → 确认 → 微调"的过程,模型能力可以快速提升。通常经过 3-5 轮迭代后,模型就能达到可用的检测精度。
训练成果
得益于这套迭代流程,模型训练效率非常高:
- 半天出模型:从数据采集到模型可用,整个过程仅需数小时
- 检测正确率 99%+:经过微调后的模型在真实场景下表现优异,几乎可以替代人工识别
- 快速适配新目标:新增检测目标时,只需重复上述流程即可快速产出新模型