目录

一、什么是游戏AI

二、为什么需要游戏AI

三、游戏AI的主要实现方式

1.朴素AI

2.有限状态机(Finite-state machine,FSM)

3.分层有限状态机(Hierarchy-FSM,HFSM)

4.行为树(Behavior Tree,BT)

5.目标导向的行为规划(Goal-Oriented Action Planning,GOAP)

6.协同多智能体(Group AI&Meta AI)

7.机器学习(Machine Learning)

四、游戏AI与其他行业AI的区别

五、总结与展望

  • 一、什么是游戏AI

严格意义上来讲,与其他领域的AI相比,许多类型的游戏AI实际上都不能称之为AI。大多数游戏里的AI实际上只是一些能够给玩家带来一定智能程度的“错觉”的智能体。所以,简单来说,游戏AI就是游戏中那些非玩家控制的游戏角色,也就是NPC的行为逻辑。

  • 二、为什么需要游戏AI

在游戏中,虚拟的游戏角色的行为深刻影响着玩家在游玩这个游戏时候的感受,而游戏AI决定了这些虚拟游戏角色背后的行为逻辑。这种行为逻辑真实与否,直接影响了玩家的游戏体验。

打个比方,艾尔登法环中的许多敌人都有一个“药检”系统,敌人一旦检测到玩家使用元素瓶,敌人就会发了疯似的来打断玩家。单从这一点来看,这不是一个优秀合理的游戏AI。甚至因此有玩家调侃到,哪怕你在元素瓶的物品描述上加上这样一句话——使用元素瓶这件事在交界地被视为是最恶劣的嘲讽方式,都能使这一事件合理。由此可见,游戏AI对于玩家的游戏体验起到重要作用。

  • 三、游戏AI的主要实现方式

1.朴素AI

游戏AI最简单的实现方式,就是用if else这类的简单分支语句对NPC的行为进行分类和判别。

打个比方,有一个敌人在巡逻,我们可以用朴素AI为他添加一些规则:

  • 如果视线内没有人就巡逻
  • 如果视线内有玩家就攻击
  • 如果生命值降为0就死亡

看上去好像没有什么问题,但是如果玩家接近这个NPC,之后又离开了这个NPC的视线呢?这个敌人就会在攻击结束后和没事人继续回去巡逻,这显然不符合常理。而且实际上游戏中的情况远比这种情况要复杂,虽然单纯使用这种简单的分支语句,在理论上也可以通过各种嵌套实现很复杂的行为逻辑,但且不说这段代码有多让人头疼,最主要的是其代码的复用性太差,每个不同类型的敌人都要从头构建一个新的行为逻辑,所以这里我们要引入有限状态机。

        2.有限状态机(Finite-state machine,FSM)

有限状态机是将游戏内NPC的各类行为抽象为几个状态,再通过事件将不同的状态相互连接,组成一个状态机。在某个特定事件发生时,状态才将进行转换。

还是以刚才巡逻的敌人举例,我们可以将这个敌人分为巡逻、警戒、攻击、死亡四个状态,再通过一些事件进行连接,如图1所示

图表 1有限状态机

在有限状态机下,通过很简洁的代码就可以实现复杂的行为逻辑。并且最重要的是,代码可以封装复用了,不同类型的单位可能只需要修改几个切换状态的条件,大大降低了工作量。

        3.分层有限状态机(Hierarchy-FSM,HFSM)

分层有限状态机是有限状态机的进阶版。随着NPC的行为逻辑越来越复杂,有限状态机也有点不够用了,于是就需要分层有限状态机。

图表 2分层有限状态机示意

在分层有限状态机中,每个状态都可以包含多个子状态,而子状态仅可以与同状态下的子状态之间切换,不同状态下的子状态之间是不可以切换的。

还是以刚才巡逻的士兵为例,我们给他的巡逻状态分为巡逻和休息两个状态,攻击状态分为攻击和防御两个状态,这样这个警卫的状态图如下(省略了图1的部分内容)

图表 3分层有限状态机举例

        4.行为树(Behavior Tree,BT)

行为树是树状的数据结构,每个节点都代表了一个行为,每个行为都可以有子行为。所有行为都有个先决条件,也就是产生这些行为的条件。每次从根部节点开始遍历,检查每一个先决条件,满足先决条件的节点会继续判断执行它的子节点,而如果一个节点的先决条件并不满足,则会跳过它的子节点,判断它的兄弟节点,直到整个树遍历结束,再从根部节点开始遍历。

与状态机不同,行为树的节点与节点之间的联系较少,增加与删除节点对其他节点都没有什么影响,增加了它的灵活性与可扩展性。而且,可以通过在先决条件中添加随机因素来很好的实现随机性,更适用于一些动作游戏中boss的攻击逻辑等。

图表 4行为树示例

但是行为树的设计思路更加接近机器的思维,而且因为其每次运行都要从根部节点开始,其决策判断时间也要比状态机更长。

        5.目标导向的行为规划(Goal-Oriented Action Planning,GOAP)

