【只狼】AI的防御機制
本來想出一期視頻講講彈開機制的……但是這個真的有點復(fù)雜,一時想不好怎么精簡所以一直在摸,今天結(jié)合AI的防御機制一起聊聊吧,本專欄分為以下幾個部分:
一、受傷的結(jié)算方法
二、AI如何確定防御動作
三、特殊情況討論

一、受傷的結(jié)算方法
AI防御和玩家防御在結(jié)算時很像,都是:
做出一個防御動作→受到傷害→判定對該傷害的防御結(jié)果→做出對應(yīng)的動作
比如玩家做出原地防御的動作,0.3秒后受到傷害,此時玩家不處于“可彈開”時間(說白了就是防御鍵按早了),因此防御結(jié)果為“招架”,并做出對應(yīng)沖擊力的招架動作;
劍圣在被打時也類似:如玩家平砍,劍圣收到攻擊信號后做出防御動作,緊接著受到傷害,此時劍圣不處于“可彈開”時間,因此防御結(jié)果為“招架”,并做出對應(yīng)沖擊力的招架動作。

那么玩家和AI最根本的區(qū)別在于,玩家的防御動作前半段有“可彈開時間”,而后半段沒有;
AI則不同,他們根據(jù)需要選擇有“可彈開時間”的防御動作,或者選擇沒有“可彈開時間”的防御動作,那么AI怎么選呢?

二、AI如何確定防御動作
AI選擇防御動作的參考因素比較多,先來一個最基本的:

首先,如果當(dāng)前壓根不能防御,比如正在出招中,那肯定不防御
其次,面對突刺則是直接選擇彈開,那么突刺指的是:原地蓄力突刺,長槍直接突刺,長槍突進的最后一下、巨型忍者突刺;在這之中最特殊的為巨型忍者突刺,由于攻擊距離遠,傷害判定的持續(xù)時間長,一般不引起AI的防御,平田義父在識破玩家的巨型忍者突刺時也有特殊的機制。NPC的突刺一般沒有此特效,所以不會引起另一個NPC的彈開,bvb作者可以留意一下。
第三,就是109980特效,當(dāng)NPC收到攻擊信號時,如果玩家身上有這個特效,那么NPC將被迫選擇后撤(但是我并不知道玩家何時會帶上此特效,實戰(zhàn)了一會也沒發(fā)現(xiàn)身上帶了這個特效)
第四,就是109990特效,稱為“連招保護”狀態(tài),當(dāng)NPC收到攻擊信號時,如果玩家身上有這個連招保護特效,那么NPC將被迫選擇招架,而且部分敵人在招架連招時的動作也略有不同;這個特效一般出現(xiàn)在連招中,比如銹丸表1到5,再比如仙峰寺菩薩腳的回旋踢和兩刀追斬,叩拜連擊拳的肘擊等;而櫻舞這個趕工的東西,就沒有109990特效,所以彈開判定很迷
最后,就是連續(xù)防御,大多數(shù)AI在連續(xù)防御到第二次時就會選擇彈開。

