Repository navigation
v1.0.2 — 转换修复 / 合并优先级 / 本地化三路合并
UE4/UE5 .pak 工具链,Windows 桌面端与 Android 双端。基于 CUE4Parse,扩展自 kardswalker/Prism。
下载
| 平台 | 文件 | 说明 |
|---|---|---|
| Windows | Prism-Windows-x64.zip |
自包含单文件版,无需安装 .NET 运行时 |
| Android | Prism-Android.zip |
内含已签名 APK,arm64-v8a |
解压后请保持目录完整 —— UAssetCLI/ 与 tools/ 必须和主程序放在一起,贴图替换与 Pak 转换依赖它们。
换到新目录首次运行时,请在「设置」页确认 AES 密钥已填 —— 新目录没有旧设置文件,密钥为空时加密 Pak 读不出任何文件(本版已加了拦截,会直接报错而不是产出废包)。
本版内容
1. 修复 Pak 转换在桌面端几乎全部失败
现象:PC 模组 Pak → 手机 Pak 的转换,39 个候选纹理里 38 个失败,只有目标格式为 DXT1、走内置编码器的那一张成功。
根因:目标格式要等 CLI 打开主 Pak 的模板资产才知道,所以调用方传的格式是空字符串;而参数组装靠"格式是否以 PF_ASTC_ 开头"决定传 --astcenc 还是 --texconv,空字符串落到了 --texconv 分支。astcenc 不在 PATH 上(随应用放在 tools/),CLI 于是报 Could not find encoder tool,每个 ASTC 目标都以失败告终。
现已改为两个编码器路径都传,由 CLI 按目标格式自行选择。实测:39/39 全部成功,输出 14.3 MB,耗时约 50 秒。
2. 新增「并入模组的其他文件」开关
模组除了换贴图,往往还改了蓝图、.locres 本地化、数据表等。这些内容两个平台通用,不需要转换,直接原样放进输出 Pak 即可 —— 开了这个开关就不必再单独做一次 Pak 合并,输出体积仍≈改动量。
已成功转换的贴图不会被源文件覆盖(否则会把源平台的像素格式塞进目标 Pak);没能转换的贴图仍会带入并报出原因,不静默丢件。
实测(同一对 Pak):默认模式 40 条目 / 14.29 MB 且不含 Game.locres;开启后 41 条目 / 15.21 MB,Game.locres 已并入。
3. 转换挂载到 0 个文件时立刻中止(不再产出废包)
加密 Pak 在没有(或错误)AES 密钥时,挂载会"成功"但一个文件都读不出来,且不抛异常。此前这会一路走下去:主 Pak 索引为空 → 所有纹理都判成"主 Pak 中没有同路径" → 若开了「并入模组文件」,还会把源 Pak 全部文件原样打进去,产出一个没有任何贴图被转换的假包,并且报告"失败 0"。
现在会直接报错并说明原因(未挂载到归档 / 加密但未提供密钥 / 密钥不匹配)。转换页也把「密钥 / 映射」状态显示出来了。
4. Pak 合并:去掉固定的主 Pak,优先级方向修正
- 列表每一项都能拖动排序、都能移除,「清空」真的清空 —— 不再有钉死的第一项。
- 优先级改为越靠上越高(第 1 项最高)。此前是反的(越靠下越高),现在符合直觉。
5. 新增「基准本地化」三路合并:两份文本模组可以真正合并了
以前两份各改了不同文本的模组没法合并 —— 同名 .locres 只能整份覆盖,靠上的那份胜出,另一份的改动全部丢失。
原因是:两份模组对每一条词条都有值(改过的与没改的混在一起),只对比这两份文件无法判断某个词条是谁改的。必须有游戏原版当参照。
现在合并页多了一行「基准本地化(可选)」:
- 把游戏原版的
.locres选进去(可用「解包 & Mod」页从原版 Pak 里导出)→ 同名.locres逐条与基准对比,各模组的改动叠加,未被改动的词条保持原版。 - 同一词条被多份模组改动时,按列表优先级取高者。
- 不选基准则完全保持原来的整文件覆盖,行为可预期。
- 其它资产仍按覆盖处理(二进制资产无法逐条合并)。
- 完成后会报告:
本地化逐条合并 N 个文件(生效改动 M 条,冲突 K)。
实测(真实文本包,13,476 条词条):
| 做法 | A 改的词条 | B 改的词条 |
|---|---|---|
| 整文件覆盖(旧) | 保留 | 丢失 |
| 三路合并(新) | 保留 | 保留 |
6. 界面精简
转换页正文原先堆了 9 段长说明,而实际要填的只有三行输入。现在正文只保留三行输入、两个开关和两条必要提示(正文文字从约 500 字压到 61 字),说明收进顶栏的 「使用说明」 按钮 —— 点开是页内浮层,含操作步骤与截图。设置页、合并页、工作区页里几处啰嗦说明也一并收紧。
安装
Windows:解压后运行 Prism.Desktop.Desktop.exe。
Android:安装 android/Prism-Android-Signed.apk。
签名说明:Android 包由 .NET Android 用调试证书签名(
CN=Android Debug,SHA-176:DB:3A:E3:E2:5A:CB:6D:76:7B:22:34:E4:EA:98:53:B0:7D:E6:A3),与上一版一致,可直接覆盖安装并保留数据。调试证书仅适合自用与内部分发;若需公开分发或上架,请用正式密钥库重签(换签名后需先卸载旧版)。
已知限制
- 只支持
.pak;未实现.utoc/.ucas。 - 不内置映射文件,需从游戏中自行导入。
- 需要 AES 密钥的 pak,请在设置页填入。
- 跨格式转换需要映射文件(
.usmap/.jmap);缺映射的贴图会被跳过并在明细里说明。 - 本地化三路合并只在提供基准文件时生效;没有基准时同名
.locres仍是整份覆盖。 - 本包不含 Oodle 原生库(
oo2core_9_win64.dll):它的再分发受 RAD/Epic 授权约束,项目一贯不随包分发。默认「替换时使用 Oodle 压缩」是关闭的,所以打包不受影响;若你要在发行版里打开它,请把该 DLL 放到Prism.Desktop.Desktop.exe旁边即可(可从虚幻引擎安装目录取得,例如Engine\Binaries\DotNET\UnrealBuildTool\)。
校验
见 SHA256SUMS.txt。
许可
GPL-3.0,继承自上游。见仓库内 LICENSE 与 NOTICE。