原神说——伤害机制中的数学原理

本文为相应视频的文字版

【结论速看】
完整的伤害公式如下
其中,各函数关系如下

想必屏幕前的旅行者,或多或少都看过角色的评测向视频/文章。其中,角色的输出能力是绕不开的话题,游戏内伤害数值是输出能力最直观的体现,而原神中伤害不存在随机分布函数的波动,这给我们整理研究出一套完整的伤害机制提供了可能的先决条件。
授人以鱼不如授人以渔,如果知悉了最底层的伤害逻辑,能让我们更加深入的了解指定环境下(武器、圣遗物、buff等)角色的输出能力。
原神说,说原神。欢迎各位旅行者来到系列节目之《原神说》第一辑——“伤害机制中的数学原理”

【观前提示】
1.视频所有数据基于游戏1.2版本内容,不排除后续版本更新会有部分修改的可能;
2.视频全部内容系up和朋友们共同独立完成,理论研究部分完成后在查阅资料时发现bwiki上早有相应的文章发布,权且把我们的研究当作一次重复试验吧(汗,早知道有研究结果就不会这么累了……)
bwiki文章名 《伤害加成公式以及类型汇总》 (链接太长了)
3.已经对伤害机制有深刻理解的观众可以直接跳转视频2p的实战演示,如果对机制了解不多或存有疑问建议系统观看视频1p正片部分或本文内容。
下面,我们正式开始。

一. 公理化体系
一个成熟的理论应该具备一套公理化的框架,因此首先引入“态”和“象”的抽象概念。
对某次伤害行为,敌我双方的所有相关属性,包括敌我等级、武器及其效果、圣遗物及其效果、天赋及其效果等,称为一个“态”
本次攻击造成的伤害在游戏内的数值表现称为“象”,根据是否暴击又可分为“平凡象”与“暴击象”
然后给出两条up自认的基本公设
公设一:态所包含的全部属性都可以直观改变
这条公设主要明确了几个要点
其一,影响伤害公式的各个部分均可以独立调节
其二,可以通过对照实验研究各部分对公式的影响
其三,只探讨伤害机制而非输出机制,即这里不考虑难以数值衡量的攻速和输出手法对角色输出能力的影响。
公设二:一旦态确定,象也随之确定,仅由双暴属性影响其衍化
这条公设容易理解,因为不存在伤害的随机分布,完全相同条件下的象只会受到暴击率和暴击伤害的影响。基于公理化体系,我们便可以发展完善的伤害机制原理框架,逐个拆分伤害公式的各项,并在统一的标准下进行进一步的探讨。
(真实学科的公理化体系框架的建立远比此严谨,此处仅作"娱乐用")

二. 各乘区详述
根据其性质,可以将其划分为四大乘区,分别是基础伤害乘区、敌方乘区
、伤害加成乘区
和反应伤害乘区
,接下来将一一进行介绍。

2.1 基础伤害乘区
该乘区主要由实际(面板)攻击和伤害倍率组成,具体公式如下
其中,人物、武器
的基础攻击属性决定了角色的基础攻击,即面板详情中的白字攻击数值。百分比攻击
,以百分比形式作用于上述基础攻击力,主要来源于角色成长属性、武器副词条、圣遗物主副词条和其他诸如技能、套装、共鸣等百分比攻击提升效果;数值攻击
,以数值形式加和到实际攻击,主要来源于圣遗物主副词条和诸如技能、食物等数值攻击提升效果。百分比攻击和数值攻击的数值总和,即为面板详情中的绿字攻击部分。伤害倍率
,则可以由天赋详情直观反映。
而需要特殊说明的就是附加伤害这一项,在武器技能效果和天赋中含有“附加/额外伤害”、“提升/增加额外伤害”,或等同于此类描述的,例如天空系列武器,均可划分到此类,以基础伤害身份享受对应伤害类型的所有乘区效果。


相较于单以倍率论英雄,考虑到不同人物在角色基础攻击力上的差异,基础伤害更能反映出角色的基本输出能力的强弱。只是因为实际攻击的边际效应递减显著,而最后趋向于按照伤害倍率的排序。

