您的当前位置:首页正文

公式推导

2024-06-10 来源:易榕旅网


物理伤害公式

首先做如下认定:

1. 最小防御也就是人物裸属性的防御值(也即基础防御)是根据等级线性成长,公式已知为D(n),n指等级

2. 每个等级段内的最大防御与最小防御的平均比值固定为K(K的具体取值根据人物等级成长、人物加点、装备加成的比例以及预留的防御增长空间确定,这里定为7)

3. 等级固定的情况下,防御对伤害减免的影响是线性的(为什么是线性的?那是因为伤害公式为攻击*(1-伤害减免),可以看出攻击对伤害的影响是线性的,要保持攻防平衡就得让防御对伤害的影响是线性的,即要求防御对伤害减免的影响是线性的)

4. 预估伤害减免的区间为5%-65%

D这里设伤害减免函数为F,则自变量为D(n),其中D为当前防御值,D(n)为当前等级D的最小防御值,易知自变量D(n)取值范围为[1,K] ,并且D对自变量的影响关系式线性递

增的

D固定等级n,则可以将函数F的自变量改为x,x=D(n)

也就是说我们要找到这么一个函数F(x),x[1,K],使得x对F的影响关系是线性递增的,且F(1)=5%,F(K)=65%

1容易推出F(x)=K1*(0.6x+0.05K-0.65)

这里设定K=7,也就是说玩家极限防御是基础防御的7倍,则F(x)=0.1x-0.05

D即F(D)=0.1*D(n)-0.05

D伤害公式=A*(1-F(D))=A*(1.05-0.1*D(n)),其中A指攻击力

D伤害公式关于攻击A的偏导数的绝对值=1.05-0.1*D(n)

1伤害公式关于防御D的偏导数的绝对值=A*0.1*D(n)

可以看出上述两个公式是不相等的,也就是说攻击和防御对伤害的影响程度是不一样的。但这是由公式结构本身决定的,为了弥补这种不足,可以考虑在设定攻击和防御提升的时候根据性价比作平衡,由于不属于公式推导范畴,所以不对如何平衡做进一步分析,待后续。

Ps:攻减防公式可以有效解决该问题,但是又会产生新问题:不同攻击速度之间的平衡性。

天龙八部采用了攻减防,但是它的攻击速度是给定的,不跟人物成长相关,所以能够实现平衡。

最后,对公式做进一步处理:

这里D(n)关于n是线性的,所以D(n)=k1*n+k2,k1、k2通过人物属性成长确定

所以实际物理伤害公式为:物理攻击*技能影响*(1.05-0.1*物理防御/(k1*防御方等级+k2))

(该公式是在K值以及伤害减免区间确定下的公式,所以不会出现溢出)

法术伤害公式

由于法术攻击是建立在技能使用的基础上,而技能的冷却时间不受人物属性影响,因此可以用较理想的攻减防公式

实际瞬发型法术伤害公式为:((法术攻击-法术防御)+技能影响值+武器影响值)*(1-法术抗性),最小值为1

但是这么做会导致玩家对防御缺乏一个统一的概念,为了利于玩家的认知,将法术攻击和法术防御统一为一个基础值:智力

瞬发型法术伤害公式变为:(智力差影响值+技能影响值+武器影响值)*(1-法术抗性),最小值为1

至于存在施法时间的法术输出,需要在原来的瞬发型法术伤害公式的基础上乘以时间影响系数,时间影响系数由伤害预期给出

命中闪避公式

第一步,确认标准命中率:

首先确认标准属性的暴击率、暴击倍数,确认方法是综合玩家感受度、可执行性、商业性的方面做出的一个标准预估

这里设定标准暴击率为20%,标准暴击倍数为2,则暴击影响系数=20%*2+1-20%=120%

我们知道实际伤害=伤害*暴击影响系数*命中率

一个非常好的结果是暴击影响系数*命中率=1,也就是说命中与暴击的影响相互抵消,这不仅方便计算(计算不会考虑暴击和命中影响了),还能控制住暴击和命中对伤害的影响不会发生一边倒的情况

所以标准命中率=1/120%83%,我们可以看出83%的命中率在玩家接受度上也是可行的

第二步,具体分析:

1. 我们这里给出命中值和闪避值这两个命中率的影响参数,出于玩家认知度上的考虑,命中值和闪避值的数值区间以及增长数值区间是相同的,所以在等级固定的情况下,命中值/闪避值与最小命中值/最小闪避值的比值在[1,L](L取值与伤害公式中的K取值方法一样)

2. 设x1=命中值/最小命中值,x2=闪避值/最小闪避值,则x1、x2[1,L]

3. 当命中值=闪避值也就是x1=x2时为理想的命中率83%,也就是说命中率公式的基础值为83%

4. 所以命中率公式为:83%+(x1-x2)/M

5. M取值:

首先拍砖:命中率范围为[66%,100%](根据正态分布原理,83%为区间的中间值;66%的最小命中率不会太高,因为这里只是做相同职业内部的平衡预估,相同职业间不会发生命中率差别过大的现象),也就是说命中率最小值83%+(1-L)/M=66%,解得 M=(L-1)/17%,设定L=K=7,则M35

故命中率公式为:83%+(x1-x2)/35

设最小命中值/最小闪避值=x(n),x(n)是人物成长的基础命中值/闪避值,是线性的,所以x(n)=m1*n+m2,其中n指等级,m1、m2根据人物成长确定

攻击方命中值防御方闪避值1综合命中率公式为:83%+35*(m1*攻击方等级m2-m1*防御方等级m2)

这么做还会出现以下结果:

1. 不会出现低等级人物对高等级人物命中率偏低的现象;

2. 虽然高等级玩家对低等级玩家的命中率可能会低于低等级人物对高等级人物的命中率,但是高等级玩家的伤害可以弥补这一不足之处(如果不想要这种结果完全可以通过调整公式中的分母来避免,如将分母等级参数统一改为双方平均等级、将分母统一改为命中值*系数或闪避*系数。Ps:将分母统一改为命中值*系数或闪避*系数也就成了我们常见的命中闪避公式了)

附言

一:

属性的线性成长是最理想也是最平衡的结果,这点暴雪做的非常好,可以说它的所有公式结构都是围绕线性这一基本思路做的,所以我们在暴雪的伤害减免公式中发现了等级削减,引入等级消减的作用就是保证人物成长的线性趋势

天龙八部没有出现消减,但是我们不难发现其本质也是线性的,这是因为天龙的攻击速度和技能冷却时间都是给定的,而魔兽世界的攻击速度是变动的

我由此得出了一个结论:凡是出现攻击速度不相同的,用伤害减免公式并且做等级削减,攻击速度大致相同且攻击速度是给定值则用攻减防

二:

网上看过一些关于魔兽世界伤害公式的推导,是通过求导积分等计算出来的,我认为那只是作为旁观者对公式的反推,事实上,推导公式是根据需求来定的,什么样的需求产生什么样的公式,而不是什么样的公式产生什么样的需求。

因篇幅问题不能全部显示,请点此查看更多更全内容