【译】《最终幻想XV》中角色AI的意识决策系统解析

发表于2016-03-28
评论8 1.52w浏览

史克威尔 艾尼克斯(SQUARE ENIX 后简称SE)的次世代游戏引擎【Luminous Studio】,成为话题的,也许是先进的图形表现的印象,实际上AI部分,也是采用领先世代的技术来实现的。

  SE在CEDEC2015上的会议【FINAL FANTASY XV  EPISODE DUSCAE 角色AI的意识决策系统】。这些以前都没有正式介绍过,Luminous Studio的AI系统的设计思想和结构也很有意思。本稿,是对这个会议概要的报告

 

一、游戏中的AI是什么

 

三宅陽一郎(技术推进部,首席AI研究员,SQUARE ENIX)

 

会议最初登场的,是SE技术推进部的首席AI研究员,三宅陽一郎氏。三宅先生可以说是日本游戏AI界的第一人,在CEDEC 2015上除了本次的会议外,还负责着其他AI相关的会议。

  三宅首先是以【游戏的人工智能是什么】为基本开始说明的。

  三宅对它的定义是   【所谓的智能,是根据环境来协调自身运动的功能】,换句话说就是【理解环境,选择行动】是智能的基本行动。

 

 

三宅认为智能是使自己协调环境来运动的功能

 

  智能是经过【认识->决策->运动】的流程,给予世界影响(反应),对输入单纯的反应是微生物一样的智能,并看不出有多优秀。这里的认识,角色,行动的各个阶段,把这个这些结果进行记忆存储,就是【学习】,作为今后决策的参数数据,为了解释可以参考的机制也必须实现。

  简而言之,就是把过去存储学习过去的经验来行动,变成更加高级的智能的行动。

 

关于人工智能的理想基本构造实例

 

  那么,【游戏中的AI】,就是把这个【决策】的部分标准的简单模型来设计。这里决策制定的简单模型使用了【基于行为(Behavior)的AI】和【基于状态(State)的AI】两种。选择来构筑AI。

 

  AI的决策模型,有几个标准的简易模型。Luminous Studio中,选择了基于行为的AI和基于状体的AI

 

 

  基于行为AI的构筑方法有【行为树(Behavior Tree)】的概念。行为树,是擅长进行详细行动的适应性的决策模型。另一方面,基于状态的AI构筑方法有【状态机(State Machine)】的概念,状态机适应坚定的决策的AI构造。

  Luminous Studio中,为了导入这两种方法的优点,决定开发混合型的AI系统。 

 

游戏行为树的事例

 

游戏状态机的事例

 

状态机是阶层构造

二、Luminous Studio的AI引擎【Luminous AI】的概要

  作为游戏引擎Luminous Studio的一部分而实现的AI系统,是为了让程序员以外的非引擎的职员- 策划和美术师也可以容易使用来制作角色的智能和开发而制作的工具。

  这样,首先是游戏AI必要的概念列表,把它进行分类,以哪些是必须要实现的要素来开始检讨设计方针。

 

必要概念的列表,分为11个种类

 

  那么,近代游戏的AI,主要分为【Meta AI】,【Character AI】和【Navigation AI】3大要素。因此,大致的设计方针也遵从这个来进行。

  Meta AI是,掌管游戏世界进展的全局AI,来控制具体的故事和事件进行的东西。Character AI,正如其名,是控制角色行动的AI,游戏爱好者们听到【游戏的AI】时的印象大多是这个类型。最后的Navigation AI,是让角色的移动时,选择合适的移动路径的来使用的。

 