2.2 敌方乘区
该乘区来自于本次攻击行为的对象,由元素抗性和等级压制组成,具体的函数关系如下
(k 敌方抗性;m 己方角色等级;n 敌方等级; 敌方减防比例)
由于怪物的防御属性直接与等级挂钩,因此减防debuff的影响被整合到了等级压制函数中,实际中敌方乘区部分内容是最后确定的,但是基于其乘区的特点在叙述上作了提前说明。
我们先来看看等级压制函数。最开始的设想是由角色与怪物的等级差决定的,在实战测量中,选取同种类型怪物保持变量,在角色/怪物等级不变的情况下,压制系数近似满足与等级差相关的线性关系,但是相同等级差下的等级压制系数,随角色等级不同存在微小但趋势相同的变化。为了验证等级压制的具体影响,测试了90级凝光对不同等级同抗性怪物的平A伤害,且为了结果更准确,通过深渊和野图,尽可能多地获取数据,最终得出数据表格如下(图1)。

同时,提出新的假设,即等级压制与敌我等级均有关,表现为二元分式函数关系(一定区间下与线性近似)。利用matlab拟合工具分别作出线性和分式两种拟合模型与数据点的拟合结果,如图所示(图2)。在数据范围扩大后,线性模型表现出较大的偏差,而分式模型则拟合得相当精确。下一步就是确定具体的二元表达式形式了,找友人A借来80级凝光,重复一遍上述的采样,对比两次数据点相应的拟合参数(图3),与已知的角色等级对比得出如图所示(图4)的形式,采样数据、拟合曲线与理论曲线基本吻合自洽。



减防debuff与等级挂钩的发现思路同理。具体操作是通过丽莎Q减防然后采样拟合,最终得到等级压制函数的具体表达形式。up目前能拿到的角色样本只有丽莎的减防,4命雷泽和2命可莉命座的减防效果无法测算,但依据其他乘区的叠加形式,种类不同的减防比例应该也呈加和关系。(未验证)

再来看元素抗性的关系。对元素抗性的探究,是基于游戏群内朋友给的一张抗性统计表,由于多重水印无法分辨出具体来历,此处还是对其作者表示感谢,使得此项工作不至于从零开始。得到了怪物抗性,下一步就是探究抗性如何影响伤害,即抗性系数与抗性之间的关系,最简单的猜测便是的线性模型,于是基于此开展了验证试验。
实战发现在抗性k>0时,与模型相吻合,但是通过减抗达到或者怪物本身所具有的负抗性进行伤害测试时,实际结果与理论开始出现偏差。收集到一些数据后,一通计算猛如虎,最后确定了在抗性k<0时,抗性系数表现为负抗性一半的增益效果,即。
本着“纸上得来终觉浅,绝知此事要躬行”的理念,up用三种随机元素和物理攻击重复验证了一遍表格,并添加了雪山地图的两种主要怪物的抗性数据。表中大部分结果相一致,少数在再三试验后果断修改/增补。


但是,在急冻树和爆炎树的测试中陷入了僵局。利用原图作者提及的伤害减免和抗性得到的理论结果,与实际测量并不吻合,且表中抗性也与减抗测试相矛盾。一筹莫展之际,协助我研究的友人B提及,他曾在某视频中看up提到在抗性k>75%时,抗性公式不再满足线性变化,且存在超过100%的抗性。一语惊醒梦中人,我们马上对爆炎树展开更详细的减抗测试。通过能达到的不同减抗比例,得到多组数据进行拟合,最后修正了我们的抗性公式和抗性数据表,结果如图所示(图5)。属性树和愚人众在拥有核心/开盾下均具有超过100%的抗性,而在抗性k>75%后表现为反比例衰减并在无穷处趋于0。


