队列机制
首先要感谢众多致力于深入研究魔兽世界的高手们,从理论研究到实测验证,他们为当前的怀旧服带来了很多精彩的研究成果,让我们可以不费吹灰之力得到一些十分有用的内容。当然,好的内容还需要让更多人去知晓,从而让玩家的游戏体验有更直观的感觉!
首先我们来讲一下当前怀旧服的战斗机制问题,玩家的所有行为,其实都不是实时结算的,而是有一个时间差,具体战斗机制如下:战斗数据以400ms一次的队列来进行结算的。
所有的玩家行为,包括但不仅限于平砍、使用技能、使用物品等等,都会给服务器发送一个指令,并将在下一个队列到来时一同结算。就像机器传输一样。当你的指令得到反映后,会自动生成数据!
相信很多人都遇到怪和怪对砍,最后人和怪一起死的情况。如果伤害是实时结算的话,几乎不可能产生“同时死”的结果。但如果这两下致命的攻击都发生在两次队列结算的400ms里,然后在下一次结算点进行结算,就能解释“同时死”的结果了。
这也解释了为什么很多盗贼点了冷酷攻击后还能在团本经常触发的原因,因为有很大概率最后一次攻击会有很多人一同参与,只要在400ms内的你们都算“击杀者”。
平砍与技能施放机制
从上面的队列机制我们可以知道,攻击动作和击中怪物实际上并不是同时发生的。这里我们需要再引入两个概念:swing:挥动,也就是角色产生的平砍动作产生的时间点。cast:施放,也就是角色施放技能的时间点一个完整的平砍到击中怪物,游戏里是这样实现的:
平砍发动:玩家 swing at 怪物,进行圆桌判定,最终产生miss(包含未命中、躲闪、招架、免疫等)或伤害值,其中如果miss则结果立即返回,如产生伤害判定则在下一个队列时间点进行结算并形成下一条战斗记录。
因为平砍以及技能使用时是可以在任意时间发生的,而队列时间点是每400ms一次结算,所以从swing到伤害结算时有延时的。我们随便打开一个WCL的记录就可以看到如下的结果:白字(cast、swing、gains)这些即为实时行为!浅棕色字体(例如Melee、背刺等)这些就是队列结算
额外攻击机制探究
在怀旧服中有很多“击中后获得额外攻击”的天赋和物品,最具代表性的就是剑类武器专精、风怒和[正义之手]这个饰品。这里我们就来研究一下,这类天赋和物品到底是什么机制。
在菌菌研究了各位大佬的各项测试和总结之后,觉得可以将这些机制统一一下,所以这里先讲结论:所谓的“获得额外攻击”,实际上并不是真实的多一次额外攻击的伤害,而只是将下一次主手攻击提前发动。
无论是主手触发还是副手/技能触发,其实都是重置主手普攻计时条。只不过主手触发的时候主手计时条刚好是读完的,所以没有损失;副手/技能触发的情况,因为主手计时条已经读到一半,所以会损失掉这部分时间。
关于触发机制
剑专和风怒的触发机制是一样的,可以由平砍和技能的cast触发,可以在任意时间点触发。无论是哪种方式触发(主手、副手或者是技能),触发之后的效果都是将下一次主手swing提前,并在下一个队列结算点造成伤害。同时主手的平砍技能条重新开始计算。
正义之手饰品的触发机制则完全不一样,这个饰品并不能在任意时刻触发,只能在队列结算的时间点触发,并且在下一次队列时间点进行结算,并提前下一次主手swing,然后在第三次结算造成伤害。
正义之手饰品的这个触发机制,导致了其真正的收益降低,原因就在于:从触发正义之手特效的攻击行为到正义之手效果结算这里有两个队列结算的时间,所以会浪费400ms~800ms的时间。
- 本文固定链接: https://www.fengshen.cn/2020/04/魔兽世界:战斗机制普及,战斗队列和产生额外攻/gameofwind/
- 转载请注明: fengshen 发表于 Dream of Wind | 一梦风神
