关于模块船不会闪现的疑问
我发现模块船闪现、驱动器这些位移技能玩家手操是没有问题,但ai不会自主使用。比如兽耳助手里面的多模块辐射,你让军官开他就只会傻乎乎的对炮。但原版的单舰辐射军官开起来就会闪现。不知道这是为什么。我这边已经找到原因了,原因是ai使用闪现前有一个碰撞阻挡判定要判定闪现路径落点是否阻挡。而模块船自身的模块会阻挡自己的闪现判定。让ai一直判定失败认为有阻挡不能用闪现。 很有趣的现象,但作为一个刚好特别喜欢做模块船的新人modder,我也有一些自己的猜测……
检查一下对应模组的ship_data.csv,然后尝试找到模块的数据,看看hints一栏里面有没有写MODULE
因为按理说模块本身在被摧毁之前是不会被认为和本体有碰撞的才对,除非游戏并不觉得这是一个模块…… 好了,进一步结论出来了:
我临时修改了我自己两种舰体前方有模块的主力舰的战术系统,然后进行了测试,发现应该是displacer的战术系统AI的问题,因为我这边测试发现burndrive,phaseteleporter都是会正常使用的,唯独辐射同款的闪现(也就是displacer)不会
猜测是displacer这个战术系统自身AI局限性将模块判断为了舰船从而被阻挡,因此拒绝使用
此处展示一下确认到成功使用战术系统的截图,但改成displacer就不会使用了
希尔贝拉 发表于 2026-10-13 14:32
好了,进一步结论出来了:
我临时修改了我自己两种舰体前方有模块的主力舰的战术系统,然后进行了测试,发 ...
你的猜测是对的,在使用ai进一步深入源码分析后发现,原版 `displacer`:`type:DISPLACER`、`aiType:PHASE_DISPLACER`、`range:300`,AI 是引擎类
`com.fs.starfarer.combat.ai.system.voidsuper`。它在激活前要做一次 落点净空判定 ,遍历战场上每一艘 Ship
(只跳过战机、穿梭舱、自身):
- 判定①:落点到该船距离 `< 该船碰撞半径 + 本舰碰撞半径 + 50` → 判为不净空,直接 return;
- 判定②:该船前方 30° 锥内含落点、且与本舰 同属主 (非残骸)→ 阈值再加 500。
这个循环没有排除本舰自己的子模块。 希尔贝拉 发表于 2026-10-13 14:32
好了,进一步结论出来了:
我临时修改了我自己两种舰体前方有模块的主力舰的战术系统,然后进行了测试,发 ...
你的猜测是对的,在使用ai进一步深入源码分析后发现,原版 `displacer`:`type:DISPLACER`、`aiType:PHASE_DISPLACER`、`range:300`,AI 是引擎类
`com.fs.starfarer.combat.ai.system.voidsuper`。它在激活前要做一次 落点净空判定 ,遍历战场上每一艘 Ship
(只跳过战机、穿梭舱、自身):
- 判定①:落点到该船距离 `< 该船碰撞半径 + 本舰碰撞半径 + 50` → 判为不净空,直接 return;
- 判定②:该船前方 30° 锥内含落点、且与本舰 同属主 (非残骸)→ 阈值再加 500。
这个循环没有排除本舰自己的子模块。 希尔贝拉 发表于 2026-10-13 14:32
好了,进一步结论出来了:
我临时修改了我自己两种舰体前方有模块的主力舰的战术系统,然后进行了测试,发 ...
这也是为何原版的闪现放模块船上ai不会使用的原因。
页:
[1]