数值策划学会这个3个数学技巧,让技能强度估计化简为繁
在数值策划的工作中,我们常常会面对奇奇怪怪的技能效果的量化问题。通常而言,这个问题不存在解析解。更为正确的做法是对真实玩家的实际数据进行统计分析,利用回归模型来甄别不同CD、持续时间、施法时间、效果对我们选定的因变量的影响,比如这个因变量可以是剩余hp。然而,游戏在推出之前,数值建模就必须做好,这就导致了悖论,我们依赖于统计分析来建模,可没有建模之前,统计就没有数据可分析。除此之外,可行的另一方法是使用程序模拟产生数据,甚至划定适应函数,以遗传算法的思路确定技能效果的特征值应当怎样,才能满足我们期望的平衡。遗传算法是到目前为止事实上的最佳做法,但它要求游戏的所有技能设计完毕,并对技术提出了要求,一旦添加、修改必须从头迭代,其时间复杂度较高。
【证明过程】
我在这篇文章里想要展示的是一种数学证明技巧,结合数值分析手段得出任意技能效果的强度估计。数学证明确保了我的推论,数值分析则给出估计值。思路起始于以下2点:
1】奇怪的技能效果不存在解析解or难以得出解析解
2】技能效果发挥的实际强度,一定受限于角色自身实力的唯物观
从以上2个角度出发,我的目标被明确了:我不知道任意技能效果的强度,但它们是否存在一个界?答案是:存在。
【步骤一】设,有A、B两名强度相当的玩家,B拥有30%概率令目标昏迷的技能效果,而昏迷时间只有2个方向:∞,0。当昏迷时间→0时,B=A,时间→∞时,因为昏迷本身不额外造成伤害,B只能以自身强度追加伤害,追加的伤害永远不可能超过B自身,但我们确信昏迷是一个>0的正面效果,于是B>A。故:B>=A。又由于真实的昏迷技能只会被设计在∞与0之间,故:昏迷>真实昏迷,所以我们找到了30%概率昏迷效果的下界:没有任何效果的A。
【步骤二】现在,我们需要引入一个概念,这个概念必须与“步骤一”里的技能效果有同等条件,唯一的是效果不同,这个概念必须是我们清晰认识的,我选择30%暴击+2倍爆伤,为玩家C拥有的效果,C自身强度与A、B相当。根据全概率公式可知,C的输出能力收敛于1.3,即1.3A。显然C>A。我们接下来的问题是,B和C的关系怎样?
【步骤三】设,存在一个玩家D,D拥有30%概率暴击+2倍爆伤+30%概率昏迷。根据“步骤一”,我们有D>=C,又显然D>B。故:D>=C>B>=A。至此,我们成功证明出了B的上界是拥有同等概率的暴击C,又由于暴击效果收敛于一个常数,事实上也反映了“2】”的唯物观。
【步骤四】接下来加入更多奇奇怪怪的技能效果:击退、拉近、贴身冲撞、瞬移背刺、沉默、封印某系魔法、打断、闪烁、移动加速、复制技能等等等等。其思考方式与前述3个步骤并无二致,但不再数学描述。
【步骤五】显然,沉默、封印某系魔法,等价于昏迷了对方的技能部分,又由于范围不如昏迷(昏迷等价于沉默移动、普攻、技能),故:封印某系魔法<沉默<昏迷。
【步骤六】击退、拉近、贴近冲撞、瞬移背刺。被施加效果的目标在这短暂的被击退、被拉近、被冲撞、转身回击的过程中,无法发起对施法者的攻击,其等价于在短暂时间内令对方昏迷。如果可以发起攻击,那么效果强度将更小于现在讨论的情况,又因为时间→0,故:击退等<封印魔法<沉默<昏迷。
【步骤七】打断等价于时间→0的沉默,故:打断<以上全部
【步骤八】闪烁将其夸大为闪过去攻击,在对方要攻击的时候立刻闪回来。显然,这种令对方无法反击的夸大讨论,等价于昏迷,由于实际闪烁完全不趋近于本情况,且闪烁到敌方攻击距离、方向外可令敌方攻击中断,故:打断<=闪烁<以上全部
【步骤九】移动加速将其夸大为无穷大的移速,显然,这种情况比夸大的闪烁弱,因为它不能逾越障碍,故:移动加速<以上全部。
【步骤十】任意技能效果根据以上推导,都可以表明均在一个你可以规定的上界和一个没有任何效果的下界之间,所以,复制技能只可能取值任意技能效果,我们可以使用后面提到的数值分析法估计出效果强度后的均值来作为该技能的强度估计。
【步骤十一】攻击加速略微特殊,如果加速→∞,则攻击加速<=上界,加速→0则>=下界。攻击加速又可以知道,相当于提高攻速百分比的伤害百分比,所以其上界必须考虑最高攻击加速的实际百分比数值——任何可计算、直接给出伤害提高效果的技能是同等道理(暴击就是一例),因为伤害效果是一个被清晰认识的技能效果,其上界在于它自身。
【数值分析】
我们证明,技能效果总是在一个上界和一个下界之间,加入任意技能效果,都可以为其安排位置,并将服从于不等式排序。某些技能效果可能互相之间难以看出谁在不等式的另一边,但只要它们是临近的,事实上最终对它们的强度估计不会偏差太远,毕竟我们没有解析解,只有存在误差的数值解。
【插值法】当我们完成上述不等式排序后,我们对技能效果的强度认识有了相当大的进展,我们知道它们在一个界里,并且知道界的两端,可我们并不知道它们到底强度如何,但我们可以将其看作已知2个数据点,求中间数据点的插值问题。已知界的两端分别是1和1.3,做一个线性/对数插值,用插值函数依序估计出所有技能效果的强度即可。实践表明,上界不高,那么线性和对数插值几乎没有区别,如果界较高且技能效果较多,对数插值应当是合适的选择:因为我们还是要相信,个中关系不应该是线性那么简单。
【计算方法】我们知道了任意技能效果的强度,其强度上界总是一个提高了X倍伤害的效果、更高强度的玩家。但对我们真正有用的上界是:拥有伤害技能在标准战斗时间里,通过技能+普攻最终造成只有普攻情况下的A倍(A>1)的角色。而这个情况,是我们在建模之初就指定了的A值,用以计算出角色属性、技能伤害所需的参数。现在,我们知道,真实的战斗时间不是→∞,所以,我们将包括上界的所有技能效果的强度除以标准战斗时间,得出每秒强度值,则我们可列出公式,新的A值变成:
new_A=(a0x0+a1x1+....anxn)
a是任意技能效果的每秒强度值(强度值/标准战斗时间),x是各类效果存在时间,某些看似没有时间的效果,实际上它只能存续于标准战斗时间内才有意义,所以它们的时间等于标准战斗时间。根据以下公式,算出一个技能携带了其他效果时,该技能可被分配的剩余伤害能力:
w=((A-new_A)*(c+s)-c)/s
w为我们要求的伤害百分比,c为该技能冷却时间,s为普攻速度,一般为1,该公式已省略过程,不在本文讨论,原始公式出自《游戏数值对答录》,经简单代数变换可得。该公式表明,当(A-new_A)的绝对值<=1时,w不能得出正常结果。为解决这个问题,可以使用正常的A、c、s的值算出w,然后w*new_A/A来解决。
同时,我们给出两种越界警告,一种是特定技能效果超出插值给出的估计值,一种是超出上界,后一种表示技能的不平衡程度不小于该差额的绝对值,在特别设计和要求的情况下可适当超出。
【其他】
Q:你在最后说暴击这样看似没有时间的技能,只在标准战斗时间内有效,可以等于持续了这个时间,可你在推导中又说昏迷→∞,这不是矛盾吗?
A:因为推导过程中,暴击不言自明的存续时间→∞且不可能为0。
Q:昏迷可以看做限制了对方输出,提高了我方生存,为什么你说对昏迷目标的追加伤害仍然不能超过自身强度?
A:因为30%概率暴击等价于提高了1.3倍伤害,则数学公式为HP*(1.3*DPS),根据乘法交换律,该公式也等于(1.3*HP)*DPS。这意味着提高X倍输出能力,完全等于提高了X倍生存能力。推导过程中从生存能力角度看将得出→∞的不定式,我们无法得出任何结论,从输出角度看便可以得出结论。此外,真实昏迷不可能被设计得过长,过长也会有对抗技能来解控,则:有解控威胁的昏迷<真实昏迷。
Q:D>=C,D>B,据我所知在不等式里不能得出D>=C>B?
A:如果C是一个变量,像通常见到的不等式公式那样,我们的确不能得出。但C是A这个常数*1.3,仍然是常数。D和B的变量是昏迷时间,D既然可以等于一个常数,即这个常数是D的下界,则B是不可能大于这个常数的,否则会推出D>=B,和已知条件矛盾。如果D和B的昏迷时间不一样,也无法推出步骤三的结论,但注意前3步骤的所有条件:基础强度、概率、时间趋向的一致性。
Q:那实际中,昏迷时间完全可以在冷却和持续上不一致呀?
A:这是一个简单的全概率公式可以解决的问题。即便上界是30%概率的暴击,对于60%*(10/3)*1/10+0*(1-60%)*(1-(10/3)*1/10)=20%。可以得出,在10秒标准战斗时间内,60%概率的3秒冷却1秒持续的昏迷效果,等价于20%概率1秒冷却1秒昏迷的效果。则20%概率没有超出30%概率的上界。任意百分比如移动加速、CD回复均可通过全概率来等价为概率表现,从而不违背数学证明的前提条件。
Q:你用到了哪些数学技巧?
A:1、不等式与夹挤定理;2、极限知识;3、数值分析的插值法