目标导向的行为规划,要先给AI一个(或多个)目标,再给AI提供多条可执行的行为路径、对世界因素的描述、每个路径行为执行的先决条件、以及执行行为对世界产生的影响效果等等。然后AI要根据这些因素,找到一个最佳行为队列,并按顺序执行。

举个例子,一个AI被关在一个带锁的笼子里,笼子里有一个小锤子和一个玻璃箱,玻璃箱里有钥匙。给AI的目标是离开这个笼子,AI可以执行的行为和先决条件如下:

行为

先决条件

执行效果

体力消耗(Cost)

用锤子锤开锁

有锤子

打开锁

30

用锤子锤开箱子

有锤子和箱子

打开箱子(有钥匙)

10

用钥匙开锁

有钥匙

打开锁

5

AI在遍历所有行为后,可以得到两条路径:

图表 5目标导向的行为规划

经过计算两种路径的体力消耗,先用锤子锤开箱子再用钥匙开锁的消耗小于直接用锤子锤开锁的行为消耗,AI确定前者为最优解并执行。这种决策方式更加接近人类的思考方式。

        6.协同多智能体(Group AI&Meta AI)

以上所列举的这几种方式,已经基本可以满足单一NPC的绝大部分需求了。但是,实际的游戏环境中大多并不是单一智能体,而是同时有多个智能智能单位,这些智能体之间的行为联动也是游戏AI的一部分。比如在某些潜行类游戏中,一个NPC发现什么响动,通常会带动他周围的好几个敌人同时警觉,并一起前往发出声响的地方搜查,这就是Group AI在起作用。

而对于NPC更多、场景更复杂的情况,我们就需要Meta AI,它的作用是对场上的所有AI进行指挥调度,就好像是坐在幕后的“导演”,用蓝牙耳机告诉场上的NPC在什么时候该去哪干什么事,从而实现更加可控的玩家体验。

        7.机器学习(Machine Learning)

说了这么多方法,其实都与真正意义上的人工智能关系不大,那么有没有游戏AI真正用到了人工智能方法呢?答案是肯定的,这里我们以rct.ai开发的“混沌球”算法为例。

首先让我们从整体架构的角度来看看基于混沌球的叙事方式与传统叙事方式的不同:

图表 6混沌球叙事

混沌球与传统的叙事方式的区别在于,他们将 “事件” 替换为一个又一个明确定义了入口和出口的黑盒,这可以简单理解为,在每一个切片的混沌球里,开始和结局(一个或者多个)是确定的,但是玩家每一次如何从开始到达结局,则是混沌的,是路径不明确的。这个路径只有当玩家不断的和虚拟世界里的虚拟人物 NPC 作出交互,这些 NPC 根据深度强化学习训练后的模型作出动态且实时的反应来推动剧情发展之后,才会被确定下来。这似乎有点像之前提到的目标导向的行为规划,但是NPC的路径选择是根据强化学习训练后得到的。

  • 四、游戏AI与其他行业AI的区别

游戏AI与其他行业AI最主要的区别,就是游戏AI的设计目的是用于服务人类玩家,是为了给予玩家一个尽可能好的游戏体验,这也是为什么前面一直都没有提到大名鼎鼎的AlphaGo。从设计目的的角度来看,AlphaGo不能算得上是游戏AI,它的存在从来不是为了服务玩家,而是要打败玩家。DeepMind公司的目的不是为了让围棋这个游戏更好玩(他们甚至让围棋变得更无聊),而是测试自家的AI有多么强大的计算能力和学习能力,围棋只是一个工具而已。

所以,游戏AI在与玩家对抗时,一定要满足合理性与公平性。比如敌人不能发现自己视野以外的单位,不能让玩家觉得AI作弊了(但是AI的确会作弊来获取信息,而获取这些信息不是为了击败玩家,而是为玩家提供更好的服务)。文章开头提到的艾尔登法环中一些读指令的行为,就会让玩家有一种出戏的感觉,降低游戏的沉浸感与真实性。

而且,有些时候为了增加游戏的沉浸感和多样性,抑或者仅仅是为了降低游戏的难度,游戏AI不仅不能太聪明,甚至还要装傻。比如许多射击游戏中敌人的第一枪永远打不中玩家,或者在AI的决策中添加随机性,让AI也可能会犯错,露出破绽等等。

  • 五、总结与展望

游戏AI发展至今,已经有了一套相对成熟的方法,而今后游戏AI的发展,更多的是朝着非定性AI的方向发展,使用如今前沿的AI技术,诸如神经网络、遗传算法、NLP等等技术,让游戏AI展现出更加真实的一面,更好地服务于玩家的游戏体验。

