从技能设计复杂度及定位谈被动技能

发表于2015-10-30
评论2 2.7k浏览
这篇文章起因是用来探讨塔防游戏的设计思路的,但有着更广泛的应用,在很多游戏如MOBA或ARPG中,当技能愈发变得复杂的时候,一个技能的效果往往是多元的,我们如何把握技能的复杂度,是本文想要探讨的。本文仅仅探讨被动技能,但被动技能实际上只是少了玩家操作水平以及消耗资源两个维度的主动技能——即【永远自动施放】的【无消耗】技能,因此它更适合作为探讨技能的切入点,而且也更适合塔防游戏,因为玩家能够主动操作的内容并不多。当然,也更适合挂机游戏!

  本文会同时从两个维度来探讨被动技能——机制复杂度,以及技能设计的定位和意义。下面就正式开讲,首先是最简单的被动技能:

  A级:基础数值型

  基础数值型技能的特点是发挥稳定,因为它涉及最核心的游戏机制运算,几乎不受外部环境影响,或者即时在受外部环境影响的情况下,依然能够发挥稳定。下面是一些例子:

  • 火焰伤害提高10%
  • 攻击速度提高10%
  • 攻击范围提高10%
  • 暴击率+5%
  • 力量+5
  • 护甲提高10%

从技能设计复杂度及定位谈被动技能


  这些技能与其说是技能,不如说是装备属性,然而也确实有很多技能只是对基础属性作出调整,就已经产生了足够强大的效果。

  基础数值型也可以造成很多很神奇的效果(我们不妨叫他们为A+级技能),这一般是对某些特殊的变量(一般是百分比型变量和布尔型变量)进行极端的变化导致的:

  • 你能够穿过敌人(碰撞体积降低至0)
  • 变成飞行单位(修改了单位的移动类型)
  • 你不会被淹死(水中呼吸时间长度无限)
  • 你不会被摔死(下落最大速度降低至某个安全的值)
  • 物理无敌(物理抗性提高至100%)

  由于A级技能发挥稳定,因此它几乎不会影响玩家的策略或选择,因为一般只是单纯的堆属性,或者在弥补自己较弱的属性,就像《魔兽世界》一样,毕业后先把某个属性堆够指标再去追求其他属性即可,所以基本是没有策略性的。

  B级:转化数值型

  转化数值型与基础数值型的区别是,前者是需要动态计算的,而后者是静态不变的。数值转化型的特点是将某一数值进行简单的运算后,赋值在另一个数值上,虽然是动态的,但效果一般都是永久或瞬间的,机制简单。

  • 造成的伤害3%转化为生命值
  • 降低受到的伤害至最高10点
  • 造成致命一击时,恢复5%最大生命值
  • 每损失1%生命值,提高1%攻击速度
  • 每损失1%魔法值,提高1%魔法恢复速度
  • 每增加40点额外生命,提高1点法术伤害
  • 每1.4点法术伤害,提高1点生命值

从技能设计复杂度及定位谈被动技能


  这些都是数值转化型的很好例子。B级技能都没有比较复杂的触发条件,因而也几乎不会影响玩家的策略和选择,和A级技能一样属性自然是越高越好。如果B级技能加上比较复杂的触发条件,就会变成下一段落的技能:

  C级:动态数值型

  C级动态型指的是在某个事件发生或者达到某个需要判断条件时,才会改变单位数值的一种技能。相比之下B级技能只是根据一个变量来计算另一个变量,而C级技能生效条件更复杂,发挥更加不稳定,带来的效果一般也更强大,因而比起B级会更大程度上地影响玩家的策略或行为,而不像B级技能一样依然和A级一样是多多益善,这可以成为区分B级和C级技能的分水岭。下面是一些例子:

  • 造成致命伤害时,恢复5%最大生命值
  • 每击杀一个敌人,伤害永久+1
  • 濒死时,移动速度提高50%
  • 开宝箱时,伤害提高30%,持续10秒
  • 脱离战斗8秒后,每秒恢复1%最大生命值
  • 10码内每有一个敌人,伤害提高4%
  • 10码内每有敌人时,伤害提高20%
  • 每过1秒暴击率提高4%,造成暴击1秒后效果消失
  • 每攻击3次,你的下次攻击伤害提高50%

