注册 登录
返回首页

阿鲁珠的个人空间 https://touhou.cc/bbs/?15201 [收藏] [复制] [分享] [RSS]

日志

War3原理普及讲座 第六讲 流程理论(上)

已有 193 次阅读2012-3-2 13:15

第六讲 流程理论

首先必须声明,本讲内容已经触及了War3内部的机制,但我并没有把程序拆开看过,完全是凭经验和测试结果,不可靠性很大。请慎重对待本讲中的结论,不要轻信。

前两节仅讨论除主动法球外的主动技能,被动技能和主动法球技能留给6.3

6.1 惊人的假说:二次技能

首先来看以下的怪现象:

风暴之锤允许的目标里添加上“无敌的”这一项,它就可以对无敌单位施放了,但是并不能造成任何效果。实际上仔细观察可以发现锤子并没有真正击中目标,命中时的声音和视觉效果都没有出现。是因为无敌能免疫一切负面效果吗?
战争践踏的允许的目标里添加上“无敌的”这一项,于是就可以用它踩晕无敌单位了。看来无敌也不是免疫一切的?
默认情况下,战争践踏允许的目标里并没有选上“敌人”这一项,但这个技能却照样不会误伤。即便在其中添加“友方”这一项,它还是对友方单位无效。
醉酒云雾设置成终极技能,它也只是能点魔免单位施放而已,不能真正地无视魔免(无法施加状态)。
惊吓设定成非终极技能,它就不能点魔免单位施放了。但是,技能放出的蜥蜴撞到魔免单位依然会爆炸并能对其造成伤害。
非终极技能的风暴之锤施放出去以后,目标变成魔免状态,结果从声音和视觉效果上看锤子没有击中目标,也不造成任何效果。
非终极技能的暗影突袭施放出去以后,目标变成魔免状态,结果从声音和视觉效果上看毒镖没有击中目标,但却能够造成暗影突袭的初始伤害。
默认情况下,暗影突袭允许的目标里选上了“有机的”这一项,所以这个技能是不能对机械单位使用的。但是,如果在暗影突袭被施放后再用触发给目标添加“机械的”这一分类,毒镖还是能照常命中。

对于这些乱七八糟的奇怪现象,合理的解释是什么?

6.1.1 二次技能假说

实际上我们看到的技能本身都是空技能,要在技能施放后适当的时刻,由系统施放实际的“技能”才能实现技能的效果。在物编里设定技能允许的目标、技能是否是终极技能等直接影响的是直接施放的技能,而不是实际施放的“技能”。实际施放的“技能”允许的目标和是否对魔免单位有效等属性通常会和直接施放的技能的一致,但不知是由于程序员的疏漏还是有意设定的,或者二者皆有,某些技能的实际“技能”的部分属性是固定的,就可能会出现不一致的情况。

定义:一次技能和二次技能
称由单位直接施放的、能看到施放过程的技能为一次技能,即一般的技能。称在此后适当的时刻由系统施放的、造成实际效果的“技能”为二次技能。

有极个别的技能可以不借助二次技能而直接对目标造成伤害。此类的例子极少,已知的有暗影突袭刀扇(在暗影突袭的投射物消失后、二次技能被施放前直接对目标造成暗影突袭的初始伤害,而刀扇似乎根本就没有二次技能,在投射物消失后直接对目标造成伤害)。

例:对以上怪现象的解释

风暴之锤等少数技能的二次技能允许的目标固定排除无敌单位,这样的技能多是一些有投射物的单体技能。
战争践踏等技能的二次技能允许的目标里固定排除友方单位。
惊吓的一次技能是魔法属性,二次技能却是通用属性。
绝大多数技能的二次技能完全继承一次技能的终极属性,但醉酒云雾的二次技能却不能继承,所以它永远都不能无视魔免。类似的,醉酒云雾的二次技能也不能继承被动属性,所以由几率法球施放的醉酒云雾对魔免单位也同样无效。这就是DotA里育母蜘蛛的几率法球不能无视魔免的原因。
风暴之锤施放后再变成魔免可以免疫其二次技能,从而是其无效。
暗影突袭的初始伤害是直接施加的,不是二次技能的一部分,而且这伤害又是物理属性,所以在暗影突袭施放后再变成魔免只能免疫其二次技能,不能免疫其初始伤害。
暗影突袭的二次技能允许的目标并不会继承一次技能中的“有机的”这一项,所以在暗影突袭被施放后目标再获得机械属性是无用的。

