【技术向】从无视护甲和增伤丢失到游戏底层机制解析
修改于2021/05/17987 浏览综合
龙腾剑皇近日发布了对于无视护甲机制的研究,但他并未深入讨论造成这个现象的游戏底层机制。经他的帖子启发,本文将对广大炽刃一直以来有的龙卷切招增伤丢失和类似伤害丢失问题做出进一步验证,并且尝试解释游戏底层机制和设计思路,最后提出解决问题的建议。
剑皇的无视护甲研究帖:
我们先看一段视频
【补充:评论区Manjusaka对紫焰龙卷做了测试,得出高额增伤是代码导致的bug,因此不完全适用于文中的分析】
由于龙卷的飞行时间过短不便于深入验证,视频用凝气之刃和觉醒技丸子复现了龙卷的增伤丢失。可以看到,同样是施展凝气之刃后释放觉醒技,丸子的伤害在使用回避取消后摇的一瞬间降低。作者推测,这是由于凝气之刃对后一招的全伤增幅只持续于技能释放过程中,而闪避取消后摇后的技能伤害则不会受到增幅。
进一步验证了在觉醒技飞出后,击中怪物之前,使用凝气之刃的效果,伤害相比不使用凝气之刃有提升,且凝气之刃的下一招仍能受到正常增幅。这与直觉上是一致的,即当前时刻的伤害量由当前时刻的攻击力计算。
那么,考虑以下这种情况:先使用在觉醒技,在觉醒技飞出后,击中怪物之前,使用凝气之刃,然后施展下一个技能。在下一个技能持续时间内,觉醒技的伤害是否会受到全伤增幅呢?进行的“觉醒-闪避-凝气-奥义灭杀”测试打出了等于正常使用凝气后接觉醒的伤害,因此可以提出两个假设:
1.当前时刻的技能效果由当前时刻的状态计算;
2.作用于某一招的效果实际上是获取一个持续时间等于技能释放时间,且会随着技能释放中止的状态。
假设1、2可以符合以下现象:
- 取消后摇会失去持续性伤害技能拥有的本招增伤;
- 持续性伤害技能可以“蹭”到后续技能的增伤和无视护甲等效果。
因此,这可以解释无视护甲和炽刃龙卷切招后独立增伤丢失的机制,在反例出现前较为可信。一个例外是心法数值的作用机制,武学心法带给觉醒技的技能伤害增加和技能爆伤增加不会因闪避取消后摇而丢失,因此猜测心法的数值增幅是通过不同的机制写入的。
对应的一个实例是,不增加攻击的旧版凝气之刃对于取消后摇的绝影觉醒技应不会有任何增伤效果,因为增伤状态在伤害造成前就已结束。这或许是绝影玩家认为凝气之刃加成过低的原因之一,实际上,如果猜测得到验证,那么即使把龙体也给绝影,爱取消后摇的绝影也不会感受到觉醒技伤害的增加。当然,现在凝气之刃的加攻效果远大于全伤增加,因此不用考虑要不要切招的事情。
拥有较多持续伤害技能的轻羽可以继续验证,来进一步说明这个机制,例如以下这个有意思的:取消后摇的剑幕接装备禁法魔僧的觉醒技(故意不命中),剑幕是否能策反怪物。
而魔弦拥有释放时间的技能,可以利用机制获取战斗中的优势。需要注意的是,按照猜测可以推论,在觉醒技上装备无视护甲心法不会有效(指对于持续伤害),而在持续时间较长的下一招上装备,则可以使觉醒技的持续伤害获得无视护甲效果。
这个底层机制是一种易实现的方案,但在持续伤害技能、提前切招和下一招生效的效果一起出现时会产生类似bug的状况。正如S在橙帖中说明的,要解决炽刃的龙卷增伤丢失问题需要底层的修改。如果本文猜测属实,则这个底层修改将是代码重构级别的,会造成很大的影响,并带来代码稳定性的极大隐患。对运营中的手游做重构的代价是极大的,且一旦再出现其它bug,还会进一步增大工作量。
作者认为,在影响不大的情况下,大改底层机制不利于游戏的平稳运行,因此建议不对当前机制做出修改,而是用调整技能作用和实现方式的方法使增伤效果能正确作用在当前技能上。例如,将火龙卷的独立增伤改为“释放技能后的3秒内获得对燃烧敌人x%的独立增伤”、“释放技能后的3秒内获得对破甲敌人x%的独立增伤”。类似这样的修改有效、易进行且是玩家喜闻乐见的增强,将能被广大玩家接受。
即使要进行底层修改,或许可以考虑调用心法数值的接口实现真正作用于单个技能的伤害增加。
在以后的效果设计上,也应多用持续时间固定的效果代替某招技能有效的效果,这样其效果能完美符合文字描述。