从游戏设计角度探讨,游戏中NPC AI的设计要素
最近正好在做AI方面的东西,经常被领导们提问和挑战,索性就理一理,把我对AI设计的一些想法和理念写下来,便于参考,也欢迎大家提出各种宝贵意见。另外事先声明,这些观点未必是全面和正确的,所以项目中如果不按这些来,尤其是创新项目,也是很正常的事,跟成败无关。
废话不多说,下面进入正文(一如既往的干货,信息密度可能稍大)。
首先确定一下本文NPC AI的讨论范围:范围包括绝大多数游戏中的角色,例如马里奥里的鸭子、RPG中的剧情NPC,动作游戏中的各种敌人等。讨论的是设计要素,而非算法相关的内容。
其次快速说一下常见的AI设计错误,即对AI的错误的评判和错误的设计方法:错误的评判是有些人觉得AI越聪明越好,越像人越好,越复杂越好;错误的设计方法是觉得AI功能要足够强大,最好能参考其他各种好的游戏里的AI,把它们的功能全部都实现,并结合起来整合到自己的游戏中。
既然那些是错误的,那怎样的AI才是好的AI?答案很简单:能加强游戏核心体验的AI是好的AI,可具体怎么做呢?下面就根据常见的游戏核心体验的几个类型(列举了四个),来探讨不同体验要求下,AI设计的侧重点是什么,以及该怎么做。从简单的类型说起。
第一类,给予玩家智力挑战的游戏,例如棋牌、战棋、卡牌类游戏。
很多人觉得这类游戏AI的关键就是AI要强,要厉害,能打败玩家。AI强确实重要,决定了游戏难度(挑战性)的极限,但这类游戏也应同样注重“其他维度”的展现,这样可以AI变得更人性化(NPC),而不是冷冰冰的教学机器,游戏也会更“好玩”。例如有些棋类游戏中的AI有“棋风”维度,有的角色偏进攻,有的偏保守;有些牌类游戏AI会说话,展现出不同人物的性格;还有的游戏通过“福利”来鼓励玩家不断挑战,并展开剧情。
第二类,体现玩家PvP竞技水平的游戏,例如RTS,MOBA等游戏。
这里指的NPC是游戏中的怪物,例如《魔兽争霸》中的中立石头人、《英雄联盟》中的野怪。这些NPC的主要作用并不是杀死玩家,或者展现出AI有多么的智能;它们存在的目的,主要有两个:一是为了给玩家提供选择,给游戏增加策略深度,例如是刷怪练级还是骚扰对方基地、是打野还是抓人、是组团打龙还是推塔上高地,都是风险与机会并存,给玩家提供的战略选择,这种情况下设计重点在于游戏策略平衡的建设;二是调整游戏节奏,让游戏不至于显得单一和无聊,例如《魔兽争霸》的节奏和趣味性略高于《星际争霸》,这种情况下设计重点在于PvE时长的控制,不要喧宾夺主脱离PvP的主要玩法,否则游戏可能变成塔防或个人生存类游戏。
第三类,比较注重故事剧情的游戏,例如RPG和部分动作类游戏。
这类游戏中NPC AI的设计,关键不在于他们的技能,而在于人物设定,即人物背景以及行为的设计。以下进一步分类说明。
故事类NPC的人物背景设计,大致有三个要素,或者说“技巧”:
1. 故事中人物个性层面的多维度划分,尽量让每个角色独特有个性。这划分不仅限于善恶维度,可以使用的还有:内向/外向、固执/开放、理性/感性、思考/直觉等。这也是很多电影故事创作中的常用手法,例如《星球大战》。
2. 如果要设定的人物是恶人,那如果能套上以下两种类型特征,人物会更有深度。一种是让恶人有悲惨背景故事,往往曾经是好人,后因故变坏,例如《魔兽争霸》中的阿瑟斯、《尼尔机械纪元》中的歌剧院Boss;另一种是让他代表纯粹的恶,是玩家的完全相反面,强大且通常无法被打败,一般代表着黑暗的世界背景、人性的阴暗面之类,例如二战游戏中的希特勒,蝙蝠侠里的小丑,指环王中的索伦之眼等。
3. 与玩家内心潜意识有关联的人物。例如寂静岭中的三角头怪,象征着主角的暴力倾向和内心的残酷,是主角想要接受惩罚的潜意识的具象化怪物。很多射击类游戏中的僵尸受玩家欢迎,一方面是因为僵尸代表了腐化了的世界,已经无可救药,而且玩家怕被传染也被腐化;另一方面僵尸是人形怪,玩家潜意识里,杀死它们会有像杀死真人那样的成就感,而且没有像杀普通人那样的负罪感。
故事类NPC的行为,大致也有三个要素,能让他们显得“智商上线”:
1. 他要能和场景元素交互。例如《模拟人生》中的人会自动坐到椅子上,躺到床上;《塞尔达旷野之息》里的小怪在打林克时会自动先去捡武器等。
2. 他有自己的个人目标,并不一定非要是“杀死玩家”或“帮助玩家完成任务”,这样显得更真实。例如《魔兽世界》里的很多NPC,都有自己的理想和使命。
3. 他能跟玩家交互,帮玩家做事。例如跟玩家做朋友、当玩家的伙伴、教玩家技能、自动帮玩家拍照留念(《最终幻想15》)等。
第四类,注重玩家技能展现的游戏,例如动作、射击、解密类游戏。
这类游戏中NPC AI的设计,同样分为“角色定位”和“角色行为”两个考虑方面。
在“角色定位”方面,跟故事NPC按照性格划分维度不同,这类动作游戏中的NPC的设定,需要按照“怪物特性维度”或“考验玩家能力”的维度进行划分。例如《Doom》中的怪物,有远程有近战,伤害有高有低,血量也有多有少,特性不重复,怪物类型也不多,便于玩家记忆掌握,感觉就不错。《Tom Clancy’s The Division》中的NPC,根据考察玩家不同能力进行设计,有的考察射击准度,有的考察走位,有的考察选敌顺序,有的考察躲避,有的考察耐心。
在“角色行为”方面,要能够加强玩家“学习-使用-成功-奖励”循环的感受,让游戏吸引住玩家,不断的往下玩。大致有三个设计要素。
1. 对于“自发行为”(不受玩家影响的行为),要足够简单和显而易见,对于不得不复杂的行为,要么做到能循序渐进的表达,要么拆散成两种不同的NPC,这让玩家能很方便的了解他的行为模式,以便想出有效的对策。例如大多弹幕射击游戏中的敌方飞机和Boss,行为简单有规律,玩家就算挑战失败了,也很容易吸取教训,下次会打得更好。马里奥中的怪物也都是如此,而且他们的行为决定了他们的外观。
2. 对于“反馈行为”(由玩家行为导致的行为),要做到及时明显、易于理解。例如FPS游戏中玩家往NPC扔手榴弹,NPC可以及时响应并扑开躲闪;而NPC被击中后嚎叫、招呼队友攻击、包抄、预备放大招等行为,重点也不在于能如何精妙的杀死玩家(如果玩家被莫名杀死反而会觉得AI作弊),而在于能让玩家明确的看到这些行为(演戏一样),能快速理解行为的原因,并让玩家能看透行为背后的逻辑,以便利用这些逻辑,更好的打败这些NPC。当然,如果能让他们的行为既能让玩家理解,又显得很聪明精妙的话(例如换做玩家会采取同样措施的行为,或一些群体表现),那自然是锦上添花了。
3. 把控好难度,保持玩家在舒适区间。游戏的整体难度,往往是逐步曲折的上升的,前期给玩家试错空间,中期给玩家学习和成长,后期给玩家挑战和成就。而对于Boss NPC,一般会设计分阶段的行为,以展现Boss的独特性并增加玩家获胜时的成就感。但有一点注意,即Boss不同阶段的难度,并不像整体关卡那样逐步递增的,而是中后段最难,最后段反而简单,发挥稳定就可获胜,这样做可以降低玩家后期失败时的挫败感,而且即使失败也只会责怪自己而不会抱怨游戏。