还可以更进一步。不止技能有二次技能,War3里攻击的效果也是由类似的二次技能来实现的。
War3里的“命中”的实质是二次技能施放成功。

6.1.2 锁定目标和锁定的解除

再来看一些现象:
War3里投射物的追踪有个小bug:如果目标不是直接移动,而是用闪烁等移位技能或是触发的移位功能瞬间改变了位置,投射物是不会响应这次移动的,仍会向目标原先所在的位置飞去并可能最终打在空气上。但是如果此后目标直接移动了,如果投射物尚在飞行中,它会立即继续恢复对目标的追踪。
然而,有时我们会看到,即便投射物打在空气上,与它的目标差了十万八千里,攻击或技能仍能准确地命中目标。(是否命中通常可以从声音和视觉效果上分辨出来。)
与之相反,对单体的攻击或技能来说,只要目标在投射物尚在飞行时使用了闪烁,即便投射物恢复了追踪并“打中”了目标,实际上攻击或技能也不会命中。
有投射物的范围技能的情况又有所不同。比如,酸性炸弹对主目标的伤害和对范围内其他目标的伤害是不同的。在酸性炸弹的投射物还在飞行时,如果目标使用了闪烁,但最终仍未能躲开酸性炸弹的范围,我们将看到它仍被酸性炸弹击中,但它受到的伤害不是酸性炸弹对主目标的伤害,而是对次要目标的伤害。
又该怎么解释呢?

1.锁定的概念

攻击是瞄准某个单位开火的(攻击地面除外),指向性技能是以某个单位为目标施放的。在这样的攻击或技能出手时,系统会把这个被瞄准的目标记录下来,称为锁定了主目标。
锁定和追踪是两个不同的概念。投射物没有追踪能力不一定表示攻击或技能没有锁定目标,投射物追踪的目标也不一定被锁定了。

个别的指向性技能是不锁定目标的,如醉酒云雾和点单位施放的穿刺。非指向性技能基本上都是不锁定目标的,例外是刀扇。炮火武器和溅射模式下炮火(直线)武器的攻击也不锁定目标。面对不锁定目标的攻击或技能,只要离开了其作用范围,就不会受到影响。
而被锁定的目标无论跑到哪里最终都会被攻击或技能打中,除非锁定被解除。

2.锁定的解除

在如下情况下对目标的锁定会被解除:目标隐形了并且技能的施放方没有反隐能力、使用了镜像、钻进了地洞/缠绕金矿或上了飞艇/运输船、使用了闪烁或被传送走了,等等。在二次技能被施放前的任意时间点上做出以上动作之一,就会解除对目标的锁定,从而使二次技能失去目标。
但单纯的移位、改变单位分类、魔免、虚无、无敌等都不能解除锁定。
根据TE中的注释,单位被装载时实际是被隐藏起来了,实际上也确实可以用“显示单位”功能将其显示出来。单位在使用镜像时会暂时消失,此时也可以用“显示单位”将其显示出来。还有隐形看起来不就是向非友方玩家隐藏单位吗?只不过这隐藏无法被触发的“显示单位”解除罢了。利用触发瞬间隐藏单位并显示单位,同样可以起到解除锁定的效果。这些情况向我们揭示了解除锁定的本质。

解除锁定的本质
当单位被隐藏时,会解除所有指向它的攻击或技能的锁定。这只是War3里的一种设定罢了,解除锁定并不一定意味着目标已经找不到了。

例:锁定主目标与选取次要目标的结合
某些攻击或技能既有单体效果,又有范围效果,如投射(溅射)武器的攻击,不稳定化合物酸性炸弹等。这类攻击或技能的主目标是在出手时锁定的,与投射物的落点无关;次要目标是在投射物消失是选取的,范围中心是投射物消失的位置,并且会将主目标排除在外。本小节开头提到过酸性炸弹的主目标使用了闪烁后受到次要伤害而不是主要伤害的情况,其实是因为闪烁后对主目标的锁定被取消了,此技能就再也没有主目标了,故原本的主目标如果在技能的作用范围内将会被选取为次要目标。

