godot-secure加密 pck 问题
Error: Couldn't load project data at path ".". Is the .pck file missing? when running a build of the engine in same directory as the same named pck. Same error when using --main-pack.
“找不到 PCK”不是 PCK 真的没有生成,而是安全引擎无
法识别已经嵌入 EXE 的 PCK。
根因有两个:
-
godot-secure 的 Python 脚本每个 Action 矩阵任务都会随
机生成:- PACK_HEADER_MAGIC
- ENCRYPTED_HEADER_MAGIC
- security_token
项目导出使用的安全引擎、Windows/Linux Release
Template 并不是同一组值。于是导出的 EXE 虽然有 pck
段,但开头是随机值,例如之前的 WMXN,运行时不认识它。 -
自定义 GDPC/GDEC 逻辑本身还有一个源码问题:
start_setup() 没有正确声明全局变量,所以界面显示成了
GDPC/GDEC,实际编译使用的 header magic 仍然是随机值。
因此 Godot 运行时找不到可识别的内嵌 PCK,就回退去寻找外
置:
GodotLineCollection.pck
找不到后才显示:
Couldn't load project data ... Is the .pck file missing?
现在已经修复为:
-
固定 PACK_HEADER_MAGIC = GDPC
-
固定 ENCRYPTED_HEADER_MAGIC = GDEC
-
从 SCRIPT_AES256_ENCRYPTION_KEY 派生稳定的 32 字节
security_token -
所有平台共用同一套安全引擎、模板和 PCK 协议
-
Windows/Linux 使用 embed_pck=true
所以现在 Linux/Windows EXE 内的 PCK 可以被正确识别,不需
要外置 .pck。
本文来自博客园,作者:meny,转载请注明原文链接:https://www.cnblogs.com/mmme/p/22320261

浙公网安备 33010602011771号