游戏引擎:游戏引擎剖析(十)

原文作者:Jake Simpson
译者: 向海
Email:[email protected]


第10部分: 人工智能和导航(路径发现)


人工智能(AI)
  我们上面已经用了其他 9个章节介绍了游戏引擎现在让我们深入到非常有趣和重要人工智能主题人工智能如今正在变成被谈论得最多仅次于游戏引擎渲染能力游戏开发领域的确实如此直到大约两年半以前游戏似乎主要是在考虑你能够渲染多少个多边形眼睛是多么漂亮和… 好…劳拉胸部是多么有弹性...既然我们现在已经能够渲染出非常真实乳房中心就开始转移到我们实际上用那些多边形做什么了(即玩游戏)它给你提供实际玩游戏刺激作用和参和游戏世界中正在进行事情所以人工智能在这个领域非常关键

  人工智能包括了全部东西从在Tetris中决定哪块新砖头掉落(这很大程度上知识个随即数产生器) 直到创造基于小组策略游戏这些游戏和你交互并且实际上在你玩时候向你学习人工智能包含了许多规则如果你(作为个游戏开发者)没有花费足够多时间让它正确地工作它会反过来在你屁股上咬所以让我们谈论些哪些规则?这样你能更好地理解人工智能系统会确实是多么复杂为了避免法律上纠纷我们将使用个假设游戏而不是个真实游戏作为例子

  假设我们游戏中有坏份子生活在3D世界中干着他们事情而且如果你打搅了他们正常次序他们就会反抗你(玩家)你必须决定件事情就是他们正在从事到底是什么事情呢?他们正在守卫什么东西吗?在巡查?在计划个聚会?在购买食品杂货?在整理床铺?建立行为基线是游戏开发者工作的旦有了这个你就总有NPC(非玩家角色)或计算机控制‘人’能够恢复去做事情玩家和他们交互就应当能被完成

  旦我们知道个NPC角色需要做什么 — 比如它在守卫扇门并且在这个区域小巡逻NPC也必须有‘世界意识’游戏设计者需要决定NPC人工智能将如何看见世界和它知识范围你将会仅仅说“计算机知道正在进行每件事情” 吗?这通常被认为是件糟糕事情非常明显计算机能够看见和听见你不能看见和听见事情这被当成是在作弊不是种有趣经历或者你将模拟他视野这样他只能够对他能看见事物作出反应吗?当有墙壁出现时这里就有问题了你开始进入那些我在第 9部分提到‘追踪’例程看看NPC是否试图对被墙壁挡住人作出反应这是个很明显人工智能问题但是当涉及到门和窗户时这个甚至变得更加复杂了

  当你开始为AI刺激例程增加听觉意识时这依然变得更加复杂了但是这个意识是那些关键“小事情”的这些使得假想游戏世界似乎更加真实或者能够去除怀疑悬念如果你碰到过这样事情请举手:你在枪战中跟个NPC交战免除了个NPC你绕着角落行走并遇到了另外个NPC依然保持他缺省行为模式没有意识到刚刚发生事情现在枪是嘈杂事物枪战可能已经明显地提醒了个“倾听”NPC有些事情正在进行避免这种事情窍门技巧在于找到个有效方式来决定声源(即你武器发射)距离是否足够接近到NPC能够听见

  接下来就是决策例程当我们巡逻NPC角色能够听到但不能看见某物时你试图实现什么样行为呢?他去寻找它吗?不理睬它?你如何决定什么是重要声音他应该去或者不去调查?如同你看见这会很快变得非常复杂有很多思路方法来建造处理这些事情代码但通常这样是个好主意建立个不是对特定NPC而是对所有NPC都起作用系统该系统基于你能够在游戏引擎以外文本文件中建立属性这样就不需要员为个给定角色而改变AI并且如果你对游戏代码做了改动它将立即自动地应用到所有角色这在大多数情况下是件好事情

  其他世界意识问题会冒出来比如这样情形两个守卫彼此紧挨着站立你用狙击武器干掉了而另外个站在哪儿完全不知已经发生事情再者遵守真实世界行为细节是款好游戏和款伟大游戏的间区别

  让我们说你已经把所有刺激-响应部分准备好了—你已经扫描了世界决定NPC应当对正在进行些事情作出反应—他听到了玩家角色发出了声响—并且你(游戏开发者)决定了他应当对这个做些什么—他将去调查现在更加复杂事情来了他如何离开现在位置到达他认为发出声音地方而不会想通常数字傻瓜样跑到墙壁里面碰到家具呢?继续往下看…