三、特殊情況
特殊情況巨多,一個一個來:
1、NPC不會彈開
這種情況比如平田的山賊,那么很好,一直砍就可以砍死了,或者一直突刺他也防不住
2、隨機彈開
天守閣義父、幻影之蝶、凜、永真等有時候在第二下彈開,有時候在第三下彈開,這個確實是隨機數(shù)在起作用,和左右手無關(guān)。隨機規(guī)則和連續(xù)防御次數(shù)有關(guān),連續(xù)到第三次的時候不論隨機數(shù)是多少都必然滿足“引起彈開”,因此對銹丸表6的彈開不是隨機的,對連招的最后一下也不是隨機的(嚴格地說是隨機數(shù)在隨機范圍內(nèi)任取一個值都滿足引發(fā)彈開的判斷),如果平砍的時候第二下不是彈開,那么第三下就必然是彈開。
3、沖擊力的影響
這里稍微復(fù)雜點,一般1級沖擊力和3級沖擊力不引起彈開,玩家的1級沖擊力本身就不引起NPC的彈開(飛渡除最后一下、空中平砍、手里劍等為1級),這是因為玩家的一級沖擊力要么處于連招中,要么就是手里劍這種射擊類攻擊;3級沖擊力是可以引起彈開的,不過對3級沖擊力的招架動作不會被算到連續(xù)防御里(先一字斬再平砍不會引起彈開),而3級沖擊力被彈開的常見例子就是空中機關(guān)斧落地接追斬,先2級后3級且間隔較短,可以引起彈開,以及飛渡類流派的最后一擊,由于有多次連擊作為鋪墊,因此也能彈開三級沖擊力。
4、心眼、識破、永真居合等特殊防御
這三類都是提前判斷,比如在判斷是否是突刺時,如果是義父,那么他會選擇識破而不是彈開;劍圣則是直接判斷自己是否處于對峙狀態(tài)(劍圣一階段的所有移動類動作均帶有此狀態(tài)的標(biāo)識),如果是,只要收到攻擊信號就是一個心眼;永真則是先判斷自己是否在居合收刀動作中,如果是,則直接作出特殊防御動作(如果玩家是突刺的話,則會因為此特殊防御動作不可彈開而直接受傷,明示突刺永真)
5、中段構(gòu)架勢
第一節(jié)已經(jīng)說了,防御的流程是防御動作→判定→防御結(jié)果的表現(xiàn),但是中段構(gòu)則不同。先說什么是中段構(gòu),這個動作指的是日本劍道中雙手持刀刀尖向前的動作,劍圣掌推接突刺的突刺結(jié)束后就是這個動作,一字斬之后也是一樣。中段構(gòu)姿態(tài)下劍圣(永真的一字斬雖然一樣,但是由于被刪減了所以不考慮)本身就帶“可彈開時間”,不需要專門做防御動作,所以只有判定,以及對判定結(jié)果的表現(xiàn)(就是不用專門做一個防御動作)。打個比方,劍圣的中段構(gòu)姿態(tài)下肚子上有個機關(guān)傘一直在轉(zhuǎn),hhh
6、后撤
除了前面說的檢測特效的后撤,NPC也會在戰(zhàn)斗的其他時候直接后撤,或者用后撤取代防御,以此法后撤時或許也會計入連續(xù)防御計數(shù),具體就不清楚了,常見仙峰寺菩薩腳打劍圣時,劍圣先后撤然后馬上彈開最后一腳。
7、連招
連擊拳和連擊拳破魔,看似動作一樣,可是連擊拳在第二下被彈開,連擊拳破魔則在第三下被彈開;這是由于這倆動作壓根不是同一個動作……連擊拳的第二下沒有109990,而破魔拳的第二下有這個特效,所以引起彈開的時機不同;仙峰腳和仙峰寺菩薩腳的回旋踢同理,除了引起彈開的不同外,能輸入下一次攻擊的時機也不同,有后招的話,輸入的攻擊能更早生效;沒有后招的話,輸入的攻擊更晚生效,而且是平砍;比如裝備普通連擊拳,按三下攻擊,就是拳、拳、等、砍;破魔拳則是拳、拳、拳連打三下。對于用防御取消第二拳的后搖來說,倒是完全一樣。

總結(jié)Time
什么,你又跳到總結(jié)了?那好吧
1、經(jīng)驗上的一些內(nèi)容都是有道理的:突刺直接被彈開、連續(xù)防御兩次出彈開、連招過程中不會被彈開等等……
2、中段構(gòu)的彈開相當(dāng)于劍圣肚子上有個機關(guān)傘在一直轉(zhuǎn),劍圣不需要為這種防御做任何額外的動作
3、NPC一旦選定防御動作,也就確定了受傷時的防御結(jié)果