Loading...

《暗黑3》对抗性护甲收益的正确理解

 看到论坛上关于抗性护甲的讨论,虽然数学模型很简单,但似乎还没人解释得足够详细、清楚并且通俗,造成一些数学不是太好的坛友无法正确理解,所以我特地创建一个账号来开此贴,希望尽量把事情说清楚。再次声明,涉及的数学很简单,此贴只为还不太明白的朋友而开,已经足够明白的就请不要说内容太简单了。

贴子各个部分有一些数学公式、通俗解释和结论。最后有提到一些简单的个人看法,请阅读者各取所需。如果什么地方有错误请指正。

1.1 基础公式(一)

60级人物抗性减伤=抗性/(抗性+300)

比如:300全抗对应50%减伤,也就是1万伤害打到你身上还剩5千点。

60级人物护甲减伤=护甲/(护甲+3000)

比如:3000护甲就是50%减伤,效果和300全抗等同。

基本结论1.1.1:单纯从减伤百分比效果来看,300全抗0护甲和3000护甲0全抗的效果是一样(注意,不是说任何时候300全抗和3000护甲的效果是一样的!)

1.2 基础公式(二)

抗性和护甲同时存在的话,按照乘法计算总减免伤害。

比如,抗性减少75%伤害,护甲减少75%伤害,总的伤害是(1-75%)*(1-75%)=25%*25%=6.25%。达到这个数字需要900全抗和9000护甲。

注意,这里没有计算角色被动技能加成以及减少近战远程和精英伤害的词缀。据我所知这些也是按照乘法规则来加成减伤效果。不过这些效果无法堆到护甲和抗性的减免程度,所以对本文结论影响不大。

1.3 如何计算收益

上面的公式很简单,相信差不多所有人都明白。但问题是如何通过这些公式来计算收益。那么首先需要定义收益。

收益有很多种定义方法,比较通用的是有效血量(EHP)。换句话说,就是怪物需要造成多少原始伤害才能杀死玩家。

EHP=HP/(1-总减伤%),如果只计护甲和抗性的话,

总减伤=1-(1-抗性/(抗性+300))*(1-护甲/(护甲+3000))

还以上面为例,抗性900,护甲9000,总减伤=1-(1-900/1200)*(1-9000/12000)=1-0.25*0.25=93.75%
也就是只承受6.25%伤害。

把这个公式代入前面的公式,所以EHP=HP*(抗性+300)/300*(护甲+3000)/3000

如果角色HP为10000,那么有效HP就是10000*1200/300*12000/3000=160000。也就是因为减伤到1/16,所以有效HP为角色HP的16倍。

1.4 EHP为线性收益

从上面的公式EHP=HP*(抗性+300)*(护甲+3000)/(300*3000)很容易看出,EHP对抗性和护甲都是线性收益。

定义澄清:何谓线性收益。所谓线性收益就是收益函数y=ax+b(线性函数,图像为直线),也就是x每增加1,y就增加a,与x的值本身无关。

因此,每增加一点护甲,EHP增加HP*(抗性+300)/(300*3000),或者每增加3000点护甲,EHP增加HP*(抗性+300)/300
同理,每增加一点抗性,EHP增加HP*(护甲+3000)/(300*3000),或者每增加300点抗性,EHP增加HP*(护甲+3000)/3000

结论1.4.1:从有效HP收益来看,护甲和抗性都是线性收益,没有递减效应。(当然,对应的减伤%是递减的,但那个不是实际收益)
结论1.4.2:虽然是线性收益,但1点护甲的收益取决于HP和抗性,1点抗性的收益取决于HP和护甲。
结论1.4.3: 在护甲和全抗比例大概为10比1的情况下,增加10点护甲和增加1点全抗的收益差不多。如果两者比例距离10:1比较远,那么这个结论不再成立。

1.5 线性收益容易误会的地方

EHP是线性收益,但收益率不是线性的。以万血0抗0甲增加到0抗3000甲以及0抗9000甲为例子。

