首页 > 白马西风 > 关于战斗机制,Beaza的公式解析
2023
10-12

关于战斗机制,Beaza的公式解析

转载自:https://bbs.nga.cn/read.php?tid=17425757

开头先感谢两个人

第一个是

Omar Gonzalez 奥马尔冈萨雷斯,暴雪的一位高级软件工程师,从魔兽世界60级年代就一直在这个项目组,这次魔兽世界怀旧能问世,他是头号功臣,当时没人愿意接这个茬,因为太麻烦了,而且暴雪标准又高。是奥马尔一个人把前期最困难的都解决了,然后提出方案,暴雪的人一看靠谱,才决定做怀旧服,如果没有奥马尔,十有八九怀旧就胎死腹中了。

第二个是

Beaza,本文的主角,按暴雪的规矩,公式是不能透露的,里面好多复杂的东西说实话多大的测试样本都很难推出精确的结果,要不是Beaza私下里泄露天机,我们再摸索2年估计也不见得有结论。估计Beaza自己也会感叹,10多年前就把秘密都告诉你们了,就没人信~

=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​

这篇帖子最近修正大量内容,这里首先我要承认错误,之前我看到Beaza在描述“目标是玩家和目标是怪物时”,没当回事,理解是PVP和PVE的差别,实际上这是错误的。计算公式的差异是以“目标是怪物还是玩家来界定的”,而不是以“PVP和PVE来界定的”,在PVE当中,玩家攻击怪物和怪物攻击玩家的公式是不一样的。所以后来我修正了大量的内容,请有可能被误导的人重新读一下这个帖子。Beaza在解释每一个细节的时候都很严谨。实际上在玩家打怪时采用两种不同的公式主要是为了强化“增加武器技能”装备的分量,因为这个能力的获取并不容易,如果收益太小,就完全沦为毫无意义的设计了。

=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​=​

最新的蓝贴确认了很多战斗结果,和大家印象的理论有很大差别,比如在面对63级的BOSS时:

招架的几率是14%
未命中的几率是8% (详见下文)
暴击几率减少3%
闪避的几率是6.5%

最近GITHUB方面也在大量的组织测试,大家发现怀旧的算法和10多年前Beaza给出的公式高度吻合,所以现在越来越多的人开始逐渐相信这些东西。

Beaza是当年的一个神秘人物,他2006年末突然毫无征兆的出现在wowwiki(魔兽维基)网站,并且改动和编辑了一系列跟战斗机制有关的内容,并且没有给出任何解释。当时因为他的一些改动和蓝贴的解释略有出入,所以很多人选择并不相信他的话。他自称是暴雪的程序员,负责编写了游戏的战斗逻辑和平衡性,并且他有一次无意中透露了游戏里Eskhandar就是他家的猫的名字,尽管后来他改口说是一个程序员家的猫的名字,但是维基里仍然留下了修改记录。他当时说话的方式显得不太专业,至少和大家心目中暴雪员工高深莫测并且嘴很严的形象不符,所以很多人质疑了他的身份,他也从来没有给出过任何证据,最后所有他做出的修改都又被改回来原来的样子,TBC以后他就没有再做出什么更多的修改了。如果按逻辑说,就是他在1.12末期完成了TBC以后就离职了,所以后期的改动他就不可能知道内幕了。

关于Beaza的理论,有一部分已经得到了验证,目前还没有任何一条被证伪,所以我想解释一下Beaza的理论,我不保证这些100%就是真理,信不信可以由各位自行判断。

1. Beaza首先确定了暴雪使用的是圆桌理论,并且给出了判定优先级第一项是“未命中”的结论

他解释了未命中的公式,基础未命中是5%

当玩家攻击玩家或者怪物攻击玩家时,攻防双方每有一点技能差(武器技能和防御能力),会增加或者减少0.04%的未命中几率。

当玩家攻击怪物或者怪物攻击怪物时,如果攻防双方的能力差超过10点(不含10点),则每一点能力差会增加减少 0.2%的未命中几率,当能力差小于等于10点时,每一点能力差会增加减少0.1%的未命中几率。

(这里符合逻辑,因为玩家的武器技能不太容易获得,绝大多数武器想超过10点都难,但是防御能力很容易堆过百)

