找回密码
 初始化身份识别芯片
搜索
楼主: 文仔

【0.98】星坞船插集 - 让舰载机再次伟大

 荐  火 [复制链接]

战列舰长

发表于 2026-10-31 22:13:13 | 显示全部楼层
文仔 发表于 2026-10-31 22:08
那你更新mod啊,那都是旧bug了。要开新档。

用的时候也不知道有这问题啊,升级了也进不去
报错是用哪个版本?  详情 回复 发表于 2026-10-31 22:14
用的20.8版本的  详情 回复 发表于 2026-10-31 22:14

战列舰长

发表于 2026-10-31 22:14:43 | 显示全部楼层
alysia 发表于 2026-10-31 22:13
用的时候也不知道有这问题啊,升级了也进不去

用的20.8版本的
更新mod,你开新档试试。  详情 回复 发表于 2026-10-31 22:16

战列舰长

 楼主| 发表于 2026-10-31 22:14:56 | 显示全部楼层
alysia 发表于 2026-10-31 22:13
用的时候也不知道有这问题啊,升级了也进不去

报错是用哪个版本?

战列舰长

 楼主| 发表于 2026-10-31 22:16:43 | 显示全部楼层

更新mod,你开新档试试。
这bug修完了吗?你之前说一直都是NPC舰队临时加装的祸,然后把这个不给玩家装,为什么就解决NPC舰队临时加装的问题呢?是把这个船插设计成某些船只固定安装了吗?这个情况我看不懂,我担心又炸我一个档  详情 回复 发表于 2026-10-31 22:24

战列舰长

发表于 2026-10-31 22:24:38 | 显示全部楼层
文仔 发表于 2026-10-31 22:16
更新mod,你开新档试试。

这bug修完了吗?你之前说一直都是NPC舰队临时加装的祸,然后把这个不给玩家装,为什么就解决NPC舰队临时加装的问题呢?是把这个船插设计成某些船只固定安装了吗?这个情况我看不懂,我担心又炸我一个档
你遇到NPC舰队有航母就会发现他们舰载机会额外多一部分。我自己也在玩,一直都没问题。  详情 回复 发表于 2026-10-31 22:29

战列舰长

 楼主| 发表于 2026-10-31 22:29:49 | 显示全部楼层
alysia 发表于 2026-10-31 22:24
这bug修完了吗?你之前说一直都是NPC舰队临时加装的祸,然后把这个不给玩家装,为什么就解决NPC舰队临时 ...

你遇到NPC舰队有航母就会发现他们舰载机会额外多一部分。我自己也在玩,一直都没问题。

巡洋大副

发表于 2026-10-31 22:42:48 | 显示全部楼层
看不懂的mod不装

感觉有点超模啊

战列舰长

发表于 2026-11-1 17:26:00 | 显示全部楼层
冲突了
image.png
是Moci的问题,我只能屏蔽他的船。  详情 回复 发表于 2026-11-1 19:08

战列舰长

 楼主| 发表于 2026-11-1 19:08:51 | 显示全部楼层

是Moci的问题,我只能屏蔽他的船。

巡洋大副

发表于 6 天前 | 显示全部楼层
老大有bug,我把dsh的反馈发你。
我看完了。存档没有损坏,是「星坞船插集」mod 在保存时留下了一个游戏读档阶段必定会校验失败的战机 id。我已经帮你把这几个存档修好了。

崩溃原因
报错来自原版的读档数据校验,位置如下:

代码块


starsector.log:296036  ERROR ... Fighter wing with id [star_dock_vk_xy_yeling_3_wing] not found for faction [player]
  at CoreLifecyclePluginImpl.verifyFactionData(...)
  at CoreLifecyclePluginImpl.onGameLoad(...)
verifyFactionData 会逐个检查每个势力的 knownFighters(已解锁战机列表),一旦查不到对应战机规格就直接抛异常终止。问题在于,star_dock_vk_* 这串 id 在任何 mod 的 wing_data.csv / .wing 里都不存在(我全盘搜过,0 命中),它是在运行时临时生成的:

