DNF的伤害计算

在之前的博客《观察LOL的数值系统》中,我粗略观察了LOL的数值系统,虽然有很多不确定的地方,但是其中关于伤害计算公式我还是比较确信的。但是DNF伤害计算公式的研究难度,相比LOL要困难很多,有以下几个原因:

  • 伤害值不是固定的,而是有一定范围浮动。(尽管看起来浮动值很小)
  • 牵扯到很多方面的数值,而他们的结算优先级也需要考虑
  • 修炼道场中不显示更详细的属性(例如防御力等)

前言

  1. 文档中的很多小数都只保留了1~3位。
  2. 计算出伤害期望与实际打出的伤害差别在50以内都认作是计算正确。

测试环境

“伤害”受多个自身数值的加成,也会因对方防御力等数值而减免,而这些加成/减免数值很多并不会显示,这对测试分析造成了极大的妨碍。
因此,分析伤害的首要目标是发现一个0加成、0减免的测试环境。在此测试环境下,实际输出的伤害等于理论伤害。这里,我发现的环境是:
用几乎是刚创建的15级女鬼剑,使用技能【波动斩】,对修炼道场中的【陨石】进行输出:

可以看到,我的面板物理攻击424,【波动斩】的物理攻击力加成158%,这样伤害期望是:
424×158%=669.92424 \times158\%=669.92 424×158%=669.92

而显示的伤害和此值相差极小。这说明现在就是想要的测试环境,这意味着:

  1. 【陨石】的伤害减免为0。如果我用相同的角色和技能去输出另一个对象发现小于伤害期望,则说明另一个对象的伤害减免高于0,具体的值也可以计算。
  2. 我现在的角色的伤害加成为0。如果我用其他角色的其他技能去输出【陨石】发现高于伤害期望,则说明其他角色在测试时伤害加成高于0,具体的值也可以计算。

当然,这个推论严格意义上不“严谨”。因为,如果加成减免相互抵消(即加成百分比减免百分比互为倒数),最终的伤害依旧等于伤害期望。也就是说,“加成为0”和“减免为0”这两个推论其实是“相互证明”的,即一个如果成立,那就证明了另一个一定成立;反之,一个是错误的,那就证明了另一个一定是错误的。
然而,对于二者的正确性我还是有一定自信的。首先,这种互为倒数的关系是不容易达到的。其次,【陨石】作为建筑,它的防御力是0,这是很多资料上显示的;而我的角色也是刚创建,我有理由相信目前没什么额外的“加成”。因此这里我很有自信说:现在这个测试环境中,加成和减免都为0。

技能伤害加成类型

1.百分比

技能描述为:物理/魔法攻击力:X%。公式比较直接:
技能基础伤害=人物面板物理/魔法攻击×技能百分比倍率技能基础伤害=人物面板物理/魔法攻击 \times 技能百分比倍率 技能基础伤害=人物面板物理/魔法攻击×技能百分比倍率

实例就是测试环境中的例子。

2.固伤

技能描述为:物理/魔法攻击力:X。公式为:
技能基础伤害=(1.0+人物面板力量/魔法×0.004)×技能面板攻击力技能基础伤害=(1.0+ 人物面板力量/魔法\times0.004)\times技能面板攻击力 技能基础伤害=(1.0+人物面板力量/魔法×0.004)×技能面板攻击力

例如:

【火焰吐息】的伤害预期是:(1.0+667×0.004)×1413=5182.88(1.0+667\times0.004)\times1413=5182.88(1.0+667×0.004)×1413=5182.88。结果符合预期。

由于1.00.004=250\frac{1.0}{0.004}=2500.0041.0​=250,所以相当于每250点力量/智力提升了一倍的技能面板攻击力

3.武器百分比

技能描述为物理/魔法武器攻击力X%。计算方式还没有太明确,但是这种描述的技能现在看来是比较少的。

4.武器固伤

同上。

人物面板物理/魔法攻击力计算公式

人物面板物理/魔法攻击力的计算公式为:
人物面板物理/魔法攻击力=(1.0+人物面板力量/魔法×0.004)×基础物理/魔法攻击力人物面板物理/魔法攻击力=(1.0+ 人物面板力量/魔法\times0.004)\times基础物理/魔法攻击力 人物面板物理/魔法攻击力=(1.0+人物面板力量/魔法×0.004)×基础物理/魔法攻击力