游戏AI的三大要素

 

  这次的AI开发项目中,把Luminous Studio的AI引擎整体称作【Luminous AI】,其中,角色(Character) AI称作【Lumionus AI Graph】,导航AI称作【Luminous AI Navigation】。

 

  Luminous AI开发项目中,角色 AI【Lumionus AI Graph】,导航AI【Luminous AI Navigation】。

  Lumionus AI Graph的定位是【开发角色的头脑的工具】,开发了把节点和节点链接制作流程图的工具。并不是用文本来编写代码或脚本,而是用图表工具来设计的方法,这样不是软件工程师也可以使用,以方便易懂为目标,这个也是最近游戏开发工具的标准。

  另外,Luminous AI Navigation,是用Luminous AI Graph设计角色AI时,需要路径搜索功能时所呼出的结构。

 

  分类的AI要素的大部分,都分配在了Lumionus AI Graph和Luminous AI Navigation里。现在并没有全部实现,有颜色的项目是目前已经实现的。

  另外,Meta AI,因为是更大一些的概念,有每个游戏自己开发的,也有使用Luminous AI的工具来制作的。 例如,Luminous AI Graph,需要对应在Meta AI的内部构造化的功能也有用到。


三、Luminous AI Graph的基本功能

  在三宅的基本架构的说明后,SE第二商务部的白神陽嗣和並木幸介登场,进行Luminous AI实现的工具和功能的介绍。

 

白神陽嗣氏(第二商务部,程序,SQUARE ENIX)

 

並木幸介氏(第二商务部,AI程序,SQUARE ENIX)

 

关于Luminous AI设计的4个课题

 

  白神,並木两个人的解说,分为了4个主题,全部都是具体的Luminous AI的功能和考虑实际的AI设计的使用者更方便使用的。这里顺序的做说明。

  第1个的主题是,行为树和状态机这两种不同构造的AI,如何进行组合实现的。

  循环构造的状态机和树结构的行为树。把这两者整合好是很难的问题,开发组使用了大胆的实现方法,很好的整合了它们。具体的实现上,两个结构的共通要素的部分可以一起使用,独立要素做成图形构造,用相互阶层的构造来整合。

  再稍微做些详细的说明,首先,AI的构成要素,也就是把描述逻辑的各个节点(功能集),作为零件,让状态机和行为树双方共有。

 

状态机和行为树的各单位节点,相同逻辑的部件必须要能共享。

 

  然后,这里独特的是,把状态机和行为树构造不同的部分,分别的组合来实现。通过这个,构成循环结构状态机的节点的一部分,可以被行为树使用,相反的行为树的节点的一部分组合,也可以在状态机的循环构造中使用。

 

使状态机和行为树可以组合。通过这个,可以描述复杂的阶层图形构造。

 


  Luminous AI Graph的画面。最上层的状态机中,包含的一部分节点是行为树。行为树包含的一部分节点是状态机。

  第2个主题是,方便的进行游戏AI的功能扩展的方法。这里,【节点的图表构造】的阶层化构造有很大的贡献。

 

 

  白神用下面的幻灯片为示例来说明。幻灯片的左图,是设计中的AI。链接线(Link)很多,非常复杂的状态机构造。左图的右侧,是AI攻击行动的纵向列举。

  因此,追加一个攻击行动,只增加一个【新的攻击动作节点】是不行的。因为就像幻灯片右侧那样,进行攻击决策的每个节点,都要用链接线(右侧的红线)与这个新增加的节点连接,否则追加的节点就无法启动。决策节点很多的时候,要连的链接线也会增加,变成了非常冗长的工作。

 

左边的状态机AI,增加新的行动节点的时候,右边必须连接大量的链接线。

 

  这样,把右侧的攻击节点阶层化,这样的话,每增加一个新的攻击行动,只需要在这个攻击节点的阶层里追加一个节点,攻击节点的阶层里增加1个链接线就可以了。而且,上层的状态机的链接线也很流畅,逻辑整体也更容易理解,可以说是一举两得。

 


  通过节点的阶层化,可以比较容易的增加节点,增加节点,上层链接构造也没有变化。

  第3个主题是,是游戏的流程(游戏进行方面)和AI的统一控制的方法。这里导入称作【黑板】(Blackboard)的概念来对应。使用黑板,可以自由的增加去除全局变量。

 

 

  在Luminous AI Graph中,准备AI图表中使用的共享变量空间【Local Blackboardl】,和游戏进行相关的变量使用的【Global Blackboard】。

 


  实现了AI方面可以获取游戏进行相关信息的结构的【黑板】功能

 

