重岩叠障网

随着s24赛季对于马可的调整,马可整体的Poke伤害下降了一整个档次;作为补偿,马可的AOE伤害及触发被动之后的伤害得到了一定的提升。本系列文章意在分析马可伤害结构及其影响因素的基础上,探讨当前版本马

s24赛季马可波罗的系统解析(一)

s24赛季马可波罗的系统解析(一)

随着s24赛季对于马可的季马解析调整,马可整体的可波Poke伤害下降了一整个档次;作为补偿,马可的系统AOE伤害及触发被动之后的伤害得到了一定的提升。本系列文章意在分析马可伤害结构及其影响因素的季马解析基础上,探讨当前版本马可波罗的可波出装方案和游戏思路。本节主要内容为回顾马可两次调整,系统并同时分析影响马可波罗一技能Poke伤害的季马解析主要因素。

本次调整主要分为三大部分,可波分别为法球伤害削弱、系统一技能施法距离提升和被动技能、季马解析一技能、可波三技能的系统ad加成上调。

法球伤害削弱:技能附带法球伤害均下调为50%(不仅仅是季马解析一技能所附带的法球伤害削弱,三技能附带的可波法球伤害同样遭到的削弱),受影响的系统部分包含末世、电刀、冰脉、红BUFF以及精准效果[1]。该改动极大地削弱了法球类装备对于马可的伤害增益。

一技能施法距离提升:一技能的施法距离由900码回调至950码。该改动主要提升了马可面对远程法师及主流呆射的poke能力。常规无位移射手普攻距离为825码[2],此次改动让马可面对此类射手的拉扯距离由75码上调至125码,足足提升了66.7%,对于需要和传统射手对线时拉扯的马可,此次回调是一个较大的提升;在处理战坦类英雄时,此次增强的影响并不大。

全技能ad加成及成长性收益上调:该改动意为使马可玩家选择更多的攻击装而非肉装,从而提升对手对于马可的反制能力。在搭配无尽后,触发被动的马可能够打出高额的真实伤害。

7.29文章更新:

本次调整主要是攻速档位调整。

目前马可一、三技能的攻速档位分别被调整为0%/80%/130%/180%,一技能对应的子弹数调整为5/7/9/11,三技能对应子弹数调整为10/13/16/19。

为了全面地了解马可一技能伤害的构成以选择最高效的出装,接下来我将以不同的装备、不同的攻击力、不同的子弹数以及不同的敌人为参考点,使用Python[3]测试马可一技能的伤害。

铭文:十狩猎、十鹰眼、十红月[4]

关于计算逻辑的部分补充说明:

电刀的触发次数以2次计算[5]
冰脉的触发次数以1次计算[6]
MOBA游戏大多以PRD算法[7]判定暴击,故此处涉及到的暴击伤害均以其数学期望代替。
一技能伤害以满级[8]伤害计算

这是目前版本下马可的三套主流出装:

第一套装备:末世、攻速鞋、影刃、无尽、不祥、魔女
马可攻击力551,暴击率50%,子弹数9
第二套装备:末世、攻速鞋、无尽、影刃、破晓、不祥
马可攻击力601,暴击率60%,子弹数11
第三套装备:末世、攻速鞋、电刀、破晓、冰脉、魔女
马可攻击力521,暴击率25%,子弹数11

接下来我们以纯输出鲁班为攻击对象,用第一套装备测试其Poke伤害:

鲁班血量5989,护甲323[9],魔抗169

第一套装备测试效果如下:

攻击力521
子弹数9
固定伤害35.59pct,占比65.44%
法球伤害18.8pct,占比34.56%
真实伤害0pct,占比0.0%
总伤害54.39pct[10]
百分比穿透1

即一套满一技能打掉了鲁班54.4pct的血量,可以看出法球伤害占比并不算太高,仅为34.6%;固定伤害是此时的主要伤害。

若此时的鲁班感到害怕,选择做出一件不祥作为肉装,那马可的伤害又将如何变化呢?

鲁班血量7189,护甲593

测试结果如下:

攻击力521
子弹数9
固定伤害22.57pct,占比58.86%
法球伤害15.78pct,占比41.14%
真实伤害0pct,占比0.0%
总伤害38.35pct
百分比穿透1

