Appearance
PCK 重打包与不生效排查
这次排查确认了什么
这次 sakikotheregent 不生效,首先不是文本内容写错,也不是 manifest 没被游戏发现,而是 PCK 本身没有被游戏成功挂载。
从游戏日志可以确认:
- 游戏能够发现模组清单文件。
- 游戏尝试加载对应的
.pck。 - 旧包在挂载阶段因为 Godot 版本过新 而失败。
因此,在旧包状态下:
- 卡图不会覆盖。
- 模组内本地化不会被读取。
- 后续是否需要额外 DLL,也无法在这个阶段下结论。
直接根因
旧的 sakikotheregent.pck 是用 Godot 4.6.2 导出的。
而游戏当前运行时是 Godot 4.5.1 系列。
Godot 对资源包版本是敏感的。高版本编辑器导出的 .pck,低版本运行时通常无法直接加载。
这也是为什么日志里会出现类似下面的错误:
Pack created with a newer version of the engine
这条错误一旦出现,后面的资源覆盖和本地化合并都不会发生。
这次修正了哪些内容
1. 改用 Godot 4.5.1 重打包
已经重新生成兼容游戏运行时的模组包,并覆盖当前使用的:
mods/sakikotheregent/sakikotheregent.pck
同时保留了旧包备份:
mods/sakikotheregent/sakikotheregent.4.6.2.backup.pck
2. 把卡图放到真正可覆盖的资源路径
这次排查还发现,早期整理的卡图曾被放在类似 work/... 的工作目录下。
这类路径适合整理素材,但不能直接覆盖游戏正式资源。
当前已经调整为覆盖用路径:
images/packed/card_portraits/regent/images/packed/card_portraits/regent/beta/images/packed/card_portraits/token/images/packed/card_portraits/token/beta/
也就是说,PCK 一旦成功挂载,卡图才有机会按原路径覆盖到游戏中。
3. 保留模组内本地化目录
当前包中保留了模组命名空间下的本地化目录:
sakikotheregent/localization/eng/sakikotheregent/localization/zhs/
这一步的目的不是断言“已经一定生效”,而是为下一步验证准备正确输入。
在 PCK 成功挂载前,无法判断是否还需要最小 DLL 初始化壳。
现在应该如何验证
启动游戏后,优先检查日志,而不是先盯着界面有没有变化。
重点看两类信息:
第一类:模组是否被发现
日志里应当能看到类似:
- 找到 manifest
- 开始加载
sakikotheregent.pck
第二类:是否还有版本错误
如果还出现:
Pack created with a newer version of the engine
说明你当前运行的仍不是兼容包,或者实际游戏目录中的包还没有被替换。
如果这句错误消失了,再继续看:
- Regent 卡图是否变化。
- 中文或英文文本是否变化。
当前更合理的判断顺序
在这次排查之后,更合理的判断顺序是:
- 先确认 manifest 被扫描到。
- 再确认
.pck成功挂载。 - 再确认卡图覆盖路径是否正确。
- 最后才判断模组内本地化是否还需要 DLL 参与初始化。
这样可以避免把“PCK 根本没加载”误判成“文本 JSON 没写对”或者“必须先写 DLL”。
后续建议
如果新包加载后:
- 卡图生效了,但本地化没生效,下一步优先检查本地化合并规则,必要时补最小 DLL。
- 卡图和本地化都不生效,但日志已不再报 PCK 版本错误,就继续检查资源路径或模组命名空间。
- 日志仍然报版本错误,就不要继续改资源内容,先重新确认实际加载的
.pck文件是不是刚刚导出的那个。
配套脚本
为了后续重复打包和整理资源,当前已经补上:
mods/sakikotheregent/rebuild_pck_godot451.ps1tools/setup_texture_pack.py
前者用于使用 Godot 4.5.1 重打 sakikotheregent.pck。
后者用于把整理好的卡面 PNG 自动复制到实际覆盖路径中。