塔防数值设计的几个维度

祝大家国庆长假快乐!

所谓不同维度的数值,就是互相无法直接用数学公式互相转换的属性,比如攻击力和射程,他们两个没有直接的数学关系(或者用我从某本书上看来的术语,这两个属性是“正交的”);而暴击率、暴击倍数则是可以在一定程度上转换成攻击力的,类似的,护甲穿透、命中率也都是可以转换为攻击力的,而移动速度、生命值就没法通过数学运算简单地转化成攻击力,它们之间的关系也是正交的。

显然,不论是什么类型的游戏,正交的数值类型越多,游戏就越有趣,但也就更难平衡——不过对于游戏设计师来说,这并不是偷懒的理由。就像《三国杀》广为人知的“一滴血等于两张牌”的等式,其实就是在衡量两个正交的数值的平衡关系,遵照着这个关系去设计游戏平衡性,基本不会产生太离谱的情况。

自从数年前玩过了弹幕塔防《Enigmata: Stellar War》之后,我对把射击游戏的一些要素融合到塔防中就十分感兴趣,同时这也能加大塔防数值设计的维度,这往往不只体现在简单的数值设计上,在攻击方式上也有很大的设计空间。实际上,很多游戏都在这么做,比如《炫光塔防》或者是《保卫萝卜》。

塔的运作机制

炮塔的攻击是凭借发射飞弹实现的。

  • 索敌:塔决定攻击哪个目标的逻辑。实际上索敌范围和攻击范围可以是不同的,有些游戏的索敌范围更大,有些则相反。如果两个范围相同逻辑会更简单些。有些游戏的防御塔有锁定目标的设计,即一旦某个单位进入了火力范围,在这个单位离开范围或死亡之前炮塔不会改变目标。有些游戏能够设定炮塔优先攻击的目标,比如离自己最近的,离基地最近的,最快的,血最多的等等。索敌有的时候还会受到视野的影响,比如在《Cubemen2》中,隔着墙的情况下是无法发现敌人的,因此所有塔都有一个“视野”的概念。
  • 发射飞弹:最简单的炮塔就是瞄准了敌人就开火,复杂一些的炮塔可能一次发射多发不同发射角度的炮弹,或者同时锁定多个敌人进行攻击,甚至估算炮弹的着弹点进行预判等等。一些射击游戏中,飞弹发射的角度会有不同程度的误差,用来模拟枪械或者炮塔的精准度。
  • 发射点/炮塔:飞弹需要从某个部位飞出来,所以一个炮塔会有至少一个发射点。比如某个游戏为了模拟主角右手端枪,所有的子弹就都从人物中轴线偏右的地方创建出来。还有的游戏有多个发射点,一次可以发射多发飞弹,或者多个发射点轮流开火。对于追踪型飞弹来说发射点在哪里可能无所谓,但对于碰撞型子弹来说发射点一定程度上决定了攻击的命中率。
  • 蓄力:有些单位的攻击有蓄力的概念,指的是通过某种方式可以切换为更加强大的攻击状态,比如《星际争霸2》改版之前的虚空辉光舰,《红色警戒2:尤里复仇》中尤里的盖特机炮(这俩东西为啥这么像?我个人猜测都是出自Dustin Browder之手),《洛克人》的洛克枪,《虚幻竞技场》的动力锤,甚至《英雄联盟》的鬼索的狂暴之刃等等。“过热”的机制实际上也很类似。
  • 朝向:有些炮塔有朝向,有些则没有。有朝向的炮塔要把枪口对准敌人才能进行攻击,这时候如果敌人横向移动速度很快,炮塔的转动速度跟不上的话就没法瞄准敌人进行攻击。《EVE》中类似的机制对玩家的影响很大,口径越大的炮转得越慢,就很难锁定速度飞快的小型船只。

塔的数值

