关于攻击力和防御力收益的计算

2023/6/21489 浏览游戏攻略
一,伤害公式:
攻击力²/(攻击力+敌方防御力) = 实际伤害
这个公式不够直白,我们需要进行变换,以此来方便计算与直观思考。
把敌方防御力这一项换算成,A%攻击力。例如,敌方500甲,自己1000攻击力,那就是敌方防御力相当于500/1000 = 50%攻击力。
二,一步优化后的公式
攻击力²/(攻击力+A%攻击力) = 实际伤害
约去一个攻击力
攻击力/(1+A%) = 实际伤害
到这一步实际上相比于初始公式,擅长口算的人使用起来已经足够用了,但是还可以更清晰。
我们将右边实际伤害用,敌方生命值,替换,反推所需的攻击力
三,两步优化后的公式
一次清空血条所需攻击力/(1+A%) = 敌方血条
一次清空血条所需攻击力 = 敌方血条*(1+A%)
所需攻击次数 = 所需攻击力/面板攻击力
当然,这是不考虑暴击,也不考虑对兵种加伤,减伤的。但是到这一步,真要算具体攻击次数,也很简单。
这些算出来,只是为了单纯体现攻击力与防御力之间的关系。
四,真正想推到的结论——有关防御力
我们如果转换视角,以被攻击方视角来看。
每拥有相当于对方100%攻击力的防御力,自己就能多抗一条血的伤害。
例如4000血,500甲,抗500攻击力的人,能抗8000折前伤害。8000/500=16下。
如果有1000甲了,就能抗12000/500=24下。
能抗的折前伤害,也就是无甲等效生命值。当对面攻击力为500,4000血500甲的承伤能力,等于8000血0甲。
代入原始公式计算,500*500/(500+1000)=166.6666667每下
4000/166.66=24下
可见推导结论是正确的。
如果以上都没看懂,也不想看,只需要知道可以得出一个关键结论 :
防御力增长的收益是线性的。
五,真正想推到的结论——攻击力
攻击力的收益曲线呢?
如果攻击力翻C倍,则本来可以相当于A%攻击力的对方防御力,变成了A/C%。
对方能抗的折前伤害 = (1+A/C%)*生命值
= 生命值 + A%生命值/C
可见,不仅自己的折前伤害确实能提高C倍,对面的无甲等效生命值还衰减了。
这个公式有两部分,1和A%的大小关系会影响攻击力收益。
当攻击力本来就很高时,A的值已经很小,提升C倍攻击力,就只有大约C倍的效果。
但是当攻击力很低时,A值很大,提升C倍攻击力能起到至多C²倍的效果。
看不懂没关系,只要知道最终结论 :
攻击力的收益是从C²到C衰减的曲线,与对方防御力挂钩。是曲线的。
这意味着1000攻击力拆500甲的人的速度,是500攻击力的三倍。
六,回归游戏
削减对方攻击力的效果极为明显,降对方防御力的增伤效果没有那么夸张。
攻击力属性堆高高就行,光堆防御或者光堆生命值收益都不如均衡地堆。
减伤和增伤的系数,不影响攻击力和防御力之间的关系。有增伤拆人更快,有减伤死得更慢,但是攻击力防御力本身的关系是没有变的,只不过在计算完以后乘上了百分比增伤减伤的系数。
包括暴击率,伤害波动,等等。我这边计算的结论都只是,攻击力和防御力的相关关系,是最为本质的,后续计算都是在此之上堆叠,不影响本质关系。
七,
以上都是脑算的,公式也是。没有纸笔写下来算,也许会有错吧。不过我认为应该没有。
结论只有两个:
防御力是线性收益
攻击力收益超过线性,不到二次方
TapTap
评论23
只看作者
最热
TapTap
写下你的想法...
T^T
a^2/(a+b),a,b大于0
对a求导数:=2a/(a+b)-a^2/(a+b)^2=(a^2+2ab)/(a+b)^2=1-b^2/(a+b)^2
对a求二阶导:=2b^2/(a+b)^3
对b求导数:=-a^2/(a+b)^2=-(a/a+b)^2
对b求二阶导:=2a^2/(a+b)^3
导数对应伤害的变化,二阶导对应伤害变化幅度的变化。
给定对方攻击不变,自己防御的最优解:
min(a^2/(a+b))
或者说max(-a^2/(a+b))
条件是新式对b的导数为0,二阶导小于0;
解不存在,或者说b趋向于正无穷;
但是新式对b的导数恒大于0小于1,二阶导恒小于0,说明防御是边际效益递减,同样的1点防御,已有防御堆得越高,这1点防御效益越差(始终比线性弱)。当b趋向于0时,收益才趋向于线性。
给定对方防御不变,自己攻击的最优解:
max(a^2/(a+b))
条件是对a的导数为0,二阶导小于0;
限定边界下解不存在;
但是在b>0的情况下,对a的导数恒大于0小于1,二阶导恒大于0,说明攻击是边际效益递增,同样的1点攻击,已有攻击堆得越高,这1点攻击效益越高(但还是比线性弱,因为导数恒小于1)。当a趋向于无穷时,收益趋向于线性。
T^T
所以攻击和防御的收益都弱于线性,但是攻击的边际效益递增,防御的边际效益递减。
砾志
我们关注的点不同,对于公式进行一阶导和二阶导都是对于伤害值进行判断,对于公式进行延伸与变换后,得到的是另外一些东西。例如防御力是否低于线性。从伤害值上来看,每一点防御能降低的会越来越少,但是从承伤次数上来看,那就是线性的。因为生命值除以伤害值才是承伤次数。就包括别的游戏,例如LOL里,减伤是(x/100+x),肯定非线性,但是这里的线性在于,每一百点甲相当于多一管血。这个游戏里,每拥有100%对方攻击力,面对对方就相当于多一管血。这个关系是线性的。而伤害数值最终要体现价值还是体现在消灭对方上面,也就是打空一管血。
全部 11 条回复
T^T
回头看了一下你的推导,出问题的确实是你的表述。第五段里的表达式是一个关于C^(-2)的函数,当你定义的A趋向于0时它会衰退为C^(-1)的函数,你把次方的负号全漏了,所以不是线性和二次方,应该是-1次方和-2次方
砾志
这个地方需要的是求极限而不是求导。在将def看做常数后,atk趋向0和正无穷分别求极限。0和无穷其间变化是平滑的,那结论显而易见。
T^T
你文章里面收益函数一直没写出来,第五段里那个函数C的次方是负的,如果你是拿伤害作攻击的收益函数,那这里的表达式就是矛盾的
YU
[TapFamily_赞]借你的文案用半天 
砾志
随便用,但是顺带一提,活动抽奖从来没有抽到过我,我要大声嚷嚷了
Cecil
这游戏就是明显攻击收益大于防御,所以这也就是领导力作用大于间谍的主要原因。同时也是指挥官是最神技的体现。
沐尘
[TapFamily_赞]这很
烨
这偶遇大佬[TapFamily_麻了]
烨
[TapFamily_爱了]以前也有铁说这个公式,你可以看一下以前的对比一下哟
大少爷
建议编成matlab
6446
TapTap
已经到底了
7
4
23