补丁详情

补丁简介

《无主之地2》机械术士DeathTrapAI改善修正补丁;为机械萝莉的Deathtrap制作的AI修正补丁,现在DT的行动将会更加的智能化,不像之前那么蠢了,感谢“lightrift2”制作,需要的玩家不要错过哦!

资源详情

这个补丁都做了什么?

首先 体现最明显的:

1. dt现在不会对着某些敌人(尤其是boss 比如威尔海姆或者武士)傻傻一直放电了,而是会使用能用的各种攻击,优先级为狂暴 激光 击掌 电球 普通近战 放电。其中,dt不会对空中的敌人使用狂暴 击掌 电球和普通近战,因为太慢了。

2. 把放电这样一个距离远 能对地的技能优先级置后,直接触发了dt的一个bug(我不清楚原来有没有,如果没有 是因为被优先级更高的射电覆盖了)。就是近战(包括狂暴和普通近战)有时候会卡住dt。具体触发是:dt追着敌人想要近战,而敌人正在移动 然后敌人突然停止并不再位移,正在追赶的dt就会一脸撞上 然后卡住。直到双方有一个先移动位置,否则就会一直卡着。这个bug我尝试了各种办法修复,但是全部然并卵。触发的几率不是非常高 但是着实让人讨厌。这个修复占用了大概十几个小时的时间(当然现在已经弄好了)。

3. 想要进行近战时(包括狂暴和普通近战),dt会优先绕到萝莉和敌人成的直线上,萝莉的另一侧。这么做原因有二 一是某种程度上防卡,二是有些敌人的判定很奇葩,比如威尔海姆 dt飞到他的腰后面近战攻击 是打不到的。这时玩家就可以通过自身的位移 来一定程度上控制dt的位置。

然后是一些细枝末节,玩得细的dalao们可能需要这些信息:

1. 不再傻傻对着某些敌人一直放电的原理是:dt的ai其实是在一直重复检查一个按优先度排序的队列,队列中的项是dt的不同行动。排得越靠前,这个动作的优先级越高。一旦它可以被执行(cd好了且执行条件满足),就会被优先执行。原版中,这个队列为:被召唤/时间到了消失/射电攻击/回盾/随机队列1/随机队列2/闲置/巡逻。其中,随机队列1包括四种特殊攻击:狂暴 激光 击掌和电球。随机队列2包括6种动画不同实质相同的普通近战攻击。问题就出在射电攻击上。一来 它排得实在是太靠前了,它cd一好,条件一满足就会被执行。二来,它的发动条件有问题,原版的条件是“目标是飞行的 或 目标不可以被相位锁定”。我反正是没看懂这个条件要表达什么...单是“或目标不可被相位锁定”,就足以让dt对着大部分boss一直放电了。在这个补丁中,射电攻击被调整到了相当低的优先级,它的条件也被改为了“目标不是友好的”。

2. 原本四种特殊攻击是包含在随机队列1里的,而随机队列1的发动条件是“目标不是友好的”。也就是说 最外层的优先排序队列从前到后,一遍一遍重复检查各个项目的发动条件是否满足,检查到随机队列1,发现dt现在的目标确实是个敌人,就会进入这个随机队列1,按权重(原版4个特殊攻击的权重相同)选择一个项目执行。这导致了dt在一部分情况下卡住。比如根据目标不是友好的这个条件进入了随机队列1,然后这四个攻击全正在冷却 或者条件都不满足,dt就会卡住一段时间。在这个补丁中,直接把这四项从随机队列1提出来 放到了最外层的优先度队列里。顺序是狂暴 激光 击掌和电球。这时,这个队列从前到后检查项目时,就会一并检查这技能到底在不在cd,能不能用了。这样修改给这四种攻击加了优先级,这跟原版不一样了。比如狂暴和激光都能用,dt会先想要执行狂暴。但是这实在是没办法......

3. 如果看下附带的excel文件 或者自己进游戏dump一下dt的ai设定,就会看到dtai的构成。其实是最外层一个优先队列,套着一些小的优先队列/顺序执行队列和随机执行队列。其中所有顺序执行队列(包括电球和狂暴)都会在某种程度上对dt的流畅攻击有卡的效果。具体原因我也解释不了,但是实验就是这样的。所以把电球从一个“电球-停顿”的小顺序队列中拿了出来,直接放到了外层优先队列里。这样做跟原版也是有区别的,失去了放电球之后的那个(说实话还挺长的)停顿。狂暴因为涉及过程太多,拿不出来。

