上回说到,不断堆叠提升暴击率、亦或是闪避率的装备时,装备所提供的属性加成会被稀释。(见)然而,事实上,并不是所有游戏都适用这些规则。

大名鼎鼎的《魔兽世界》即是一个例外。

早在2005年5月的时候,暴雪曾在一个蓝贴中公布过“《WOW》中计算暴击率是基于所有的攻击的。暴击率不是仅仅基于命中的部分。换言之,如果你有5%的暴击率,是包含未命中在内的所有攻击总次数的5%是暴击。”(The way WoW calculates crit rate is over ALL attacks. Crit rate is not based on hits only. In other words, if you have a 5% crit rate, that 5% chance includes misses.)

打开网易新闻 查看精彩图片

这句话是什么意思呢?

举个最简单的例子,假设战士A拥有5%暴击率,盗贼B拥有20%闪避率。在不计算其他任何条件的情况下,实际上战士A对盗贼B的命中率是80%,所以战士A对盗贼B的暴击有20%是会被闪避的,实际暴击率其实只有5%*80%=4%,应当比面板上的5%要稍微低1%。

而通过大量数据统计,玩家发现战士A无论如何攻击盗贼B,却确确实实地显示出有5%的攻击产生了暴击,而不是理论概率的4%。也就是说,《魔兽世界》的暴击几率确实等于面板暴击几率。这是一个很反直觉的现象,而造成这种现象的原因,就是今天要讲的“圆桌理论”。

(注:本文中提到的理论对当前版本的《魔兽世界》来说可能已经久远到过时,但对于当下正火的《魔兽世界怀旧服》、《剑侠情缘网络版叁》等游戏仍旧适用。目前为止检索到的上一次信息确认是在2014年7月25日时,开发者对WoD仍旧采用“圆桌理论”的肯定。对此感兴趣的读者可以分享自己的经验和看法。)

瀑布算法

和以前一样,在介绍“圆桌理论”之前,先来讲讲它的对立面:“瀑布算法”

实际上,我没有找到“瀑布算法”在国外的来源词语,暂且认为是国内从软件工程术语“瀑布模型”(Waterfall Model)中化用过来的用法。其含义也与“瀑布模型”相似,流程遵从一个主要方向,依次进行结算。

打开网易新闻 查看精彩图片

回到正题,战斗结算流程对于任何一个拥有战斗系统的游戏来说,都是必不可缺的系统之一。虽然对玩家来说战斗攻防只在一瞬之间,但对程序来说,战斗的每一个流程都是需要一步一步去执行的。

比如最开始举的那个例子。战士A对盗贼B发起了一次攻击,那么按照普通的概率学算法来讲,整个结算流程将被拆分为:攻击是否未命中?若否,攻击是否被闪避?若否,攻击是否暴击?若否,结算普通攻击。

打开网易新闻 查看精彩图片

换句话说,整个流程是:“判定命中→判定闪避→判定暴击→判定攻击”的一个过程。当然整个流程都是根据优先度依次向下的,比如将暴击设定成“暴击无法闪避”,那就将暴击判定提升至闪避判定之前,而整个流程的核心是不变的。

然而这样一来,就会导致前文所提到的问题。所谓的“字面暴击率”成了“摆设品”,实际暴击率会跟着自己和敌人的状态不同而改变,就算想要计算实际暴击率,也会因为大量动态改变而无能为力。

为了解决这个现象而采用的系统,就是“圆桌理论”。

圆桌理论

“圆桌理论”(Attack Table)又被称作“一次掷骰子原理”(One-roll Theory)。与瀑布算法那“依次结算”的流程完全相反,整个“圆桌理论”的流程仅仅只有简单的“一次结算”

还是拿最初的例子重新说明。假设战士A拥有5%暴击率,盗贼B拥有20%闪避率,那么在名为“攻击判定”的这张圆桌上,暴击率占有5%的地位,闪避率占有20%的地位,剩下的75%则完全由“普通攻击”填充。

在圆桌的中央放置一根指针,随便拨动这根指针,当指针停下时指向“暴击”,那么这次攻击就算作暴击;指针指向“闪避”,那么这次攻击就算作未命中;指针指向“普通攻击”,这次攻击就视作一次普通攻击。

(或者可以将圆桌换为一颗拥有100面的骰子,当骰子掷出后得到1~5的数字,则视作暴击;6~25视作未命中,其余均为普通攻击。这就是“一次掷骰子原理”。)

