本Wiki包含与单机游戏《只狼:影逝二度》相关的各类内容,包括常用攻略、人物介绍、数据整理等。
只狼游戏相关内容交流群:1102710456、667938183,欢迎热爱只狼的小伙伴加群交流。
也非常欢迎对本Wiki中尚未新建的页面进行图片或文字投稿,编辑方法参见:编辑帮助

全站通知:

敌人的防御机制

阅读

    

2023-07-12更新

    

最新编辑:乐小乐Raku

阅读:

  

更新日期:2023-07-12

  

最新编辑:乐小乐Raku

来自只狼:影逝二度WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
小泽1019
琐帝BNU
乐小乐Forzen
无米_Official

本页面的内容相对而言可能比较硬核而且枯燥,请根据自己的需求阅读

介绍

本页面是关于游戏中敌人的防御机制的页面,将会从敌人的动作和AI层面解读敌人如何应对玩家的攻击。
当然限于篇幅的原因,我们不可能将所有敌人的AI中的防御逻辑在这里给出,因此我们将会在这里简单讲述游戏中很多敌人都会采用的通用防御AI,以及部分敌人防御的一些特例。
而关于更加具体的内容,有条件的玩家可以自行寻找相关的教程,对游戏内容进行解包来获得进一步的细节。

防御动作与表现动作

作为下面AI内容的一个前置,我们首先要了解对于一个敌人来说,什么是他的防御动作以及表现动作

所谓防御动作,即是敌人的一种主动动作,在一定条件下敌人作出该动作来响应玩家,或者其他敌人的攻击动作(从AI层面上来讲,敌人只会识别来自其目标的攻击信号,并且需要敌人在他的正面,而攻击信号也是向正前方发出的,用于配合正常的锁定打法。这也是无锁刀法和被群殴时敌人只能被打的原理所在)。例如对于大部分持刀的敌人,将刀横在其身体前面,作出一个格挡的架势,这就是一个防御动作的基本骨架。

不同的敌人显然会有不同的防御动作,但是同一个敌人(或者更加准确的,同一个模型的敌人)一般也会有多个不同的防御动作。在动作编辑器中,一个敌人的模型一般而言3100号动作与3101号动作均为防御动作,而部分敌人将会有额外的譬如3102,3103等多个防御动作。防御动作一般会全程,或者至少绝大部分时间存在着防御判定

那么这里就有一个简单的问题:同一个敌人的不同防御动作有什么区别?这就需要我们结合受伤动作一起进行考虑。在这里我们首先指出,对于大部分敌人而言,动作3100和3101的骨架完全相同(也就是玩家看到的是敌人做出了完全一样的动作),而区别在于,动作3101的前一小段时间会给敌人自己施加一个特效200220,该特效是所谓的“可弹开特效”,关于它的具体作用我们马上就会说明。而关于其余的防御动作,一般而言是用于特殊情况,例如,防御玩家的连招攻击时采用的防御动作。它们一般带有特殊的特效,用来保证当防御玩家相应攻击之后会做出正确的动作。

接下来是表现动作。广义上也可以叫“受伤动作”,在动作编辑器中以8xxx的格式出现的动作我们一般都可以认为是特殊的“受伤动作”。除去传统的,当敌人因为直接承受了攻击从而做出了相应的硬直受伤动作以外,这里还包含了敌人防御结果的表现。例如,当敌人招架攻击的时候做出的动作当敌人弹开攻击时做出的动作在这里我们也都分为此类中,便于讨论。另外的,还会有当敌人的攻击被招架或者被弹开时做出的动作,不在我们这个条目的讨论范围之内。

那么接下来就是我们这一部分的重头戏了:防御动作与表现动作是如何共同作用,或者说联动,以起到敌人对玩家,或者其他敌人的攻击做出一系列反馈的效果的呢?。步骤大致如下:

  1. 首先,敌人面对针对他的攻击,做出了相应的防御动作,这个过程由AI控制(当然如果敌人此时不满足防御的条件,也可能做不出防御动作)

  2. 攻击判定命中了敌人,此时判定敌人受击。但是具体如何受伤以及如何相应,则由很多因素决定。

  3. 受伤根据敌人当前所处的状态,攻击者和受击者身上的特效等等诸多因素给出受伤的结果(例如直接命中、成功招架、成功弹开),并且造成相应的伤害、削韧等数值改变。最后再根据招式的冲击力、伤害的判定结果以及无法在这里遍历的很多其他原因,敌人做出最后的受伤后动作。