此时一套满一技能只打掉鲁班38.4%最大生命值的血量。不难看出,固定伤害缩减了近37%,而法球伤害仅仅缩减了16%,此时的法球伤害对总伤害占比达到41%。

部分细心的同学可能会发现,此时鲁班的护甲接近600,而马可除了铭文固定的64穿透以外并没有其他的穿透,难免会打不动鲁班。

那我们使用第二套装备来做测试。

这是纯输出鲁班面对马可满一技能的伤害:

攻击力601
子弹数11
固定伤害51.43pct,占比54.89%
法球伤害29.96pct,占比31.98%
真实伤害12.3pct,占比13.13%
总伤害93.69pct
百分比穿透0.6

一发满一技能接近94pct的伤害——你没有看错[11],就是这么离谱。在能够确保一技能全部命中的前提下,先手一发平A接满一技能可以直接秒掉不出防装的鲁班。

再看看面对不祥鲁班,这套出装的表现如何:

攻击力601
子弹数11
固定伤害35.29pct,占比49.11%
法球伤害26.32pct,占比36.63%
真实伤害10.25pct,占比14.26%
总伤害71.87pct
百分比穿透0.6

不愧是堪称ADC神装的破晓,无论鲁班是否选择肉装,一发满一技能都能扫掉其七成以上的血量。另外,我们也同时看出,180攻速对于马可的收益相当之高——多出一件破晓能够让马可对纯输出鲁班的伤害提升了整整72%,这种情况下鲁班走位稍有不慎就有可能被马可一发平A接满一技能直接带走。

但原来的出装[12]伤害真的低吗?

我们用第三套装备做测试[13]

攻击力521
子弹数11
固定伤害48.27pct,占比53.82%
法球伤害34.49pct,占比38.46%
真实伤害6.92pct,占比7.72%
总伤害89.69pct
百分比穿透0.6

这是面对不祥鲁班的结果:

攻击力521
子弹数11
固定伤害33.13pct,占比48.39%
法球伤害29.57pct,占比43.19%
真实伤害5.77pct,占比8.42%
总伤害68.47pct
百分比穿透0.6

答案显得非常尴尬,仅就一技能的POKE而言,多出一把无尽的作用基本上可以忽略。

相信现阶段已经不会有人再去选择9发子弹的无尽+双防装组合了吧。

或许你想说:无尽的转大伤害爆炸呀,大招接净化一秒可以打出上千的真伤。但事实上,如果舍弃了破晓,你的转大伤害也低的可怜[14]

仅就面板上看,马可一技能伤害分为三部分:触发被动后的真实伤害、一技能的固定伤害、一技能附带的法球伤害。就理论分析而言[15],马可的一技能伤害应与4个变量有关,它们分别为马可一技能的子弹数 n,马可自身的攻击力 AD,马可一技能附带的法球效果比例 q,马可自身的百分比物理穿透 k。本次调整削弱了法球效果比例 q(本身这个变量我们也无法调整),故接下来我们着重分析其他三者对于马可一技能的伤害影响。

  • 攻击力 AD对于马可一技能的伤害影响

作为一个典型的技能型射手,马可一技能的固定伤害部分受攻击力加成。那么在实战当中,攻击力对于马可的一技能伤害究竟有何种程度的影响呢?

从理论角度分析,马可一技能的 AD加成大致与蒙犽相当[16],但蒙犽一技能的子弹数远远多于马可一技能的子弹数,且能够触发暴击;与之对应的是马可的一技能在任何情况下都不能够暴击。更致命的是,由于末世的伤害特性,马可一技能固定伤害的增加会导致末世伤害的减少。即从理论角度上分析, AD对于马可一技能伤害的提升十分有限。

实际情况又如何呢?我们来看模拟数据。这里我选择以下三者作为攻击对象,他们分别为:

纯输出鲁班:血量5989,护甲323,魔抗169
不详鲁班:血量7189,护甲593,魔抗169
夏洛特[17]:血量8932,护甲1053,魔抗593

相关前置条件如下:

马可已达到180攻速,子弹数为11
法球特效装备仅包含末世
破甲及精准装备仅包含破晓
攻击力 AD为唯一自变量
图中并未表示出真实伤害
对纯输出鲁班的伤害
对不祥鲁班的伤害
对夏洛特的伤害

如何去量化 AD变化对于伤害的影响?我们来看这份表格。

目标是否启用破晓AD收益(pct/100AD)
纯输出鲁班4.33
纯输出鲁班3.98
不详鲁班3.18
不详鲁班2.78
夏洛特2.16
夏洛特1.81

不难看出,哪怕是面对纯输出的脆皮鲁班,提高 AD所带来的收益依旧十分微弱。近240点的 AD提升(约等于两把无尽所提供的 AD)也只能增加10pct左右的伤害;面对战坦, AD收益进一步下降。通常来讲,马可不会选择全输出,即大部分马可的出装差别仅在于一件或两件肉装。我们单以无尽提供的攻击力[18]为例,一把无尽能够提供110点的 AD110\div100\times4.33\approx4.76 \ { \text { pct}}\,哪怕是对于纯输出鲁班而言,多出的一把无尽仅能提供不到5pct的伤害。我们以传统的电刀出装为基准,对于纯输出鲁班传统出装的一技能伤害约为89.69pct,每100 AD的收益约为4.33pct,增加100 AD仅能够提升4.94%的伤害,几乎可以忽略不计。

就此,我们可以总结出第一条结论:

在正常对局中的绝大部分情况下,可以认为攻击力 AD与马可一技能的伤害无关。
在正常对局中的绝大部分情况下,就一技能的Poke伤害而言,无尽无法给马可带来质变的伤害提升。
  • 子弹数 n对于马可一技能伤害的影响

从理论角度分析,马可一技能的伤害与子弹数有着较为密切的关系,子弹数的增加不仅意味着法球伤害的增加,同样意味着固定伤害及真实伤害[19]的增加。在攻速档位上限调整之前,我在某平台上看到了一位职业选手的推荐出装思路:他放弃了前期一味堆攻速的原则,选择末世+守护者之铠+无尽的组合,希望借助大招来打出更高的伤害。暂且不考虑这种思路是否合适,我们都知道之前的马可一直都以提升攻速,即增加子弹数为第一目标,那么子弹数对于一技能的收益究竟如何?我们来尝试将其量化。

相关前置条件如下:

马可攻击力为521
法球特效装备仅包含末世
破甲及精准装备仅包含破晓
子弹数 n为唯一自变量
图中并未表示出真实伤害

同样以夏洛特为例,我导出了一技能poke收益和子弹数 n之间的关系:

图表固然直观,但却难做到精确,那么,我们该如何精确衡量子弹数 n对于马可一技能的伤害影响呢?马可的一技能共有5/7/9/11四个攻速档位,经过计算,我得到了下方衡量单发子弹对于马可一技能伤害的边际收益 MR_{ n}的表格:

马可一技能子弹数是否启用破晓单发子弹边际收益(pct)
5
73.77
93.62
115.80

显然结果非常明显,单发子弹的边际收益 MR_{ n}先减小后增大,但即便只考虑最小的MR_{ n},其价值也相当于 3.62\div2.16\times100\approx168AD。换而言之,一把无尽能够带来的收益,甚至比不上多一颗子弹带来的收益[20]

再看看对于脆皮而言,子弹数 n的收益如何?

以下是以纯输出鲁班为例导出的图像:

马可一技能子弹数是否启用破晓单发子弹边际收益(pct)
5
77.0
96.56
119.62

只考虑最小的MR_{ n},其价值相当于 6.56\div4.33\times100\approx152AD

就此,我们可以得到第二条结论:

在正常对局的绝大多数情况下,子弹数 n增加带来的收益是最高的[21]
  • 护甲穿透 k对一技能伤害的影响

从理论角度分析,马可一技能产生的伤害分为两部分:马可一技能自身的伤害及被动触发后产生的真实伤害。马可一技能自身的伤害又可以分为三部分:子弹的固定伤害、子弹附带的物理法球伤害、子弹附带的其它法球伤害。前二者[22]是马可一技能伤害的主要部分且享受物理穿透加成,因此护甲穿透 k对于一技能伤害同样应有较为密切的影响。

