//没登陆

欢迎您来到凯恩之角,奈非天!

帖子:364

符文:16

跳转到指定楼层
1#
发表于 2013-3-11 20:17:46 |只看该作者 |倒序浏览 来自:江苏
本帖最后由 GabrielRum 于 2013-3-28 18:40 编辑

本帖起因是源自测试帝L大神近期的对黑人的实验

由于对第二部分理论的数据支持不足,所以本人又做了相关测试共计29组。

数学模型基于S大的帖子 讨论 执政官 首次攻击 数学公式
特别感谢:N大的建议和指导,学软件的哥们指导(虽然你不玩暗黑)
注意:想读懂此文必须先看L大帖子和S大公式
        本文中的单次攻击都是指黑人的首个100%伤害

第一部分:扫射首次伤害分析
注意里面的表格,我这里就直接复制了,L大你别说我侵权啊。
注意实验证明扫射的首次伤害是不变的


注意攻速的突变点
下表表示部分攻速的单次攻击完成时间的关系
攻速 单次攻击完成时间
1.02 0.326
1.03 0.323
1.05 0.317
1.06 0.314突变
1.11 0.3003
1.12 0.297突变
1.17 0.2849
1.18 0.282突变
1.25 0.266
1.26 0.264突变
1.33 0.2506
1.34 0.248突变
1.42 0.2347
1.43 0.233突变
1.53 0.217
1.54 0.215突变
2.22 0.150
2.23 0.149突变
考虑实验误差,观察以上数据,观察突变点的时间变化规律,可以看到
当攻速使攻击完成时间突破一些临界点时,实际攻击伤害会发生变化。这个时间目前来看是每个0.1s中的大约在0.1 0.085 0.065 0.05 0.035 0.015附近,由S大公式可以得出是1/60s的相差量

为什么会这样?
根据软件学院同学的提示,在程序中,时间计算主要是由指针完成(我只懂C++这里就用这种语言说了,至于暗黑具体怎么编不知道,机理一样)所以要定一个基准时间,这个是最小能计算出的时间,就像普通手表只能计算出1s一样,即为之前讨论的1/60s,这个时间是不能太小的,要不会大大增加运算量。现在问题是攻速计算的完成攻击时间是一个很多位的小数,暴雪没法精确计算,怎么办,所以暴雪的做法是先计算出一个T的伤害值(这个可以做的非常精确),再向下取整,找出最接近实际攻击完成时间的T的个数,之后乘出单次伤害,这样就导致实际伤害比dph略小的结果。那么也会出现临界时间突变的现象。


那么我们提出假设:
暴雪对黑人攻击伤害设置了一个最小计算时间,扫一次伤害值得计算以这个计算时间为基础计算,即能计算出多少个最小计算时间就有多少份伤害,小数部分会舍去,无法计算出来,造成实际伤害减少。
用公式表达就是(dph/单次攻击完成时间)*(攻击完成时间/最小计算时间)的整数部分
当攻击完成时间的小数部分越小,实际攻击伤害就越接近dph。

如果假设成立那么每次攻击的数值与dph的比例将由上述公式得出

先根据上面的表假设第一个临界时间是0.315 时间比例以1.02速为例就是0.315/0.326
攻速 时间比例 伤害比例
1.02 0.966    0.969
1.03 0.975    0.978
1.06 0.955    0.954
1.33 0.997    0.997
1.42 1        0.994
1.43 0.922    0.930

证明以上假设成立


这里还有个问题就是伤害中是按完成一次攻击时间为一部分计算,如14T的伤害直接显示,还是每一T都分开作为一部分(即暴击率作为每个T单独计算)计算,一次显示出来呢,  这关系到第二部分的分析和暴击计算。
高爆率下测试,首次攻击也会暴击,而且暴击伤害基于完成单次攻击的时间取整计算出的伤害。

注意现在将1/60s作为基础时间,记作T,之后的分析会多次用到。

同时扫射过快就没有伤害部分证明存在一个临界时间,必须大于这个时间(或这个时间的一个比值)才有输出,第二部分将完全证明这个假设。

这是单次扫射伤害的分析,那么dps会相应的减少,真的是这样吗?

第二部分:持续攻击伤害分析
先选取一部分有特点的数据,上传图片数量有限,慢慢更新图片。
这是实际持续伤害的实验数据
攻速1.33,5爆率,50%暴伤

dafg名.jpg

下面这张是去除明显是暴击的数值的图,去除数据包括2494(两次中判定一次暴击),2893(两次全部暴击),3591(这个要和1596一起看,比较复杂,但是有两次暴击),其他数据(不包括个别奇葩数字)调高爆率后出现次数不受影响,可认为不是暴击。

