黑龙AI重构的最后一块拼图,黑龙THK文件主要分支完全解读
九世深渊
编辑于 2024年05月21日 19:55

前言:虽然黑龙的给招总是让我们感受到概率的美,但是在纯概率的反面,代表着连续6个360、6个扇形火也不是没有可能。这些一次次判定的概率,他总是给予刷片大佬们希望。

——目录——

第一章:一次攻击完整的判定

第二章:部分功能函数的条件

第三章:控制黑龙额外出招的参数-计数器

第四章:计数器的漏网之鱼,连段

第五章:黑龙动作的连续性,转身和后退+攻击多重判定

第六章:决定给招的因素,角度,站位

第七章:实战中会大量用到的概率

第八章:实战中会出现的计数器额外招判定

第九章:总结

——————————————————

第一章:一次攻击完整的判定

为了更浅显的明白本文大部分内容,首先给出一个大致的概念。

黑龙给招一次完整的判定,经过计数器,特殊条件判断特殊给招,给出特殊给招时,AI重置,从头开始第二次判定。

特殊条件皆不满足才在最后进入常规给招AI,决定最后出招后随着攻击结束,一次AI流程结束,AI重置(同前)。

黑龙AI总控位于00.thk的node_000,先给出代码内容

黑龙飞行给招AI位于node_008

黑龙地面给招AI位于node_009

(186行代码太长了就只放开头)

上图看不出任何所以然,(因为我只是展示给不会自己开文件看的人)所以我把我加了注释的表格截图贴上来。

看主要逻辑注释,可以看到黑龙在代码上,烟雾判定就是要先于血量,然后才是高台,反钩爪,最后才是常规给招。

但是这只是浅层的,不难发现,黑龙攻击分为,主要攻击,特殊条件攻击(反钩爪,反高台,反瓦砾)和条件攻击。

其中,如果在主要攻击之前,满足了条件攻击的条件,多数情况就会不判定主要攻击直接重置AI。

因为黑龙给招是基本随机的,可能很多人会认为,就算主要攻击被条件攻击截胡了,也不会影响什么,但是我先给出一个结论,所有条件攻击,都没有连段扇火。

本人前文提到过,扇火前置招在非开局的情况下都有35%的概率800距离外转扇火。就拿大拍来说,如果是条件攻击中的大拍,后续不接81直接扇火代码的情况下,他是不可能转扇火的。

(再补充一下,2,3阶段孕吐不转扇火自不必说,远程AI中,连段地毯和普通地毯是共存的,确认一下发现,连段地毯是必接扇火的,在一般代码中,连段地毯占地毯的1/4左右。当然,条件攻击中没有连段地毯)

条件攻击中没有连段扇火仅仅只是一个例子,旨在告诉正在看此文的各位,要极大程度的避免条件攻击。

——————————————————

第二章:部分功能函数的条件

在上一章中,已经提到,条件攻击基本导向的都是不太好的给招。

所以,我把所有在主AI中出现过的条件写成独立的攻击判定,每一个条件都会导向独立的招,只要出现了该招,证明满足了该招的条件,从而反向解析。独立代码的内容如下。

经过第一局初步测试,第二局完整参数再测试,第三局完整参数后第二次测试的三局完整战斗。我得出了以下初步结论。

(以下给招均为改代码导向的单一的招,和正常黑龙AI没有任何联系)

黑龙在地图诸多站位都会使用直线火(但是水潭不会)

在使用烟雾弹时,黑龙会使用单火球

在黑龙和我们视野有遮挡时(或者特殊碰撞箱),比如躲在掩体后面,使用弩枪+速射炮,攀附在高台绳网上时,黑龙吐痰

在一阶段瓦砾中,黑龙使用2足车

使用投射器全弹发射后,黑龙使用4足车(仅出现过一次,疑似还有别的条件)

三阶段后,黑龙一直使用后退火(只有第二局如此,第三局一次后退火都没有。第二局打了很久,推测和时间也有关联)

被黑龙击飞时,受小伤害坐倒时(小咬,小拍),被下压起身时(被下压躺在地上时不判定,要挣扎起身时判定),黑龙使用扇形火

根据出现招式的场合,我整理了条件的内容解析,截图如下(部分参数是做解析代码需要的注释,和条件攻击无关)

(10E已经测试过为黑龙开局,故不多加测试)

