序
在我玩游戏的过程中,总会遇到一些让我感到困惑的情况,包括但不限于,我用什么子弹就掉什么子弹,有的游戏越玩越简单而有的游戏越玩越难,boss一刀劈在我脸上血条刚好就剩一点点。这些情况自然不是无心之举,在它们的背后,都有一只无形的手把控着触发条件,也就是我们今天的主题——动态难度。
心流状态
在回答以上情况产生原因之前,我们首先要清楚游戏设计者在设计游戏时最希望玩家达到的状态——心流(Mental Flow)状态,此为心理学家米哈里·希斯赞特米哈伊先生在1990年出版的《心流》一书中提出的人类特殊心理状态,在心流状态下,人类会全身心地投入到目前手上正在进行的工作中去,不愿意被打断,保持极高的兴奋感和充实感。这种状态的应用场景非常广泛,只要是人类能着手从事的工作都有可能触发心流状态,对于电子游戏,同样如此。
为了直观的表现出心流状态实现的方式,在这里我们以玩家期待度为横轴,以游戏挑战性为纵轴绘制一幅图像。在中间区域的部分即为心流状态,当玩家期待度低于游戏挑战性时,玩家会产生焦虑感,认为游戏太难了;而当玩家期待度高于游戏挑战性时,玩家会感到无聊,认为游戏太简单了。
同时,你能看到图像中的心流状态并不是一条直线,正如前文所说,随着游戏经验的累积,玩家的期待度也会发生变化。倘若游戏挑战性是固定的,就很难迎合玩家变化的期待度,从而难以实现心流状态,于是,动态难度的设计,诞生了。
基本概念
动态难度(Dynamic Difficulty Adjustment)正如其名,是一种在游戏进程中动态调整游戏难度的设计,从字面上看,这显然是一个合成词,由“动态”和“难度”构成,我们将分别进行介绍。
动态方面有三大基本要求:
一,游戏需要自动追踪玩家能力并适应它;
二,游戏需要根据玩家能力的提升和下降维持难度平衡;
三,动态调节的过程不能让玩家知道,并且调节过程前后需要关联。
其中第三点为什么要强调“不能让玩家知道”,我们会在之后的具体案例中进行解释。动态难度的出现,让游戏能时刻维持玩家期待度和游戏挑战性的平衡,让玩家一直处在心流状态,获得最佳的游戏体验。
难度方面也有三大基本要求:
一,清晰地指出影响难度的要素
二,根据玩家能力对难度做出分类
三,难度跨度需要控制得当。
其中第一点尤为重要,因为不同的游戏类型决定游戏难度的要素是大相径庭的,开发者需要根据自己的游戏特色因地制宜,决不能草率地套用其他作品的标准。
应用方案
在这里我先介绍两个现有的动态难度架构,然后再结合游戏实例看看它们的表现。
其一是动态脚本(Dynamic Scripting),如图,其由三个步骤组成,
从技术的角度来看,动态脚本实现得其实并不是实时调整难度,而是根据玩家的表现选择不同的脚本触发。其核心在于调整不同脚本的出现率使其达到更加优秀的效果,为此开发者们还另外制作了一套选取率相关的架构,如图所示。
这三个方案中的第一个在实际表现中的效果并不如意,而二三的表现非常优秀,这里我们详细解释一下运作机制。在玩家触发某一脚本时,系统会根据玩家的表现给该脚本“打分”,例如玩家在该脚本下更容易击败敌人就加分,更容易死亡就扣分。得分越高的脚本就越容易被触发,也就是增加它的选取率,但得分和选取率是两套独立的得分体系,且为充分不必要关系,前者决定后者。随着脚本的多次触发,得分也会越来越高,当该脚本的得分超过所设上限时,其选取率将会降低到原始数值,同时根据其他脚本的表现将其分配。这是为了避免一套脚本使用过度导致玩家认为游戏难度过低的保护措施,并重新开始之前的操作。
动态脚本的出现的确能带来一定的动态难度设计,但其需要庞大的脚本量支撑,对于大型规模的游戏作品显然并不适用,于是,另一套系统出现了。
其二是哈姆雷特系统(Hamlet System),如图,其由五个步骤组成,
相较于动态脚本,哈姆雷特系统虽然同样存在追踪玩家行为的过程,但其触发的结果要智能得多,游戏并没有预设脚本,而是根据玩家的不同能力自行调节对应的难度要素,比如玩家的战斗能力非常出色,那就增加敌兵的数量或血量。这一套系统将调节的过程完全交给了游戏自行处理,开发者只需要设计一些阶段性的难度即可,开发工作大大降低。
而随着人工智能技术的进步,动态难度的设计也可能迎来全新的高度,前段时间的热门电影《失控玩家》中的智能NPC倘若能够实现,游戏的难度将会真正做到千人千面。不过这些都是后话了,我们在这里先看看当下的开发者们是如何使用动态难度的吧。
生化危机4
三上真司作为最早将动态难度加入到游戏设计的制作人之一,在生化危机4里将其优势展现得淋漓尽致。生化危机4的动态难度设计正是我们先前提到的哈姆雷特系统,游戏会根据玩家能力的体验细致地改变游戏中的难度要素,在游戏开始时,玩家会选择一个基础难度,但在其背后还有一个更加细致的难度体系,姑且称为真实难度。我们这里假设有三档基础难度,简单,普通,困难,其对应的真实难度分别为三等,五等,七等,并假设真实难度的跨度为0~10,假设玩家以普通难度进行游戏,但在流程中经常遇到子弹不足的情况,那么游戏就会自动将资源刷新的难度等级在基础难度的基础上降低(5-1),更多地刷新子弹;而如果玩家在游戏中的战斗表现非常出色,鲜有死亡,那么游戏就会将敌人的难度等级增加(5+1),同时不同的基础难度一般也会设计一个上下界限,普通难度就可能是2~8,而困难难度就可能是6~10,确保游戏的难度曲线不至于太过畸形。
不过当动态难度的机制被玩家发现后,一些速通选手刻意地在某些关卡失误进而降低之后的关卡难度便于通关,让这个设计失去了原有的作用,这也是为什么“动态”必须要“不被玩家知道”。
马里奥赛车
不同于生化危机,马里奥赛车的难度主要由道具和速度组成,所以游戏的动态难度调整的方向也截然不同。当电脑角色跑在玩家前面时,游戏会限制他们的最高速度,同时降低高级道具的刷新概率,反之亦然。这样的设计让玩家落后保持一种“我差一点就追上了”的感觉,同时当玩家领先时又保持一种“它们差一点就追上我了”的感觉,使游戏时刻维持着挑战性。
上古卷轴
B社旗下的大部分RPG作品其实都有动态难度设计,不过这里我们以上古卷轴举例。在上古卷轴4中,B社设计了一套随时间敌人自动加强的机制,以便游戏难度能跟上玩家进度,但过于死板的调节机制实现的效果也并不如意,尤其是在上古卷轴这样场景要素极多的游戏中,在游戏前期的一个任务中,玩家需要向NPC提供狼皮作为任务道具,但如果玩家在游戏中后期才触发这个任务,此时地图上已经没有低级的狼作为敌人了,也就意味着玩家此刻再也无法完成这个任务。
为了解决这一问题,B社在上古卷轴5中更改了调节难度的机制,他们首先将地图的各大板块做好难度标记,再根据玩家的游戏进程动态地调整板块的边界。例如假设玩家一直在冬堡范围活动,那么冬堡所处的板块就会从一开始的普通难度逐渐增加到困难难度,同时保持其他板块的难度水平。并在游戏世界中设计一些固定难度等级的区域,保证游戏世界的真实性。
结语
动态难度的设计当然并不止于此,在笔者看来,每款需要玩家在一开始选择难度的游戏都应该搭载动态难度系统,因为玩家很难根据简短的难度设计就选择出适合自己的难度。毕竟对于一款给玩家玩的游戏而言,玩家想要的难度才是最好的难度。