“圆桌理论”其合理之处在于,对于面板上的5%暴击率来说,“圆桌理论”所提供的暴击率就是确确实实的5%。这方便了玩家评估自己角色的战斗力、以便调整自己的装备和天赋。

乍一看,“圆桌理论”似乎确实很合理。然而仔细一想,就会发现其中不合理之处。

挤出桌面

还是那个战士A和盗贼B。只是这一次他们对比了自己的数据,换上了更好的装备。现在,战士A的暴击率达到了50%,而盗贼B的闪避率也达到了50%。如此一来,按照瀑布理论来计算,战士A的实际暴击率就是50%*50%=25%,也就是说战士A的攻击有50%的命中率,而在这50%的命中中又有50%是暴击的。

打开网易新闻 查看精彩图片

那么换到“圆桌”上呢?首先我们将50%的闪避率铺到圆桌上,其次,我们再将50%的暴击率铺到圆桌上。现在发生了什么呢?没错,“未命中”和“暴击”将会占满整张桌子,而完全没有“普通攻击”的位置了。也就是说,一旦当战士A的攻击产生命中之后,他的所有攻击都将是“暴击”,而不再产生“普通攻击”。

一张“圆桌”上能摆的东西是有限的,当所有的“普通攻击”都将被“挤出桌面”时,所有命中的攻击都将成为暴击。

伟大的大总统法尼·瓦伦泰曾经说过,“当你坐在坐在这张餐桌前面的时候,你发现眼前有餐巾,你会拿起左手边的餐巾还是右手边的?正确的答案是跟从首先动手拿起餐巾之人。”圆桌理论也是如此。看似在一张圆桌上,所有的东西都被摆在同一层面、不分次序,实际上也有所区分。

打开网易新闻 查看精彩图片

当上述例子处于一个极端值时,就能体现出“最初的餐巾”现象:战士A的暴击率达到惊人的90%,而盗贼B的闪避率也随之提升至90%,而这两项加起来远超100%,显然是无法在同一张100%的“圆桌”上摆下去的。那么按照原先瀑布算法的“闪避>暴击>普通攻击”次序下,优先将“闪避”的餐巾拾起,再去拾起“暴击”的餐巾。

最后,这张“圆桌”上就只剩下90%的“闪避”和10%的“暴击”。看上去暴击的比率被大幅度降低了,实际上除开闪避以外,只要攻击命中了,仍旧都是100%暴击。

上述的例子都是经过简化的例子。实际上,在《魔兽世界》中,一次攻击判定涉及到“未命中>躲闪>招架>偏斜>格挡>暴击>碾压>普通攻击”的复杂流程。

而一个最经典的结论,就是将“碾压”挤出“圆桌”(BOSS对玩家有15%几率造成1.5倍伤害,不会被格挡和招架/躲闪——因为在“圆桌理论”当中只会产生格挡或碾压,而不会同时发生)当一名战士的“躲闪+招架+格挡”超过了25%时,开启盾挡(格挡+75%)后,必然不可能受到“碾压”伤害——按照“圆桌理论”,超过100%的“躲闪+招架+格挡”将“碾压”挤出了圆桌(顺便连“暴击”一起挤出去了,因此这个时候的战士非常安全)。

不论是对数据流玩家来说,亦或是游戏程序的设计师来说,“圆桌理论”都是极其方便的设定。其优点在于高优先级(次序在前)的属性其显露出的概率会更加真实地还原在战斗中(比如躲闪、招架等),而不会使玩家趋于混乱。其缺点也很明显,高优先级属性的“真实性”完全建立在低优先级属性的“牺牲”上,因此导致了攻击方属性的性价比远远低于防守方属性的性价比,一度造成防御职业的强大而无解。

顺带一提,“圆桌理论”——“一次掷骰子原理”,只适用于玩家(或BOSS)造成的近战普通攻击。而玩家使用的近战技能攻击(两次掷骰子原理,一次判定命中,一次判定暴击)、远程攻击(不能被躲闪/招架/偏斜;并且据推测,至少使用两次掷骰子原理)、以及法术攻击(同时还要区分魔法伤害近战攻击、魔法伤害近战技能、魔法伤害远程技能等等)都拥有其他的判定方式。

(图片来源于网络)