4. 在射电攻击后调后,dt最严重的卡顿出现了。触发条件就是上面第二条说的,在面对一些喜欢“突然移动 然后停着好久不动”的敌人时很容易触发。在尝试了4天之后,终于找到了一个解决方案 就是给所有攻击都添加一个失败时间,就是如果dt要做这个动作,而因为什么原因 失败时间过了还没做成功,就算作这次攻击失败,dt顺着优先队列找其他能用的。起手快的技能设定的失败时间短,起手慢的技能设定的失败时间长。现在dt是这么应对卡顿的:敌人突然快速移动,dt因为正在放激光或者类似的原因,没跟上。然后dt追着敌人想要近战,敌人停下了。dt追上敌人并一脸撞上(然后本应该卡住的)并近战不出来。然后dt开始计时,失败时间到了还没近战出来,这次攻击算作失败,dt顺着优先队列找其他能用的技能。如果是狂暴卡住了,下一个能用的一般是激光或者拍掌,这俩默认攻击距离都比狂暴远,dt就会后撤。一后撤,狂暴(优先度更高)就能用了。如果是普通近战卡住了,下一个能用的是放电。放电攻击几乎没有什么限制,优先低,距离也远,电几下 甚至还没电,其他优先级更高的技能就好了。这时距离又因为放电被拉开,一般就能顺利执行了。失败时间设置得都很短,比如普通近战是0.3秒,特殊攻击是1到2秒。这些数字是经验值,很可能有改进的空间。而且这样会多多少少降低dt的攻击频率,不过就观察来看 基本就是理论上会降低,实际看不出延迟。

5. 现在的dt依旧会面临两个很大的问题,而这两个问题都是我自认解决不了的...一是碉堡和血翼。这两个敌人虽然是飞行敌人,但是由于停滞时间长,理论上是可以使用狂暴等近战攻击的。不过如果为了这个 允许狂暴攻击空中敌人,dt又会在其他地方满地图飞着想怼小飞机。两害相较取其轻,所以dt现在不会使用狂暴 电球 拍掌和普通近战攻击空中敌人。二是判定奇葩的敌人,尤其是体型巨大的,比如鲨虫/武士。dt面对这些敌人很可能出现近战攻击打不出伤害的情况,这是因为攻击的位置确实不是hitbox的判定范围...这个真是没办法,碰撞箱之类的东西肯定都是写死在游戏里的。尽力通过调整自身位置,调整dt攻击方位吧。

6. 所有攻击的范围/伤害/攻击方式 都没有修改。连dt小得可怜的索敌范围也没改(站在平台下 检测不到碉堡233)。准确地说,dt索敌范围是4096,但是射电攻击最远能打到9999。射电攻击的优先级一后移,现在可能给人一种“dt扫描距离变近了”的感觉,有时候需要萝莉引导一下 dt才会开始打人。但是本着依照原版的原则,所有攻击的范围都没改,所以也只能这样。好在并没有近到贴脸才能识别,使用起来也没有明显的不适。大概距离是:站在三角地带分隔 传送点正对着的马路中间,能检测到并主动攻击对面的猿兽。

使用说明

1. 如果你现在的游戏是原版,啥mod也没装,这是最简单的。请使用包里的DTAIFix.txt,并按装mod的一般方法安装,改为要替换的文件名即可。

安装方法

2. 如果你现在的游戏装了社区补丁,也请下载网盘链接里的DTAIFix.txt。然后打开你的Filtertool,在菜单栏里选择Profiles,选择New Profile,随便起个名字,作为你社区mod的备份。然后再新建一个Profile,选择这个Profile,然后在菜单栏的DeveloperTool里选择Add Single Mod,选择DTAIFix.txt并在添加好后打勾。这样第一个Profile代表原本的社区mod,第二个代表加了DTAIFix的社区mod。选择第二个,然后File菜单-SavePatch。这样DTAIFix就被打包进你的社区mod了。想去掉就选择原来的Profile然后savePatch即可。

3. 如果你装过一些mod,但不包括社区补丁...推荐你装一个社区补丁,然后按2操作,把你以前的mod以及这个dtaifix全部添加进社区补丁,然后反选(取消)所有社区补丁本身的内容。如果你不愿意这么做,可以手动合并。方法是:打开你之前的那些mod,看其中有哪些的内容形似set Transient.SparkServiceConfiguration_6 Keys (....)以及set Transient.SparkServiceConfiguration_6 Values(....),然后把他们的Keys后面括号中的内容,以及Values后面括号中的内容,全部依次复制到DTAIFix.txt的这两个括号中,添在末尾就行。这两个括号中的内容一般均为多项,引号括起来为一项,逗号分隔。注意格式即可。

另外多说一点。这个Transient.SparkServiceConfiguration_6是原本无主之地2的一个micropatch,原本人家是有内容的,大概有十几条吧。如果有内容为set Transient.SparkServiceConfiguration_6 Keys这样的mod,开头与DTAIFix.txt的开头不一样,那就是它图方便直接覆盖掉了原本的micropatch的一些或者全部内容。DTAIFix.txt里已经在开头集成了原本官方Transient.SparkServiceConfiguration_6补丁中的内容。

《无主之地2》机械术士DeathTrapAI改善修正补丁

精彩推荐