主要是想让大家知道这些数字是怎幺来的,以及之后是否可以有更複杂、更详细的计算?希望可以激发板上的有想法、有兴趣研究的人一起讨论精进(有关现有的算法其实有不详尽之处,之后会再更新)。
首先伤害计算的部分。其实大多都很明朗了,主要是计算时要小心伤害的两个部分-近战与投射物,他们有各自的标籤,被不同的词缀影响,不过这部分 POB 可以解决几乎全部的问题,在此就不赘述。以下主要说明 POB 没有办法处理的部分。
一、要点
主要较有疑虑的地方是熔岩小球的行为模式。掉落在哪里、爆炸的範围多大,以及敌人的体积多大。这些是熔岩打击和其他技能比较起来,较难计算的部分。要计算伤害必须先了解熔岩小球的行为模式,进而求出命中的情况,进而求出投射物部分的伤害量。
二、参数
内径 = 5 (熔岩小球落地时离技能中心的最小可能距离,定值,不受範围效果影响)
外径 = 20 (熔岩小球落地时离技能中心的最大可能距离,受範围效果影响)
爆炸半径 = 9 (熔岩小球落地爆炸时的爆炸半径,受範围效果影响)
大多数人型头目的碰撞半径 = 3 (如 Shaper 、 Elder 等)
熔岩小球飞出去的角度 = 45 度到 315 度 (注1)
注1:施放时,你滑鼠所指的方向如果视为 180 度,以反方向 0 度为中心的左右各 45 度的扇形範围内不会有熔岩小球分布,也就是说当你指着萤幕上的某一点,或是当你锁定怪物的名字 / 血条施放熔岩打击,你的技能涵盖面积便会是一个以那一点 / 那只怪物为中心的 四分之三个甜甜圈形状,缺口是朝向你这边。
三、熔岩小球 - 落地位置 (1)
再来,熔岩小球的落地地点是怎幺选择的?是整个 270 度的扇形面积随便取一点吗?
是先取一个随机角度、再取一个随机长度(或是反过来,这不影响)
这两者(面积内随机取一点 vs 随机角度、随机长度)乍看之下好像没什幺差,但其实后者会更偏向圆心。试想,越是外圈,一圈的面积就越大,所以前者会更容易取到较外圈的位置,而后者则是由内到外均匀的分布。
再来,我们考虑怪物位于技能中心的情形(且这也是大多数人使用技能的情形:滑鼠点着怪物,锁定名字 / 血条)。试想当怪物站在技能的中心,也就是甜甜圈的圆心。此时我们有下式:
落地时距离圆心的距离 < 怪物半径 + 爆炸半径,则可以命中。
落地时距离圆心的距离 > 怪物半径 + 爆炸半径,则无法命中。
这边为了方便呈现,代入前面所提到的各参数进行运算,且先不考虑範围加成效果,怪物半径以 3 计算,这时候我们有:
当落地时与圆心距离 < 12 = 3 + 9 ,则可以命中。
当落地时与圆心距离 > 12 = 3 + 9 ,则无法命中。
参考概念图如下:
此时可以发现,问题本来看似是二维的面的问题,其实是一维的线的问题。因判定是否可以命中与否,只取决于落地时距离圆心的距离,所以落地位置的两步骤(先取一个随机角度、再取一个随机长度)当中,其实只有随机长度这一项会影响这个判定的结果。
而藉由这张图我们可以更清楚的发现:
- 落地时与圆心距离的全部範围就落在内径与外径之间,即满足 5 < D < 20。
- 而其中,又要满足可以命中此一条件的範围 D' 则是若且唯若满足 5 < D' < 3 + 9。
即是说,可以命中与无法命中,仅仅是在一条数线上随机抽数字而已。这个数线就是通过圆心以及熔岩小球落地点的直线(可参考上图右边的截线图),并以圆心为 0,大圆圆周为 20,数线的取样範围是 5 到 20,若是抽中 5 到 12 的区间,则可以命中;12 到 20,则无法命中。
于是,两者相除,得出可以命中的熔岩小球之比率 P = ( 12 - 5 ) / ( 20 - 5 ) = 7 / 15 = 46.67 %
三、熔岩小球 - 落地位置 (2)
以上是以一开始给定的基本参数得出的结果,先还原一下一般式:
可以命中之比率 P = ( 怪物半径 + 爆炸半径 - 内径 ) / ( 外径 - 内径 ) = ( Rm + Re - Ri ) / ( Ro - Ri )
其中内径为定值(Ri = 5),所以如果要计算不同情形的命中率,我们只需处理:
- 怪物半径 Rm,需要用查的,不过最大不超过 5,大多数的人型王是 3,玩家与人型怪是 2,虫水的虫是 1。(主要参考来源)
- 爆炸半径 Re,原始为 9,受到範围加成效果的影响。
- 外径 Ro,原始为 20,受到範围加成效果的影响。
假设总範围加成效果 = a = (1 + 总增加 / 减少 範围效果 %) * ( 1 + 总更多 / 更少範围效果 %)
我们有:
Re = 9 * a ^ 0.5 (因长度正比于根号面积)
Ro 则比较複杂,因熔打的範围只有甜甜圈形状部分,而非整个大圆。
故有 Ro = 20 * ( 受範围加成效果影响后的大圆面积 / 原始的大圆面积 ) ^ 0.5 = 20 * ( A2 / A1 ) ^ 0.5
其中:
A2 = pi * 270 / 360 * ( ( 20 ^ 2 - 5 ^ 2 ) * a + 5 ^ 2 )(变大的甜甜圈加上中间半径 5 的小圆)
A1 = pi * 270 / 360 * 20 ^ 2
代入后就可以求得 Ro = 20 * ( ( ( 20 ^ 2 - 5 ^ 2 ) * a + 5 ^ 2 ) / 20 ^ 2 ) ^ 0.5
接着把 Re、Ro 的值都带入到原式 P = ( Rm + Re - Ri ) / ( Ro - Ri )
我们会得到一个只和 Rm, a 有关的 P = f ( Rm, a ) (为了不让版面太乱就不列出了)
四、作图
然后我们可以依照不同的怪物半径 Rm,以及不同的範围加成效果 a 来作图,例如:
怪物半径 Rm = 2 (人型怪、玩家)
範围加成效果 a = 1 (什幺都没有)
範围加成效果 a = 1.05 (传奇珠宝、集中效应)
範围加成效果 a = 1.5 (传奇珠宝)
範围加成效果 a = 1.99 (传奇珠宝、增大範围)
怪物半径 = 1 (虫水的虫子)
怪物半径 = 4, 5 (一些较大的怪物)
範围加成效果 a = 1 (什幺都没有)
範围加成效果 a = 1.05 (传奇珠宝、集中效应)
範围加成效果 a = 1.5 (传奇珠宝)
範围加成效果 a = 1.99 (传奇珠宝、增大範围)
五、分析
由作图可以轻易分析出一件事情,就是不管範围 a 撑到多大,命中比率 P也不会有太大变化(尤其在常见的怪物半径 = 2, 3 的图 1)。
P 大约在大于 2 之后就不太有变动了,且其中小于 1 的部分,虽然有较大幅度的变动,但目前也并没有什幺手段,可以把範围变得那幺小,一般就是使用集中效应的更少 30 % ,除此之外就没有其他办法了(如果有人知道请跟我说)。何况传奇珠宝本身就提供了 50 %,所以除非捨弃掉传奇珠宝不用(不太可能),否则光是要让範围小于 1 都很难。
也就是说,不论範围,我们几乎可以确定熔岩打击的熔岩小球会有 40 % ~ 60 % 左右可以命中。更进一步我们可以说:
扣除掉极端大小 (半径 = 1, 5)的怪物,无论範围多少,都有 45 %左右可以命中,且误差不超过 5 %。
所以说除非未来技能改了判定,或是出了什幺可以把範围变得极端大 / 小的东西,在那之前不用太担心範围的问题。
六、零点射击
不过,如果有使用
零点射击,範围较小还是有一点吃香的,以下是
WiKi 给出的,零点射击对于不同飞行距离的伤害倍率。
我们可以分成 4 段来看这个伤害倍率与距离的关係 M = f(D) :
当 0 < D < 10 ,伤害倍率 M = 1.5
当 10 < D < 35 ,伤害倍率 M = 1.5 - (1/25) * (D-10)
当 35 < D < 150 ,伤害倍率 M = 1 - (10/23) * (D-35)
当150< D ,伤害倍率 M = 0.5
要算出零点射击后的熔岩小球的伤害,其实就是把每颗球各自乘以他们飞行的距离所对应的增伤比例,然后再加在一起就可以了(感觉好像在讲废话?)。但是因为熔岩小球有这幺多颗,一个一个算太麻烦了。我们希望的是有一个平均伤害比率 Mavg ,只要我们知道熔岩打击当下的各个参数(说穿了,经前面分析,也就只有 Rm、a),就可以进而得出 Mavg,并且不需要一一分析每个熔岩小球,直接由 Mavg 算出最终的平均伤害,那幺,做得到吗?
前面提到过熔岩打击是「随机角度、随机长度」,也就是说,落地之后的离圆心距离(同时也是飞行距离)的这个 D,每次的取值会均匀的分布在其可分布的範围内。也就是说,当我们依照给定的各参数在计算零点射击的伤害倍率时,D 在满足使熔岩小球可命中的範围内,当中图形的平均高即是平均伤害倍率 Mavg ,同时它也等于图形的面积除以底长。
以 Rm = 3, a = 0 为例,此时 Ro = 20, Ri = 5, Re = 9,所有可命中的熔岩小球均匀落在 5 < D < 12。
对应到上图,可以拆成两段来看,5 < D < 10 的部分,M = 1.5,10 < D < 12 的部分,由 M = 1.5线性的递减至 M = 1.46。我们可以得出平均增伤比例 Mavg = 1.5 * 5/7 + ( 1.5 + 1.46 )/2 * 2/7 = 1.494。
再以 Rm = 3, a = 2.24 为例(双传奇珠宝 + 增大範围 + 灭日药剂),此时有 Ro = 29.41, Ri = 5, Re = 13.46,所有可命中的熔岩小球落在 5 < D < 16.46 。
其中 5 < D < 10 的部分,M = 1.5,10 < D < 16.46 的部分,线性的递减由 1.5 倍递减为 1.3708我们可以得出平均增伤比例 = 1.5 * 5 / 11.46 + ( 1.5 + 1.3708 )/2 * 6.46 / 11.46 = 1.4635。
这部分我和计算机算出的值有小落差(计算机这边是 1.471 倍),主要是计算机的半径小数点第二位进退位的误差,至于怎幺算才是最贴近游戏的真实状况,老实说我还不太确定,不过差异不大。
可以发现即使是用增大範围加上灭日,零点的平均增伤还是很高的,所以如前面所说的,只要你不是很夸张的刻意撑範围,几乎都有 1.4 倍以上的增伤喔。
七、一般式(持续更新中)
以上是没有考虑不同範围加成效果、不同怪物半径的参数所算出来的零点增伤倍率,我们一样可以将 Ro, Re, Rm 代换为变数,列出一般式来作图。但首先我想应该先整理目前的各个环节、计一下,避免版面过于杂乱无章,不过到目前为止也算是交代完大部分的资讯啰。
整理一下目前出现的参数、公式:
内径 Ri = 5
外径 Ro = 20 * ( ( ( 20 ^ 2 - 5 ^ 2 ) * a + 5 ^ 2 ) / 20 ^ 2 ) ^ 0.5
爆炸半径 Re = 9 * a ^ 0.5
怪物半径 Rm = 1, 2, 3, 4, 5
熔岩小球离圆心距离之範围 = Ro - Ri
熔岩小球可命中时离圆心距离之範围 = Rm + Re - Ri
可命中的熔岩小球比率 P = ( Rm + Re - Ri ) / ( Ro - Ri )
零点射击的伤害倍率 M = f(D)
当 0 < D < 10, M = 1.5
当 10 < D < 35, M = 1.5 - (1/25) * (D-10)
当 35 < D < 150, M = 1 - (10/23) * (D-35)
当150< D, M = 0.5
九、总结
有了以上这些资讯,接下来只要把你的熔岩小球数量,乘以刚刚前面算出来的可命中比率,乘以 POB 内的熔岩小球伤害,再乘以零点的增伤倍率(如果你有使用)就行了,再加上 POB 近战部分的伤害就是总伤害。
懒人包
- 熔岩打击在敌人位于技能中心 / 锁定敌人施放时大约有 45% 的熔岩小球会命中,除非你的敌人超大或是超小,误差不会超过 5%。
- 不用太担心角色的範围加成效果,那对熔岩小球的可命中比率几乎没有影响,除非未来出了很极端影响範围的东西。
- 考虑到零点射击,範围较小对伤害还是有帮助,但影响不至于很巨大(即使使用双传奇珠宝 + 增大範围 + 灭日药剂也有 1.4635 倍的伤害倍率)
- Reddit 上有人做出计算机。