从技能设计复杂度及定位谈被动技能


  注意5,它增加了一个持续时间的概念,A级和B级技能由于都是持续生效或瞬间的而没有这个概念。我们会发现,由于5号技能持续时间的加入,C级技能更加类似于BUFF的概念了。

  注意6和7,他们实际上是有一个类似于“叠加层数”的概念的,下一段会对这种技能进行进一步分析。

  8和9是这种技能的最复杂形态,我们需要很多机制来描述一个BUFF,才能实现8和9这种技能,这些机制可以分为三部分:

  BUFF的产生

  • 导致BUFF层数增加的事件
  • 每当事件发生时进行叠加的概率
  • 每当事件发生时,距离上次事件发生要求的最小时间(即增加层数的内置CD)
  • 每当事件发生时叠加的层数
  • 每当事件发生时对BUFF剩余持续时间的修正值
  • 每当事件发生导致BUFF层数满足某个表达式时,修改另一个BUFF的层数


  BUFF的效果

  • 单层效果
  • 最大叠加层数
  • 最大持续时间
  • BUFF的消失
  • 导致BUFF层数减少的事件
  • 每次事件发生时进行减少的概率
  • 每当事件发生时,距离上次事件发生要求的最小时间(即减少层数的内置CD)
  • 每当事件发生时减少的层数
  • 每当事件发生时对BUFF剩余持续时间的修正值
  • 每当事件发生导致BUFF层数满足某个表达式时,修改另一个BUFF的层数

  注意,BUFF的产生和BUFF的消失可以有多个事件,即我们可以配置复数个BUFF的产生规则,以及复数个BUFF消失规则,比如《英雄联盟》的电刀,在移动时和攻击时都会增加叠加层数。有了这套规则集,我们就可以用来描述技能8和9的效果了:

  技能8:

  BUFF-A:每过1秒叠加1层BUFF,BUFF的单层效果是+4%暴击率,持续时间无限,最大叠加层数25。

  BUFF-B:产生暴击时,叠加1层BUFF,叠加事件有1秒的内置CD,BUFF效果什么也没有,最大叠加层数为1,1秒钟后清空所有BUFF-B,当BUFF-B层数由于减少而降低至0时,清空BUFF-A的层数。

  技能9:

  BUFF-A:每次攻击/造成伤害时叠加1层BUFF,BUFF效果什么也没有,最大叠加层数为3,当由于叠加而导致层数大于等于3时,设置BUFF-B的层数为1层,没有消失条件。

  BUFF-B:单层效果为伤害提高50%,最大叠加层数为1,层数消减事件为发动攻击/造成伤害,消减层数为全部,当层数由于消减而降低至0时,清空BUFF-A的层数。

  以上只是两个例子,具体的执行逻辑还需要更细节的设计,但总的来说就是这个思路。这里不建议把BUFF-B的增加条件设置为BUFF-A的层数变动,建议BUFF-A的层数变动时去调BUFF-B,个人认为这大概符合“I will call you, you don’t call me”的原则,但由于我不懂程序,具体还是需要和程序大大们商量的。

  利用这种BUFF机制我们可以制作出非常复杂的技能,比如《英雄联盟》的电刀,然而要注意这种技能是否有意义。上面的技能8,我个人认为这种机制非常复杂但只对一个数值进行操作的技能一般来说是没有什么意义的(就说你呢《暗黑破坏神3》),它的效果几乎可以被下面这个技能代替:

  你的下次攻击必定暴击,这个特效有10秒CD。

  诚然在数值上他们不是等价的,但我宁愿用后面这个技能,他更可控,更能预期技能的效果,也就是说他会影响我的操作,甚至影响我的玩游戏的思路,这样它才能够算一个C级技能,而如果它只是不稳定地为我提高暴击率的话,那么它只是一个B级技能。相比之下技能9就更有意义,它的发挥是可预估的,并且在总体上相当于“33%几率造成150%伤害”,《风暴英雄》中全面用这种机制代替了《魔兽争霸3》中每次攻击进行随机的暴击机制,很有借鉴意义。然而,虽然《风暴英雄》的暴击机制和《英雄联盟》的电刀很有趣,但他们对玩家的操作强度要求也很大,因此在设计的时候也要注意是否要由于玩家的水平而让这种技能的发挥相差很多。

  D级:阴阳数值型

  阴阳数值型听起来挺怪的,实际上指的就是那种同时有正面效果和负面效果的基础数值型技能,虽然它们也是基础数值型,但由于一正一负,就会变得很有趣,尤其是当它们会涉及到A+级属性时:

  • 你的攻击速度提高三倍,但你的伤害降低至三分之一
  • 你的攻击必定命中,但你的攻击永远不会暴击
  • 你永远无法闪避,但你永远不会被击晕
  • 你的伤害提高15%,但你的防御降低15%


