分类
琐事 塔防 游戏设计

塔防平衡入门

大家好我是AT君,我又来写博文了,如此勤劳我都把我自己感动了!

首先关于“平衡”的概念,本人是十分认同旗舰老爷的观点的,本文所有关于平衡的探讨可以说都建立在这之上,由于旗舰老爷的blog常年被墙,感兴趣的童鞋可以自行搜索《游戏数值设计:平衡性问题》,来看各个地方转载的该博文,如有嘴炮欢迎留言。^o^

著名的《气球塔防5》

在这篇文章开始的时候,要探讨一个数值设计的很基础的话题,或者说是引入一个概念。在《游戏设计基础》一书中,将游戏中的不同属性分为正交的与非正交的,这个称谓听起来挺唬人的,不过说白了很简单,指的就是某两个不同的属性是否在同一次运算中产生同样的效果。比如假如一款RPG中,力量加攻击力和护甲,体力加生命值与护甲,那么由于力量和体力都加护甲,他们就是非正交的关系。而如果力量加物理攻击力,智力加法术攻击力,它俩毫无关系,那么它俩就是正交的。

绝大多数RPG中都会有分别以力量、敏捷、智力为主属性的英雄设计思路,由于这三个属性一般是正交的,因此在设计关卡与敌人时就要为同时为不同play style的玩家提供符合他们期望的通关方法,这与塔防的设计思路是非常接近的,可以借鉴。

下面引入本文最重要的一个公式:

塔的战斗效率 = 单次伤害 × 攻击规模 × 攻击频率 × 攻击覆盖
  • 单次伤害指的是每次攻击对单个敌人造成的伤害;
  • 攻击规模指塔每次攻击伤害到的敌人个数;
  • 攻击频率指两次攻击之间的间隔;
  • 攻击覆盖指怪物从出现到撞到基地的总时间内,有多少时间处于被塔攻击中。

这四项能力乘到一起,就是塔的战斗效率了,或者说,这四项能力实际上是评价一个塔的能力的四个最终维度,塔的所有属性最终都会转化到这四个能力中的某一种或多种上来。下面开始分别就每个维度进行分析。

单次伤害(Attack Damage)

注意,本文的单次伤害指的是每次攻击实际最终对单体怪物造成的伤害,而不是塔的面板伤害,这可能和一般的单次伤害定义有所不同。单次伤害受很多方面属性的影响:

  • 塔的基础伤害
  • 塔的额外伤害加成(如暴击率、暴击伤害系数、固定额外伤害加成等等)
  • 怪的伤害减免(如抗性、护甲等等)
  • 其他手段(如秒杀、按百分比造成伤害等)

单次伤害是我们最容易注意到,加成方法也最多的手段,加成手段主要分为两部分,一部分是对塔造成伤害的能力进行修正,一方面则是对怪抵抗伤害的能力进行修正。我们可以把数值分为依赖塔与依赖怪两类,前者效率由塔的数值决定,后者效率由怪的数值决定,也有一些基于D&D风格的计算方法会同时依赖双方的相对关系。

依赖塔的有命中率、暴击率、暴击伤害系数等等,依赖怪的有护甲穿透、抗性等等,很多东西都可以具体设计。

单次伤害的收益并不是很高,尤其是当怪物血值较低的时候,过高的伤害容易造成伤害溢出,但也正因为容易伤害溢出,伤害高的怪抢人头的能力很强,因此可以结合击杀以及伤害溢出量来设计一些特效,单次伤害较高的塔更适合使用这类特效。

攻击规模(Attack Mass)

攻击规模指的是一次攻击会影响多少个怪物。由于单次伤害是基于每个怪分别计算的,并且可能有过量伤害,因此精确地来讲用单次伤害直接乘以攻击规模是不正确的(比如对面来了一个火抗怪一个冰抗怪,我的塔是火焰伤害,一发下去两个怪都打到了,但对火抗怪造成的伤害要比冰抗怪低得多),乘法只能从逻辑上表明单次伤害与攻击规模的关系。