这里补充一点,根据暴雪最新蓝贴的说法,当目标怪物的防御能力超过玩家的武器技能10点以上时,系统会把1%的命中加成无效化。换句话说,如果用300的武器技能攻击一个防御技能315的怪物,那么自身无论是1%的命中或者是0%的命中,最后的未命中几率都是8%。当然我认为暴雪这个蓝贴其实也印证了Beaza的理论,虽然Beaza之前没有提“无视1%命中加成”这个事,但是超过10点换公式这个理论确实是他说的,而且换公式这种事是很难靠测试结果逆推的,暴雪这次的蓝贴也肯定了有能力差超过10点这种说法。

Beaza表示级别跟各种概率的修正没关系,这些修正都来自于能力差 (所以我们之前认为63级怪跟60级角色每级有1%的命中差,再加上15*0.04%,最后得到8.6%的理论是错误的)

他还提出,最初的双持计算公式是,未命中率*80% + 20%,所以双持最初的未命中率计算是 5%*0.8+20 = 24%

不过后来暴雪把这个公式改了,后来的计算方式就是未命中率 + 19%

2. 他解释了关于角色闪避率的计算方式

每个角色的闪避率计算方式,由两部分组成,一部分是他的基础闪避率,不同职业不一样,有些敏捷高的职业甚至是负数,敏捷低的职业,比如牧师,是3%。

之后这个基础概率再加上敏捷,天赋,装备,防御技能等提供的闪避率,就是最终的闪避率

防御技能对于闪避的影响:

Beaza的原话,当目标是玩家时(怪物攻击玩家,玩家攻击玩家),攻防双方每有一点技能差(武器技能和防御能力),会增加或者减少0.04%的闪避率。

当目标是怪物时,每一点能力差会增加减少0.1%的闪避率。

低级的怪物,9级或者9级以下,闪避率会下降。 如果目标晕了,则无法闪避,但是瘫痪不受此惩罚。

这是他当年给出的表格,我们可以看到德鲁伊的转化似乎和我们印象当中的不一样,其他的转化后来基本都被证明了,这里有几点解释:1. 他不小心搞错了 2. 他当初是这么设计的,后来暴雪改了 3. 他是对的,当年就是这样。

后面他也解释了,1.12左右暴雪就改了,新的公式如下,和我们看到的差不多

3. 解释了关于招架(parry)的具体机制

防御能力对parry的影响是固定的0.04%,无论目标是怪物还是玩家

当时大家都感受到了由parry带来的普通攻击加速现象,但是没有人能具体说明,Beaza给出了具体的解释:

角色在招架以后,会重新计算普通攻击的速度,如果剩余倒计时时间大于总倒计时的60%,则倒计时减少40%。
如果剩余时间小于总时长的60%,但是大于20%,则减少到20%
如果剩余时间小于总时长的20%,则不减少

这里额外补一句,有一些BOSS的招架加速功能被阉掉了,比如帕奇维克,这个可以理解。具体都有哪些,我确实没印象了。

4.关于格挡(Block)的机制解释

对于怪物来说,一般会认为怪物有5%的基础格挡几率

和闪避的性质类似,如果目标是怪物(玩家打怪),则每一点能力差会带来0.1%的修正

如果目标是玩家(怪打玩家或者玩家打玩家),则每一点能力差会带来0.04%的修正

9级以下的怪物格挡的几率会减少

无论双方的能力差如何,怪物都不会有超过5%的格挡。

5. Beaza解释了关于压碎性打击(Crushing blow)的机制

只在PVE时会发生压碎性打击,当怪物的武器技能超过角色的基础防御技能15点或更高的时候,会发生压碎性打击,这次打击的伤害是正常伤害的1.5倍,发生压碎性打击的几率是:

能力差*2% - 15%

换句话说,对于63级的敌人,是3*5*2% - 15% = 15%

在判定压碎性打击时,由装备提供的防御能力在计算的时候不会超过你的角色级别*5,也就是说,打高级怪时,堆防御能力并不能直接避免被压碎性打击。如果你的角色是60级,但是你只有280点防御能力,那么你打同级怪是会被压碎的,这时候如果你身上装备提供了20点防御能力,你就可以避免被压碎。打高级怪的时候,你身上的防御能力不会超过你自身的等级*5,所以不能帮助你避免压碎。

根据圆桌理论,你可以通过其他手段把压碎性打击挤出去来避免被压碎。