有关正确路径 --- 世界导航
  快速准确世界导航( 也叫做路径-发现) 近来已经成为游戏开发者圣杯 让它看起来非常信服是件非常困难事情你需要有局部世界地理知识—墙壁位置台阶悬崖和建筑物等边缘你也需要世界中对象知识—比如家具汽车尤其是其他人位置真正最后原因是问题所在会儿我们将回到这点上

  世界导航通常被分为两个领域世界导航和局部导航 2者实际上只是范围上区别但大多数员分别对待它们这样处理起来容易世界导航例程处理理解房间门和地理学并计算出让玩家或者角色从世界中A点到达B点条路径“它将让你从A点到达B点”这是句很容易说不是吗?说起来容易但做起来很困难理解世界是个非常复杂问题我已经看到过许多尝试过解决办法QuakeIII机器人遵照建造预先处理过地图说法使用原来地图地面预处理器检测地面元素由地图建造者作上标记并自己建造个只使用地面世界简化地图机器人并不关心墙壁他们从不接近它们就像他们遵照地面地图设计上已经把避免墙壁构造在里面了

  其他思路方法在地图本身里面建造些小结点AI可以追随它们这些结点通常被建造在彼此视线里面有从个结点到其他所有结点连接角色AI能够直接‘看见’所以你就确保了从个结点移动到另外个结点时AI不会试图穿越墙壁如果有门或者降落物你能够事先用这些结点对路径信息编码于是NPC能够采用适当行为—等候电梯打开扇门或者从点跳到另外这实际上是HereticII使用系统也是Raven在他们其他大多数游戏中使用系统

  有关这个主题3D RealmsJess Crable现在为Duke Nukem Forever工作如是说:

  "导航在许多方面是个巨大挑战主要是当游戏中有大量正在发生事情和些非计划性东西比如障碍为了避免和(或)真实地对非计划性障碍物导航(例如像另外AI)AI需要很好地知道正在它周围发生事情比较而言另外个巨大挑战就是真实感如果AI正在表现玩家在实际生活中看到些东西比如说个人或者条狗 那么让它看上去真实可信就更加困难"

  然后就是局部导航我们可能有条路径让我们 NPC 从他在世界中位置移动到他认为听到声音地方但你不能盲目地按照这个执行并期望得到看起来不错结果这种性质路径倾向于非常特定于个给定当你沿着走廊从个房间跑到另外个房间时它很好但如果你试图指导他穿越个巨大房间时路径结点思路方法容易最终得到些看起来很奇怪发现路径这些路径也不是动态他们被预先建造他们不容易考虑到世界任何动态变化桌子可能有被移动过了椅子被破坏了墙壁被摧残当然人们会移动这就是局部导航区别于世界导航地方它必须考虑局部世界并导航NPC在里面穿越它必须知道周围环境存在哪些可以选择路径并决定选择哪

  在局部导航中最大问题是其他NPC给定个发现路径具体例程如果你在相同般区域中有不止个NPC他们都试图到达世界地点结果是他们都非常容易有相同路径然后他们试图沿着这个路径行进结果彼此遇到然后花费他们所有时间试图将彼此分开并且旦成功地分开了他们再次试图到达目标然后我们又再次看到同样事情发生切看起来都是非常愚蠢这不是大多数人想要效果所以需要些路径发现中变化来避免这种情形需要些妥善处理避免代码有大量能够帮助解决这种情形算法


