AI设计:如何给动作游戏的敌人设计人工智能?
游戏中的AI可以简单的理解为计算机控制的智能角色,这些智能角色能够通过周遭环境或者事件的变化进行逻辑判断,从而同玩家进行产生特定的行为交互。
组成AI的三个基本元素:AI的基本逻辑,AI的基本能力,AI的基本属性。
1、AI的基本逻辑
a)感知(Perception)
感知是指AI在所处环境或世界中,侦测周遭环境或者事件变化的能力,这种能力是由游戏设计者决定的并且赋予的。比如潜行游戏中,敌人的视野只有他前面90度角的扇形范围,如果游戏设定这个AI只具有视野这唯一的感知能力,也就是说玩家只有进入敌人视野才会被发现,那么,玩家不管是在AI的周围大声的开枪,还是用枪去顶AI的菊花,甚至开枪打伤它,AI都不会感知玩家就近在咫尺。当然作为游戏设计者需要全面的考虑游戏中AI的应该侦测哪些,赋予AI完美生动的感知能力。
b)行动(Action)
行动是指AI自己决定去做一系列行为,游戏设计者通过一系列的规则和逻辑次序的设定来控制这些AI的行动。例如,WOW中有个NPC,白天时守着一个熄灭的火堆面前,来回的巡逻,而夜晚降临时则会去点燃火堆,静静的坐着不动。如果游戏设计者想制作一个热闹的城市,可以制作很多不同的AI角色,有的沿着街道从一个地方跑到另外一个地方,有的小贩站在原地不动吆喝,甚至可以让两个NPC在走路的过程中相遇然后聊上一会天。我想一个有着丰富的AI角色的世界,一定会让玩家很容易的融入这个游戏世界。
c)反应(Reaction)
反应是指AI在感知到玩家的行为所引发的刺激信息时所触发的行为。比如,Left4dead(生存之旅)里面的Hunter,在探测到玩家的位置之后hunter会伺机从远距离扑到玩家,如果玩家朝hunter开枪的话,hunter会尝试在远处使用天花板跳、三级跳等技能躲避玩家的射击,如果玩家并不射击hunter,他则会直接从远距离扑过来。这种反应又可以称之为怪物攻击策略,有趣而生动的AI反应会让玩家觉得挑战的乐趣。
大多数游戏AI主要能做到上面三点,就算是能满足游戏设计者的基本需要了。
d)学习(Learning)
比较复杂的游戏AI会记录玩家的行为变化,比如策略游戏的AI可能会根据玩家的策略变化,不停的分析玩家的行为,从而做出更为复杂的行为,是同玩家结盟,还是联合其他国家来攻击玩家;例如很多国外RPG游戏中的NPC会根据玩家在游戏中的善恶变化,而对玩家表现完全不同的态度;例如射击游戏中玩家开的是坦克,AI用的是步枪,当两者遭遇时,AI一开始还拿着步枪攻击了一阵,发现步枪完全没有用,于是就去寻找反坦克导弹来摧毁坦克。
高级AI的学习,需要随时记录玩家的行为变化,并把这些信息放到一个专门的分析系统中逐一分析,从而得到最有利于自己的反应。会学习的AI相当的聪明,但是更聪明的游戏设计者则需要设计一个完善的分析系统,这样的系统通常会用来控制一个游戏的难度,当玩家尝试很多次失败之后,我们的高级AI则会分析得到玩家的优缺点,比如玩家的射击能力实在太差了,于是便略微的降低自己的移动反应速度,让玩家更容易击中自己。
搞清楚了基本逻辑,我们就可以构建逻辑流程,从而设计出不一样的逻辑类型。例如,WOW里面,石像鬼和亡灵的HP和攻击力完全一样,但是在AI逻辑上仅仅只有两处不同。
石像鬼:原地石化->侦查->进攻->逃跑->死
亡灵:四处巡逻->侦查->进攻->逃跑->死
2、AI的基本能力
作为游戏AI设计者首先要分析并且归纳出自己这款游戏AI的基本能力,定义好这些基本能帮助游戏设计者很方便的制作更多更有趣的AI。
大多数游戏中AI能力大致上可以有以下几种:
检测潜在威胁确认对方身份(敌人还是朋友)
确认威胁级别(专注于威胁最大的目标)
与敌对者交战(战斗技能)
特殊行为(根据游戏需要特意设计的AI行为)
而我们可以在这些基本能力作为可调整的嵌入参数来获得更多类型的AI,例如,10级的石像鬼和5级的精英石像鬼的HP和攻击力完全一样,但是在AI能力上却有两处不同。
石像鬼:侦查->进攻->逃跑->死
精英石像鬼:侦查->横扫技能->进攻->逃跑->死
也就是说,我们可以保证基本逻辑流程的一致,也就是写一套基本的AI逻辑:侦查->进攻->逃跑->死,在其中嵌入多样化的能力,从而达到AI类型的多样化。
3、AI的基本属性
设计好AI的基本属性极其重要
大多数游戏中AI基本属性大致可以分为:
身份(阵营)
战斗参数(生命值,攻击力,防御力)
交互范围(追击距离,仇恨侦测距离,攻击交互距离)
侵略性(攻击技能使用频率)
仇恨(主要攻击目标查找)
游戏设计者可以通过调整基本属性设计出“个性”不一的AI,例如,WOW里面,我想要塑造一个凶猛的兽兵,那最先想到的属性可能是:血厚,攻击力高,防御力低,速度快。而我想要塑造一个坚毅的人兵,属性则可能是:血中等,攻击力中等,防御力高,速度缓慢。两者不同点仅仅是外形、动画、HP、攻击力。但两者的AI逻辑却是完全一样的,只是简单的侦查->进攻->逃跑->死亡。
如何利用以上的基本元素设计游戏中的AI?
第一步,定义游戏中AI的基本挑战。单个的AI挑战往往需要结合关卡设计的挑战组成一个基本的挑战模式(ChallengePattern)。在游戏设计者拿到怪物详细概念设计之前,首先必须清楚本款游戏中最重要的游戏挑战在哪里(WhereisthemainGamePlayinmygame?),也就是玩家玩游戏的乐趣是什么,以及我们所设计的游戏AI会出现在游戏的哪个部分,扮演着什么样的角色。例如,超级玛丽中,玩家需要利用跳跃来躲避怪物的直接接触(一碰即死),或者准确的跳到怪物头上从而消灭怪物,游戏中最简单的怪物AI表现为在两个点之间保持匀速的来回巡逻,这个就可以成为一个基本的挑战模式(ChallengePattern)。越往后的关卡中的怪物AI则略微复杂,比如有的怪物会使用技能主动攻击玩家,则需要玩家即要躲避怪物的直接接触,又要躲避怪物不断发出的攻击子弹,这个就又是难度更高的挑战模式了。
第二步,设计挑战中的AI基本能力和基本属性。同样以超级玛丽为例,怪物的基本能力、基本属性和挑战模式如下表。从标上我们可以看出通过多样化的能力和属性的组合,我们可以得到更多样化的挑战。
第三步,设计AI的逻辑图。这一步往往是由游戏设计师和游戏程序员共同商讨来完成,如果游戏设计师能提供一个结构清晰的游戏AI运行流程,那将帮助程序员能够更好的理解游戏中怪物的行为,而且有的时候可能会需要设计者自己动手去制作AI(比如我。。。)如下图是一个简单的RPG游戏中怪物的AI运行流程,也可以叫AI逻辑转换结构图。
AI的状态
也可以理解为程序员经常说的状态机。AI会在一个状态里面完成一个指定的行为,当指定的条件达成时,AI会从一个状态转到另外一个状态。如上图绿色方框,出生、待命、战斗判定、技能、追击....
AI的逻辑AI的逻辑也就是AI状态之间来回转换的条件。如上图灰色菱形,出生状态是否完成,是否巡逻,玩家是否在仇恨范围内...
第四步,测试游戏中的AI。没人能保证自己的设计从一开始就是完美的,作为游戏设计者更要常常抱着玩家的心态去不断的测试体验自己的设计。