以夏洛特为例,我们来看看护甲穿透的变化到底能够对马可一技能伤害造成多大程度上的影响。

相关前置条件如下:

马可攻击力为521
护甲穿透为1时精准为0
护甲穿透为0.8时精准为0
护甲穿透为0.6时精准为50
除精准外护甲穿透为唯一自变量
无穿透,最终总伤害为34.38pct
穿透0.8,最终总伤害为38.24pct
破晓,最终总伤害为46.63pct
马可总穿透是否包含精准被动一技能总伤害(pct)边际收益(pct/0.2pct)
1.034.38
0.838.243.86
0.646.638.39

可以看出,相较于未出穿透时的一技能而言,一把穿云弓提供的20%穿透带来了约11.2%的伤害提升;一把破晓带来了约35.63%的伤害提升。

就此我们得到第三条结论:

护甲穿透对于马可一技能的伤害提升存在显著作用。

根据NGA实测的数据[23],马可一技能的子弹:

可以附带精准效果,精准系数为0.6*2=1.2
可以附带法球效果,但其效果只有原有的一半
不能触发暴击

马可被动附带的真实伤害:

可以触发暴击
不能触发精准效果
不能触发任何法球效果

马可作为全王者荣耀机制最独特的射手,一技能是其绝大部分时间下伤害的主要来源。马可的一技能可以理解为多段非指向性、低伤害[24]、无法暴击、 AD加成低、攻速极快的平A。通常而言,射手属于后期强势英雄,其最大的原因就在于后期暴击伤害的高收益和平A伤害无法被躲避的稳定性。马可的技能机制舍弃了这两点,也就意味着马可不是一个后期强势的射手。目前版本下法球伤害对于马可的增益依旧远远超过了 AD对于马可的增益,传统的出装依旧是最为合适的选择。

仅以未触发被动时一技能Poke伤害[25]为前提,我们能够得出以下结论:

可以近似认为马可一技能伤害与攻击力无关。
考虑到获取属性的成本,提升攻速是提升马可伤害的最经济方式。
护甲穿透对于一技能伤害的提升同样有着重要的作用。

出装推荐:

末世、攻速鞋、电刀/影刃、破晓、冰脉、魔女

本节部分仅此推荐这一套。关于影刃和电刀的选择问题,大多数对局中选择后者即可。

淡定:S24赛季马可波罗的系统解析(二)

至此本文主要部分已结束,感谢阅读;因本文为摸鱼时所作,如有疏漏之处还请谅解,另将核心代码附上。