攻击规模可以通过很多方式来提高,如溅射半径、穿透、弹射、分裂、多重飞弹等等。攻击规模在大多数情况下都是一种依赖怪的维度,很有可能过分强大,也有可能溢出。以《魔兽世界》法师的暴风雪为例,只要玩家喜欢,可以把几百个怪拉到一起一波A掉,攻击规模就变得过于强大了。暴雪的做法是限制每跳伤害总上限或限制最大影响个数,前者由于平摊伤害当怪超多的时候每个怪摊到头上的伤害都微乎其微,一个怪也打不死;后者虽然在总伤害效率上与前者没区别,但还是能够打死几个怪的,因此在伤害上后者优于前者。而由于暴风雪有减速效果,前者会影响到所有怪物,而后者只会影响几种怪物,因此在特效上前者是优于后者的。这是这两种做法的主要区别。

过于强大的另一个极端则是攻击规模溢出——没人会用暴风雪去打单个的怪物吧?因此攻击规模受怪物密度的影响很大。很多塔防游戏偷懒地把怪物密度设计成了几乎一样,从来不变的,这样游戏倒是容易平衡了,但也变得无聊了。还有一些游戏由于怪物数量超多,玩家几乎一直是在割草,因而几乎所有攻击都有着巨大的攻击规模,这样一来平衡起来也是方便得多了,玩起来还很爽。笔者认为《星际争霸2》是一个滥用攻击规模的反面典型,和《星际争霸1》相比,过于强调攻击规模的作用,导致大规模作战的时候没有强大AOE单位的一方几乎总会输掉。

在一些射击游戏或动作游戏中,单次伤害与攻击规模也经常被运用到。比如某些飞机的火力集中但难以他顾,有些职业用长枪一扫一大片但单体伤害不如匕首等等。

攻击频率(Attack Rate)

单次伤害与攻击规模影响的都是塔在瞬间的表现,而攻击频率则引入了一个新的维度——时间。我们把这三个值一起计算的话,就能够得出DPS,如果你用过《魔兽世界》的伤害统计插件Recount的话,会对这个非常熟悉。

攻击频率是一个非常强大的属性,第一个原因是,其不像单次伤害一样会溢出,也不像攻击规模一样由于依赖怪物而忽强忽弱收益不稳定。而且,在很多游戏中,更多的攻击次数虽然不一定意味着更多的伤害,但总意味着更多地特效触发,因此攻击频率在伤害与特效两方面收益都十分强大。

第二个原因是,由于攻击频率是一种时间上的维度,能够对其进行影响的方式远远没有单次伤害和攻击规模那样多样化,弄来弄去也无非是提高攻击速度或者是降低攻击速度。像《魔兽世界》萨满的风怒攻击一类的效果,最终还是变成了多次触发的单次伤害。因而设计师在进行设计的时候,往往设计了过多提高攻击速度的途径,而导致平衡出问题。实际上我们对攻击速度的投放应该是相当吝啬的,因为它实在是太牛逼了。

如果我们想降低攻击频率的收益,有几种方式,下面分别就伤害与特效进行探讨。在《星际争霸》中,由于单位的护甲采用减法计算,因而攻速较快的单位由于往往攻击力很低而难以穿透护甲,这是一个值得借鉴的思路。在《火炬之光》与《流亡黯道》中,击晕这个特效与攻击速度无关,而是与单次伤害有关,单次伤害越高越容易击晕敌人;而《流亡黯道》的元素特效的触发几率与暴击率相关,总体效果/持续时间长短与伤害相关,因此也解决了攻速触发特效的问题。

在《地下城与勇士》中,攻击速度高的武器往往伴随着巨大的命中率惩罚。在《魔兽世界》中如果玩家双持武器同样也会受到巨大的命中率惩罚,这两个游戏都用了一个十分值得我们留意的方式同时解决了伤害与特效的问题,因为攻击未命中的话不但没有伤害也不会触发特效。但这也导致了这两个游戏的玩家只要选择了这种play style都会优先把命中率堆到某个数值,这样就能够享受巨大的攻击频率增益了。

需要注意的是,过高的攻速是有可能溢出的,这往往出现在两种场合:1,飞弹飞的太慢;2,攻击距离过长。当攻击间隔小于飞弹从发射到轰击所需要的时长,就会有一发甚至多发飞弹轰到已经死亡的怪物尸体上从而导致攻击机会被浪费掉了。你可以通过改善炮塔的AI或者调整射程、攻速、弹速之间的关系来避免攻击被浪费,或者反其道而行之,利用这个特性来降低攻速的收益。这个现象在《星际争霸2》中也有体现,虽然《星际争霸2》的弹速与射程一般与攻速成正比,但当两只远程部队大军进行互射时,单次伤害溢出越少,攻击速度溢出也越少的一方往往更占优势。

