【GDC2016】AI自适应与设计师控制的融合【全境封锁】的NPC创作方法

发表于2016-05-18
评论2 4.3k浏览

  【全境封锁】是最近比较热门的联机射击RPG游戏,在GDC2016上,负责该游戏开发的设计和程序人员讲解了支持游戏玩法的NPC AI的设计相关的内容。笔者最近也在设计游戏的AI系统,和以往看过的GDC上的AI分享以及AI Pro上的文章相比,本次的分享在内容和设计思路上都有很多的亮点和可借鉴的地方,因此这里也做了翻译和总结整理,希望有兴趣的读者可以一起学习讨论。

游戏预览

  本次分享的两位负责人,本别是Ubisoft的开发工作室Massive Entertainment的游戏设计师和Massive Entertainment 的高级AI程序员Philip Dunstan


 

   MassiveEntertainment 的游戏设计师的Drew Recher


  MassiveEntertainment 的高级AI程序员 Philip Dunstan

 

  开场先是播放了【全境封锁的介绍视频】

 

战斗NPC概述

  首先是所有可作战NPC的概述,游戏开发团队为开发的36个独特的战斗AI准备了11个类型的原型,并设计了5个种类的敌对派系。在以行为树作为基本决策制定结构的同时,加入了检测系统(Detection System),威胁系统(Threat System),和动态的目的处理以及脚本控制的功能,来对玩家行为做出更真实的反应。由于游戏的开放性世界RPG的特性,通过前面提到的各种系统AI来对应各种玩家同时,用脚本来丰富NPC在故事任务中的表现。

 


  NPC的概述


设计理念


   

游戏主要的设计理念 

  游戏的设计理念是是本游戏的最大要点,首先本作【全境封锁】,定义为RPG(角色扮演)+Shooter(射击)的游戏类型。作为射击游戏,玩家可以使用各种现代武器装备作战,还可以通过天赋和科技,以不同定位角色(输出,支援,治疗,坦克等等)进行在线的组队游戏,在的玩家合作和职业配置以及战术选择上都有很大的可玩性。所以也需要作为控制敌人NPCAI可以支持这种玩法。而RPG要素方面,一个是要根据玩家对游戏的熟悉和等级装备的提升,NPC也要在表现和行为上有所成长,不断加入更高级的NPC和类型,同时NPC也要对应游戏里不同的事件和各种难度的任务。所以,在AI的制作方面,加入了更健壮的AI原型,以便于扩展NPC和给予玩家更好的游戏体验,以及随着剧情发展,可以支持加入更多的NPC类型。

  在游戏内的环境方面,本作是以小说家汤姆克兰西品牌为原型的游戏,风格上不是魔法和科幻类的作品。另外玩法上选择了开放世界的游戏地图,玩家可以不受时间限制在整个曼哈度区内随意移动,同时为了保证游戏乐趣,AI还是不能做的太过智能和强大。接下来介绍的就是【全境封锁】如何以这些为基础来进行设计和开发的。

 


  游戏的定义是RPGShooter的融合

 

 


  基于汤姆克兰西作品风格的真实环境


 


  通过健壮的原型,开发出不同类型的敌人和派系


 

 