从黑板获取的信息,在节点内处理后返回值的函数那样来使用也是可以的

 

  第4个主题是,制作相似构造的AI时,不需要反复的拷贝黏贴制作的节省手工作业的方法。具体的,准备了两种功能。

  1个功能是,把通用性高的AI部件登陆为一个【Asset】。资源化的AI部件,可以在项目的AI制作者之间共享使用的同时,也可以给资源增加修改和优化,使用这个资源制作的所有AI,都可以更新到这个资源的最新状态。

  编辑资源的动画,可以参考下。

 

四、Luminous AI中使用【Asset】功能让AI部件复用

  左边制作的AI部件的【Asset】,和右边是一样的【Asset】。右边的Asset修改AI部件后,使用同样AI部件的左边Asset也同样反应了修改。

   还有一个功能是,是根据【构造比较近似的AI,可以变更一部分节点】的需求而实现加入的功能。这个也叫做【Override】,只修改AI部件的一部分就变成了新的AI部件的功能。通过这个,AI部件增加变化,这个变更也会反映到用Override功能制作的AI部件上。通过这个,相似的AI的共通部分,就不需要再一个一个的修正了。

 


  上面的幻灯片,是原来的状态机型的战斗AI。只变更这个AI的战斗,制作其他角色的AI时,把原来的AI的Override,AI的构造只变更这部分就可以了。

  以上就是,Luminous AI Graph高实用性的方法,可以看出被大量的加入了。

 

五、加快FFXV开发而实现的Luminous AI的功能

  接下来的白神氏,对Luminous AI在实际游戏组成过程中要求的3个功能组做了说明。这个基于Luminous Studio开发的游戏,当然那就是最终幻想XV(PS4 / Xbox One,以下简称 FFXV)。白神氏列举的3个功能,就是在FFXV开发工程中Luminous AI搭载的功能。

  第1个功能,是制作的AI的调试功能(Debug)。

  调试功能有2种,1个是通过Luminous AI Graph的工具画面上从AI图表,来确认实行的AI在那部分运行的【可视化节点调试】(Visual Node Debug)。还有一个是,就可以确认各种参数和运行日志的【游戏内调试窗口】(InGame Debug Window)。

 

    


两种AI调试,另外,绿色线框显示的角色是调试对象。

 


  玩法(Gameplay)和事件之间,需要可以顺畅的推进AI角色行动的方法,导入了【Tary的插入实行】。

  第2个功能,是指在GamePlay中行动的AI角色,可以流畅(无缝)的迁移到游戏事件的功能。这个是在实行的AI中插入执行内容,导入【Tray的插入实行】的结构来实现。 所谓的Tray,应该就是Luminous AI Graph的工作画面。

  具体的流程是,分别准备通常AI和事件表演用的AI,在通常AI执行中需要产生事件时,把它插入来执行。插入产生时,把通常AI和事件表演用的AI进行替换,这个事件表演的AI结束后,再恢复成普通AI。通过这个,实现了【Gameplay→Event→Gameplay】的流畅迁移。

 


  导入了插入执行的结构,利用黑板可以在游戏系统方面交换参数。

  还有,使用前述的黑板(Blackboard)功能,根据状况设置黑板的参数,可以让事件表演的AI持有变化和环境适应能力


 

  第3个功能是,为实现更聪明的AI,可以同时复数思考的功能。这个在状态机和行为树里,都实现了可以并列思考的【Parallel Start】(后面简称P-Start )节点。

  Tray中设定复数的的P-Start节点,状态机和行为树中,都可以并列执行。

 

上面的幻灯片是状态机中,下面的幻灯片是行为树中指定P-Start节点的样子。

 

  独特的一点是,设定P-Start到AI节点阶层,那么就会改变并列思考的等级。例如,把最上层设置P-Start,制作一直并列思考的AI。另外,把下面阶层设定为P-Start,就会移动到这个阶层下面执行,变得可以并行思考。

  具体的举例,预先把最上层的【索敌】和【步行】用P-Start来设定,这样角色一边移动一边索敌。这里在索敌的下层,用P-Start设定增加有多个目标要攻击哪个【攻击对象选择】,和对选择的目标选择合适的攻击手段的【攻击方法选择】。那么,当索敌范围内进入多个目标,切入到战斗状态时,同时执行目标选择和攻击手段选择。

 


  使用并行执行概念的阶层化,制作出可以一直并列思考的同时,也可以只在任意的状况下可以并行思考的AI。

 