人工智能和角色动画问题
  当然当角色自己在世界中行走时你必须完全地决定你想要角色播放什么动画听起来无足轻重?不是有关这个主题Raven Chris Reed—Soldier of FortuneII使用名为LICHAI系统现在负责人—如是说:

  "此刻我能告诉你我们在平滑移动上正有着最大困难个多丘陵长满草丛林中试图让 5个角色在彼此附近行走是个非常困难问题让底层系统完美是重要除非角色在较低层次上(避免墙壁适当动画)看起来真实他们不能够有效地表达任何较高层次决定智能由于这个单独原因动画和底层移动是最重要和最难实现它确实需要完美"

  因此我们已经让我们角色从A点到达了B点他自己穿越世界在途中避免障碍物正确播放动画现在到达了这里他看见了你接下来做什么呢?很明显更多是作出决策他将向你射击太棒了你回应射击现在干什么?当他试着逃走时候现在你再次经历全部同样事情

  为了让这些情形看起来令人信服你看见了这里必须要处理大量问题如果你建立你AI使用没有动画行为让NPC执行这能被混合些Soldier of Fortune中AI就是这样例子他们受到了指责坏家伙没有以适当方式对刺激作出反应当他们明显应该这样做时候敌方NPC不扫射或者不逃跑部分问题是他们没有扫射敌人NPC动画或者让他们往回跑空间问题因此世界上所有最伟大AI代码都不能够解决这个问题这是所有要考虑重要事情

  想知道隐藏难点吗?看看我前面所有描述然后试着将它应用到组NPC上这些NPC彼此必须说话设定目标彼此沟通但不妨碍彼此方式旦你这么做了试试那些代码作为玩家队友做上面所描述这些然而不要在枪战中妨碍他现在这是复杂然后这成为乐趣这是最困难部分Raven Chris Reed有关AI‘感觉’些评论:

  "我认为反馈是AI个极大问题如果角色对于他周围环境变化不产生反应游戏真实感就被完全打破了这有许多明显例子(听见枪炮声看见同伴被击中...)以及些更加微妙事情(当两个人通过门厅时看着彼此并点头致意)玩家是乐意接受些生硬和可预测性但是这些事物容易把游戏带到现实生活"

  并且Jess Crable 赞同:

  "平衡是非常重要… 对玩家将会有多大乐趣至关重要但还有其他问题要平衡游戏玩家时常说他们想在游戏中看见更加真实人工智能然而太多真实感开始把乐趣带走在这两者的间必须要有个好平衡变化和随机同样也很重要—行为变化和保持在可信范围内定程度不可预测性"


游戏规则和自然发生游戏
  在我们有关AI所有描述中我们采用是FPS方式有不止AI我们已经描述是处理3D世界组规则AI远远不止这些时常最好AI实际上非常简单它就是组规则玩家必须响应和处理响应(或开始)动作规则

  这里应当处理个被称为“自然发生游戏”专业术语 自然发生游戏本质上创造游戏将遵守规则那将会造成游戏员不能预见情形

  举例来说象棋能被认为是自然发生游戏组规则但游戏能够陷入各种员不能够以个别方式处理情形你不能为每种可能棋局情形编码规则很清楚游戏玩家每次不会总是面临相同游戏情景定程度上进行中游戏情形会根据他行动而发生变化Black and White是这种情形个完美例子和The Sims样—游戏有它自己规则但你如何运用和调和他们是你自己事情实际上你在玩游戏过程中创造着游戏而不是照着游戏设计者/员已经为你定义路线进行

  有可能把基于规则自然发生游戏方式和FPS环境混合在Half Le中些海军陆战队士兵行为就是这样做—压制火力和侧翼攻击从设定规则中动态完成它看起来是动态而且定程度上它是这样然而在FPS世界中仅仅有组规则时常是不够几何和其他AI时常能够打败简单规则这让保持正确并依然有趣变得更加困难所以对那些可怜AI员有些同情心吧他们工作不容易


  好吧下面还有个章节仅仅还剩下个章节了在最后章节里我们将讨论头顶显示菜单系统游戏定制和配置游戏引擎版权和建造最后是游戏“mods”
Tags:  游戏搜索引擎 游戏引擎启动异常 什么是游戏引擎 游戏引擎

延伸阅读

最新评论

发表评论