hjkjnl.jpg
攻速1.38,6爆率,50%暴伤,直接是去暴击图
dfgjdgdfgn.jpg
首先我认为时间伤害是实际持续伤害过程中,首先有一个显示白字的时间XT,那么在这个时间里完成几次攻击就显示多少次单次攻击的伤害。

证明:
持续攻击时暴击数值,暴击数值是基于第一部分一个完整攻击完成时间攻击的伤害计算出来的。即XT的伤害是首先基于完成了几次完整攻击。

注意到有很多数据既不是暴击又不是完整攻击的伤害,原因是比如完成两次攻击周期共需要30T时间,XT是31T,那么出现1T时间的差值,暴雪通过以下手段把它补上了。

基于相关专业人员提供的思路之后来分析暴雪怎么把缺失的dps补上的,第一部分结论成立的条件下,在假设出一次白字的时间是30T,完成一次攻击周期的时间是14T多一点,就假设是14.1T,那么在30T时电脑计算出一个伤害是28T显示出来(算的两个攻击周期),暴雪把这2T的时间积下来,之后凑整补上,就产生了伤害增加,就显示为2195。

值得注意的是小数部分,在单次攻击中,小数部分被直接忽略掉了,但持续攻击中不会这样,原因:
假设完成一次攻击的现实中时间是31.5T,能计算出的部分是31T,那么就有0.5T的时间差,那么第一次显示31T的伤害,但是这0.5T不会无缘无故消失掉,因为现实中是存在的,系统伤害也是通过攻击次数计算的,所以在下个31T显示周期到头时,即62T时刻,第二次攻击只完成了30.5T,即系统计算出30T,那么系统会发现这个时间差,这是系统计算出时间差的方法,也就是完成两次攻击实际共需要63T,那么系统就能得出出现了1T的时间差值。

那么在上个例子中,还有0.1T是多补上的,现在还没法计算出来,但当这样经过一段时间后,时间多余时间积累到一定数值,如1T,这时电脑就能计算出它来了,这时程序把这1T的伤害和时间在下一次计算伤害时去除(个别实验中途出现的1930和1794).在后续将时间小数部分调到0.5左右时,出现这种比不暴击攻击伤害还少的伤害的现象增加。



现在基于以上模型,分析实验数据:
由25组数据统计,计算暴击和排除暴击后与dps面板数值对比,dps面板(暴击和非暴击)都是两者数值都是的30/31(计算时间以30T为基本假设),可以得出实际周期为31T(2进制编码较好的一个数值)。
又做了约29T为2个攻击周期的实验(6组),数值2070为主,2070是29T(1932)+2T的伤害值,证明以上结论正确。
攻速1.29(攻击周期约31T)时做实验,除了暴击,伤害数值稳定,也证明了结论。
细化分析下注意到大部分情况下3T或6T补充一次但也有其他情况,但是不是所有都严格符合时间差的比例补充(即3个1995对应一个2195,很接近严格时间差比例补充的有15组).在这里我只能根据现有证据大胆猜测一下,是由于初值条件不同。即游戏有内置时间轴,这个时间计算独立不受影响,黑人伤害计时不是以造成伤害的一瞬间为起点,比如内置时间轴进行到1s的第25个T中的某时光线发起攻击,这时会把这个31T不计,那么有6T的时间先存下来,之后和时间差1T凑成6T等时间时还回来。可能也是实验中出现1930(理论上在这么短时间内不会出现,但如果之前就有小数如0.8T的差就可以出现了)的原因。


结论:
1.攻速影响实际扫射单次输出伤害,控制攻速可有效控制单次伤害,但在持续攻击中会很快补充上来,因而理论上不影响dps(就样本数据看由于补充的部分不暴击稍有影响),但如果只是很短时间里,可能影响dps

即如果没有合适的攻速,追求dph是没有意义的,那么为了dph而舍弃dps是不科学的配装方法。
2.这个没有严格证明,但目前所有证据都指向此结论,即暗黑内置时间轴,最小单位是1/60S。



一些扩展
关于跑速,旋风攻击次数等关于时间机制的研究可参考以上结论,还有视频最后有个断黑人结果打出100多伤害,我觉得和第二部分机理有关,意味着出现小于一个最小时间的伤害,证明了T的存在,因为恰好是2T的伤害。

已有 2 人评分 符文 收起 理由
雁门寨主 + 50 + 2 感谢分享
Lina_Inverse + 1 + 20 + 1 感谢分享

总评分:  + 1  + 70  符文 + 3   查看全部评分

交易区发帖请先阅读版规