# 马可一技能伤害计算# version 2.0 支持最新版本11发子弹攻速档位# 导入数学绘图工具import matplotlib.pyplot as pltfrom matplotlib.pyplot import MultipleLocatorplt.rcParams['font.sans-serif'] = ['KaiTi']# 该函数作用为将游戏中实际伤害转化为百分比伤害def calc_smz1(sjsmz1, calc_1):    calc_1 = calc_1 * 100 / sjsmz1    return calc_1# 导入防御数据auto_k = float(3)auto_k_px = 2if auto_k_px == 1:    auto_temp_px1 = 0.6elif auto_k_px == 3:    auto_temp_px1 = 0.8else:    auto_temp_px1 = 1auto_hujia = int(0)auto_xueliang = int(0)if auto_k == 1:    auto_hujia = int(323)    auto_xueliang = int(5989)elif auto_k == 2:    auto_hujia = int(593)    auto_xueliang = int(7189)elif auto_k == 3:    auto_hujia = int(1053)    auto_xueliang = int(8932)# 核心计算函数def marknew1(gjl1, zb_wujin1, chuantou1, n, bjl1, need_print=True, hujia1=1053, mokang1=593, sjsmz1=8932, fqxg=0.5,             zb_diandao=1,             zb_bingmai=1):    # 百分比生命值初始化为100    bfbsmz = float(100)    # 物理穿透及魔法固定穿透修正    hujia2 = hujia1 - 64    mokang2 = mokang1 - 0    # 精准伤害确认及穿透确认    if chuantou1 == 0.6:        hujia2 = hujia2 * chuantou1        jingzhun_hurt = float(50)    else:        hujia2 = hujia2 * chuantou1        jingzhun_hurt = float(0)    # 承伤比例计算    csbl_wuli = 602 / (hujia2 + 602)    csbl_mofa = mokang2 / (mokang1 + 602)    # 法球效果(不包含精准)    # 无尽相关修正    if zb_wujin1 >= 1:        bjxg = float(2.4)    else:        bjxg = float(2)    # 暴击数据修正    bjl1 = bjl1 + 0.25 * zb_wujin1    # 电刀伤害计算    if zb_diandao == 1:        zb_diandao_hurt1 = 150 + 0.3 * gjl1    else:        zb_diandao_hurt1 = 0    zb_diandao_hurt2 = (zb_diandao_hurt1 * bjl1 * bjxg) + (zb_diandao_hurt1 * (1 - bjl1))    # 计算魔抗    zb_diandao_hurt3 = zb_diandao_hurt2 * csbl_mofa    # 冰脉伤害计算    if zb_bingmai == 1:        zb_bingmai_hurt1 = 120 + 15 * 20    else:        zb_bingmai_hurt1 = 0    # 计算物抗    zb_bingmai_hurt2 = zb_bingmai_hurt1 * csbl_wuli    # 单次固定伤害计算    dc_gdsh_hurt1 = 130 + 6 * 10 + 0.27 * gjl1    # 计算物抗    dc_gdsh_hurt2 = dc_gdsh_hurt1 * csbl_wuli    # 被动真伤    dc_real_hurt1 = 40 + 4 * 15 + 0.5 * gjl1    dc_real_hurt2 = dc_real_hurt1 * bjxg * bjl1 + dc_real_hurt1 * (1 - bjl1)    # 百分比修正    pct_zb_diandao_hurt3 = calc_smz1(sjsmz1=sjsmz1, calc_1=zb_diandao_hurt3)    pct_zb_bingmai_hurt2 = calc_smz1(sjsmz1=sjsmz1, calc_1=zb_bingmai_hurt2)    pct_dc_gdsh_hurt2 = calc_smz1(sjsmz1=sjsmz1, calc_1=dc_gdsh_hurt2)    pct_jingzhun_hurt = calc_smz1(sjsmz1=sjsmz1, calc_1=jingzhun_hurt)    pct_dc_real_hurt2 = calc_smz1(sjsmz1=sjsmz1, calc_1=dc_real_hurt2)    # 计数变量m初始化    m = 1    # 变量初始化    pct_zsh_gdsh_hurt = 0    pct_zsh_fqsh_hurt_part1 = 0    pct_zsh_zssh_hurt = 0    pct_zsh_hurt = 0    # 累加计算部分    while m <= n:        # 计算末世和精准伤害        pct_dc_fqsh_hurt_part1 = bfbsmz * 0.08 * fqxg * csbl_wuli + pct_jingzhun_hurt * 1.2 * csbl_wuli        # 单次末世精准伤害求和及血量计算        pct_zsh_fqsh_hurt_part1 = pct_dc_fqsh_hurt_part1 + pct_zsh_fqsh_hurt_part1        bfbsmz = bfbsmz - pct_dc_fqsh_hurt_part1        # 真实伤害计算及血量计算        if m > 10:            pct_zsh_zssh_hurt = pct_dc_real_hurt2        else:            pct_zsh_zssh_hurt = 0        bfbsmz = bfbsmz - pct_zsh_zssh_hurt        # 固定伤害计算及血量计算        pct_zsh_gdsh_hurt = pct_dc_gdsh_hurt2 + pct_zsh_gdsh_hurt        bfbsmz = bfbsmz - pct_dc_gdsh_hurt2        m = m + 1    pct_zsh_fqsh_hurt_part2 = (2 * pct_zb_diandao_hurt3 + pct_zb_bingmai_hurt2) * fqxg    pct_zsh_fqsh_hurt = pct_zsh_fqsh_hurt_part2 + pct_zsh_fqsh_hurt_part1    pct_zsh_hurt = pct_zsh_gdsh_hurt + pct_zsh_fqsh_hurt + pct_zsh_zssh_hurt    # 伤害占比计算    calc_pct_gdsh = round(100 * pct_zsh_gdsh_hurt / pct_zsh_hurt, 2)    calc_pct_fqsh = round(100 * pct_zsh_fqsh_hurt / pct_zsh_hurt, 2)    calc_pct_zssh = round(100 * pct_zsh_zssh_hurt / pct_zsh_hurt, 2)    # 保留小数处理    pct_zsh_gdsh_hurt = round(pct_zsh_gdsh_hurt, 2)    pct_zsh_fqsh_hurt = round(pct_zsh_fqsh_hurt, 2)    pct_zsh_zssh_hurt = round(pct_zsh_zssh_hurt, 2)    pct_zsh_hurt = round(pct_zsh_hurt, 2)    # 结果输出部分    if need_print:        print("子弹数" + str(n))        print("固定伤害" + str(pct_zsh_gdsh_hurt) + "pct,占比" + str(calc_pct_gdsh) + "%")        print("法球伤害" + str(pct_zsh_fqsh_hurt) + "pct,占比" + str(calc_pct_fqsh) + "%")        print("真实伤害" + str(pct_zsh_zssh_hurt) + "pct,占比" + str(calc_pct_zssh) + "%")        print("总伤害" + str(pct_zsh_hurt) + "pct")        print("百分比穿透" + str(chuantou1))    return [pct_zsh_gdsh_hurt, pct_zsh_fqsh_hurt, pct_zsh_zssh_hurt, pct_zsh_hurt]# marknew1(gjl1=521, zb_wujin1=0, chuantou1=0.6, n=11, bjl1=0.15, zb_diandao=0, zb_bingmai=0, sjsmz1=5989, hujia1=323,#          mokang1=169, need_print=True)# 计数变量x1 = -3# 终点变量x2 = 3x3 = x2 - x1#list1 = []list_data_gdsh = []list_data_fqsh = []list_data_zsh = []while x1 <= x2:    temp_data_1 = marknew1(gjl1=521 + x1 * 40, zb_wujin1=0, chuantou1=auto_temp_px1, n=11, bjl1=0.15, zb_diandao=0,                           zb_bingmai=0,                           sjsmz1=auto_xueliang,                           hujia1=auto_hujia,                           mokang1=169, need_print=False)    list1.append(521 + x1 * 40)    list_data_gdsh.append(temp_data_1[0])    list_data_fqsh.append(temp_data_1[1])    list_data_zsh.append(temp_data_1[3])    x1 = x1 + 1plt.plot(list1, list_data_gdsh, label="固定伤害")plt.plot(list1, list_data_fqsh, label="法球伤害")plt.plot(list1, list_data_zsh, label="总伤害")plt.xlabel("马可攻击力")plt.ylabel("百分比伤害")plt.title("马可攻击力AD与一技能伤害关系图")#per_100AD = round((list_data_zsh[x3] - list_data_zsh[0]) / (x3 * 40 / 100), 2)print("每100AD收益" + str(per_100AD))print(str(list_data_zsh))# x_jiange = MultipleLocator(1)# ax = plt.gca()# ax.xaxis.set_major_locator(x_jiange)# y_jiange = MultipleLocator(2.5)# ay = plt.gca()# ay.yaxis.set_major_locator(y_jiange)plt.legend()plt.show()

7.13更新日志:

  • 修正了关于后羿平A间隔的错误描述[26]
  • 修正了第二套装备的攻击力数值[27]及相关的计算结果

另评论区部分知友指出在B站上有相似的文章,在之前我并未在B站上放过自己的文章,还请大家留意不要被骗。这是我的B站ID,后续我会逐渐将自己的文章搬运至B站。

本人的B站账号,暂时啥都没有……

7.22-7.23更新日志:

优化了文章的排版。评论区有朋友指出精准被动未受此次调整影响,经个人实际测试确认属实,单发子弹能够触发100%的精准效果,120%的精准伤害,为数据精确性后续我回重构底层代码重写本文[28]


7.29更新日志:

重写底层代码并大幅度优化其可读性,同时修正了精准被动的伤害。

重写文章并优化其可读性。

访客,请您发表评论:

网站分类
热门文章
友情链接

© 2024. sitemap