0抗0甲  EHP=10000(无减伤)

0抗3000甲 EHP=20000(50%减伤)

0抗9000甲 EHP=40000(75%减伤)

每增加3000甲,EHP增加10000。因为9000甲是3000甲的3倍,所以增加的EHP也是3倍(10000到30000),这是所谓线性收益的真正含义。

但同时,护甲从3000增加到9000,变成原来的3倍,而EHP从20000增加到40000,也就是只是原来的2倍,却不是3倍。这是因为对线性收益来说,x加倍不代表y也加倍。(因为y=ax+b中的b不等于0)

上面两种计算收益率的方法,哪个更合理呢?当然是第一种,原因是这个收益不取决于其他因素。按照第一种计算方法,我增加了10000的EHP,就可以多承受怪物10000的伤害,这个收益基本上在任何时候都具有稳定的价值。而第二种算法,如果说EHP增加一倍,但到底增加多少呢?取决于你原来的EHP是多少,1000提高到2000和10000提高到20000都是提高一倍EHP,但实际效果根本不一样。所以,不能按照第二种算法来计算收益。

结论:EHP收益要按加减法算 (增加了多少),不能按乘除法算(增加了几倍)。因此线性收益结论无误。

1.6 抗性和护甲的平衡以及1:10黄金比例

由于抗性收益取决于护甲(和HP),护甲收益取决于抗性(和HP)。所以两者需要平衡。

举例说明,以万血角色为例,0抗的时候每3000护甲增加10000点EHP,而300抗的时候每3000护甲能增加20000点EHP(参照1.4里面的公式)。反过来的情况也类似。所以,只堆护甲或者全抗是不经济的。

有人提出的10:1黄金比例,这里用数学推一下这个结论是如何来的。

我们首先统一化抗性和护甲的成本,假设从0点护甲和抗性开始算,获得每300点抗性和每3000点护甲的成本是一样的(这个假设当然不准确,不过这是这个结论的前提,请注意这一点)

设 a=抗性/300,b=护甲/3000,

那么a+b就是总成本

在总成本固定,也就是a+b=常数的情况下

EHP=HP*(抗性+300)/300*(护甲+3000)/3000=HP*(1+a)*(1+b)=HP*(1+a+b+ab)

注意a+b是常数,所以在HP固定的情况下,最大化EHP需要最大化a和b的乘积,学过初中数学的都应该知道这意味着a=b

a=b=>抗性/300=护甲/3000=>抗性/护甲=1:10

1.7  抗性和护甲的平衡(进阶)

1.6中结论有两个非常重要的前提,也就是设获得每300点抗性和每3000点护甲的成本是一样的,并且必须从0抗0护甲(或者抗性和护甲比例为1:10的时候)开始算。如果简单地把前提换成每获得300点抗性和4000点护甲的成本是一样的

话:

a=抗性/300,b=护甲/4000

a+b=常数C

EHP收益=HP*(抗性+300)/300*(护甲+3000)/3000=HP*(1+a)*(1+4b/3)=1+a+4b/3+4ab/3=(1+a+b)+(b/3+4*(C-b)*b/3)=常数+-4b^2/3+(1/3+4C/3)*b (1+a+b是常数)

最大化EHP需要最大化后面有关b的二次函数,结果是b=1/6+C/2,a=-1/6+C/2,变得很复杂,不再有固定的黄金比例,而和常数C(你的总预算)有关,下面举例说明。

比如,每增加300点抗性需要花1百万,每增加4000点护甲也需要1百万。现在我有2百万(C=2)资金,那么最大化EHP收益需要增加大约250点抗性和4667点护甲,接近1:20的比例。

不仅如此,上述计算的另外一个前提是,你当前的装备必须满足抗性和护甲比例为1:10,否则结论还和你最初的抗性和护甲有关。

在这么多前提下,黄金比例真的成立吗?这就是下面要讨论的问题。

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注