这里说一个比较简单的例子。玩家蓄力R1试图突刺剑圣,则剑圣根据AI结果做出了3101号动作来进行防御。玩家的攻击命中了剑圣,此时剑圣的动作中有防御判定,并且剑圣的身上还有200220特效,于是受伤结果判定为弹开。于是具体表现为玩家被剑圣弹开做出了被弹开的动作,剑圣则中断防御动作做出了相应的弹开动作。同时根据受伤结果的判定,剑圣免疫本次攻击的物理HP伤害,并且受到的躯干伤害减半。如果玩家的刀上有飞雪,则剑圣仍然要受到飞雪造成的少量灵属性伤害(锐利伤害在被敌人招架的时候一般会减少50%,但是一般而言敌人的招架和弹开无法减免属性伤害,这一点与玩家不同)。

在不考虑诸多复杂情况的前提下,一般的敌人均同理。只有在具有防御判定,并且身上有200220的特效情况下受伤,受伤结果会判定为弹开(只有200220特效是没有用的);如果敌人有防御判定而没有200220特效,则受伤结果则判定为招架,敌人做出相应的招架攻击的动作(当然一般而言做出什么动作还与冲击力有关);而没有防御判定的情况下被命中则会判定为直接受伤。

通用防御AI

在明确了敌人的一整套针对玩家攻击之后的交互过程之后,我们就可以讨论最基本的一条:敌人如何根据玩家的攻击选择该做出什么样的动作?为了解答这个问题,我们就需要提到敌人AI中的防御AI部分的内容。所谓防御AI,实则是变招计划的一部分。换言之,无论敌人当前的动作列表中有什么样的动作,一旦玩家尝试攻击敌人(准确来说,是敌人接收到了攻击信号),则敌人都会转而根据防御AI的部分做出相应的反应(当然,具体表现出来并不一定敌人真的会做出反应,例如敌人当前正在动作中,不处于可以输入其他动作的状态,那么敌人就会将当前的动作做完)

这里要小小的区分一个概念:敌人的射击防御防御并不是同一类型,或者说,因为它们检测的不是一个信号,所以它们在AI中处于不同的位置。不过由于前者比较简单,一般而言都是根据距离判断,直接,或者延迟一小段时间之后调用防御动作(当然也有特殊情况,例如心中的义父),所以在本条目中我们主要考虑后者。正如在本条目一开始所说到的,有很多敌人都有自己独特的防御AI,因此我们不可能在这里将所有敌人的防御AI全部都说一遍,而是只给出一个通用的防御AI。游戏中的很多敌人,从苇名普通武士到剑圣,采用的都是下面这个通用的防御AI。即使是具有特殊防御AI的敌人,例如老一心、义父等BOSS,其防御AI基本上也是按照这个通用AI做一定的调整得到的,因此我相信只要大家理解了这个通用的防御AI,就可以在很大程度上根据具体状况对所有敌人的防御做出一定的理解。

首先为大家介绍几个常用的特效

  • 特效109970:在玩家使用蓄力R1进行突刺,机关长枪的突刺类动作时候身上会带有该特效,可以简单称为突刺特效,敌人一般会判断此特效对玩家的突刺动作做出反应。要特别注意:敌人的突刺动作一般不带有此特效,这就是为什么一般在BVB中敌人无法弹开突刺的原因。
  • 特效109980:玩家使用吹火筒吹火或爆炎,以及鞭炮(有待补充)时身上带有的特效,用来识别不可防御动作
  • 特效109990:俗称连招保护,是玩家的很多动作中都带有的特效,详情可以在各个武技或者忍义手的条目中进行查询。

下面是敌人的通用防御AI如何判断应对玩家的攻击做出何种动作的具体流程,请记住防御AI只会在检测到玩家的攻击信号时才会生效,否则不会调用此内容

通用防御AI有4个可以修改的参数(也就是根据不同的敌人,这4个参数可能出现差异):

  • 连续招架权重表示连续招架计数器的权重,如果不给定则默认为50。简单来说,这个参数越大,AI就更加倾向于更少的招架动作之后就选择弹开。
  • 后撤概率表示敌人的“谨慎程度”,如果不给定则默认为0。它表示敌人在面对其实打不到自己的攻击时将会有多大的概率选择后撤。
  • 后撤类别表示当敌人的防御AI判定敌人此时需要后撤时采用什么动作进行后撤。一般的敌人会有两个后撤动作,在动作编辑器中为5201和5211。通常来说前者更像“后垫步”,后者更像“后撤步”。本参数在不给定的情况下默认为0。本参数为-1表示敌人的防御AI屏蔽后撤动作(也就是下面的所有后撤动作全部不生效,但是敌人的其他计划中仍然有可能后撤);为0表示选择5201进行后撤;为1表示选择5211进行后撤。
  • 连招防御动作是敌人在承受玩家的连招时采取的特殊防御动作在动作编辑器中的编号,如果不给定则默认为3100。


通用AI的内容