可以知道,其实大部分条件攻击的触发条件都很难复现,刷片中最需要注意的就是受击条件self.target.helpless_0(),还有视野遮挡条件function#10D()。

其余整局中从未出现的其他条件,或许会有刁钻的条件控制,所以即使如此也不能放松警惕。

——————————————————

第三章:控制黑龙额外出招的参数-计数器

黑龙二三阶段7招转状态作为一个人尽皆知的机制,在AI文件中,也是有专门的计数器控制。相对应的计数器增加,计数器重置都是不可忽视的一环。

计数器很多时候和概率有关,比如高于某个值是概率判定,而是更高的某个值时,就是必定判定。

就比如说下压,黑龙在一阶段的主要攻击中,无论是任何距离,角度,都不会有下压的攻击判定。

但是如果控制趴下的计数器在大于等于7的情况下,有15%的概率导向近距离下压,远距离时快速趴下并重置AI。计数器大于等于15的情况下,此时的概率为100%。

又由于,计数器起始是0,未导向趴下代码时计数器+1从而等于1,接着黑龙使出第一招。

也就是说,运气足够好的话,计数器因为14小于15从而通过了第15招攻击之后,在第16次攻击判定中,计数器会因为15等于15以100%的概率使黑龙导向趴下代码并重置第16招。

所以有了一阶段15招内必定趴下的说法。

在知道这些信息后,AI文件中通过何种方式可以重置计数器便成为了我们最想知道的数据。

这里就不在过多赘述,直接上图。

最需要值得注意的是有以下几个:

计数器0,1分别控制了2足,4足的转状态

计数器3,4分别控制了地面,飞行的装状态。(4足原地起飞,2足后仰跳投)

计数器5,7招后一阶段2足车的15%额外概率判定(当然会重置掉后续主要给招)

计数器10和11控制了黑龙不会2连吐痰和2连4足车

也就是说,在最理想的概率里,一阶段15招之内不转状态,计数器5的额外车一直不触发,2,3阶段50招前不起飞,起飞3招直接飞下来。

——————————————————

第四章:计数器的漏网之鱼,连段

看完第一章和第二章的观众,想必猜想到了主要攻击AI后续还有的109代码还有上场的机会。109代码通过self.target.helpless_0()受击反应和2,3阶段113(3,40)未知条件概率判定,满足其中一个条件即判定概率,最高50%。

经过第二章的测试我们也知道113(3,40)是一个未曾触发的代码,所以我们可知,实际生效的只有被击飞的50%概率判定。又因为此代码是由被击飞判定的,所以我称之为压起身连招。

压起身连招相对来说,虽然没有87的地毯扇火连段,但是只要是大拍,孕吐,痰,全部都是扇火连段。这下扇火武器不仅要刷扇火连段转扇火的35%概率,还有被击飞50%转压起身连招也要刷脸了。

此外,我们还知道扇火连段的,大拍+扇火,孕吐+扇火,地毯火+扇火,痰+扇火共计4个招式,后面接的扇火大概率为连段扇火(地毯火100%,其余35%)。(如果下一招是81直接扇火...金龙别来凑热闹,出门右转请)。

对于压起身连招和连段扇火,他们有一些共性:两招只算一次计数;红烟无效,高台检测无效,反钩爪无效的注意点。因为这些机制是在下一招判定前检测的,如果是连段的话,因为黑龙的下一招早已经决定好,所以黑龙不会有额外的检测。

然后,因为开局不扇火,比较常见的像大拍,孕吐触发连段代码时,AI会随机选择单火球,三连火球,直线火和正面地毯。此时两招合计只计算一招,给到了更多的输出时间。

以上连段,如果加上15招不转状态,运气足够好的话20招不转状态时是容易达成的。(对于普通黑龙,难点在于15招之内不转状态)

——————————————————

第五章:黑龙动作的连续性,转身和后退+攻击多重判定

经过前面内容的观看,不知道你是否队黑龙的Ai的完整逻辑有了深层的认识。请试想一下,黑龙的AI是以最后的攻击结尾的,那请问,2足的转身+正面地毯和4足的后退+后退火,这里面的转身和后退,算一次完整的给招码?

黑龙的转身和后退由55文件中的node_52和node_59分别控制。黑龙在任何时候都不会让转身和后退成为一次AI判定的结尾。(由攻击代码中没有该代码可知)