基础物理/魔法攻击力的值主要由武器物理/魔法攻击力贡献,不过也有其他的方面有贡献。即:
基础物理/魔法攻击力=武器物理/魔法攻击力+其他物理/魔法攻击力提升基础物理/魔法攻击力 = 武器物理/魔法攻击力+其他物理/魔法攻击力提升 基础物理/魔法攻击力=武器物理/魔法攻击力+其他物理/魔法攻击力提升

例如:

我的武器魔法攻击力1083(注意,武器面板中有两个“魔法攻击”,这里要用下面的数值做计算)。

而被动技能【唤醒】提升了65魔法攻击力

因此,人物面板魔法攻击力的预期为:
(1.0+1140×0.004)×(1083+65)=6382.88(1.0+1140\times0.004)\times(1083+65)=6382.88 (1.0+1140×0.004)×(1083+65)=6382.88
结果符合预期。

独立攻击力的加成

独立攻击力仅对固伤类技能有效。公式为:
技能面板攻击力=人物面板独立攻击力×固伤技能伤害系数技能面板攻击力=人物面板独立攻击力\times固伤技能伤害系数 技能面板攻击力=人物面板独立攻击力×固伤技能伤害系数

其中我这里指的固伤技能伤害系数每个技能都不一样,虽然没有在面板中显示出来,但是可以简单计算出来。例如:

【G-14手雷】目前的固伤技能伤害系数就是1537÷578=2.6591537\div578=2.6591537÷578=2.659。
则当我的独立攻击力提高后,技能面板攻击力也就对应变成了:904×2.659=2405904\times2.659=2405904×2.659=2405。

结果符合预期。

属性强化

人物面板的属性强化将会对特定属性的攻击有加成效果,公式为:
属强加成=(人物面板属强+11)×0.0045属强加成=(人物面板属强+11)\times0.0045 属强加成=(人物面板属强+11)×0.0045

