您的位置:首页 > 服装鞋帽 > 女装 > 第一人称射击游戏(FPS)AI工艺技术攻坚

第一人称射击游戏(FPS)AI工艺技术攻坚

luyued 发布于 2011-06-12 14:06   浏览 N 次  

  编撰:瓦剌哈迷

  第一人称射击游戏推动图像技术提升是出了名的。不单是图像,还有AI。过去几年中很多显著的技术创新均来自于FPS游戏,包括《L4D》的“人工智能导演系统”、《FEAR》的“STRIPS规划器”、《杀戮地带2》的HTN规划器,等。随着2011年第一、二季度新一轮射击游戏的发售(如《孤岛危机2》、《子弹风暴》、《边缘战士》),现在是最好契机让我们放慢脚步来审视我们还未攻克的技术难关。

  从上个月开始,我一直忙着为参加今年7月份的巴黎射击游戏研讨会做准备。我一直在仔细撰写研究领域的公开项目,参考来自Crytek、 People Can Fly、 IO Interactive、Ubisoft 开发人员的反馈。帖子还包括仍然至少需要多年才能被解决的论题,按低至高层AI进行了分类。

  攻坚A:感官性能

  

  图示1:《杀戮地带2》的覆盖地图,服务于“视距线” 难点:

  视距线(LoS)查询是AI获取周围环境的动态信息的最常用方法。但是,目前视距线的计算成本也是极高的,也就是说你用来描绘环境碰撞几何的每条或每一簇射线都代价昂贵。一般来说,线越长,性能越低。很显然,如果AI不能得到所有它需要的信息,那么它的行动表现会很差。

  建议:

  通过对运行平台普通算法进行优化,尽可能地提高此类感官查询的效率,尤其对于PS3和XBOX360主机(比如,重点考虑按序指令执行和缓存属性)。在整合系统中加入作业调度程序,二者平行运行。这意味着有更多机会来对这些查询进行智能分批处理,以确保在进行大批量计算时也能够保持良好的性能。或者,开发人员也在试图编写定制数据架构以快速提供出能满足FPS游戏需求的近似值。

  例子:

  《杀戮地带2》使用预先生成的三次方航点覆盖地图。

  《黑暗地带》使用双层柱形查阅表决定可见度。

  《孤岛危机2》很显然使用基于定制数据结构的PVS系统。

  攻坚B:动作计画

  

  图示2:《边缘战士》的跑酷动作 难点:

  现今大多数游戏是让AI向动画发出指令,告诉动画应该做什么。比如,走一段路。这种作法多数时候是管用的,但会导致动画行动表现差。比如,让动画走最近的路意味着动画不会像走旁边较长的路那样顺畅。在AI全面撑控的情况下,当AI的指令与动画所能做到的不匹配也会导致bug出现。

  建议:

  解决此问题的其中一个方案是采用动作策划系统。你可以把它想成是寻路系统,但寻的是可行性动作――即一组动作模型。理论上讲,如果你利用源自动画的数据及统计数值预先设计好路径,然后当你开始遵循这些路径的时候,其结果将会是更佳的表现,而且极少出现bug。间接带来的难题是,搜索相匹配的动作将需要大量的计算。而减少计算的解决方法也会相当复杂,而且耗费内存。

  随着越来越多的游戏试图让角色在游戏世界中“脚踏实地”,减少走路如滑行的现象。所以,此项技术的改进显得更为重要。

  例子:

  《生化奇兵》使用一款A*型搜索系统来找到符合通过路径的动作。

  《全能战士》同样使用 A*的一种来挑选动画要用的动作。

  《神秘海域2纵横四海》使用A* 在玩家角色动画状态中进行搜索。

  攻坚C:快速策略寻路

  

  图示3:《杀戮地带2》的航点网络 难点:

  在战斗情况下,像真的游戏玩家做的那样,在掩体间快速有效的移动对AI来说至关重要。然而在大多数情况下,最近的路线并非是你想要的。我相信你记忆中有过这样的情形,一个敌人本来试图躲避你的射击,但结果他却是从你跟前跑了过去!如果使用更好的策略寻路系统,AI就能够搞清楚从你跟前跑过去是个糟糕的决策,转而选择走另一条路线。

  大多数A*工具是基于距离的欧氏探试法,选择一条最短的路线。也就是说当你打算去另一个点时,你会得到一条算数意义上距离最短的路线。游戏开发人员偶尔使用变量A*成本计算,但这会使搜索成本激增,导致相当糟糕的情况。这其中存在一些缺陷,就好像一个常数因子导致探试推算量倍增。但这个方案后来可以抵销可变成本。

  建议:

  寻路性能的问题一般通过层级结构或高等探试法解决。在这样的情况之下,由于变量地图计算成本的动态性质(比如,对视距线或威胁等级的计算),这两种方法都是技术性难题。任何算法都必须要有足够的速度来应付每秒变动多次的边缘成本。可惜区域聚类算法的速度还不够快(尽管它计算精度高),而且网格层级结构的成本与收益间的折衷还不明确。

  例子:

  《杀戮地带2》使用感应地图法引导小队寻路。

  攻坚D:动态地形分析

  

  图示4:《战地:叛逆连队2》的动态障碍物探测 难点:

  许多游戏依赖手工标注或预处理制作高效精确的地图表示。这项工作多完成于开发过程中。但问题在于一旦环境发生改变,信息就变的无效了。有些游戏储存多个地形破坏前后不同的标注版本,或者依赖对简单地形一定量的动态探测。在一个动态的世界里,这种方法显然不管用。

  建议:

  运行时启动动态地形分析,随着的地形的变化即时生成标注。要实现这点我们需要面对很多挑战。首先,它要拥有完全不需要手工标注的强大功能;第二,可以在游戏运行中即时运行。尤其是,有助于导航网生成的基于像素的解决方案或许同样适用于此种分析。

  例子:

  《战地:叛逆连队2》使用动态探测系统进行动态地搜索掩体位置。

  《杀戮地带3》使用像素分析法寻找玩家掩体位置。

  攻坚E:高效的战斗推理

  

  图示5:《光环》系列中的战斗推理 难点:

  要想在战斗中做出明智的决策,你需要来自地图标注、地形分析、寻路、线距线等很多系统的高质量的信息。由于你需要对很多不同的决策做出评估,以找出可靠的战术位置,所以很快效率走低。除了建立更高效的低级系统以更快的速度提供信息,还需要我们运用较少的信息做出更好的决策,同时还要考虑到每一个信息的成本。

  建议:

  改进AI系统。AI系统通过大量的信息进行推理,每条信息都有成本。信息成本通常和请求次数及请求相似度成正比。相似位置的两个A*寻路的成本较高也仅仅体现在边缘函数,而且众所周知视距线查询的分批处理可提高性能。我们的AI推理应该能够应付这个,精确的信息请求将快速地提炼出选项,并能有效率地对查询进行分批。

  从某种程度上讲,这项研究就是围绕着如何优化获取大量信息以进行决策的应用系统。

  攻坚F:玩家预测

  

  图示6:《军团要塞2》的热区图 难点:

  我们已基本掌握了制作敌人AI的要领,但换成是制作友军AI时,就相对困难得多。当然,虽说制作友军的情绪与互动表现也是难点,但我们连AI的基础功能都没能制作到家。队友经常会挡住你的视线和去路、卡住了不能移动、走错方向或做错事等等。在基础功能的这个层面上仍有很多问题等待我们解决。

  玩家预测是其中比较重要的问题。我们可以解决结构性障碍物回避、选择合理站位,或者制作无玩家情况下友军的行为。要使AI的表现建立在玩家预期的基础上是个难题。要达到这一点很有可能涉及到让AI能够对玩家正在做什么以及即将要做什么进行预测。

  建议:

  目前,游戏中玩家预测的应用程式比较少,并且对此项课题的研究不够深入和广泛。对玩家行为的预测可能达到何等程度尚且不明确,更别说什么理想的解决方案了。研究分为两个方向,一是基于逻辑的样本规划识别,一是多样玩家动作模型的策略性使用。或者结合二者。

  攻坚G:脚本处理与目标分隔

  

  图示7:《荒野大镖客》中的非玩家角色(NPC) 难点:

  游戏AI程序师已经能够手到擒来地将AI编写成自动适配的目标导向型系统,可以应付无法预见的改变,并仍然完成目标。这是个相当不错的媒介来告知NPC要做什么,并递归地中止复杂行为。然而,当关卡设计师接管过来,再加附上无视一切的特殊低级指令时,就会发生严重错误。

  分隔式目标,即同时对多个目标进行推理的能力,是其中一种可行的解决方案。想法是这样的,设计师指定出他们想要发生的事件做为一个目标(比如,剧情推动性任务),AI程序师也能够设置其它的目标(比如,战斗和生存任务),让AI自己去将所有目标结合到一起。

  建议:

  目前,指令都是被整合入行为树的,运用设计模型将指令合理地植入整个战斗树和不完全抑制自主行为的复用行为之中。然而,单个行为树不具备执行多个单独目标的能力,并且对平行树的使用仍然不普遍。从另一个方面来看,STRIPS式的规划器也许适用于处理更复杂的目标状态,它还未被应用于脚本与自主行为的结合。

  例子:

  ABL,作为一种反应性规划器,可将多个树式结构进行整合。

  攻坚H:小队协作

  

  图示8:《英雄连》的小队协作 难点:

  NPC们作为小队的一部分,它们分享同样的目标和信息,所以能共同完成任务而不发生重叠。当NPC们拥有各自不同的能力时,所有你看到的小队行为都是基于个体AI行为的综合呈现。有组织的小队协作极其罕见,这样只会限制了小队的行为范畴。最酷、最高效的军事行动都需要协作。

  建议:

  为小队建立起一种形式的AI对有组织的协作意义深远,这样可以使设计好的情节在意图之下发生,而不是让它出现。最大的挑战在于AI探测何时以及如何启动协作模式的能力,而不是让个体行为占有主导权。然后呢,小队中各单位具体应该如何进行协作;阶层式规划和类似体育游戏中场面回放的数据库看起来比较可行。输出规划达到何等程度才能计算出每个个体的低级细节?实现小队AI互动于个体AI的优秀媒介是什么?

  例子:

  William van der Sterren 一直致力于研究HTN策划器在《武装突袭2》中的应用。

  索尼的《NBA 09》使用一种基于逻辑模式匹配的系统来实现小队协作。

  攻坚I:体验管理

  

  图示9:《生存之旅》中的僵尸群 难点:

  玩家是游戏的重要组成部分,AI肯定是对玩家的位置、行动,或许有时还包括之前的行为做出反应。然而,很少有游戏有对某种情形下的玩家预期创建模型。如果你想开始着手制作的话,优秀的设计者会让AI的表现符合玩家的这些预期,同时确保游戏公平、不难为人。

  建议:

  解决问题的关键在于,要建立一种系统,能监视玩家的行动并搜集统计数据。下一步,在此基地上创建一组模型服务于将玩家分类,计算出玩家对游戏的预期为何。菜鸟玩家预期的具体内容或许会非常不同于游戏高手。使用模型识别,在这些识别模型的基础上让AI导演系统(运用传统游戏AI技术执行)发挥作用为每种玩家编制出适合的游戏体验。

  例子:

  《生存之旅》使用AI导演系统来调整僵尸的刷新率。

  《黑暗地带》对敌人进行动态难度调整,根据玩家的状态改变行动策略。

  总结:

  你或许会注意到有些游戏AI攻坚项目没出现在上述当中。我也没想让名单务求详尽。但我力图将焦点放在FPS的特殊性难题上。像情感、社交互动、多智能体导航、或甚至是懦弱行为表现等尽管也属于难题,但这些不是此类型游戏的代表性重点问题。

  你还会注意到导航性难题甚至是AI决策和行为的问题也没出现。尽管这些领域存在很多设计困难,但在过去的几年里,有关技术成熟了不少,而且在这些科目的创新上难有作为。中介软件公司如此受到认可的事实就已经说明了还有更多可逐步改进的领域。

图文资讯
广告赞助商