帖子:1810

符文:15

2#
话说我一直觉得黑人输攻速快的更大。
发表于 2013-3-11 20:19:31 |只看该作者 来自:浙江
[armory]http://tw.battle.net/d3/zh/profile/%E9%BA%BC%E6%A1%91%E9%82%84%E5%9C%A8%E7%9D%A1-3224/hero/441592103[/armory]
[armory]http://tw.battle.net/d3/zh/profile/%E9%BA%BC%E6%A1%91%E9%82%84%E5%9C%A8%E7%9D%A1-3224/hero/44159210[/armory]

[armory]http://tw.battle.net/d3/zh/profile/%E9%BA%BC%E6%A1%91%E9%82%84%E5%9C%A8%E7%9D%A1-3224/hero/14093143[/armory]

帖子:132

符文:8

3#
个人感觉吧

暴击胜在收割小怪速度

攻速在精英战感觉有优势
发表于 2013-3-11 20:31:42 |只看该作者 来自:四川
[armory]http://tw.battle.net/d3/zh/profile/Siean-1160/hero/3144027[/armory]

帖子:132

符文:27

4#
感觉黑人往死了堆面板就好……管他暴击装还是攻速装,面板高就好
发表于 2013-3-11 20:35:36 |只看该作者 来自:安徽

帖子:364

符文:16

5#
敛刃 发表于 2013-3-11 20:35
感觉黑人往死了堆面板就好……管他暴击装还是攻速装,面板高就好

编辑的基本完成,从数据分析现在看来只堆面板不是最优的提高伤害的方式,结合黑人伤害方式的帖子和刷图攻击方式帖的分析就可以得到这个结论。
发表于 2013-3-11 20:38:41 |只看该作者 来自:江苏
交易区发帖请先阅读版规

帖子:364

符文:16

6#
本帖最后由 GabrielRum 于 2013-3-12 00:06 编辑

时间公式不明召唤各种技术帝研究
不出意外和这个公式有关系http://bbs.d.163.com/thread-172523070-1-1.html时间也可能是离散化的结果
发表于 2013-3-11 23:44:34 |只看该作者 来自:江苏
交易区发帖请先阅读版规

帖子:976

符文:462

7#
读了很久看懂了。。
(其实看的时候一直在想,为什么暴雪程序设计者会设计这么个浮动的时间间隔呢。。感觉好麻烦而且没道理这么做啊。所以看的时候有点晕呼呼的 哈)

我的问题是,您的第一个结论里面找的这一组0.1 0.085 0.065 0.05 0.035 0.015数据是观察得到的结果,从程序的角度来说,不知道怎样根据这一组数据来推出内在的东西,比如说一个公式、或者某个机理等。  所以我觉得,用这组数据来验证您的猜想确实没问题,而且有可能后面的数据,也能找到这样的时间间隔来对应您的结论,但是没有一个通项公式的话,就不能推导到后面的数据,也就没有了意义。由此您的第二个基于这个猜想的结论也不敢确定对不对。。
这些是我想了很久后的回复。我觉得如果你的猜想是对的,即持续的输出dps是不变的,那么做个实验就清楚了吧,比如可以对着罪恶之心输出相同的时间来看损血量的关系。最好拿最极端的攻速来测试,这样差值会相对明显点。
发表于 2013-3-12 00:06:38 |只看该作者 来自:浙江

帖子:364

符文:16