在下面的AI中,都以“自己”表示这个敌人,“玩家”表示这个敌人的目标(其实可以是其他敌人,这里不妨统一认为是玩家)。

  1. 记录NPC的防御类型。这里的防御类型根据不同NPC身上的与防御有关的常驻特效决定,具体为特效221000、221001以及221002,我们分别用0型、1型和2型来指代这三种防御类型。如果敌人身上没有这三种常驻特效中的任何一个,则我们称这种敌人的防御类型为-1型

  2. 首先判断,在一系列的情况下,NPC将放弃防御。这些情况包括:自己身上有220062特效,推测为“穿着不合身的铠甲”的状态(有待确定);自己的防御类型为-1型(很多霸体型的敌人);玩家的身上带有特效110450、110500、110501之一,这三种特效分别为玩家使用秘传·一心的出刀第一刀,使用绝技·巨型忍者突刺以及秘传·巨型忍者落杀的突刺动作以及起跳动作所具有。这代表着上述动作无法被采用本AI的敌人以任何形式防御(对于大部分不采用本AI的敌人也是这样,只有极少数例外);当前防御处于CD中(一般来说不太会出现这种情况)。

  3. 明确不会出现上述情况之后,给防御动作一个0.1s的CD时间。然后进行一个方位和距离的判断。具体则是一个以自身的位置出发,朝向当前面向方向的一个圆心角为90度的扇形(左右对称,即向左45度,向右45度),半径并非固定,视情况而定(实际上是我不知道,但是对理解影响不大)。如果玩家在这个扇形之内,依次进行下面的子操作:

    1. 玩家身上带有109990特效,则直接调用动作连招防御动作进行防御。请注意,这里并不一定是普通防御动作3100,而是根据这个敌人的AI当中连招防御动作处写的是哪个动作决定。

    2. 玩家身上带有109970特效,则根据防御类型选择对应的策略:0型防御则直接调用动作3101(即表现为直接弹开玩家的突刺);1型防御则生成一个1至100的随机数并与50比较大小决定是否调用3101动作(即部分敌人面对玩家的突刺会有一半的概率弹开,其余一半的概率无反应);2型防御敌人放弃防御(部分敌人不会防御玩家的突刺)。

    3. 如果防御类型为0型,并且玩家身上带有109980特效,则根据上面提过的后撤类别参数决定采取相应的后撤动作代替防御。

    4. 在上面的情况都不满足时,生成一个1至100的随机数并与“连续招架权重*连续招架次数”比较大小,如果后者更大就采用3101动作进行防御,否则就采用3100动作进行防御。在默认arg2=50的情况下,敌人就表现为:1次招架之后下一次攻击有50%的概率弹开,2次招架之后下一次攻击必定弹开。当然,也并不是所有的敌人都有连续招架权重=50,例如剑圣 苇名一心就有连续招架权重=100,表现为必定在第2次弹开。

  4. 如果玩家不在上述范围内,则将扇形的半径扩大1米重新检索。如果玩家在这个区域内,则以后撤概率%作为概率(同样是用随机数的方法),根据后撤类别来做出相应的后撤动作。

  5. 其余情况下,放弃防御(一般来说是玩家过远或者不在自己面前)。

其他的一些讨论

1、在游戏中,采用通用防御AI的敌人非常多。不仅仅是小兵和精英敌人,有很多BOSS采用的也是通用防御AI,例如上面说到的剑圣 苇名一心,再比如说幻影破戒僧以及宫内破戒僧的前两个阶段(其最后一个阶段不会调用防御AI,也就是永远不会防御)。当然,即便是采用通用防御AI的敌人,也会根据其中具体参数的差别使得其防御行为发生很大的改变。例如参数中的连续招架权重对于游戏中大部分敌人而言为50,也就是连续招架的第二次有50%的概率会弹开,而如果第二次没有弹开,则第三次必定弹开。当然例如剑圣 苇名一心,以及苇名弦一郎等敌人此参数则为100,也就是必定在第二次连续招架时弹开(事实上苇名弦一郎采用的不是通用防御AI,但是因为其防御AI与通用防御AI没有什么区别所以作为例子也未尝不可)。值得一提的是,譬如盗贼等部分敌人的连续招架权重为0,也就是玩家连续对其进行攻击的时候他不会转为弹开,从而玩家可以不断攻击直到使其失衡。