攻击覆盖(Attack Coverage)

攻击覆盖是塔防特有的一个维度。影响攻击覆盖的主要有两个属性:有效覆盖路径长度与怪物移动速度。玩家可以发挥自己的头脑,在射程固定的情况下,通过调整塔的位置来尽量提高有效覆盖路径长度,从而增加攻击覆盖。注意,攻击覆盖是一个时间上的度量,而不是空间上的度量,它提供了一段时间使得塔能够对怪物展开攻击,怪物越快这段时间越短,塔的攻速越快展开的攻击次数越高。

攻击覆盖的收益也是很难估算的。比如一个塔覆盖了8个格子,怪物的移动速度是每秒3个格子,塔的攻击速度是每秒1次,我们计算得知时间窗口是2+2/3秒,但由于2/3秒的部分塔虽然在瞄准,但瞄到一半怪就跑出去了,因此只攻击了这个怪物两次。假如我们对塔升级使其覆盖格子为9,那么就能对这个怪攻击3次了,战斗效率瞬间提高50%,而射程只提高了1/8!

这就是为什么为游戏提供攻击范围的升级是十分危险的,因为其平衡性较难控制。在固定路径的情况下,当攻击范围提升到某个程度时,有效覆盖路径长度会大大提高(比如原本只能覆盖一段路径,但由于升高了射程能覆盖两段路径了),从而导致平衡性崩掉。因此,笔者不建议在固定路径的塔防游戏中提供升级攻击范围的选项,除非设计者在设计关卡的时候清楚地计算过各种最大有效覆盖路径长度会不会出现问题,但最好不要这么做。相比之下,固定塔位的塔防为玩家提供提升射程的升级选项更安全,最大有效覆盖路径长度是十分好计算的。

在很多塔防中拥有进行溅射攻击的塔,会伤害攻击范围内的所有怪物,对这种塔来说升级射程不但会增加有效覆盖路径长度,还会增加攻击规模,因此一般有这种塔的塔防猛升这种塔容易变成统治性策略。

当我们不敢随意给玩家提供射程升级的时候,提高攻击覆盖的另一个手段就集中在降低怪物的移动速度上了。减速、击晕、恐惧、传送,种种影响怪物移动方式的手段实际上都是在提高攻击覆盖。然而我们要注意的是,当我们降低了怪物的移动效率时,只要这个怪物处于时间窗口内的塔都对其有攻击效率的提高,而且移动速度的降低对所有的怪物都很有效,因此要注意移动速度降低是否会对玩家的战斗效率产生过强的效果。

选择塔的摆放位置是塔防游戏策略可玩性的重要组成部分,因此攻击覆盖这个能力需要认真考虑。很多国内塔防游戏都是披着塔防皮的数值卡牌RPG游戏,在攻击伤害、攻击规模和攻击频率上都做到了数值平衡,但在这方面做得很差,导致游戏策略性较差,实际上这是对塔防玩家的一种背叛,对于小白玩家来说可能会有较高吸引力,但对塔防群体来说吸引力就很差了。

上面这些是塔防平衡的基础,都是入门级的内容。下面开始进行一些特效的探讨,来分析各种游戏中常见特效会对以上的四个维度造成什么样的影响。

扑杀:秒杀剩余生命值小于等于10%的敌人。

这个东西的效率是非常难以估计的,笔者认为基本可以按如下方式计算:

  • 当扑杀不生效时(即还没发动就被一下打死了,或最后一下不发动扑杀也能打死),完全没有影响。
  • 当扑杀生效时(即最后一下攻击本不足以杀死敌人时但却杀死了敌人),原本需要进行N次攻击,现在只需要进行0.9N次攻击就打死了敌人。由于我们要发动扑杀,单次伤害就要低于10%生命值,因此N是大于1/10%的。

这样一来,影响扑杀的主要有两个方面:扑杀的发动几率,以及发动时节省的攻击次数。发动时节省的攻击次数基本上等于扑杀的发动阈值百分比,因此扑杀的发动几率就成了关键。