代码块


[starsector.log.3:140282] com.lqwen.stardock.cargohangar.VirtualWingSpecs - 创建虚拟预制战机:star_dock_vk_halberd-tds_4_wing,来源=halberd-tds_wing,数量=4
也就是说,「星坞船插集」的货舱改机库会把货舱变成机库,并按「基础战机 × 数量」临时造出虚拟联队(star_dock_vk_<战机>_<数量>_wing)。这些虚拟 id 被写进了玩家势力的已解锁战机列表,然后随存档保存。下次读档时,原版校验发生在 mod 重新生成这些虚拟规格之前,所以必然判定为「战机不存在」,导致读档崩溃。

存档里的佐证(玩家势力 knownFighters,第 22669 行开始):

xml


<st>star_dock_vk_xy_yeling_3_wing</st>
<st>star_dock_vk_xy_chenzhong_1_wing</st>
<st>star_dock_vk_xy_xingdao_1_wing</st>
对全部存档扫描了一遍:11/3 23:03 及更早的存档没有这些 id;11/7 的 4 个存档(06:39、07:17、08:02、08:14)都带,正好是装了星坞船插之后,舰队里带了 ATLAS 的 xy 系战机那段时间写进去的。

已做的修复
在 campaign.xml 里,我只删掉了这 3 个运行时 id:

玩家势力 <knownFighters> 里的 3 条
同一文件的 <fighterTimestamps> 里对应的 3 条(避免读档后改装界面拿到空规格)
处理的 4 个存档:save_D_2763796703969594233、save_D_5318400562280764431、save_D_3790660070653457426、save_D_4019209957410159835。原文件全部备份在 _save_backup,改完后 XML 用解析器完整校验通过(280 万个节点,无语法错误)。

没有动任何实质内容:这 3 个 id 除了这两处引用外,没有出现在任何舰船配置、舰队或装备数据里(全文件只有 6 处),所以删除不丢船、不丢装备、不影响进度,只是把「列表里学到的 3 个幽灵战机」去掉。

现在怎么操作
游戏还卡在那个报错框上,点「确定」回标题界面就行(或者直接关掉游戏重开更保险)。
重新读档,读 8:14 那个(save_D_4019209957410159835)。
如果还弹别的「Fighter wing with id ... not found」,把新日志发我,我照样处理,但大概率不会——其他战机的定义都在 mods 里能查到。
兜底方案:11/3 23:03 的存档(save_D_6847118247906361869)本来就是干净的,可以读,只是会退回几天进度。

以后如何避免再次出现
这个崩溃会重犯:只要「货舱改机库」的虚拟战机再次被记进玩家已解锁列表(比如再次改装、进模拟器、保存),下次读档又崩。给你留了个一键清理工具:fix_stardock_wing_ids.py(先退游戏再跑):

代码块


python D:\Starsector\fix_stardock_wing_ids.py --dry-run   # 先看看有没有
python D:\Starsector\fix_stardock_wing_ids.py             # 清理(自动备份)
更彻底的办法,推荐两条选一条:

去 mod 原帖反馈这个 bug(星坞船插集 - 让舰载机再次伟大,作者 LQWen):虚拟战机 id 不该进 knownFighters,或者应在 onGameLoad 里先把虚拟规格注册回来再让原版校验;等他更新到修复版就一劳永逸。
暂时别用「货舱改机库」这条改装线,或者装它之前先备份存档。
顺带说一句:你现在这个档 203 个 mod、100MB+ 的 campaign.xml,属于典型的大整合包。这类「运行时生成 id 被持久化」的坑最容易在读档校验阶段导致读档崩溃;以后更新或增删 mod 前,先备份 _save_backup 这种目录。
你是读档是报错是吧。 1.你用的是最新版吗? 2.0.23.4版不支持以下版本的旧版存档。 3.最新版玩家已经没有货舱改机库船插了,已经禁用。 你先说明一下具体过程才出bug,我才好理解如何修?  详情 回复 发表于 6 天前

战列舰长

 楼主| 发表于 6 天前 | 显示全部楼层