8#
本帖最后由 GabrielRum 于 2013-3-12 00:18 编辑
nyningyu 发表于 2013-3-12 00:06
读了很久看懂了。。
(其实看的时候一直在想,为什么暴雪程序设计者会设计这么个浮动的时间间隔呢。。感觉 ...

对,我编程不好哈,就是个C++2级水平,所以不太知道怎么编,但肯定的是给出几个固定数值是不太好的,我看了那个离散化的公式,应该是对的,所以我认为时间变化是和攻击离散化有关的,但还没分析出具体公式。还有就是攻击被吃掉的理论,我觉得每次首次攻击的数值都恰好和时间比例相等这是攻击份数被吃掉之后再补上来做不到的,这个可以持续攻击做个测试看攻击数值变不变测试。所以离散化实现攻击数值改变的原理我觉得还待讨论。

点评

nyningyu  同意,一个经验公式就可以了。S版那个离散的公式拟合的挺好,而且是有些道理。我最近学习事情挺忙活的,所以也没办法测试了,期待你还有L版的研究吧,他是个相当靠谱的版大~  发表于 2013-3-12 00:39
发表于 2013-3-12 00:15:03 |只看该作者 来自:江苏
交易区发帖请先阅读版规

帖子:364

符文:16

9#
nyningyu 发表于 2013-3-12 00:06
读了很久看懂了。。
(其实看的时候一直在想,为什么暴雪程序设计者会设计这么个浮动的时间间隔呢。。感觉 ...

我又思考力一下,其实很难做出个完美公式,因为暴雪不会这么简单让你把他的程序研究透,所以,一个经验公式就足够了,都是工科生的你懂的。其实,关键就是dps最后变不变的问题,但你的实验方法实现较为困难吧,误差也可能大,所以我想设计个更好的实验应该可行,就可以解决这个问题了,最后就是给出个经验公式,只要能计算实际中涉及的攻速的情况就可以了,至于向外推导,我估计很难,而且目前看实际伤害S大的公式已经很完美了。
发表于 2013-3-12 00:31:16 |只看该作者 来自:江苏
交易区发帖请先阅读版规

帖子:615

符文:7

10#
看起来好眼晕,还是默默的看完了。2.07攻速的我貌似在一个很尴尬节点上啊。
发表于 2013-3-12 00:33:31 |只看该作者 来自:广东
[armory]http://tw.battle.net/d3/zh/profile/Tyche-3664/hero/53976329[/armory]

帖子:364

符文:16

11#
nyningyu 发表于 2013-3-12 00:06
读了很久看懂了。。
(其实看的时候一直在想,为什么暴雪程序设计者会设计这么个浮动的时间间隔呢。。感觉 ...

回点评,我也比较忙,各种答辩准备,出国神马的,估计测试只能靠L大了,而且我暗黑只玩了100多小时,比较菜了,神马机制都还不太懂,就只能做做数值分析,所以,哈哈,测试是不能指望我了。
发表于 2013-3-12 00:43:03 |只看该作者 来自:江苏
交易区发帖请先阅读版规

帖子:364

符文:16

12#
Tyche 发表于 2013-3-12 00:33
看起来好眼晕,还是默默的看完了。2.07攻速的我貌似在一个很尴尬节点上啊。

表示虽然你那个护腕很赞,但还是换基本等量的锻造好,dph高还可能有全抗,目前以我的理论是dps不变的,但还不能完全确定是正确的,所以攻速要控制。
发表于 2013-3-12 00:45:18 |只看该作者 来自:江苏
交易区发帖请先阅读版规

帖子:7622

符文:686

13#
本帖最后由 SORAL 于 2013-3-12 00:53 编辑
GabrielRum 发表于 2013-3-12 00:31
我又思考力一下,其实很难做出个完美公式,因为暴雪不会这么简单让你把他的程序研究透,所以,一个经验公 ...


哎,怎木就放弃了呢。

其实你用间隔0.016666s去套,你的公式就成立了。。。你差一点就能接触到真相了。我只是不想剥夺你的快乐,所以一直都不回这个贴子。

以后学术,申请学校都要执着,不要轻言放弃。纯说教,可以无视。

点评

nyningyu  我也接受教训。。  发表于 2013-3-12 01:01
发表于 2013-3-12 00:49:25 来自凯恩之角App |只看该作者 来自:法国

帖子:364

符文:16

14#
SORAL 发表于 2013-3-12 00:49
哎,怎木就放弃了呢。

其实你用间隔0.016666s去套,你的公式就成立了。。。你差一点就能接触到真相了 ...

哦,对啊,因为考虑实验误差的话,表象是0.015和0.020,实际就是0.0166s,S大果然有经验,一眼就看出来了,额,这个我今天再去算一下。
其实没有放弃,只是去睡觉了,睡觉的时候还在想暴雪怎么会这么烦的定几个比较糟糕的时间,今天早上就发短信请教学软件的同学,现在已经想明白为什么了,因为时间在程序中的计数越小越困难无法很精确,所以暴雪设置了个最小时间计数单位,以此为离散时间,通过计算出离散时间里的攻击伤害(这个可以很精确),在确定实际时间在哪两个离散时间之间,向下取一个时间计算伤害,通过长时间的计算次数不同补充实际时间缺失,这样保证平均dps在长时间中不变。
先去上课了,谢谢S大指教,今天有时间会完善理论编辑帖子和L大做些测试。
发表于 2013-3-12 08:49:44 |只看该作者 来自:江苏
交易区发帖请先阅读版规

帖子:28

符文:2

15#
L大不需要攻速的理论应该是建立在“碾压”这个定义的基础之上的,而在精英战或者高MP战斗时,攻速对伤害的提升就是很明显的了
发表于 2013-3-12 11:42:12 |只看该作者 来自:美国
您需要登录后才可以回帖 登录 | 注册网易通行证