NPC原型

  接下来就是支撑【全境封锁】玩法的NPC原型(AI)的设计,首先是11种游戏原型的介绍,有通常的互相射击的Assault,接近攻击的Rusher,远距离狙击的Sniper,扔手雷的Thrower,设置的炮塔控制器的Turret,高射速重火力的Heavy Weapons,高体力和攻击立的Tank,给予周围行动影响的Leader,恢复体力的Support,以及有特殊行动规范的Special

 


  支持玩法的11AI原型

  为了实现之前提到的对设计理念,对原型的实现也提出了一些要求,这里主要还是射击游戏玩法方面的,首先是需要玩家可以对应情况切换目标(Target Prioritization),例如Rusher类型的敌人近身时会对玩家造成大量伤害,需要玩家优先处理。同样,例如在副本和任务的Boss战中,Target Ordering也要求玩家去寻找最优的攻击顺序。(PositioningRepositioning)要求玩家更积极的进行走位,不能一直躲在同一个掩体后面射击,造成AI无法攻击到玩家,会有Thrower投掷手雷和各种投掷物,强迫玩家离开当前的掩体,同样,有些AI也会尽量躲在玩家打不到的敌人,需要玩家移动到敌人的侧翼。也要求玩家尽量的躲避,一旦玩家暴露在掩体外太多时间(游戏里也就几秒),会有Heavy Weapons类型和Sniper类型的敌人对玩家造成大量伤害,这样难度越高的任务和副本,就需要玩家花费更多的技巧和时间来完成。

 

  对原型实现的主要要求

  为了增加难度,AI原型之间也会相互的合作来攻击敌人,下图就是不同的NPC类型之间的协作性,可以看到Rusher和和Sniper以及HeavyWeapons的协作性很强,Rusher会尽量接近玩家,迫使玩家离开掩体或向他攻击,这时Sniper会和Heavy Weapons对玩家造成大量伤害。

 

  不同NPC原型之间的协作性

 

   接下来,是10NPC原型的介绍和视频演示

 

 

标准的战斗单位突击兵

 

直接冲向玩家近战攻击的冲锋兵

 

远距离攻击的狙击兵

 

投掷手榴弹和其他范围攻击物品的手雷兵

 

可以放置炮塔来攻击的控制者

 

一定时间内使用重火力高速射击的重武装型敌人

 

有着高HP和高攻击的坦克

 

治疗和使用防御技能的支援角色。

 

特殊类型的敌人

 

各种兵种原型的视频介绍

NPC派系分类   

  设计了10NPC的原型后,作为射击游戏的NPC基本要素就有了,接下来就是NPCRPG元素的支持,随着玩家对游戏的熟悉,以及等级和装备的提升,NPC也要有一定的强化,【全境封锁】中根据游戏故事,设计了6个派系,其中有5个敌对派系,每个敌对派系在相互配合,使用的技能,科技的等级上使用不同的配置,来区分出强弱,而且在动作细节上,不同派系也有不同。

 

游戏中的六个派系 

  游戏中玩家的派系是联合特遣部队,首先遇到的敌人是无组织的暴徒(Rioters),他们大多是基础的原型NPC,不同类型的之间也没有协作,对玩家的反应也迟钝,很容易就被消灭了。然后会遇到第2个派系清除者(Cleaners),这里首次遇到的手拿喷火器的Tank类敌人会给玩家造成很大的挑战。第3个派系是莱克斯帮(Rikers ),NPCAI不光是在合作和技能上有提升,配合他们的背景,动作上也有改变。最后遇到的是幸存者部队(Last Man Battalion)和他的进阶的幸存者部队(Tier2)。具体的不同会在下一个节有详细介绍。

 


  没有太多军事训练的暴徒,动作和移动行为都比较随机和业余

 


  第2个派系清除者,最大的特征是手持火焰喷射器的坦克型敌人

 


  AI更加智能和有协作性,动作也与之前不同

 

  

  两个等级的幸存者部队,加入了技能和混合型兵种 

  而作为友方势力的联合特遣部队(Joint Task Force),首先的作用就是给玩家分派任务,每个街区任务完成后,会指引玩家到下一个街区的营地,在任务中还可以起到协助玩家或作为玩家保护解救对象的职责。

 

  

  带领和伴随玩家整个游戏流程的友军,联合特遣部队

