基于YOLO目标检测及OpenCV实现的游戏代玩人工智能体(Auto Gaming Agent) [1]

大型生存类游戏自动代玩人工智能[1] -- 介绍篇

  • 游戏介绍
  • 实现方法

游戏介绍

偶然的机会我接触到了“明日之后”这款大型多人在线手游,这是一个以末日病毒感染人类为背景的生存类游戏。游戏世界讲述了人类遭遇前所未有的丧尸危机,在这个资源紧缺的时代,未被病毒感染的幸存者们需要通过采集资源、制作工具和武器、建造家园来生存下去,与一些经典的沙盒生存类游戏很类似(如七日杀、方舟生存进化等)。但是这款游戏做到了大型多人在线实时互动,可玩性是很高的,而且初次体验的时候,整个游戏的画面是很精致而且非常写实的,营造的阴森和恐怖的氛围也凸显了病毒末日的紧张感,总体来说游戏的沉浸感很强。

基于YOLO目标检测及OpenCV实现的游戏代玩人工智能体(Auto Gaming Agent) [1]_第1张图片

基于YOLO目标检测及OpenCV实现的游戏代玩人工智能体(Auto Gaming Agent) [1]_第2张图片

但是只要玩过的都知道,这种类型的游戏需要花费极其大量的时间来采集地图里的基础资源(此游戏主要是木头、石头和麻)来制作生存必需品和建造栖息之所,着实非常‘伤肝’。也是偶然的突发奇想,为何不利用现今如火如荼的人工智能来帮助我做这越发枯燥的采集呢?

基于YOLO目标检测及OpenCV实现的游戏代玩人工智能体(Auto Gaming Agent) [1]_第3张图片

仔细分析,自动采集游戏里的资源是非常可行的,因为这本质上是机械化的重复操作。采集资源的基本操作,打比方说要采集木头,(作为人类玩家)就是首先识别游戏场景里可供砍伐的树木,然后走到寻找到的目标前面,对准目标进行砍伐,将这棵数砍伐完毕以后再识别下一个目标、走过去、砍伐,循环往复…所以本质上这是非常程序化的工作,并没有上升到人工智能的高度。但是其中有个难点就是如何识别游戏场景中的资源,因为相对来说,这个游戏的场景是比较写实而复杂的,里面涵盖了多种形状各异颜色各异的物体(树、石头、麻、浆果、油菜花、熊、鹿、僵尸、直升机等等,都是可以与他们‘互动’的),而每种物体又有数种可能的形状,并且由于是3D游戏,从每个角度看同一个物体都是不同的样子,加之游戏有模拟日夜和天气变化,所以想要用简单的形状或颜色来识别是不可能的。所以我所指的人工智能主要是运用其中的神经网络目标识别的方法(Neural Network based Object Recognition),来进行游戏场景中的物体识别。

实现方法

这个项目的大前提是不调用任何游戏内部的API,完全通过游戏画面为输入,电脑键鼠为输出来实现游戏的自动控制,相当于一台电脑替代人类玩家自动玩游戏。前面也提到了,自动采集的实现主要步骤就是寻找目标(目标识别)、瞄准目标(运动控制)、靠近目标(运动控制)、进行采集。因此从实现方法来分,主要也可分为图像识别(image recognition)及动作控制(motion control)。基于所有开源的方法和工具,整个项目会以简单易用而不失强大的python为基础,用OpenCV视觉库和基于OpenCV的YOLOv3-tiny目标识别模型来实现图像识别,然后用python第三方库中的keyboard和mouse模块来实现键鼠自动控制。这篇博客会记录我如何实现的详细过程,由于步骤复杂且内容较多,我将所有内容分为了几个模块来阐述。

  • 屏幕监视
  • 目标识别
  • 地图识别
  • 动作控制

你可能感兴趣的:(YOLO,OpenCV,人工智能,自动游戏)