浅析游戏AI的原理与实现相关推荐

  1. 【前沿技术】浅析搜狗AI主播背后的核心技术

    文章首发于微信公众号<有三AI> [前沿技术]浅析搜狗AI主播背后的核心技术 今天是新专栏<前沿技术>,技术的更新迭代实在是太快了,我将在这个专栏给大家解读学术界/工业界最新的 ...

  2. 游戏AI之初步介绍(0)

    目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...

  3. 浅析丨AI安防产品发展现状与趋势分析

    https://www.toutiao.com/a6709720036610671118/ 实际上,人工智能产业发展已有60多年,但是,一直以来AI学习能力十分有限,因此,也并未走进公众的视野.不过, ...

  4. 游戏+AI,你不曾想象的未来

    AI,Artificial Intelligence,人工智能. 这词或许过去陌生,但现在几乎妇孺皆知.不管你是不是真的能拼对这个单词,是不是真的能理解其中的含义,都不重要. AlphaGo打败围棋世 ...

  5. 基于强化学习与深度强化学习的游戏AI训练

    github地址 一.摘要 在本次大作业中由两个项目组成. 第一个小项目即为简单AI走迷宫游戏,通过强化学习的Q-learning算法,对AI进行训练来让其能以大概率找打一条通关路径并基本按照该路径进 ...

  6. 博弈对抗游戏AI的技术方法的一些总结和思考

    目录 一.总体概况 1.博弈类型和算法 1)团队博弈 2)有限零和博弈 3) CFR系列算法 4)NFSP系列算法 2.不同的决策方式 二.不同游戏AI的简单介绍 1.棋盘游戏AI 2.纸牌游戏AI ...

  7. 游戏AI行为选择算法一览

    前言 AI研究的目的是为机械赋予智慧,而游戏一直被认为是需要智慧才能完成的事情,因而游戏自然成为了AI自证能力的最佳途径之一.从棋盘游戏到视频游戏,从最早的Deep Blue到近几年大热的Alpha ...

  8. 游戏盾的原理和功能是什么?

    什么是游戏盾呢? 游戏盾是为针对游戏行业中复杂的网络攻击而研发的安全解决方案. 游戏盾专为各类游戏行业定制,针对性解决游戏行业中复杂的DDoS攻击.游戏CC攻击等问题.其主要功能就是隐藏服务器的真实源 ...

  9. 【百面机器学习之算法工程师读书笔记】——第十四章:人工智能的热门应用-游戏AI

    目录 游戏AI发展史 从AlphaGo到AlphaGo Zero 德州扑克中的"唬人"AI AI电子竞技 星际争霸:走向通用AI 为什么AI需要游戏? 游戏AI发展史 (1)195 ...

最新文章

  1. 2021年春季学期-信号与系统-第十二次作业参考答案-第一小题
  2. Boston和MIT研究人员利用脑电信号实时控制机器人
  3. python有趣的小项目-有趣的python小项目,自动生成有趣的表情包!
  4. 通过QuartzCore/CoreAnimation.h实现让玫瑰花飞舞
  5. bzoj 4372 烁烁的游戏 —— 动态点分治+树状数组
  6. 王大珩追悼会举行 上千人雨中送别“光学之父”
  7. 银行招聘笔试中行测和综合知识复习心得
  8. mac下nginx搭建
  9. Atitit 代码要写的漂亮 老板要的是效率 冲怎么办突 目录 1. 代码要写高效,写漂亮,要考虑可扩展性和安全性,到了公司才发现老板要的是效率,不在乎你的代码写的是否高效,安全,是否具有可扩展性
  10. jquery video全屏_帮助你生成全屏视频背景的超棒jQuery插件 BigVideo.js
  11. 《第二次曲线创新》李善友教授
  12. python提取图像像素值 行号列号,x,y坐标关系
  13. 传智健康(黑马项目)
  14. 英语基础语法学习笔记 2
  15. Infor M3咨询服务调研报告-Infor M3咨询服务生产基地、总部、竞争对手及市场地位
  16. 回调函数,事件管理器
  17. 洛阳理工学院计算机类分数线,2017洛阳理工学院录取分数线
  18. Google Adsense 西联汇款热点问题的说明
  19. python多久更新一次_一学就会的 Python 时间转化总结(超全)
  20. TH-OCR文字识别SDK 12.X介绍

热门文章

  1. 半数年轻人存款不足10万:反映现代社会年轻人面临的财务压力和挑战
  2. 16进制 BCC校验(异或校验) Java代码
  3. FB宣布支持安卓Tor访问 匿名访问安全性引争议
  4. sed amp;amp; awk工具 及一些经常使用的shell脚本
  5. 上云有隐性成本? 用户要警惕五个坑
  6. 克莱姆法则与雅可比行列式
  7. VS2019+WDK10驱动编译不通过error:driver does not install on any devices,求解!!!
  8. 切比雪夫不等式例题讲解_【初一】含字母参数的一元一次不等式(组)的解题技巧...
  9. 大数据处理实验(三)HDFS基本操作实验
  10. zigbee 网络连接的坑