如此,我们知道转身和后退并不算一次攻击判定的终结,而是攻击代码的前置。所以我们可以认为转身和后退也属于第四章提到的连招。既然是连招,那么红烟,高台,反钩爪自然不会检测。

黑龙绝大部分的招,都会先判断角度和距离。比如说在背后,那就先转身再攻击(在背后随机到正面地毯的情况);近战招贴的太近了,那就先后退再攻击(脖子距离随机到小咬的,人物却到了胸下时)。

(75是正面地毯,93是小咬)

看代码,我们发现,小咬并没有对于角度52代码的检测,其实是因为,黑龙有一部分招没有角度的限制,可以在任意角度直接转身使用,典型就是2足前进火和4足的小咬。

在我们想要转身这个动作给与我们更好的输出环境时,我们就需要知道哪些代码有转身判定(虽然对提升黑龙金度没有任何作用)。

直接给出结论。

2足时,小拍,正面地毯,81代码扇火(连段扇火都没有转身判定,但是在背后不判定连段),孕吐,后仰跳投,有转身判定,其余招都是直接给招不转身。

4足时,大咬,后退火/前进火,蓄力火,有转身判定,其余招都是直接给招不转身。

——————————————————

第六章:决定给招的因素,角度,站位

现在我们已经知道了,黑龙转身和后退完全是以距离和角度控制的,那背后的扫尾和侧面的侧面地毯,他们又是怎么判定的呢?

在此我想先告诉各位作者在刚接触AI重构时的经历,请允许我插入在文章之中。

最开始研究AI,我并不知道转身,背后招,侧面招是如何工作的,于是我在攻击AI的最前面加上了角度的判断,如果在黑龙正后方180度,那么黑龙只会转身(因为扫尾很难处理),然后我根据黑龙吐火球扭头角度判读,写入了正面60度可以三连火球,正面地毯,扇火的出招AI。然后在两边侧面的30度,黑龙随机侧面地毯和车。这就是我的初版太刀黑龙,体现了当时我对黑龙AI浅薄的理解。

作者第二版的mod是怎么设计的往事就不提了,直接告诉各位结论(算是看了我故事的补偿)。

图可能看不太懂,那就先拿黑龙2足状态举例。在900距离内,正面30度(左30度+右30度其实是共计60度的夹角)算正面,导向正面给招。从黑龙侧面来看,侧面60度(也就是圆的30度到150度,210度到330度)算侧面,导向侧面给招。黑龙背面,背后80度(就是100度到260度)算背面,导向背面给招。其中,背面和侧面有重叠,是为100~150,210~260。

单看文字可能很难看懂,我们通过图片辅助理解即可。

(近战AI图解)

(远程AI图解)

其中,黑龙2足时,900距离内为近战AI区,此外是远程AI区。4足时,1500距离内为近战AI区,此外是远程AI区。

好的,到这里想必你也能理解黑龙出招逻辑了,黑龙优先判定距离,然后判定角度给招。判定角度的最终导向只有会不会出特定区域的招,比如三阶段黑龙正面不会出左右后退火。

那我们带入黑龙的图解,黑龙在正面是常规出招,侧面出侧面地毯,背后出扫尾。侧面和背后的重叠处,理所当然的,侧面地毯和扫尾都会出。好的,以上的内容没有了。

想必你会觉得很奇怪,这就没了?我看刷片的居登2足车全是扫尾,b站还有5连扫尾的,你这就没了?对此疑问,我的解释是,黑龙在对应的距离,无论任何角度,都可能出任何正面招。侧面和背面只是在共计100的概率中,分出了25%左右的概率给了该站位特殊招。

你肯定很好奇怎么可能,所以我拿最常见一阶段远程引招距离的各角度招式概率拿来举例。

(一阶段黑龙2足远距离2000内,正面和侧背面和背面给招)

(一阶段黑龙2足远距离2000内,侧背面和侧面给招)

稍加解析,70为单火球,71为三连火球,62为普通痰(为零是因为一阶段),75为普通正面地毯,87为地毯扇火,76为直线火,81为扇火,82为车,85为前进火;69为扫尾,80为侧面地毯。具体代表着什么请你自发思考一下。

本章内容,其实我只是想告诉在读此文的你,只要在正确的距离,无论任何角度,都是能扇火的(所以我说最金的81代码,因为正常黑龙直接扇火的概率实在不高)。