2.3 伤害加成乘区
此乘区简洁明了,就是所有伤害加成的总和
(D.B. 即伤害加成Damage Bonus的缩写)
其效果可能来源于武器效果、天赋、命座、圣遗物等显性表述和类似霜铠丘丘王狂化后伤害减免的隐性因子。具体包括但不限于“元素伤害提升”、“重击伤害提升”、“元素爆发伤害提升”等己方增益描述和“受到伤害增加/减少”的敌方描述。通过武器、圣遗物的调整,可以很容易得到各类不同的伤害加成为加和关系而非逐个乘算,因此理清各类加成的所属类别就很重要。
按照攻击方式、元素种类和敌人状态,我将其细分为不重叠的三种类型,再加上全局作用的伤害加成(即描述中未加上述三种中任一限定条件)
攻击方式,即针对普通攻击、重击、元素战技和元素爆发的伤害加成
元素种类,即针对(目前的)六大元素和物理的伤害加成
敌人状态,即针对处于某种元素影响下的伤害加成
按照实际场景,将三大类型对应的加成和全局加成依次求和,便得到该次伤害总的伤害加成百分比。举个简单的例子,卢姥爷普通平A,受到普通攻击、物伤、敌人状态加成以及全局加成;而在施放Q进行火附魔后,则受到普通攻击、火元素伤害、敌人状态加成和全局加成。

2.4 反应伤害乘区
顾名思义,此乘区仅对元素反应伤害生效,由反应系数和反应加成两部分组成。且对蒸发、融化此类增幅反应和超导、扩散等聚变反应(非官方分类)的公式有所区别。
(Coeff 反应系数;r 元素精通数值;S.E. 即套装效果Suit Effect缩写;Fusion/Amplifying reaction 聚变/增幅反应)
我们先说以火元素为反应核心的增幅反应,其机制是直接按反应系数增幅当前伤害。火触发蒸发和冰触发融化具有1.5的反应系数,水触发蒸发和火触发融化具有2.0的反应系数。反应系数依据触发类型是恒定值,不受角色属性影响。那么诸如火魔女四件套的15%加成系数作用在哪呢?这就是剩下的反应加成乘区。
该乘区只受到角色元素精通和套装效果带来的伤害提升的加成,且为加和关系。套装效果数值明显,而精通带来的伤害提升,虽然可以在详情面板查阅,但不利于后续基于公式对圣遗物进行进一步研究。因此,我们还需要对精通曲线进行拟合。又是在友人A和B的帮助下,我们通过圣遗物副词条不同精通数值的排列组合,分别采集到是否基于精通类武器的两块密集区间数据。然后通过天赋、圣遗物套装效果和赌狗乐章的力量,收集到若干远端数据用以提高拟合的精确性。最终采样得到75组数据点,其散点图如所示

可以看到,随着精通数值的增长,加成比例增幅不断减小(且有一定收敛的趋势)。分别选用收敛的反比例函数,和不收敛的对数函数、抛物线进行拟合,最终发现反比例函数拟合效果最佳。在人为选定两个拟合参数后,拟合曲线如所示(图7),与采样点基本吻合,数据相对误差也绝大多数在5‰之内(图8)。





三.小结
现在,我们得到了伤害公式的所有碎片,来总结一下。伤害公式包括四大独立乘区,分别是基础伤害乘区、敌方乘区
、伤害加成乘区
和反应伤害乘区
。实际中需要针对具体的伤害环境分别选择合适的公式。
如果不触发元素反应,则公式为——
如果触发增幅反应,则公式为——
上述两种情况下,暴击爆伤影响其象的衍化。如果要计算期望伤害,则需要乘上期望项,即
而聚变反应比较特殊,不同于增幅反应,它在触发时会造成一次额外的属性伤害,其伤害公式满足,基础伤害乘怪物抗性乘触发元素反应角色(即后手角色)的反应加成,即
聚变反应伤害不会暴击,即不受到双暴属性的影响。其中基础伤害仅与触发反应的角色等级有关,与其他一切面板数据无关,不存在等级压制。
由于缺乏必要的角色和养成资源,up目前无法测得各类聚变反应的基础伤害随角色等级的增长曲线。但是利用已有角色可以测得90级时,超载基础伤害为2405,超导基础伤害为601。这分别是各类聚变反应伤害的上下限,由此可见聚变反应相较于增幅反应,在输出上非常弱势。这也是当前版本火C独树一帜,而雷属性地位尴尬的核心原因之一。
当然聚变反应带来的多种效果和多段伤害机制,在应用得当和适应场景下仍然具有很大的发挥空间,不过那会留到系列中元素反应一辑深入探讨。

如果对文中的内容有不理解或者要指出不准确、不合理的地方,欢迎私信或在评论区下方留言交流探讨。
系列第二辑——《装备学通论》 不定期更新^_^