从技能设计复杂度及定位谈被动技能


  我们可以发现技能4并不会对玩家的玩法影响太大,因为它只是在数值层面的微调,1与4是同类但由于变化非常大而产生了巨大的效果,在某些时候它的攻速带来的巨大收益是远远高于伤害降低的惩罚的,而2与3都是修改了A+级属性(这些属性往往是百分比或布尔型属性)而导致的特性发生巨大变化的例子。

  也正是由于当这种阴阳数值型的变化剧烈时带来的收益过于巨大,因此在单独设计这种技能的时候它的数值往往看起来是亏很多的,1号技能甚至需要更高的伤害惩罚才能与其他的技能价值相当,但更高的伤害惩罚会使得这种技能的泛用性降低,玩家只有在使用高攻速收益低伤害收益的策略时这种技能才有用,所以不建议把这种技能的数值设计得过于夸张,效果为一般技能的二三倍就够了,比如:

  • A技能:攻速+30%
  • B技能:攻速+100%,伤害-70%
  • B技能和A技能相比已经相当变态了!
  • E级:基础特效型

  基础型特效是静态的特效,只是一种效果的基础计算方式,它们需要动态的BUFF机制才能够实际产生作用,除非是瞬间型特效。

  特效如果只是一些对数值的运算,那么就和A级技能十分相似了,但很多特效是会影响单位的状态或行为方式的,这种特效算本文中称呼他们为E级技能,下面是一些常见的特效:

  • 减速:移动速度降低x%。
  • 致盲:视野降低值x。
  • 点燃:每秒损失x%最大生命值的生命。
  • 恐惧:逃离施法者。
  • 定身:无法移动。
  • 死亡:单位死亡。
  • 复活:单位从死亡的状态又活过来了。

从技能设计复杂度及定位谈被动技能


  1号与2号只是对数值的简单修改,是A级技能。

  3号运算方式比较复杂,但如果架构支持按最大百分比造成伤害的话也不难。

  4和5会影响单位的行为方式,是非常复杂的特效。

  6和7则是影响底层机制的瞬间特效,要看游戏的底层机制具体是如何运行的才能设计清楚。很多游戏中,伤害作为一种核心的底层机制,也是一种特效,因此要看特效在不同游戏中的定义是什么了,这种特效与事件更为类似,但很多特殊技能都需要这种特效,比如直接杀死敌人,无敌,复活,变形,融合,复活等等,这些特效简单来说就是在技能描述中,那些需要你明确地向软件工程师解释其运行机制,而不能让软件工程师按照字面意思自己猜想运行机制的字眼。

  F级:动态特效型

  与C级技能相似,动态特效是在某些事件发生或满足某个条件的时候才会生效的特效,也是特效的最基本生效方式。下面是一些例子(红字为上文提过的特效字眼):

  • 敌人生命值不足10%时,50%几率秒杀敌人。
  • 敌人死亡时尸体发生爆炸,对周围的敌人造成伤害。敌人越胖爆炸半径越大,敌人最大生命值越高爆炸伤害越高。
  • 敌人死亡后尸体会转而为你而战,生命值与攻击力为生前的一半,持续15秒。15秒后敌人的尸体会破碎,破碎的尸体无法再被复活。
  • 在地上扔一颗地雷,需要3秒才能准备好,准备好后当有敌人触发时,会对范围内的敌人造成伤害。
  • 在地上扔一个陷阱,当有敌人踩中时,会对这个敌人造成流血效果,并且使之无法移动,持续5秒。
  • 将敌人传送回他5秒前所在的位置。
  • 在目标敌人脚下洒下一大滩半径为10的污油,污油上面的敌人移动速度降低50%。当污油受到火焰伤害后会被点燃,点燃的污油会对上面的敌人每秒造成x点火焰伤害。会飞的敌人不会受到污油的影响。
  • 一定几率冻结敌人,并且一定几率秒杀被冻结的敌人。对敌人造成的单次伤害越高,冻结、秒杀敌人的几率越大。
  • 你有一定几率把敌人吃进肚子里,你会暂时获得敌人的技能,敌人在你肚中每秒损失一定生命值,当敌人被完全消化殆尽时,你会受到治疗,治疗量等于该敌人的最大生命值,并且可以再次吞食一个敌人。