NPC的挑战等级

   就如前面所说,游戏根据派系对AI设置了等级,随着等级提升,派系的NPC对玩家行动的反映,他们之间的团队行为,移动速度和风格,以及对掩体的使用频率和技能使用频率等等都有提升之外,作为数值属性的各种抗性和生命值,伤害,精确度。

 

 

  不同派系敌人的难度不同,基于难度在各种NPC AI行为和属性上有所改良

  先是对玩家的能力和反应上,通过不同的预设配置来改变NPCBumbDefaultEliteTech)对玩家能力和行为的反应,其中普通是暴徒专用的,Default为大多数NPC使用,Elite主要是给游戏中的精英角色以及幸存者部队(等级2)使用,Tech则是Boss使用,除此之外,还有坦克类型角色使用的Heavy和炮塔使用的Turret

 


  通过ProfileNPC对玩家能力的反应做预设

  NPC的移动速度和风格,修改了NPCStrafe(围绕目标移动)的速度和Rusher的冲锋速度,暴徒在被攻击时,移动和各种行动都是平民那种慌乱的行为,而到了后面的派系,各种动作变得更加的镇静和专业,移动方面提供了两种移动时向玩家(和掩体)射击的方式,一种是先冲到一个位置后,围绕目标移动射击,另外一种是直接绕着目标进行射击。团队协作上分为有组织和无组织,掩体使用上,高级的敌人会更积极的利用掩体躲避和射击,而低级敌人则是在掩体和非掩体位置随机选择移动射击位置。同时,不同派系的NPC对应的技能使用频率,范围,冷却时间,强度上也有增强,随着难度提高,NPC也会使用更高级的技能。另外,NPC的生命值,伤害以及晃动等的抗性上,也根据派系有增强。

   


  移动速度和风格上不同等级有所区别,Strafe移动是指枪口朝向敌人的边移动边开火的动作。

 


  团队行为,当玩家向敌人开火时,其他敌人会集火攻击玩家来强制玩家躲避或进入掩体,也会有近战兵种以及包抄配合来让玩家暴露在掩体外等等。

 

高等级的NPC会尽量躲避在掩体后射击和移动,迫使玩家包抄或接近到侧翼来进行攻击。

 


  敌人通过频繁的投掷AoE道具,让玩家无法长时间躲在同一个掩体下。

 

  

  低等级的敌人的移动和射击更容易被玩家的行动打断】


初级的暴徒与最高级的幸存者部队(等级2)的对比


  NPC的角色定位上,分为标准,老兵,精英和有命名的,更高级的角色,装备,护甲,瞄准和外形上都有对应的提升。

 

NPC的行为

  前面也提到了,【全境封锁】NPC的实现是基于行为树结构的,而且因为游戏的RPG要素,需要加入各种任务,突发事件,接下来就看看【全境封锁是】中行为树结构制作的NPC行为与关卡设计师控制相融合的方法吧。 

  首先是下图的决策制定的优先级流程,可以看到上面优先级较高的是各种关键事件和脚本事件以及有目的性的行为,下面低优先级的才是基本的行为。

系统自适应控制的AI与关卡设计师脚本驱动的AI决策的执行优先级

  然后是NPC的基本行为的介绍,最主要的是战斗遭遇的行为系统,包括感知与侦查系统(Sensory/Detection),位置查询与走位系统(Positioning),以及威胁系统(Threat),AI除了这些基于行为树驱动的自主行为以外,还给关卡设计师提供了控制权,可以更方便的制作各种任务事件的表现。

 

NPC的主要行为

  【全境封锁】的战斗分为两种,一种是在开放世界的地图上的突发时间和遭遇战,另一种则是根据故事推进的任务战斗。进入战斗前,玩家是处于调查阶段,这个时候敌人不会发现玩家,玩家可以开辟战斗区域,走位到要有优先攻击到敌人的位置,通过耳麦与队友交流制定计划等等。而这时NPCAI也会执行自己的检测系统,分为闲置(Idle),备战(Ready),侦查(Investigation),战斗(Combat),战斗侦查(Combat Investigation)几种。默认的NPC是处在闲置的状态,通过NPC的警觉等级系统设置的阈值,与受到视觉和听觉系统的刺激的数值对照,来决定是否切换到备战,或开始侦查甚至是直接进入战斗。

遭遇战主要分为两种

玩家进入战斗前可以进行准备工作

 

玩家的战前侦查

 


  NPC检测系统(DetectionSystem)的流程

 

  不同帮派的警觉(Alertness Level)对应的阈值也不同,幸存者部队的警惕性更强

 


  视觉检测(Visual Stimuli),视锥会受到NPC类型,是否战斗和瞄准,以及天气的影像

 

视觉检测的视频展示,黄色,橘黄,红色分别对应不同的警觉等级

 