6. 关于物理暴击的解释

能力差对于暴击的影响很复杂:

在玩家攻击怪物时,如果你的武器能力超过了等级*5,不会得到额外的暴击率奖励。这点和压碎性打击一样,比如你60级,武器能力正常是300,你现在通过天赋等堆到了310,额外的10点不会提高你的暴击率,但是如果你现在是60级,你的武器能力是290,你额外得到了10点,那么这部分加成是管用的。

如果目标是怪物(玩家攻击怪物),且玩家的武器技能小于怪物的防御能力时,每一点能力差会带来0.2%的暴击率减少惩罚。 补充一点,原文还提到了,怪物攻击怪物时,也如此,当然这种情况少见,我怕带来更多误解,所以放在后面。

如果目标不是怪物(那就是玩家了),每一点能力差可以带来0.04%的暴击率修正。

Beaza给出了1.12的基础暴击率和敏捷暴击换算公式

关于之前广泛流传的一个暴雪解释“暴击”机制的蓝贴(这里我就不贴了),Beaza也发表了自己的意见:他说那个蓝贴的措辞是有问题的,所以带来了很大的误解,产生了两种完全相反的解读。 因为是蓝贴,所以大家都奉为权威,但是实际上那贴的用词很不严谨。这里主要是因为发蓝贴的一般都是社区经理或者测试人员,研发一般是不代表暴雪直接发声的,发帖的人会去请教研发,问明白以后再发帖解释,但是对于一些很复杂的游戏机制问题,社区经理和测试人员的理解有限,再加上战斗系统本身就很复杂,用非逻辑语言解释起来很费劲,所以才会出现了问题。

7. 关于法术机制以及法术暴击率的解释

和我们所得知的60点智力换1暴击不同,Beaza批判了60智力=1暴击,直斥其没道理,他给出了以下表格:

同时Beaza在说法术的命中暴击判定机制并不是圆桌

法术命中最高是99%,

他解释了法术判定的机制,首先对于任何法术,无论二元法术(binary spell,没有伤害的的功能性法术)还是非二元法术,都会先判定其是否命中,在判定完是否命中以后,如果是伤害法术,再进入二次判定,看抵抗了多少伤害。

根据他的解释,我们也不难理解为什么法术和物理黄字并没有用圆桌理论来处理,因为无论是法术也好,黄字物理技能也好,性质都比较复杂,有不少都不造成伤害,如果还用圆桌的方式处理就显得很笨拙了。

(这里我想补充一个目前被广泛认可的理论)

我们结合Beaza的说法以及这张图标,可以大概得出二元以及非二元法术的作用机制:

Binary spell,对于二元法术,首先会判定法术是否命中,在命中以后,再判定抵抗,抵抗的关系详见上面的表格,这里注意右边浅蓝色的部分,是具体抗性下产生各种结果的权重,可以把这些结果看作是一个table,这些情况发生的几率总和是100%,系统首先选出一个“结果”,然后再根据结果来判定法术是否被完全抵抗,完全抵抗的概率就是左边深蓝色所示的,一共有5种: 100%命中,75%命中,50%命中,25%命中,0%命中

所以你二元法术的最终实际命中率 = 法术命中率*(1-(100%命中的几率*100%+75%命中的几率*75%+50%命中的几率*50%+25%命中的几率*25%+0)),实际结果查一下表就可以算出来,以对手300抗(上限)为例,假如你的命中是99%,那么你的二元法术最终实际的生效几率是:24.75%

Non-binary spell,对于非二元法术,首先会判定法术是否命中,在命中后,再判定是否暴击,得出最终伤害,之后判定抵抗伤害减免,减免的关系如上表,最后用最终伤害*减免结果 = 实际伤害

8. Beaza对于偏斜(glancing blow)的解释

和压碎的原理类似,在PVE的时候,如果玩家攻击基础防御能力高于自己基础进攻能力的怪物时,会发生偏斜。

偏斜的几率是:10%+基础能力差*2%,满技能打高两级怪,30%偏斜,打高3级怪,40%偏斜

30级以上的非近战职业(法术牧)有60%的几率发生偏斜,30级以下的非近战职业有(级别-10)*3%的几率发生偏斜。

偏斜的减免伤害跟武器技能相关,具体的计算方式是首先根据公式定一个下限,再定一个上限,最后从上下限期间取一个随机数