由于攻击力必须要低于怪物的最大生命值的10%,因此扑杀对生命值越多的怪物越容易发动,相当于该怪物的最大生命值降低了10%。

护甲:有几点护甲,受到的伤害就降低几点。如果护甲为负值,就反而增加受到的伤害。

这是按减法算的护甲,当护甲为正数时,单次伤害越高,被减免的部分越少;当护甲为负数时,攻击频率越高,附加的额外伤害越多;当护甲为0时没有任何影响。我们可以利用这种减法的特性让不同的塔对不同的怪有着不同的战斗效率。如果我们用的是乘法的话,就做不到这一点了。

DOT(Damage over time):每秒受到X点伤害,持续Y秒。

这种持续性伤害的关键是其伤害计算方式与叠加方式。在《流亡黯道》中,中了流血效果的生物移动时受到的伤害会增加,采用这种设计方式会使得流血更擅长对付那些跑得快的怪物。而在《火炬之光2》中,燃烧是忽视护甲按照百分比掉血的,更擅长对付那些皮糙肉厚的怪物。《火炬之光2》还拥有按照击杀后的溢出伤害来决定效果强度的机制,这也十分适用于塔防游戏。在《英雄联盟》和《地下城与勇士》中流血本身是个很简单的效果,但会按照敌人身上拥有的流血效果的个数来强化自身的能力,这也是一种强化play style的好方式。

分类
游戏设计

王道:正交的游戏数值设计

首先要说明的是这两篇文章是基于以下两个资料,以及我自己的理解所总结而成的:

  1. 行业前辈著名博主Necromanov的老帖《游戏数值设计(2):平衡性问题》,由于该博主(下称内裤龙)常年博客被墙,可以点击这里看的转载全文;
  2. 啪啪三国的老大魏坤前辈所做的《游戏数值设计》讲座,可以点击这里免费观看(此处感谢小柞向我介绍传客这个网站,为她鼓掌!o/o/o/o/o/)。

好吧,让我们开始聊平衡性

首先让我们明白,游戏分为两种:对称的游戏和不对称的游戏。对称的游戏就是双方对手拥有的资源和能力完全一模一样,比如剪刀石头布,而大部分的视频游戏都是不对称的。

内裤龙和魏坤都说的很明白——绝对的平衡很容易做到,只要设计成对称的游戏就可以了,就像魏坤所说的某个游戏的所有职业第一个学会的技能伤害值全都一样——但那对于如今的视频游戏来说是很无聊的(这里姑且就不讨论对称游戏和非对称游戏的优劣了),所以我们可以先统一一个前提——我们不做对称游戏。

然后问题就来了——不对称的游戏,怎么平衡?

这是困扰着超多数值策划的问题。

关于平衡性的无谓之争内裤龙已经在他的文章中解释得淋漓尽致了,甚至包括对数值策划这个职位的解释,也从更本性上比魏坤说得更透彻一些,我是十分赞同内裤龙的说法的,所以这里可以引出我在他的基础上进一步的观点:

游戏的不平衡(IMBA),指的就是存在统治性策略。

与内裤龙所说的是一样的——所谓的修正平衡性,实际上是在修改失败的设计,而失败的设计,在我眼里指的就是统治性策略。对于pve和pvp游戏,平衡性设计是不同的,但实际上都是必须要避免统治性策略的。

那么统治性策略是啥呢?是从英文Dominant strategy翻译过来的,来自于博弈论,指的是一个有理性的生物在面对一系列选项时,无论其他对手会选择什么样的策略,它都会必然选择的选项,这就叫统治性策略——说简单点就是优势大得玩家会无脑去选。

希德·梅尔说过,游戏就是有趣的选择的集合。现在假如在一款RPG中你做完了一个任务,可以从两个报酬中选择一个:A,10个金币;B,20个金币。所有人都会选择B,没错吧?这就是因为B是一个统治性策略,这就是希德·梅尔所说的有趣的选择的反例——这是一个无聊的选择。

这是一个简单的例子,下面我们换一个复杂一些的:比如你在玩《魔兽世界》,毕业了打算下副本,去论坛问怎么样才能输出最高,然后你知道了在命中属性达标之前什么都不重要,于是只要一门心思的提高自己的命中属性就好了,这就是一个统治性策略。