小技巧:DotA里不是正宗闪烁或传送的移位技能(闪烁突袭幻影突袭实相裂隙掘地穿刺跳跃突袭灵动之翼忽悠降临回归替换镜像凤凰冲击发射钩爪时间漫游波浪形态球状闪电回到过去守卫降临黑暗之门真空致盲之光召回黑洞超震声波两级反转巨力重击肉钩投掷地图标记恶念瞥视移形换位弹射法杖回城卷轴等)只是改变位置而已,并不能解除目标锁定(跳跃除外,它带有0.01秒的隐形效果,不过它并不稳定,可以被反隐所克制),所以这些技能不能简单地被用来躲避单体技能。当然,利用其中个别技能带有的无敌效果来躲技能还是可行的,不过那是另外一回事了。

3.攻击失误的本质

攻击失误有两种情况:普通失误和强制失误。除因出手时目标与攻击者的距离已经超出了攻击者的射程+运动缓冲范围而造成的失误是强制失误外,其他原因造成的失误都是普通失误。第四讲里提到的暴击技能的不会失误属性只能防止普通失误,对强制失误无能为力。

然后再来看一些现象:
在武器类型为普通、立即或投射时,如果发生了普通失误:火焰之球的溅射效果有效,并且此时可以溅射到主目标;多重箭仍然可以攻击到除主目标以外的单位;其余在攻击中触发的技能均无效。
武器类型为投射(直线)时,如果发生了普通失误,弹射依然有效,而且如果主目标在弹射范围内可以成为弹射的目标。
这些现象向我们揭示了攻击失误的本质:其实普通失误只是对主目标的锁定被解除罢了。War3里并没有完善的命中系统。

攻击失误的本质
普通失误的本质是此次攻击一出手就被解除了对主目标的锁定,并且溅射或弹射(如果有的话)的伤害要按照平衡性常数打折扣。由于失误后对主目标的锁定被解除了,投射(溅射)武器的攻击将可以溅射到主目标,投射(直线)武器的攻击也可以弹射到主目标。此外,投射(弹射)武器的攻击在失误后无法弹射,炮火(直线)武器的攻击在失误后会自动转变为溅射模式。
强制失误的本质是此次攻击完全失败,强制失误的攻击在任何情况下都不会有任何效果。

6.1.3 二次技能效果的作用顺序

如果技能同时具有buff和伤害,对锁定的主目标的buff通常在伤害之前,而对次要目标的buff通常在伤害之后,并且是先对所有的次要目标造成伤害,再对它们施加buff。不过这些规律并不是绝对的。

6.2 完整的流程理论

二次技能假说解释了出手以后的流程,现在来看一下出手以前的流程。和出手以后的情况不同,攻击和技能在出手以前的流程有比较大的区别。

6.2.1 标准的出手前流程

1.攻击出手前的流程


攻击反应延迟时间是随机的,其上限可以在游戏平衡性常数里设置,而具体分布规律我目前尚不清楚。连续攻击时,只有第一次攻击有反应延迟,后续的攻击没有反应延迟,但是如果单位接受了新的攻击命令或改变了攻击目标,下一次攻击就会有反应延迟
攻击前摇会受到改变攻击速度的效果的影响(实际上整个攻击动画的播放速度都受其影响),实际攻击前摇=基础攻击前摇/(1+增加攻击速度的比例)

2.技能在出手前的流程


不是所有的技能在出手前都需要经过上面的每一个步骤。比如绝大多数技能的施放时间默认都是0;有个别技能如疾风步是完全没有施法动作的,而物品技能也都是没有施法动作的,还有个别技能如刀扇是没有施法前摇的,这些技能的起手即出手,没有施法前摇

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

手机版|Archiver| ( ICP15046467-1 )

GMT+8, 2024-5-23 00:07 , Processed in 0.021424 second(s), 15 queries .