我的自描外挂制作日志——FPS类游戏的自瞄【构思准备】

1,538 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情

需求背景

  一时心血来潮,尝试制作一个“外挂”:用来制作FPS类游戏的AI外挂,目标需要完成的任务如下:

  1. 在玩游戏时需要在游戏画面上标注出人物目标框(后期可以更换为人脸OR人头);
  2. 由于不是读取内存,这里不作透视需求;
  3. 可以使用驱动鼠标控制鼠标箭头达到目标框内(瞄准的是人物的中心(矩形框的中心));
  4. 可以较为及时的显示处理视频画面(避免延迟)

实验设备

  这里我们以FPS类游戏CS1.6为例子,选用CS1.6其原因是足够老,不是很吃GPU,这里需要保证有足够的显存进行推理,避免推理存在延迟。显卡选用性价比较高的英伟达的1660ti。在算法这里先选用yolo系列,然后进行缩减结构,更改主干网络(在不影响准确率的情况下,为了加速)。

  这里我们采用目标检测进行自瞄的构建,从前期的训练到后期的推理测试验证,根据训练需求可得如下实验设备:

硬件软件
PC机游戏(CS1.6)
显卡(1660ti)架构yolo

数据的准备

  选择CS1.6还有一个好处是没有过分特殊的皮肤,视频画面显示的人物较为真实. 根据需求,我们需要完成yolo算法的话,数据是必不可少的。

  1. 我们可以选择原始的游戏画面,使用labelImg进行标注;
  2. 采用开源行人数据集;
  3. 借鉴 juejin.cn/post/710491… 进行大批量数据集的制作;
  4. 使用别人的模型,制作自己的数据集。

算法逻辑

   这里我不过多介绍原理,一切以实操为主! 根据yolo目标检测,我们可以得到如下逻辑顺序结构:

  1. 获取当前视频画面(指定显示器区域内容图像);
  2. 对视频画面进行人物检测(后期可以选择人脸OR人头);
  3. 将检测结果绘制到截取视频画面上,同时输出目标中心点(使用视频画面的中心点坐标)
  4. 使用驱动鼠标,控制鼠标快速达到中心点坐标。