下限是: 1.3 - 0.05*能力差,法术牧近战砍偏斜还有额外的0.7惩罚

下限不会高于0.91,不会低于0.01

上限是: 1.2 - 0.03*能力差,法系惩罚还有额外的0.3

上限不会高于0.99,不会低于0.2

他解释了在你的武器技能练满以后,偏斜率是不可能缩小的,但是偏斜伤害可以,10点(具体来说应该是8点)武器技能就足以把偏斜伤害惩罚降到平均5%(没有武器技能的时候,按照算法偏斜惩罚是平均35%)

感谢“米开朗基罗”帮忙计算出具体结果:

0点武器技能,为75%-55%,平均造成伤害65%;
5点武器技能,为90%-80%,平均造成伤害85%;
8点武器技能,为99%-91%,平均造成伤害95%(上限);

这一条最近在github上已经得到测试证实了,这意味着武器技能最大的收益在这里,因为打63级的怪时,偏斜率高达40%,偏斜惩罚高达平均35%,伤害损失高达:0.4*0.35 = 14%, 而只要8点武器技能,你就能把损失降到,40%*0.05 = 2%!如果有5点技能,那么你的偏斜损失是 40%*0.15 = 6%。如果算上武器能力对其他方面的影响:5点技能挽回1%的暴击惩罚,减少2%(+1%)的命中惩罚,减少0.5%的闪避惩罚,面对63级怪时还减少了因为偏斜带来的8%伤害的惩罚。如果我们想想暴雪把5点武器专精放在了盗贼战斗系天赋的倒数第二排,也不难理解,如果按照最初的想法,5点无非就是换来1%的总收益,放在天赋树的这个位置那是有点滑稽了。不过这也说明了,对于RAID,武器技能是近战的必须品,人类和兽人的专精确实用处很大,省了不少麻烦。这里注意偏斜只对白字近战攻击生效,对于盗贼和战士来说,白字一般占总DPS的40%-60%

9. Beaza解释了黄字攻击和白字攻击不完全一样

他说明了黄字攻击不是单纯的把所有可能性圆桌的计算方式,而更像是魔法,但是他没有具体解释,他只说服务器尽量把黄字处理的和白字一样,但是偶尔也有特殊情况。

10. Beaza解释了有一段时间,背面攻击是有BUG的。。。

在当时,PVE,你在背面攻击不会看到招架,格挡和闪避,但是这些情况都会发生,所有这些都会被转化为“未命中”,最扯的是,如果正面打格挡了只是减少一些伤害,如果是背面,直接就变成未命中,所有伤害都没了。。。。而且背面触发的招架还会使敌人攻击加速。。。。还好后来这个BUG很快就被修复了。

11. Beaza解释了Eskhandar有关的东西

有人猜游戏里的Eskhandar(中文我不记得了,如果有人记得请告诉我)系列相关有几个道具,所以这应该是跟暴雪开发人员相关,可能是谁家的猫的名字。Beaza解释说这就是他家猫的名字,当时他提出想要有一个爪子物品,一个项链和一个披风用他猫的名字命名。

后来Beaza把这部分内容编辑掉了(如果他真是暴雪员工,那么这么做可能是为了怕暴露身份),但是他不知道wiki所有修改都有历史记录,所以现在还能查到。。。

12. Beaza解释了为什么普通攻击要用圆桌理论

有人提问,说各种概率加一起,最后把普攻挤出圆桌这样的设计看起来挺蠢的,为什么不能把所有的可能性列出来,然后随机排序,之后依次判定。

比如,一共有闪避,格挡,招架,暴击4种,先进行随机排序,然后依次判定,如果判定靠前的发生了,后面的就不判定了,如果排名靠前的没发生,再判定排名靠后的。

Beaza解释了,因为这种算法太复杂了,如果你每挥一刀,都要进行多次随机+概率判定的组合,代码会给服务器带来太大的压力,所以他们必须让代码保持简洁 (想了想确实是,如果按照上面说那种算法,计算量可能要多几十倍)

关于Beaza给出的东西,就是以上这些了,因为他坚持不给任何证据,所以不少人狂喷他,后来他写的东西基本都被删了,不过最近暴雪的蓝贴给出的数据似乎印证了所有Beaza提出的理论都是正确的,然后是我个人的看法:

很多公式明显不是靠测试和逆向工程就能推出来的,尤其是分段函数,如果被证实是正确,那么就不是巧合,所以Beaza就算不是暴雪的程序,起码也是亲友,我选择相信。

其实整篇下来,我们发现最重要的东西就是武器技能,尤其是300-305这5点,收益太大了,对于未命中,打63级怪,有5点技能就能改变算法,没有就不能,同理暴击也是。等于按照目前的信息,最初5点武器技能带来的收益是: 2%的未命中,1%的暴击,0.5%的闪避,0.2%的招架以及大量的偏斜伤害减免。。。人类和兽人近战PVE真是占太大便宜了。。。

堆武器技能有几个档位,第5点收益最高,6-8点也很必要,9-15点的时候每5点的收益依然比1暴击高,15点往上就没什么收益了,所以要堆的话,算好,前8点几乎是必堆,9-15看情况,当然这仅限于PVE。

1-4点:未命中降低,暴击惩罚降低,偏斜惩罚降低,敌人招架率降低
5点:改变未命中公式,未命中降低,暴击惩罚降低,偏斜惩罚降低,敌人招架降低。 (如果按照暴雪最新蓝贴的说法,那么第5点武器技能的价值就更大了,除了改变未命中公式,还可以免去1%命中加成无效化的惩罚,等于一共间接收获了3%的命中!)
8点:未命中降低,暴击惩罚降低,偏斜惩罚降到下限,敌人招架降低
8-15点:未命中降低,暴击惩罚降低,敌人招架降低
15+:未命中降低,敌人招架降低
2019-08-15 16:48
这里我补充一点,省的造成误导。因为原文BEAZA同时提到了两件事:

1. 武器技能高于 “当前等级*5”时,对暴击不会产生影响。
2. 技能差会导致暴击惩罚。

这里其实是有一点点歧义的,因为第一句话也可以这么理解,比如我打同级的怪物,我有310的技能,这时候应该奖励我0.04%*10 = 0.4%的暴击,但是根据第一条规则,就不奖励了,这个没有争议。但是对于第二条,提升武器技能以后缩小了和敌人的技能差,那么会不会缩小3%惩罚,这个开头我是不确定的。

这个问题后来我看了GITHUB上的大样本暴击测试,现在明确了,即使武器技能高于300,比如305或者310,打63级怪,依然会受到3%的暴击率惩罚,以及3%的暴击率奖励无效化惩罚,这一共加起来是6%。根据这个新结论,8点以后的武器技能价值就非常小了。

原文里我说5点技能可以减小1%的暴击率惩罚,这个是不对的,请注意一下,因为帖子已经过了编辑时限,所以我在最后说明一下。
2019-10-13 11:52
有几位朋友提出,对于超过3级敌人带来的暴击抑制,GITHUB上的数据更支持1.8%的结论。

这里我个人的看法是这样的,首先我们能看出,最初得出的3%肯定是有偏差的。现在GITHUB上的样本量不足够大,百分位的数字我觉得可信,千分位未必。

所以目前我更倾向于这里就先当做2%处理吧。对配装没有实质性的影响,等往后研究测试方面再有更可信可靠的依据,或者有公式算法的公布,我们再更新这里。
2020-04-12 14:55
关于偏斜攻击,我的解释措辞有错误和不严谨的地方,我说的是比基础技能比自己高,其实不是的,特此修正,beaza的原文是:

Players have a chance to perform a glancing blow against [[mobs]] equal to 10% plus 2% per point of difference between attack rating and defense. Non-melee classes level 30 and higher have a 60% chance to glancing blow. Non-melee classes from level 11 to level 29 have a (level - 10) * 3% chance of a glancing blow. As noted above, your maximum attack rating in this formula is 5 times your level. A mob's Defense skill is equal to its level * 5.

所以,这里应该是这么理解的:

玩家一直到攻击比自己低4级的怪物时,都有可能会偏斜,比如对一个60级玩家讲:

攻击56级怪:2%偏斜
57: 4%
58: 6%
59: 8%
60: 10%
61: 20%
62: 30%
63: 40%

https://bbs.nga.cn/read.php?&tid=17425757

 

觉得文章有用,微信打赏一元。



留下一个回复

你的email不会被公开。