【英雄联盟数值拆解】2.普通攻击I(概述、攻击力、攻击速度、暴击几率、暴击伤害)
为了更具有实用价值和引发思考,重要章节的思考题会放到最前面,如果需要先阅读正文,自行下拉即可~

思考题
在数值策划笔面试中,关于DPS计算和暴击的应用等是高频考点。
1.(暴击对弈问题)
甲的生命值为900,攻击力为100;乙的生命值为600,攻击力也为100,但是有50%的概率造成双倍伤害。他们的攻击速度均为每秒1次。获胜条件为先击败对方。
(I)计算甲和乙的DPS;
(II)甲和乙同时攻击对方,分别计算甲获胜、平局(两人同时击败对方)和乙获胜的概率。
2.(暴击期望问题)
某英雄的攻击力为100,攻击时有50%的概率造成双倍伤害。野怪的血量为1000(无护甲)。求该英雄平均需要多少次攻击可以击败野怪?
3.(DPS计算)
英雄联盟中普通攻击的DPS公式如下:

其中

你的初始攻击力为100,初始暴击几率为0%。攻击速度收益率为0.6,且你目前身上有5000金币;并设暴击伤害为100%(暴击时额外造成100%伤害)。
每1金币可以折算的属性如下:
1金币
=0.04 %攻击速度加成
=1/35攻击力
=0.025 %暴击几率
现在要求花光所有金币(不考虑装备格的影响,且所有金币都允许折算为对应属性,结果中的金币值可取任意非负实数),求普通攻击的最大DPS。
4.(暴击补偿机制设计)
你的攻击力为1,有50%的概率造成双倍伤害。
(I)求单次攻击伤害的期望和标准差;
(II)考虑暴击率为50%的情形:请你设计一套暴击补偿机制,通过修改每次攻击实际的暴击率(不修改攻击力和暴击伤害),使得在持续攻击时,上述攻击的标准差降低(但不为0),且不改变伤害期望。要求说明设计算法、算法的正确性以及这样设计的好处是什么。

正文部分
1.1.3 普通攻击I(概述、攻击力、攻击速度、暴击几率、暴击伤害)
1.1.2节中阐述了攻防数值中“防”的部分,后续几节将阐述“攻”的部分。(主要为普通攻击,技能攻击将在1.2节中进行阐述)
1.1.3.1 普通攻击概述
也称平A。使用攻击键(默认为A键)或鼠标右击执行普通攻击操作。
在通常情况下,普通攻击造成物理伤害,伤害数值等于攻击力。普通攻击允许按暴击几率暴击来造成额外伤害,能够附加攻击特效以及所有吸血效果(生命偷取、物理吸血、全能吸血)。普通攻击的施放频率是由攻击速度决定的。
上述普通攻击存在很多例外(根据平A定义的改变,就可以改变一些英雄的操作方式,这也是设计英雄的思路之一),例如:
(1)平A不使用攻击键:泽丽的普通攻击是Q技能
(2)普通攻击不只造成物理伤害:库奇的普通攻击80%转化为魔法伤害
(3)伤害数值不等于攻击力:卡莉斯塔和卑尔维斯的攻击力收益分别只有90%和75%,但她们也有自己的独有机制。
(4)普通攻击不能通过暴击获得额外伤害:艾希的暴击不会造成额外伤害,但会提升【冰霜射击】双倍的减速效果。
(5)攻击速度固定:烬的手枪有着已被固定的攻击速度。
(6)特殊的攻击方式:格雷福斯用霰弹枪来攻击。
可以看到,由于暴击存在随机性,且攻击速度因人而异。再使用1.1.1节中的基本公式不能很好的反映攻防数值情况,因此需要引入一个在游戏领域非常常见的指标:DPS(每秒伤害,Damage Per Second)。现在考虑攻击速度和暴击影响,能得到DPS公式如下:

在英雄联盟中,攻击速度定义为每秒攻击的次数,因此计算DPS时直接做乘法即可。暴击几率最大有效值为100%。初始暴击伤害为75%(这里的暴击伤害指的是额外造成的伤害);如果不考虑对方护甲而只考虑己方输出,只需将最后一个括号的值视为1即可。
特别注明:经过反复测试,英雄联盟的暴击抗性会作用于最终伤害上,因此在撰写这一部分时移去了原本要撰写的暴击抗性部分,详情可见1.1.5节。
1.1.3.2 攻击力
如之前关于成长属性的描述,一个角色的攻击力计算满足以下计算公式:

额外攻击力也称为加成攻击力。由公式可知基础攻击力只与英雄本身和英雄等级有关。装备、符文、BUFF等的加成均视为额外攻击力。
注:那有没有特殊说明的呢?有,三相之力。
三重打击:攻击会提供20移速,持续3秒,如果目标是英雄,则提升你4%基础攻击力,持续3秒,至多可叠加5次(最多提升20%攻击力)。
在LOL中,基础攻击力和额外攻击力各有千秋。不能简单认为二者谁更强,要结合英雄特性来判定。
1.1.3.3 攻击速度
攻击速度也是成长属性,但是与攻击力和护甲的计算方法略有不同。一个角色的攻击速度满足以下计算公式:

每个英雄拥有不同的攻击速度收益率和攻击速度成长。但和攻击力、护甲不同。不论是来自等级的攻击速度加成,还是来自其他部分的攻击速度加成,均认为是额外攻击速度加成。例如卡莎【E】的进化可以受益于来自等级和装备的额外攻击速度加成(但是来自符文的和临时的攻击速度加成无效)。
攻击速度的通常上限为2.5。一些技能(如卑尔维斯的【被动】溶烛化紫)或符文(致命节奏)允许突破这一上限。
1.1.3.4 暴击几率和暴击伤害
暴击是游戏中非常常见的设计,在其他游戏中也称为会心、致命一击、必杀等等。在英雄联盟中,暴击时会有特殊的标识。
只考虑当前版本(13.5),暴击几率的来源包括装备、技能(泰达米尔【被动】、亚索【被动】)。
暴击伤害初始为75%。同样通过装备(无尽之刃)、技能(烬【被动】)进行修正。
关于暴击几率和暴击伤害,有以下几点需要说明:
(1)真暴击和假暴击。暴击通常是属于普通攻击的概念,但一些技能能触发类似暴击的数字特效(如卡尔萨斯单体【Q】等),而这些效果不会按暴击结算(自然是不会受到暴击伤害、兰顿之兆等的影响),称为假暴击;反之则称为真暴击。
但要注意,不是所有技能都是假暴击,如男刀【Q】的近身伤害(原描述:如果从近战距离施放,则泰隆不会前跃而是产生暴击,造成150%伤害),它会受到兰顿之兆的影响。
(2)暴击补偿机制。这是一个数值体验设计上非常重要的问题。首先需要明确的是“真随机“和”伪随机“的概念。因为本文是数值拆解的报告,而不是计算机模拟的相关科普(当然,我打算推出一个番外科普篇,在查询资料时发现还是有很多人分不清物理上的随机/数值上的随机)。如果没有特殊说明,”真随机“指的是没有补偿或修正机制、完全按字面意义执行的随机;”伪随机“指的是有补偿或修正机制的随机。为了避免引起混淆(毕竟不可能所有人看文章都那么细、都按照顺序),”伪随机“我有时也称为暴击补偿机制。
英雄联盟中的暴击补偿表现为:若你某次攻击没有暴击,则提升下次暴击的几率。这样设计好处在于不让欧皇和非酋差距过大,同时保留运气因素的影响(我保留了一部分,这样你才知道你打的是暴击);即在不改变伤害期望的前提下,适当缩小伤害方差。这种补偿机制得到了广泛的应用,最经典的即是抽卡游戏的各种奇奇怪怪的保底机制。