(其中关于数值的求证可见 【附录1】

例如:

则伤害期望为:
1060×244%×(1.0+(43+11)×0.0045)=3214.91060\times244\%\times(1.0+(43+11)\times0.0045)=3214.9 1060×244%×(1.0+(43+11)×0.0045)=3214.9

结果符合预期。

由于1.00.0045=222.2\frac{1.0}{0.0045}=222.20.00451.0​=222.2,所以也可以粗略看做是22点法强提升了10%的基础伤害
由于11×0.0045=5%11\times0.0045=5\%11×0.0045=5%,所以也可以看做,0属强下属性伤害也会有5%的加成。

暴击伤害加成

暴击伤害加成系数初始为150%,这个值可以简单直接算出来:

不过有一些装备可以提升这个暴击伤害加成系数,例如:

公式简单直接:
暴击伤害加成系数=150%×(1.0+暴击增伤百分比)暴击伤害加成系数=150\%\times(1.0+暴击增伤百分比) 暴击伤害加成系数=150%×(1.0+暴击增伤百分比)

例如,上图装备穿戴后暴击伤害加成系数应为150%×112%=168%150\%\times112\%=168\%150%×112%=168%
下图测试中可算暴击伤害确实是非暴击伤害的168%

“额外伤害增加量”与“最终伤害增加”

额外伤害增加量的描述是攻击时,额外增加X%的伤害增加量。例如:

最终伤害增加的描述是最终伤害+ X%,例如:

二者的描述十分类似,看起来都是提供一个(1.0+X%)的加成系数。但是当两种加成并存,并且有多个装备同时有加成时,最终加成的结果可能存在 “理解上的歧义”。经过试验(详细可见附录2),我得出最终加成系数的公式为:
(1.0+额外伤害增加量百分比)×(1.0+最终伤害增加百分比)(1.0+额外伤害增加量百分比)\times(1.0+最终伤害增加百分比) (1.0+额外伤害增加量百分比)×(1.0+最终伤害增加百分比)

这解决的歧义是:

  1. 两件装备均有同一个增伤类型时,最终效果为二者相加。例如,两件都是20%最终伤害增加,则结果是40%最终伤害增加,即相当于未加成时的140%。而不是叠加(即120%×120%=144%120\%\times120\%=144\%120%×120%=144%)。
  2. 两种增伤类型是叠加的关系,即20%最终伤害增加20%额外伤害增加量最终效果是144%

附加伤害

描述是攻击时,附加X%的伤害。这个容易计算,直接用小字附加到最后的伤害上(无论是否暴击):

如果有多个附加伤害的效果,则他们分别独立地作用于附加前的伤害上。

总结

这一篇博客观察了伤害计算公式,主要的部分应该都提到了,但我想一定还有很多未被提及的伤害加成类型,要了解那些就需要做更多类似的实验了。
然而,实际打出的伤害并不是能运用这一篇博客的公式就能求出的。因为还有减伤,而它又和等级物理/魔法防御属性抗性等数值有关。而这个问题相比伤害计算公式更难以实验,因为修炼道场中并不能看到敌人的这些数值。

附录1:属性强化相关参数的求解证明

关于属性强化加成,网上很多资料都指出:22点属强对应10% ,实际测试很相近,但还是有不可忽略的误差。另外,我在测试时也发现属强为0时,属性攻击仍旧有加成,因此我怀疑人物有隐藏的属性加成值未写在人物面板上。
《DNF伤害提升小课堂:属性强化与属性抗性》这篇文章指出人物有11点的隐藏属强。而在《DNF“属强系数”原来这么计算》这篇文章中也指出属强加成系数其实为0.0045(之所以22点属强对应10%看起来正确是因为10.0045=222.2\frac{1}{0.0045}=222.20.00451​=222.2)。

这里,我想做实验求证一下数值的正确性。
首先,假定属强加成是线性增强的并且人物有隐藏属强,则属强加成公式应该看起来像:
属强加成=(人物面板属强+人物隐藏属强)×属强加成系数属强加成=(人物面板属强+人物隐藏属强)\times属强加成系数 属强加成=(人物面板属强+人物隐藏属强)×属强加成系数

由于公式中属强加成人物面板属强都是可见的,因此求解剩余两个未知数就是目标。这个式子可以转换为二元一次方程,因此只要有两组数据就可以求解。:

测试的技能选择为【冰晶坠】:

可以算出,0属强加成情况下,伤害期望为:1060×470%=49821060\times470\%=49821060×470%=4982。
下面,在两种人物面板属强情况下对伤害进行测定:

实际伤害的平均值为:5233,那实际的加成为(52334982−1.0)(\frac{5233}{4982}-1.0)(49825233​−1.0)

实际伤害的平均值为6200,那实际加成为(62004982−1.0)(\frac{6200}{4982}-1.0)(49826200​−1.0)

下面,假设人物隐藏属强=x属强加成系数=y。则方程组就为:
{52334982−1.0=xy62004982−1.0=(x+43)y解得{x=11.161y=0.0045139\begin{cases} \frac{5233}{4982}-1.0=xy \\ \frac{6200}{4982}-1.0=(x+43)y \end{cases} 解得 \begin{cases} x= 11.161\\ y=0.0045139 \end{cases} {49825233​−1.0=xy49826200​−1.0=(x+43)y​解得{x=11.161y=0.0045139​
结果和预期相符:人物隐藏属强11,而属强加成系数0.0045

附录2:“额外伤害增加量”与“最终伤害增加”公式证明

首先,确保目前已经知道了当前人物的所有加成效果:
使用【地裂 波动剑】做测试:

尝试查看当前状态下的加成。
发现一觉被动技能【心眼】有对这个技能进行加成13.5%

考虑上这一13.5%加成,和我当前智力1237,和【地裂 波动剑】的固定伤害21544。伤害预期是:
21544×(1.0+1237×0.004)×(1.0+13.5%)=14544321544\times(1.0+1237\times0.004)\times(1.0+13.5\%)=145443 21544×(1.0+1237×0.004)×(1.0+13.5%)=145443

伤害符合预期,这可以证明当前我释放【地裂 波动剑】时只有【心眼】的加成。


下面,穿戴一些有“额外伤害增加量”与“最终伤害增加”效果的装备:

目前有4个防具有最终伤害增加效果,算上3套装效果后数值合计为52%。有2个首饰有额外伤害增加量效果,数值合计为20%
首先,看穿上装备之后面板的状态:

此时,在不考虑“额外伤害增加量”与“最终伤害增加”效果下,伤害预期应该为:
32716×(1.0+1668×0.004)×(1.0+13.5%)=28488232716\times(1.0+1668\times0.004)\times(1.0+13.5\%)=284882 32716×(1.0+1668×0.004)×(1.0+13.5%)=284882

假设“额外伤害增加量”与“最终伤害增加”叠加的加成系数公式为:
(1.0+额外伤害增加量百分比)×(1.0+最终伤害增加百分比)(1.0+额外伤害增加量百分比)\times(1.0+最终伤害增加百分比) (1.0+额外伤害增加量百分比)×(1.0+最终伤害增加百分比)

则伤害期望应该是:
284882×(1.0+32%)×(1.0+20%)=519625284882\times(1.0+32\%)\times(1.0+20\%)=519625 284882×(1.0+32%)×(1.0+20%)=519625
结果符合预期:

这证明了公式是对的

观察DNF的伤害计算公式相关推荐

  1. 明日方舟公式计算机,【科普向】明日方舟里的伤害计算公式

    [科普向]明日方舟里的伤害计算公式 在明日方舟里的伤害是如何计算的?如何造成最大伤害?想知道这些就要现了解伤害计算公式.我会尽量以最通俗易懂的方式为你科普明日方舟里的伤害计算公式 物理伤害计算公式 明 ...

  2. 计算机提高游戏运行速度的方法,DNF提高游戏流畅度办法推荐 DNF提高游戏流畅度方法...

    导 读 相信很多玩家在玩DNF的时候,就算自己电脑配置理论上来讲已经可以完全带动DNF,但有时候还是会一卡一卡的,那么怎么办呢?今天小编就给大家推荐一下DNF提高游戏流畅度方法,快一起来看看吧! 电脑 ...

  3. 腾讯实习生面试2016两道面试题目?(知乎)

    腾讯实习生面试2016两道面试题目?修改 谢谢大神们高质量的回答,满满干货,excited ------------------------------------------------------ ...

  4. FF7 中的最大伤害分析

    FF7 是上大学期间发布的游戏.那会自己的机器不行,跑不起来,找人借了一块vodoo,玩了几天,赶紧把vodoo还了,没法仔细玩.这个事情,慢慢就变成了个心愿. 后来工作了,断断续续的FF8/FF9还 ...

  5. MMORPG游戏服务器 - 技能系统设计【上篇】

    本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖讨论 1.Anlysis 1.1技能的概念 技能其 ...

  6. c# 一个月中的工作日_在Excel中查找一个月中的第N个工作日

    c# 一个月中的工作日 Some events occur on the Nth weekday of a specific month each year. Maybe your book club ...

  7. 【线性代数】机器学习·算法必备 线性代数总结

    目录 一.九层之台,起于垒土:坐标与变换 1.1 描述空间的工具:向量(Vector) 1.1.1 重温向量(Vector) 1.1.2 使用Python语言表示向量 1.1.3 向量(Vector) ...

  8. 游戏人物装备技能数据表怎么设计(整理)

    游戏人物装备技能数据表怎么设计(整理) 一.总结 一句话总结:把人物的属性抽离出去,其它的装备啊,技能表和属性表之间建立一个关系表. 1.装备表如何设计(装备表和角色表的对应关系是什么)? 装备属于人 ...

  9. 游戏服务器技能系统,MMORPG游戏服务器技能系统设计【上篇】 - 踏踏实实,认真工作 - CSDN博客...

    MMORPG游戏服务器技能系统设计[上篇] 收藏 本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖 ...

最新文章

  1. 前端使用crypto.js进行加密学习记录
  2. ios swift ios8 模糊
  3. 新辰:关于个人站点安全问题的分析及对策探讨
  4. 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)
  5. 【月报】Java知音的一月汇总
  6. 安装PHP5,安装PHP7
  7. 数据:以太坊上稳定币流通量突破600亿美元,年内增幅达187%
  8. php如何转换大小写,PHP转换大小写教程基础
  9. Eclipse 编码常用技巧【不断补充完善】
  10. Ubuntu18.04下安装配置darknet
  11. socket,ioctl获取ip
  12. 深度学习算法:AlphaGo 算法
  13. 10款超炫HTML5游戏 附游戏源码
  14. 华为网络-ensp实验
  15. 其他 - 所有中文字 附 拼音
  16. 音创ktv点歌系统服务器,音创ktv点歌系统家庭版
  17. 网友心中的高分电影合集,大家一起来拯救剧荒!欢迎补充!!!
  18. python实现:将一个四位数反向输出
  19. windows7交互式服务检测如何禁用?
  20. 20189200余超 2018-2019-2 移动平台应用开发实践第六周作业

热门文章

  1. VC++实现局域网嗅探QQ号
  2. 【技术分享】TestFlight测试的流程文档
  3. ESP8266从入门到入门系列(一) 你好,ESP8266
  4. 基于Java+SQLServer2017实现(Web)酒店客房管理系统【100010327】
  5. 从在浏览器地址栏中输入www.baidu.com到看到百度首页,这个过程中间经历了什么?都涉及到哪些网络协议?
  6. 基于ESP8266+433射频控制系统
  7. 深度学习论文精读(4):MobileNetV2
  8. 浅谈labviEW定时器
  9. Flowable-6.7.2 工作流引擎(windows平台zip包)下载
  10. ITE6561 联阳(ite) Type-C转HDMI芯片