第一次对游戏数值设计产生兴趣是在我成为游戏设计师之前,那时还在上学,有一次看到《魔兽世界》中一个著名公会开荒TAQ(《魔兽世界》游戏1.9版本中的一个顶级副本)的视频,看着40人的团队如履薄冰的勉强击败BOSS,我不由惊叹:整场战斗一直处于高压之下,玩家团队最终也是正好险胜BOSS,设计游戏的人到底是怎么做到让游戏难度刚刚好玩家可以通过,但又相当困难的呢?毕竟,40个玩家的伤害、治疗、防御等数值错综复杂,而BOSS的技能策略也相当丰富,要如何设计这些数值让游戏难度刚刚好呢?对当时的我来说,这个问题实在难得连从何入手都不知道。带着这个问题,我进入了游戏行业,并在工作一段时间后,有机会好好分析游戏数值设计的一些基本方法。而我开始研究分析数值设计方法的契机,就是为了解决一个“发奖励”的问题。
观看安其拉神庙一号BOSS的战斗视频让我开始对游戏数值产生兴趣。图为《魔兽世界》中安其拉神庙一号BOSS截图。当时我接到任务,设计一个类似副本的新系统,该系统的主要设计目的是让玩家在没有限时活动等高额奖励玩法可玩时,有一个奖励比野外打怪高的玩法,用该玩法来消耗投入大量时间玩游戏玩家的无聊时间。接到这个任务时,我已经独立设计了不少新系统新玩法,一个副本类玩法的故事背景、剧情、规则等都很快有了草案,但设计奖励却花了不少考虑时间。因为我所在的项目是一个有很高在线人数的MMORPG,上线也有数年时间,数年的发展使得游戏中有非常多种数值和物品可以作为奖励发放给玩家,但玩家的需求却并不统一,有的希望通过花时间游戏获得经验值、有的希望获得游戏币、有的希望获得材料物品……如何选择发放奖励的类型让我犹豫不决,如果只选取一种奖励发放,则能够吸引的玩家数量有限,因为很多玩家可能正好不需要我发的这种奖励;但要是发放奖励类型过多又必须降低每种奖励的额度,对玩家吸引力更低;发放随机类型的奖励也不是个好办法,玩家奔着自己想要的某种奖励而来,却获得自己不需要的奖励时肯定会非常沮丧。最终,我决定采用一个灵活度最高的方案:让玩家自己选择奖励类型。
我的方案是,玩家在该系统中挑战成功后,不直接获得奖励,而是获得一种叫“修炼点”的不可交易数值,该数值可累积,有较高的上限,玩家可以随时在指定NPC处用该数值兑换经验、游戏币、材料等多种奖励,兑换何种奖励、每次兑换多少,全由玩家自选。这样该系统发放的奖励类型就可以符合其“填充多余游戏时间的泛用型奖励产出系统”这一基本定位了。但同时发放这么多类型的奖励让玩家自选,怎么样才能让每种奖励类型的价值都大致相当呢?
要衡量不同奖励的价值,我需要一个“一般等价物”,正如现实世界中待售的各种商品都可以被货币定价一样,游戏中的各种奖励也应当可以被游戏中的某种等价物定价。虽然游戏世界中也有类似货币的游戏币存在,但把游戏币作为设计各种数值的一般等价物显然并不明智。因为游戏币通过玩家参与游戏产生,其所代表的真正价值是非常不稳定的,设计师很难洞悉每一时刻游戏币代表的真实价值,也无法预期之后游戏币的准确价值,即便可以准确预期,让游戏中的其他数值都与这么一个不稳定的数值绑定,也会指数级的增大游戏数值设计的难度,使游戏奖励数值设计成为不可能任务。
游戏币可以在某些第三方平台上出售(虽然不少游戏运营商都不赞成这种做法),但其售价很不稳定,因为游戏币的实际价值浮动很大。图为某网站上寄售的《地下城与勇士》游戏币。那么,以什么作为“硬通货”来衡量游戏中的各种奖励比较合适呢?玩家在游戏中投入的时间似乎是一个很好的选择。正如现实世界中人们通过花费自己的时间工作来获得工资一样,游戏世界中的玩家也通过花费自己的时间玩游戏来获取各种游戏内的奖励,而且,游戏中付出和回报的关系远比现实中简单,基本上是花多少时间就有多少回报,很少存在类似“工种不同工资不同”之类的问题。我们可以建立起各种奖励与时间之间的等价关系,以单位时间的产出来衡量奖励的实际价值,如果我们设定,玩家在基础经验值产出系统花费一小时可获得2000经验,而在基础游戏币产出系统中花费一小时可获得10000游戏币,则今后我们在发放奖励时,可以认为每一点经验值的价格大约等于5游戏币,因为得到它们所花费的时间是一样的。这样一来,我们通过时间作为媒介,就可以建立起各种奖励间的等价关系。
回到我本次的任务中,我通过游戏中业已存在、运转良好的其他系统作为参照,计算出各种奖励以每小时为单位时间的产出,并设定玩家玩本系统每小时可以得到100点修炼点,然后得出每一点修炼点能折合多少其他奖励,如果以上面每小时可获2000点经验以及每小时可获10000游戏币的例子来看,就是每点修炼点可以兑换20点经验或100游戏币。如此一来,无论玩家想兑换什么奖励、每次兑换多少,其价值都是大致相等的。
当然,实际情况并不如上面说的这样简单,游戏中的奖励往往与玩家等级相关,不同等级玩家获得的奖励额度是不同的,这就需要在计算时引入与等级相关的函数;同时,玩家在游戏中的投入可能并不止时间,例如有的系统需要收取一定的游戏币作为开启费用,有的系统同时产出多种奖励,所以奖励计算公式往往是类似“e=c*R/f(lv)+f1(lv)/f(lv)+E-f2(lv)/f(lv)”这样包含多个参数、变量和函数的样子(该公式取自某游戏系统的经验奖励公式,我并不打算解释该公式的含义,只是让大家了解实际上游戏中的数值计算公式大多数并不是一个简单的乘除关系)。虽然游戏中实际使用的奖励计算公式可能略显复杂,但我发现,计算奖励的过程往往就是建立玩家投入和系统产出间等效关系的过程。而在之后的工作和思考中我发现,不仅是奖励数值,“等效”的设计方法还可以应用到战斗数值等其他众多数值设计当中。
比如,要设计一个怪物,设计师该如何确定这个怪物生命值的呢?设计新怪物时,我们一般不会直接确定怪物的生命值,而是先预期玩家与该怪物战斗需要消耗的时间(在回合制游戏中,则是需要消耗的回合数),因为怪物生命值的具体数值对玩家体验影响不大,真正影响玩家感受的是战斗时长,我们往往从真正影响玩家感受的地方入手来做预期,有了对战斗时长的预期后,我们可以建立起怪物生命值与玩家伤害输出数值之间的关系——玩家在游戏中的伤害输出能力一般会用每秒造成伤害即DPS(Damage Per Second)来衡量(回合制游戏中则可用每回合造成伤害来衡量),DPS是玩家在一场时间足够长战斗中,平均每一秒对怪物造成的伤害,而要计算怪物生命值,其实也就是要计算玩家在我们预期的战斗时间内造成的总伤害值,所以,如果设怪物生命值为MHP、玩家每秒输出伤害为D、预期的战斗时长为T,则有MHP = D * T。
DPS是很多即时游戏中用来衡量伤害输出能力的计量单位,图为《魔兽世界》燃烧王座副本各职业DPS榜,图片源自WCL排行榜。再来看一个战斗相关的例子。在设计游戏战斗数值时,我们往往会先对玩家的PDS进行一个预期,因为有了玩家DPS作为基础,我们才能一步步计算其他战斗数值。虽然用DPS来衡量玩家的伤害输出能力非常便于计算,但如果游戏中的玩家真的每秒对敌人造成一次伤害,且每次伤害数值相等,那么游戏的战斗势必显得非常无聊,因此,在设定玩家的DPS后,设计师需要一步步将战斗伤害变得看起来更加复杂。改变玩家输出节奏、引入“技能”概念、增加“暴击伤害”和“暴击率”等,都是常用的增加游戏伤害数值复杂度的手段。让我们来看一个理想化的例子:假设某玩家角色的DPS为100,为了让战斗变得复杂而有趣,我们打算引入“技能”,将玩家的DPS分为普通攻击伤害和技能伤害两部分,我们可以通过调整技能伤害和普通攻击伤害在总伤害中的占比,来定义一个角色更依赖普攻输出还是更依赖技能输出——在一个完整的输出周期内,90%伤害由技能输出、10%伤害由普通攻击输出,和60%伤害由普攻输出、40%伤害由技能输出是等效的。假设我们现在需要设计一个比较平衡的角色,技能伤害和普通伤害各占总伤害的一半,则我们从总DPS中划出50%来作为技能伤害,剩下50%来作为普通攻击伤害,而在技能伤害方面,我们打算设计两个伤害技能:一个可以较为频繁使用,伤害较低,另外一个不能频繁使用,伤害较高,为了达到这种效果,我们需要对技能的使用进行限制,在游戏中,“法力值”、“能量条”、“充能次数”、“怒气”等等,都是限制技能使用频率的手段,而“冷却时间”则是最简单有效且容易计算的技能限制措施,一般来说,我们会给效果强的技能搭配较长的冷却时间,而效果弱的技能搭配较短的冷却时间。我们让该角色伤害较低的技能A冷却时间为5秒,而伤害较高的技能B的冷却时间为30秒但其技能伤害是技能A的4倍,如此一来,在30秒内,技能A可使用6次、技能B可使用1次,设技能A伤害为Da、技能B伤害为Db,则有6 * Da + Db = 100 * 0.5 * 30;Db = 4 * Da这样一组简单的二元一次方程,解该方程,则可得出技能A的伤害值应当为150,而技能B的伤害应当为600。而普通攻击方面,如果想表现战斗节奏的快速,我们可以让玩家每0.5秒进行一次普通攻击,每次普攻伤害为25,因为在长时间战斗中每0.5秒输出25点伤害和每1秒输出50点伤害是等效的。
将伤害数值复杂化的过程,往往就是一步一步将伤害数值等效的拆分成多个部分,上面的的例子中,我们将伤害数值等效的拆分成了普通攻击和技能伤害两个部分,然后又进而将技能伤害等效的拆分到两个不同的技能之中。而在实际游戏中,暴击率、暴击伤害、伤害数值随机浮动等也可以通过等效的手段逐步从总伤害中等效的拆解出来,最终,通过数轮对总预期伤害的拆解,我们可以构建起一组看起来非常复杂的伤害输出数值。
有一点需要说明,虽然上文中一直说每次拆分都是等效的,但这都建立在一个前提下:伤害输出进行的时间较长。在长时间的战斗中,暴击伤害以及伤害的随机浮动可以等效被等效的看作一个稳定的伤害,而技能冷却时间带来的技能伤害损失也可以忽略不计(例如,在长达10分钟的战斗中,少用一两次冷却时间30秒的技能带来的影响并不大)。而在极短时间的战斗中,随机的暴击、长冷却时间的技能等都将对总伤害输出带来极大的变数。而设计者往往也会借此区分不同角色的伤害输出特点:在长时间输出总量相同的情况下,高暴击角色拥有随机的高爆发,但运气不好时,其短期内的伤害也会很低;而技能输出占比高的角色大多拥有可控的高爆发,但技能冷却时该角色将输出疲软;技能伤害占比低且暴击率不高的角色则中规中矩,在各种状态下发挥都较为稳定。
在游戏数值设计中,找到等效关系是非常重要且常用的设计手段,通过等效,我们可以让看似千头万绪的数值关系归于简单,也能让简单生硬的数值变得多变有趣,虽然等效并非万能,但从等效的方法入手,将能快速的解决很多游戏数值设计中的实际问题。
网友评论