从技能设计复杂度及定位谈被动技能


  “Summon”这个字眼是啥意思,就要跟程序设计师商量

  1号技能利用了E级的击杀敌人效果,属于比较简单的特效。

  2号技能当敌人死亡时会产生一个瞬间的AOE效果,我们需要游戏支持AOE效果才能实现这个技能,并且AOE效果的范围和数值需要是动态的变量,而不是固定的常量。

  3号技能引入了“尸体”、“复活”、“转换单位控制权”、“宠物”的概念,这些机制都需要游戏专门支持才能实现,单位的状态和行为比较复杂。

  4号技能需要对“地雷”是个什么性质的东西进行定义,它可能拥有单位的部分属性,但又具有一些一般单位不具有的特性与状态,地雷的具体实现方式是用马甲单位还是专门定义一种地雷类型,比较复杂。如果玩家有一个造成的所有伤害为自己恢复生命值的技能,地雷造成的伤害是否算玩家造成的也需要说明(以及玩家制造的宠物、复活的尸体、搭建的炮台等等)。

  5号技能与4号技能类似,但它被触发后造成的不是4号技能的瞬间效果,而是一个持续性效果。

  6号技能的具体实现方式可能非常特殊!

  7号技能与4、5类似,同时引入了一个“地面效果”的概念,油污的性质也需要定义,并且它也拥有诸多的状态,当点燃后表现上会变得不同,而且还会造成伤害。

  8号技能会根据目标的状态动态调整自己的属性,实际上是一个比较简单的技能。

  9号技能是这些技能中最复杂的,我们需要对“被吞食”的敌人的状态做出定义,如何获得该敌人的技能也很复杂。

  被动技能到了F级动态特效型,复杂度就基本已经到头了。实际上大部分游戏都用不到这么复杂的技能,只有少数大型游戏才会用到这么复杂的技能,并且复杂度如此高的技能大多是玩家只控制一个化身的ARPG或者MOBA类游戏。F级的技能往往会成为一个玩家打造其角色能力的核心思路,比如“我想玩一个能够召唤很多尸体为我而战的死灵术士”,那么自然3号技能就比8号技能更符合我的玩法风格,8号技能给人感觉更像是寒冰射手或者是冰系法师才会用到的东西。如果一个游戏中存在大量的F级技能,那么A到E级技能基本都是为了打造以F级技能为核心而作为辅助存在的技能(但实际上D级技能就已经有可能成为BUILD的核心了)。如果我们在F级技能的基础上引入施法验证器、冷却时间、消耗资源等等概念的话,很容易就可以将其打造为主动技能,但其平衡起来的困难度也可想而知,这就是为啥为《英雄联盟》调平衡几乎是个不肯能的任务的原因——因素太多啦。所以如果不到不得已,尽量降低技能的复杂度,同时设计的时候使其能够对玩家的玩法或策略做出影响,才是我认为最好的技能设计思路(想想前面关于我吐槽《暗黑破坏神3》恶魔猎手暴击率技能的例子!)。

  总的来说我认为复杂度在《地牢围攻2》以及《风暴英雄》这种级别就已经够满足绝大多数需求了,如果更加复杂到了《英雄联盟》的地步,很容易变成玩家也玩不明白,平衡也调不明白的地步了。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引