六、FFXV中如何使用Luminous AI

  继续对Luminous AI的功能做说明的並木氏,一边展示开发过程做在FFXV和Luminous AI Graph,一边对FFXV中实际的AI制作示例做说明。遗憾的是,这里的映像无法发布,这里使用公开的照片,总结一下概要。

  译注:当时西川发文时,ppt和视频还没有公开,更多细节请看我翻译的全篇的PPT。

  那么,在FFXV中,街区的居民NPC,进行大致的行动决定的是,是用编写的社会行动的脚本系统,和设定社会行动细节的基于Luminous AI Graph的AI组合来实现的。

 

    

NPC的AI控制

 

  还有,角色的动画控制,并不是有行为树的决策AI直接播放动画,而是通过状态机那样的身体控制AI来控制。通过决策部分和身体控制的分离结构的实现,NPC可以辨认周围的环境,更加适应环境的自然的来运动。

  以后的游戏表现上变的重要的【AI和动画的相互连携】,也导入到了Luminous AI里。

 


  FFXV中的角色,被草木阻碍而推开,或者是接近岩石时手的附着,都是AI控制动作的。识别周围的环境,协作来动画。

  视觉感应和目标检索功能。游戏世界的角色,敌我双方都用同等的条件来行动。


 

  然后,Luminous AI在准备了【视觉感应】功能,可以对游戏世界实际看到的各个角色做识别,再根据视觉信息行动来设计AI。

  选择攻击对象的【目标搜索】功能,使用视觉感应的子系统中,计算出看到的对象里的攻击优先顺序。

 


  上面的画像是战斗中的画面,下面是AI的地形解析情况的调试显示。右下的金发的角色"Prompt"的AI,解析地形环境来检索对Behemoth(左上的怪物)的最佳射击位置的状况。绿红蓝的Heat Map,红色是危险的场所,绿色是候补点,右边看到的一个蓝色的,是AI计算出的最佳位置。因此Prompt向蓝色的地点突进。

 

怪物AI的制作中使用的Luminous AI Navigation功能。

 

  另外,在怪物的动作控制上,积极使用了Lumionus AI Navigation的功能。特别是Lumionus AI Navigation中实现的【Point Query System】(简称PQS)的位置检索系统和【Steering】系统,为怪物AI的构筑做了很大的贡献。

  PQS,是用数据控制移动目标候补的结构,预先作成每个怪物的PQS数据,这样就制作了这个怪物固有的基本移动模式。所谓的PQS数据,是角色看到的移动目标的候补地点的数据群,通过这个可以,角色可以设定在目标的周围活动。通过这个技术,程序员分别制作怪物的步行/移动模式,可以加入到PQS数据中来制作。

 

通过PQS,给予移动目标候补数据来制作怪物移动的变化。

 

  而引导(Steering),则是一边根据视线信息做回避行动一边移动的系统。给予群体行动的多个NPC同样的目的地的话,NPC之间容易产生冲突,这里利用Steering,可以回避障碍物的到达给定的目的地。

  以上就是这次会议的报道,主要内容是宣传【SQUARE ENXI构筑的先进AI制作环境】,反过来说,也是想提示【现在游戏中的AI,所需要制作的】新标准。

  回顾PS3和Xbox360时代的游戏,虽然图形品质有所提高,但动画和AI的新购的那个品质,不相称的游戏还是很多的。SE的Luminous Studio算是打破了这面墙吧。

  另外,这个会议对今后想构筑新的AI系统的游戏开发者,可以说能得到很多的暗示。特别是状态机和行为树的相互阶层构造的结构,只要是听到,就会认识到是应用范围非常光,适用性很优秀的设计。各种感知系统和导航AI的组合的系统也有很大的发展余地。

  Luminous AI现在还没完成,今后也会继续进化,在2016年发售的FFXV中,会遇到比现在发布的体验版【FINAL FANTASY XV -EPISODE DUSCAE-】中更聪明的AI角色们。现在开始体验乐趣吧。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引