当然,上面这个例子是一个pve的例子,那么我们换成一个pvp的例子——比如说玩《英雄联盟》,在某些版本会存在“非BAN必选”的情况,这也是一个统治性策略。某些英雄的第一件装备毫无悬念的要出某一个,这也是一个统治性策略。如果你不这么做,意味着你还是菜鸟,也就是你还没有掌握这个英雄的精髓——其实也就是还没掌握其中存在的统治性策略。

看似统治性的策略(又叫cheese tactic,菜鸟最爱的”赖招“)有其存在的好处——能使新手快速上手,而实际上又总会被熟练的玩家击破。而极端的统治性策略会完全破坏游戏的趣味性——比如开外挂——独孤求败是非常无聊的,这个道理大家都懂。

不对称游戏在绝大多数情况下是不存在数学上的平衡的,因而我们感受到的不平衡,那些能让我们喊出”这不公平“或者”法爷亲儿子“的时候,其实是感受到了统治性策略——因为我们面对着一个游戏没有提供给我们任何战胜的可能性的对手。这就是IMBA的本质。

不对称游戏的根本:正交的数值设计

正交(Orthogonal)是一个数学概念,在《游戏设计基础》一书中提到了数值设计应该正交,指的就是不同的属性带来的收益应该是完全无法互相换算的关系,例子就是经典的《龙与地下城》中的六个属性:力量,敏捷,体质,智力,精神,魅力,这六个属性互相之间毫无关系。我曾经玩过某些台湾游戏,该游戏中的智力属性是大幅提高魔抗小幅提高MANA上限,精力属性是大幅提高MANA上限小幅提高魔抗,这种属性的设计就不是正交的。

我认为在不对称的游戏中,不应该存在正交的数值设计,因为这样几乎必然会导致统治性策略的出现。

用魏坤的那个例子——比如我们设计了一个战士职业,然后又用战士改造了一个职业出来——狂战士,这个职业的防御力比战士弱,但是攻击力比战士强。这是个烂设计,因为这两个职业之间的关系是正交的——你总是能用防御力和攻击力这两个同样的属性来考察这两个职业的区别。接下来魏坤又说了弓箭手,但弓箭手就很难拿来和战士比较了,因为弓箭手是远程的,而战士是近战的,攻击范围这个属性无法和攻击力或者防御力这两个属性来比较,为啥?因为它们是正交的。

接下来魏坤说了,这种无法用数学转换的平衡性设计只能靠经验了。他举了很多例子,比如有各种特效的武器,这些特效统统与武器的通用属性是正交的,因此没法计算其优劣,因此才使得选择具有策略性。没错,其实这才是游戏设计师真正该干的活,这也才是需要游戏设计师的地方,否则单靠算算术就能搞定的话,还要一个大活人干吗?而正如Necromanov所说,国内的策划水平普遍不足,所以往往才会把这部分本应该大家都会的活专职抽出一个人来负责,所以我们才有了数值策划。

当然,正交的非对称游戏也很容易产生统治性策略,比如臭名昭著的《红色警戒》坦克流,这是因为对手没有任何还手的余地。《万智牌》中存在着大量禁卡,理由也是因为它们是构成统治性策略的核心卡牌。

《星际争霸》我们为什么说它是平衡的?实际上无所谓”平衡“,我们说它平衡是因为至今为止经过了十几年的考验我们还没能在这款游戏中找到一个统治性策略,这一点是通过任何单位都有着明显的强势对抗单位与弱势对抗单位作为基础来保障的。

其他我们认为平衡的游戏也是如此,扑克,象棋,围棋,都是同样的。《激战2》每个职业虽然大部分属性都是相同的,但却都有着独特的机制和一个独特的属性,这使得这些职业是正交的——就像魏坤所提的武器特效的粒子一样。这给了你玩遍所有职业的理由,而不是”哦,狂战士啊?不就是攻击强化、防御弱化版战士么?不玩!“

所以说,解除了对于平衡性的错误认识后,我们不应该再设计非正交的游戏内容了——除非你的游戏是一个对称游戏,否则一定不要这么做。统治性策略(更通俗的说法就是”这不公平!“或者”It’s not fair!“)才是摧毁游戏乐趣的最大杀手,这就是我所领悟的所谓平衡性的真正秘密。