(提醒一下,4足正面地毯是正面区域特有招,不会在其他角度使用)

——————————————————

第七章:实战中会大量用到的概率

由于很多武器在引招时的站位基本差不多,所以专门开一章说明概率。

首先是开局,开局18S左右不会扇火自不必说,或许开局引孕吐开力解然后拍怒,引扇火才是通解呢(开玩笑的)。

(55_081直接扇火代码内容)

合适的头前位置有20%的直接扇火概率和10%概率的地毯扇火连段,概率还是很高的。不过,三连的17%概率确实有点低了,太刀刷脸刷到哭死。

(代码具体概率请看上一章内容)

对于大剑,由于压起身连段的存在,被扇形火炸到胸下出压起身大拍,那还是概率挺高的。而且计数器只加了1。50%概率压起身连段,15%大拍,10%孕吐,后续都有35%概率扇火

(压起身连段正面概率)

对于居登2足车,视距离和角度(侧面和侧背面和背面)太刀侠有最高共计45%的概率派生重置。

(图请找上一章内容)

1转2,地面远距离(1000以外)引z火概率为35%(120为z火,121为直线火,116为单火球,117为三连火球,124为俯冲)

(飞行远距离AI)

黑龙飞行,而我方在高台时,单火球+落地概率为30%,其中,15%概率的飞行单火球是不会后接落地的(除非第七招是飞行单火球,且你还在高台);

高台双真蓄,需要在有绳网的高台边缘有动作(无论是攻击还是行走)才会判定成地面,从而以35%的概率随机第二个z火。高台给招中,没有z火。

(飞行高台AI)

三阶段空战,3招后有15%的额外概率降落,7招后为100%。(经查证,55文件中所有的降落代码都有重置var4的代码,只要能打断落地,可以一直飞行攻击。实属个人疏忽)

(飞行时3~7招飞下,否则清空计数器4)

(飞下代码,高台时降落,否则俯冲)

2阶段2足头前概率,和4足头下概率(正面)

(93小咬,94大咬,92正面地毯,107蓄力火,104车,115后撤地毯。)

2转3经常使用,飞行时反钩爪概率

(从上到下依次是:重置飞天给招的俯冲,直线火,孕吐,z火)

三阶段2足胸下正面和侧面,和头前正面出招概率

三阶段4足500距离内(胸侧),和头下正面出招概率

(114为360,101是前进火/后退火,100是侧面地毯)

——————————————————

第八章:实战中会出现的计数器额外招判定

计数器控制了额外招式的判定,在导向该额外招时,AI还会对敌人的位置进行二次判定。举例为一阶段2足7招后随机到趴下代码,1000距离内下压,否则直接趴下。(91为下压,14为趴下)

与这类似,一阶段4足7招后的起身代码,1000距离内判定起身蓄力火,否则直接站起。(108为蓄力火,16为站起)

还有的场合就不放图,直接用文字记录。

飞行攻击3招后有额外15%的概率直接飞下并重置AI,7招后100%概率飞下。(只有地面攻击才能重置此计数器,所以飞行攻击超过7招后,,不会再导向攻击代码)

二阶段开始,地面给招开始计数,35~49时,10%的额外概率判定是否起飞。该值为50时,100%概率起飞并重置AI。

二,三阶段2足时,2足攻击计数器大于等于7时,必定使用转状态招并重置AI(不同于飞行,3招及之后没有小概率判定)。1000距离内,65%概率下压,35%概率孕吐;否则车。

二,三阶段4足时,2足攻击计数器大于等于7时,必定使用转状态招并重置AI(7招前没有判定)。1000距离内,起身蓄力火;否则车。

以上

——————————————————

第九章:总结

什么,文太长了想省流?你给我从头看起!(等作者哪天心血来潮了,再补上总结吧。不说了,冰原启动练技术去了。~2024-5-18)

——鉴于看的人多了起来,全面的总结一下本文涉及到的AI全解——

首先,解释黑龙攻击逻辑,黑龙的所有检测(烟雾,血量,钩爪,高台)都是在攻击之前判定的。

其次,解释连段。扇火连段:黑龙的大拍,痰,孕吐有35%的固定概率转扇火,远程AI中近1/3的正面地毯后面必接扇火。压起身连段:黑龙的攻击使敌人有受击反应时(坐倒在地,击飞,下压爬起时)有50%的固定概率追加攻击,此连段的正面地毯,不会接连段扇火。