听觉上的检测(Audio Stimuli),不同声音会让NPC切换到不同的检测状态上。

 

  

  利用NPC的最后已知位置的设置(Last Known Positions),方便玩家在掩体后进行走位或在掩体间快速移动,绿点为NPC记录的玩家位置

 

利用最后已知位置,可以躲避敌人的攻击

 

   当敌人NPC通过侦查系统发现玩家后,就进入到战斗状态,通常的FPSTPS游戏中,为了让AI可以更加智能的进行战斗的开火,躲避的功能,通常会设置Cover Position(战争机器里的Cover Link)和Fire Position(光环系列)。而在【全境封锁】里,分别设置了标记掩体的(CoverPosition)和非掩体位置(Non Cover Position),高级的NPC可以在掩体后移动以及躲避射击,低级的NPC和一些兵种,可以选择非掩体位置进行移动射击。而且,游戏还加入了位置评估系统,根据NPC移动到这个位置的距离和风险,以及他到底这个位置可以获取的攻击优势等等,用了一系列的参数来对每个位置点做评估,从而让AI的走位更加合理和有威胁性。通过威胁系统,AI也可以选出对自己威胁最大的敌人进行攻击。

   


  关卡设计师在场景中摆放掩体位置和非掩体位置,在NPC在掩体位置时就会配合场景里的物件作出掩体设计动作,在非掩体位置时就是移动或漫游射击。

 


  通过位置评估系统,NPC AI可以找到最佳的掩体/非掩体位置

 


  本图里就是对各个位置的评分

 


  NPC对各个位置的查询顺序,分别是查找最佳掩体位置,视线内近处的非掩体位置,以及视线外远处的掩体和非掩体位置

 


  NPC移动侦查的示例,稍后会配上视频

 

侦查系统的演示,绿点为玩家可能隐藏的位置,NPC侦查看到后,把绿点移除

 

  NPC会通过威胁系统来选择攻击对象,当面对4人玩家组队时作用会更加明显。

   以上就是战斗流程中,基于行为树架构和各种系统实现的自发的行为,但由于任务和特殊事件的插入,有时就需要打破这个战斗流程,由关卡设计师插入一些特殊的NPC行为,或直接对NPC的属性进行修改。【全境封锁】中,通过虚拟脚本中的节点,给予设计师对各个系统的控制。

 

  

  提供给关卡设计师的可视化脚本工具,可以通过各种节点对NPC的行为做修正

   首先是低层次的命令(Low Level Orders),可以直接对NPC下达行动指令,例如移动到哪里,向某个位置射击等等,当然因为他的优先级最高,会破坏AI原有的各种行为。然后是战斗中走位的修正(Combat Positioning),可以由设计师额外的加入一些区域体,保证AI当时只在这个范围内移动,或者是给予一些位置点额外的加分。还有就是脚本来控制AI的警告等级(Scripted Alert Levels),这样可以屏蔽AI检测系统中的一部分状态,比如直接就让AI从限制状态切换到去某个位置侦查等等。最后是高层次的有目的性的行为(HighLevel Objectives),和低层次命令的执行特的某个行为不同,它更倾向是的是一系列行为组成的任务目标。

直接给NPC下达指令,优先级最高

 

但这种NPC指令也因为会破坏默认的AI行为。

 

  战斗跑位上,通过设置区域体,使用评估系统和分数加成,指示NPC AI走向设计师提供的分数较高的位置。

 

  脚本化控制警觉等级,可以跳过一些中间状态

 

  和命令不同,这个是给予NPC一个更具体的任务(Objective

  还有就是游戏中NPC与道具的交互,通过位置评估系统来配合NPC的走位,通过威胁系统,优先的攻击道具附近的敌人,当周围没有威胁时,直接用上面的策划操作功能,移动NPC到道具位置来交互。

 

  直接给予NPC与道具交互的任务

  就如题目所写,基于命令的AI和系统性的自主AI各有利弊,是同时都需要的。本次GDC的【全境封锁】的AI设计的介绍就到这里,GDC上还有一个议题分享了【全境封锁】AI系统的调试方法, 有兴趣的读者也可以去看看。

 

   


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