炮塔本身有着很多种属性,从逻辑上来说,有些属性实际上是炮弹的属性(比如攻击力),但我们也可以把这些属性认为是炮塔的属性,除非玩家可以自由为炮塔选择发射不同攻击力的炮弹,否则玩家建造炮塔肯定是看中了炮弹的威力而去建造的。

  • 攻击力:子弹对敌人造成的伤害,最基本的属性。然而根据攻击方式的不同,却有着相当大的的差异。单次伤害越高,抢人头的几率越高,但带价则是浪费的伤害越多。
  • 攻击间隔:发射子弹的间隔,也是最基本的属性。
  • 射程:最基本的属性,实际上大部分游戏的“射程”指的是“最大射程”,不过某些游戏还存在“最小射程”。
  • 最大转角:现实中的炮塔多有这个属性,而很多塔防游戏的塔最大转角都是360度的,因此这个属性有时候会被忽略。最大转角与射程作为扇形的弧度和半径决定了一个炮塔的火力覆盖范围。某些3D的塔防游戏中,火力覆盖范围更为复杂,可能会存在两个维度的最大转角——实际上现实中的炮塔也是这样的,除了左右转动外还有最大最小仰角。
  • 暴击率:发动致命一击的几率。按照我的理解,致命一击最早是DND中Roll出20点来模拟“幸运一击”的,因此很多日本游戏将其解读为幸运一击或者会心一击更符合其本意,而像《魔兽争霸3》或者《暗黑3》中的暴击率设计已经完全失去了这个意义。总的来说我并不喜欢暴击率的设计,因为只要这个属性存在,所有的塔都必然会追求这个属性,除非能够让其不成为一个必然的选择,否则就没有存在的意义,只不过会让数值膨胀罢了——就像《暗黑3》。好的例子是《流亡黯道》,里面存在追求100%命中率而放弃暴击率的流派,也存在很多像《暗黑3》一样依赖于暴击触发特效的流派。依赖某种方式来触发特效能够大大地加强不同维度数值的作用,但对于玩家来说理解稍难一些,不是很适合休闲玩家。
  • 命中率:一次攻击击中的概率。对于追踪型飞弹来说,未击中的时候是如何处理的需要特殊的说明,比如像《星际争霸2》中并不存在与《魔兽争霸3》类似的未命中机制,因此简单地使伤害降低为0的话伤害特效依然存在,而理论上完全闪避了一次伤害是不会受到那次伤害的特效影响的。与暴击率类似,足够丧病的话也可以设计一种只有攻击未命中的时候才会触发的特效,否则玩家是会无脑堆命中率直到100%命中率的——玩过《魔兽世界》的都知道这是个真理!
  • 攻击规模:一次攻击会伤害到多少个敌方单位。注意,这并不是一个游戏中真实存在的变量,而是由攻击方式决定的。显然,每能够多攻击到一个敌方单位,炮塔的效率就增加了一倍,因此这个数值对于炮塔的能力提升相当之大,很多塔防后期都会都会变成狂造AOE塔的无聊游戏就是因为对于这个数值的效力过低的估计了,但这也难怪,因为这个数值并不是真实存在的,发挥也不稳定,因此更难预估。
  • 弹速:子弹飞行的速度,对于以《打击者1945》为代表的射击游戏来说,子弹的飞行速度越高意味着玩家越容易瞄准,命中的几率也就越高。对于传统的追踪型飞弹来说,弹速更高意味着过量攻击更少,如果弹速非常慢的话,在怪物死亡后还会有很多飞弹在路上,这部分伤害就浪费掉了(个人感觉《DOTA2》的绝大多数飞弹都飞的太慢,远程英雄补兵很困难)。其次,对于追踪型飞弹来说,如果弹速没有怪物的移动速度快,想要命中敌人是相当难的。而对于抛物线迫击炮型飞弹来说,弹速越高也是命中率越高,否则怪物可能离开了炮弹落点而无法造成伤害。

飞弹的运作机制

炮塔决定了子弹的发射方式,但子弹离开炮塔之后就不再受炮塔控制了,子弹有着几方面来决定其实现功能的方式:

  • 移动规则:是锁定某个目标向其移动?还是以固定的某种方式(如直线或者抛物线)移动?移动速度是怎样的?是否有加速度?
  • 碰撞规则:子弹会与什么类型的目标碰撞并造成伤害?所有单位?己方单位?敌方单位?其他飞弹?目标地点?
  • 销毁规则:子弹在什么情况下被销毁?碰撞到某种东西后销毁?飞出一定距离?存活一段时间?

这三方面的结合可以创造出变化相当多的飞弹。比如我们要模拟激光的效果,则移动速度是无限大的,刚刚发射就会击中敌人;狙击枪能够穿透一排敌人,说明子弹在与敌人碰撞的过程中没有被销毁,但也不会对同一个目标重复造成伤害;迫击炮对着目标地点攻击,敌人有可能离开了着弹点,说明其移动方式是抛物线的;火焰喷射器则可以看做连续快速发射一些碰撞体积大,移动速度慢,碰到敌人不会销毁而是创建后一段时间销毁的飞弹;散弹枪一次发射大量的子弹,并且角度各有不同等等。如果是纵版的游戏(《愤怒的小鸟》那种视角),可能子弹还会受到重力的影响,但表现出来其实也就是移动规则变为抛物线状的。关于这个类型的飞弹设计可以参照《疯狂坦克》或者《弹弹堂》这种游戏,里面对于飞弹的物理模拟十分有借鉴意义。

  • 生命值:基本属性。
  • 移动速度:基本属性。
  • 护甲:降低受到的伤害。以《星际争霸》中的护甲机制为例,护甲按照减法直接抵消一部分攻击力,因此攻击力越高的单位被护甲抵消掉的部分越少,这样玩家在针对高护甲的怪物的时候,在同等面板DPS的情况下,选择高攻击力低攻速的塔就更划算。我并不赞同只是单纯地将护甲作为一个降低伤害的手段,这和过于简单的暴击一样也只是会导致属性膨胀。护甲的存在一定也要让玩家在不同的维度属性中做出选择,才有其存在的意义。注意,以《星际争霸》为例的话,如果护甲是负的,每次受伤会受到额外伤害,在这种情况下高攻速低攻击力的防御塔的收益是更高的!
  • 闪避率:降低收到的攻击命中的几率。对于追踪型飞弹来说,如果被闪避了后续是如何处理的需要更详细的设计,在《星际争霸2》中有的飞弹会重定向某个范围内的其他目标,如果没有可行目标则自行销毁。
  • 攻击方式:有的游戏中怪物走到基地面前会持续不断地对基地造成伤害,有些则是一次性地造成伤害并且消灭自己,有些则是一次性造成伤害并且随着下一波怪物再次出现,还有一些其它方式。对于波次驱动的塔防来说,我个人比较赞同第二种,第三种可能正反馈太强,第一种则难以预估怪物能对基地造成多少伤害(因为不知道它们会打基地多久)而较难设计,并且由于漏的怪会一直攻击基地导致玩家必然会优先在基地附近部署防御塔而使得游戏策略减少。
  • 是否会还手:有的游戏中的怪物会攻击防御塔,有的只会傻跑。《国王守卫军》开创了第三种模式——小兵捉对互砍。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s