还有,黑龙看向敌人的视野内如果有碰撞箱(石桩,速射炮,弩箭,攀附在高台绳子上),有大概率会车。

所有连段,都不会检测烟雾,血量,钩爪,高台,(硬直和紫烟会中断黑龙AI请注意)。

关于计数器,除连段,反钩爪,反高台,反瓦砾外,所有攻击都会计入地面计数器。然后,黑龙的所有地面攻击都会计入飞天计数器。

黑龙的所有攻击,都是优先判断距离再判断角度的,角度只会使该区域的特殊攻击(侧面:侧面地毯,背面:甩尾)挤占30%的正常给招概率。所以全角度,都能使用该距离的招式。对于在黑龙背后时,黑龙的部分招式,会先使用转身,后使用该招(转身也算连段)。

——以上为总结前的复习,以下为总结——

黑龙在开局时,一阶段第7招之后有15%的额外概率判定车,还有15%的额外概率判定转4足。其中,车出来之后,还需要7招才能再次触发;转4足的判定,15招之后必转。

关于扇火,黑龙头前有20%的概率是扇火,正背面10%,其余15%。扇火在连段扇火中,需要在正面180度之内,且距离远于黑龙下巴。背后扇火,黑龙会转身接扇火。

关于三连,黑龙头前有17%的概率是三连,侧面20%,其余15%。

——————

黑龙在二阶段开始,人物在高台时,有30%的概率单火球+落地连段,黑龙飞行攻击3招后,有额外15%的概率判定转状态,人物在高台时降落,否则俯冲。

其次,黑龙在二阶段开始,人物在地面时,有30%的概率Z火。人物在高台的绳网边缘进行任何的攻击,行走(朝着外侧),都会判定成地面,此时也是30%概率Z火。

黑龙在地面单一状态攻击7招后,必转状态,2足胸下65%概率下压,35%概率孕吐,头外则车。4足头内,蓄力火,否则车。

关于扇火,黑龙头前有20%的概率是扇火,正背面10%,其余15%。

关于三连,黑龙头前有15%的概率是三连,侧面20%,其余皆为15%。

——————

黑龙在三阶段开始,人物在头下,黑龙有20%概率Z火。之后钩爪上身时,有35%概率直接俯冲(钩爪的判定时间宽松,从人物按下钩爪发射到软化攻击落地或者按下脱离钩爪,都是反钩爪AI)。飞行攻击3招后,依旧有额外15%的概率判定转状态,人物在高台时降落,否则俯冲。飞行攻击7招后的降落不被打断的情况下,不会再飞行攻击。(旧结论为7招之后不会攻击,此为个人疏忽,55文件中所有的降落代码都有重置var4的代码,只要能打断落地,可以一直飞行攻击)

和2阶段一致。飞行计数器,地面攻击35~49招内,有额外10%概率判定起飞,50招之后必起飞。

关于三连,黑龙头前有15%的概率是三连,侧面20%,其余皆为15%。

关于扇火,黑龙头前有20%的概率是扇火,正背面10%,其余15%。

关于360,黑龙两侧胸下有40%的概率是360度喷火。

关于趴下蓄力火,头前有20%的概率是蓄力火,背面和侧背面为10%,其余15%。

(~2024-5-21)

——————————————————

最后,作者的话

我研究AI并自发写mod去测试金龙mod是因为,我想看到一把武器的上限。

一把武器的上限,他不该看黑龙给招金不金这样的概率,他是黑龙给招金+该武器的使用者他的实力。

很显然,从2月中旬就写了初版mod,直到今天都没有打出过一次完整的演示片的我,不是那个拥有实力的玩家(甚至锁百会都刷不出来)。

但是我不会放弃,因为我从始至终只是想看到一把武器的上限,无论这个片是不是我打的。

我不会在这里比较TA规则和THK规则,因为两者确实没有任何可比性。

但是,我在此衷心的希望修改了AI的人能打出一个记录后,能够明说他修改了AI。

虽然这样就不会是TA新纪录了,但这至少是理论上限。

以上

(补充:作者自己整理的AI注释表格会公布在评论区,写过的mod在合适的时候会发布(或许是很远的将来))