2、游戏中不采用通用防御AI的敌人例子也非常多,这些敌人的防御机制大多对于玩家的某些攻击有特殊对策。这里以几个敌人举例。BOSS巨型忍者 枭在检测到玩家的突刺信号的时候(并且不带有武技绝技·巨型忍者突刺秘传·巨型忍者落杀的特有信号)会采用识破动作来代替防御。BOSS苇名一心(这里指的是老一心)则有2点主要不同:其一,他会检测玩家的攻击是否带有秘传·一心的信号,有则会采取一系列相对复杂的机制进行应对。换言之,老一心对玩家的秘传·一心武技有特殊的应对策略。其二,当老一心身上带有特效3540020时(这是一个老一心专用的识别特效,在老一心很多攻击动作的后摇,以及老一心与玩家对峙侧移等动作中都带有该特效),如果检测到玩家的攻击信号(并且自身处在可以输入防御动作的时间段内),则会用心眼侧闪来代替防御。当然游戏中不采用通用防御计划的敌人很多,除了上述2名在游戏中明显能够感觉到的敌人以外,还有很多敌人有独特的防御AI,能够对玩家的一些动作产生特殊的防御对策,这些留给玩家们自己去寻找或者总结。


3、关于射击防御。在敌人的防御AI中,除去一般的防御以外还有单独的射击防御的部分。事实上,射击信号与攻击信号是完全不同的两种信号,因此敌人对“射击类型”的攻击(准确来说是带有射击信号的攻击,与伤害类型中的射击伤害类型不完全重合)采取的防御对策与一般的防御完全不同。玩家可以明显感觉到即便使用手里剑蓄力对敌人连续造成3段伤害,敌人也不会弹开,原因就在于此。值得一提的是,武技秘传·龙闪带有射击攻击信号,会引起敌人对射击的防御。

3.5、子弹断连。子弹断连是射击防御的一种衍生现象,实际是FS官方编写敌人AI时的一个小纰漏,具体表现为,在一些敌人的连贯动作combo中(例如老一心二阶段的【一文字火+二段地火】,长爪蜈蚣的【右手起手三连抓+七连抓】),在第一段动作的前摇中使用手里剑等子弹类攻击(并不局限于可见的子弹,火附魔后平砍发射的隐藏火子弹【用于触发红眼惧火硬直】,鞭炮前摇发射的隐形子弹等等都能触发),会使得敌人在第一段动作结束后直接结束combo而不是正常进入第二段动作。

  • 其前置条件为:1.AI检测到子弹,2.AI对子弹的应对:清除子计划,做出防御动作,3.当前动作不允许转防御
  • 结果:1. AI清除当前动作后续combo,转入子弹应对计划,2. 当前动作不允许转防御,于是后续输入为空,不做动作,3. 因而表现为连贯的两个动作combo,做完了第一个动作而不释放第二个



4、关于不同冲击力的防御。或许玩家能够从经验上总结出敌人不会弹开低冲击力和高冲击力(这里一般指1级和3级,见冲击力系统)的攻击。严格来说这是一个曲解。事实上,玩家能够造成低冲击力伤害的方法有限,大部分或者为射击攻击(例如手里剑),或者带有连招保护特效(例如飞渡浮舟),因此不会直接被敌人弹开。而对于高冲击力的攻击,也并不是完全不会被敌人弹开。事实上玩家的高冲击力攻击的招架不会被记录到敌人的连续招架计数中,因此即便玩家连续造成高冲击力的攻击,例如一字斩·二连,也不会被敌人弹开。然而如果玩家在高冲击力攻击之前已经连续造成了数次一般冲击力(2级或更低)并且引起了敌人的连续招架,此时敌人完全有可能弹开玩家的高冲击力攻击。比较典型的情况就是玩家的绝技·飞渡浮舟秘传·飞渡漩涡云的最后一刀具有高冲击力,但是仍然会被敌人弹开;以及玩家在空中释放机关斧(2级冲击力)并且连斩(3级冲击力),则连斩有可能被弹开。玩家可以自行尝试,在敌人招架蓄力手里剑之后立即使用一字斩,时机合适的话可以看到敌人弹开一字斩。


5、关于一心中段姿态。在剑道中,中段动作是一种双手持剑置于身前的动作,兼备进攻转换与容易防御的优点。在游戏中,一心的很多动作都带有这个中段姿态,例如掌推接突刺的后摇,例如一字斩的后摇,再例如向玩家右侧(一心左侧)荡刀之后在玩家右侧与玩家对峙。这些中段动作本身带有防御判定以及弹开特效200220,这就意味着玩家在一心的中段动作期间尝试攻击,则一心会直接弹开玩家的攻击。注意这与上述防御AI中提到的调用3101动作进行弹开的情况不同,因为此时一心是因为该动作本身的特性弹开玩家的攻击而非调用了防御AI,因此玩家的任何攻击此时都会被弹开,例如手里剑(虽然带有射击信号,但是此时一心根本没有检测玩家的射击信号再做出射击防御,而是直接用该动作本身进行了防御,后面同理),不死斩等。用一种不恰当的比喻,中段姿态下的一心就好比正在握着一把一直旋转的机关伞,不需要特别做出防御动作就能自动弹开任何袭来的攻击。