本帖最后由 文仔 于 2026-11-7 20:05 编辑
Dzuncle 发表于 2026-11-7 17:12
老大有bug,我把dsh的反馈发你。
我看完了。存档没有损坏,是「星坞船插集」mod 在保存时留下了一个游戏读 ...

你是读档是报错是吧。
1.你用的是最新版吗?
2.0.23.4版不支持以下版本的旧版存档。
3.最新版玩家已经没有货舱改机库船插了,已经禁用。
你先说明一下具体过程才出bug,我才好理解如何修?

战列舰长

发表于 半小时前 | 显示全部楼层
读取已有存档,到“载入阶段 33”时抛出异常,载入中断并返回主菜单。错误发生在核心势力数据校验阶段,尚未进入正常的大地图运行。
日志关键内容:
java.lang.RuntimeException:
Fighter wing with id [star_dock_vk_wasp_2_wing]
not found for faction [sotf_dustkeepers_burnouts]

at com.fs.starfarer.api.impl.campaign.CoreLifecyclePluginImpl.verifyFactionData(CoreLifecyclePluginImpl.java:566)
at com.fs.starfarer.api.impl.campaign.CoreLifecyclePluginImpl.verifyFactionData(CoreLifecyclePluginImpl.java:544)
at com.fs.starfarer.api.impl.campaign.CoreLifecyclePluginImpl.onGameLoad(CoreLifecyclePluginImpl.java:521)
已经检查到的情况
- 星坞版本为 0.26.1,Mod ID 为 star_dock_hullmods。
- 两份检查过的存档中,都存在 star_dock_vk_wasp_2_wing。
- 每份存档中,该 ID 均出现两次,全部位于势力的 knownFighters 列表:<st>star_dock_vk_wasp_2_wing</st>
- 未发现该具体 ID 在舰船配置等其他位置被引用。
- 目前无法确定最初是哪次操作生成了这个动态联队,也无法确定是哪个脚本将其加入势力名单。报错涉及 SOTF 势力,并不能直接证明是 SOTF 写入的。
相关代码检查与怀疑原因
根据本地字节码检查:
1. VirtualWingSpecs 会按需生成并注册 star_dock_vk_<source>_<count>_wing 形式的动态联队。
2. USERS 和回收逻辑主要跟踪舰船 ShipVariantAPI 引用;reclaim 注销动态联队时,没有同步处理势力战机名单。
3. reviveFromVariants 从舰船配置恢复动态联队,无法覆盖“只有势力名单还保留引用”的情况。
4. 现有 PlayerOnlyGuard.scrubFaction 处理了舰船插件名单,但没有覆盖 knownFighters / priorityFighters。
因此,怀疑过程是:
动态联队被生成 → 其 ID 被某条路径加入势力名单 → 名单写入存档 → 动态定义被回收或重启后未恢复 → 核心读档校验发现悬空引用并报错。
目前只能确认“存档有引用、读档时无定义”,尚不能区分具体是回收导致,还是重启后缺少恢复。
建议排查方向
- 在已有 beforeGameSave() 中,处理势力 knownFighters 和 priorityFighters 中不应持久保存的星坞动态联队引用。
- 在 reclaim 注销定义前,同步处理势力对该动态 ID 的引用。
- 清理范围限定为星坞自身合法的动态 ID,并保留真实舰船仍在使用的临时联队功能。
- 检查动态规格继承的势力发现/蓝图池标签,确认是否会导致临时联队被再次收录。
- 已经损坏的存档可能需要单独迁移或定点清理;普通 onGameLoad 或首帧清扫可能晚于此次核心校验失败的位置。

starsector.rar

259.42 KB, 下载次数: 0

战列舰长

发表于 12 分钟前 | 显示全部楼层
然后ai修改了一些奇奇怪怪的东西之后,就能进了,,,
作者可以看下。。。

星坞读档修复_20261113.rar

44.21 MB, 下载次数: 0

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2026-11-13 07:46

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio | IP地址位置数据由纯真CZ88提供支持

快速回复 返回顶部 返回列表