0 基础实战:5 分钟上手 palworld-save-tools,让 .sav 存档与 JSON 双向转换零损耗
0 基础实战5 分钟上手 palworld-save-tools让 .sav 存档与 JSON 双向转换零损耗【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools你大概以为帕鲁的.sav存档是游戏私有的二进制格式想改它得先破解点什么。其实它是一座上了三道锁的保险柜Unreal 引擎的 GVAS 结构、外层 zlib 压缩、加上帕鲁自定义的数据块。而palworld-save-tools这套开源转换工具就是那个配齐三把钥匙的开锁匠——把.sav完整翻译成 JSON 账本改完再原样锁回去压缩前逐字节一致不多不少。先别急着改档花 3 分钟做一次空手往返把工具当验钞机用很多新手拿到工具的第一反应是冲进 JSON 里把帕鲁等级改成 100然后……坏档了还说不清是改错了还是工具不行。我的建议反着来第一次用这个工具一个字都别改。 用血泪换来的经验改档这件事九成翻车发生在转回去这一步而不是改数据这一步。所以先验证链路再动手改是成本最低的保险。第一步找到存档。Steam 版在%LOCALAPPDATA%\Pal\Saved\SaveGames\SteamID\SaveID\下我们要动的核心文件是那个Level.sav。先复制一份到另一个目录这步别省。第二步转成 JSON再原样转回。项目零第三方依赖装好 Python 3.9 以上就能直接跑仓库里的脚本python convert.py Level.sav # 生成 Level.sav.json python convert.py Level.sav.json # 再转回 Level.sav转回时终端会问文件已存在是否覆盖输入y回车即可。第三步验证。进游戏读一次档能正常进、数值没变说明这条链路是通的。讲究一点的话还能在转换前后对.sav做字节级比对Windows 用fc /bLinux 用cmp——结果应该是完全一致的。这正是这个项目的硬承诺SAV → JSON → SAV压缩前逐字节相同。第一次真正转换把保险柜拆成一本看得懂的账本演练通过才轮到真刀真枪。python convert.py Level.sav --to-json是什么--to-json强制往 JSON 方向转换。其实不带参数、光靠扩展名也能自动判断显式写出来更稳。何时用每次你想看或改存档之前。坑在哪输出的Level.sav.json可能非常大几百 MB 不稀奇别用记事本硬开老老实实用 VSCode 或 JetBrains 系编辑器。打开后你会看到一份层层嵌套的清单字段不再是乱码而是CharacterSaveParameterMap、ItemContainerSaveData、BaseCampSaveData这种能看懂的英文标识——对应着角色与帕鲁、物品容器、基地营地这些游戏实体。 Windows 用户有个更省事的入口把.sav文件直接拖到convenience_tools/convert.cmd上松手反向操作同理。要是拖上去没反应多半是 Python 的应用执行别名在捣乱去系统设置里关掉它再试。想装成命令行工具也行pip install palworld-save-tools之后用palworld-save-tools convert命令走同样的参数。改档三件套横向对比为什么偏偏选它方案你能看到的东西改错的风险还原能力十六进制编辑器一堆十六进制数字每个字节含义靠猜极高错一位直接坏档无通用 UE 存档编辑器如 uesave只认识 Unreal 通用结构帕鲁私有数据仍是一团乱麻高无palworld-save-tools帕鲁几乎所有已知数据结构都被翻译成可读 JSON低只要不弄坏 JSON 语法压缩前位级一致还原这张表背后是项目的两条开发哲学零第三方依赖默认安装的 Python 就能跑和正确性优先于性能往返转换必须位级一致。通用编辑器做不到第二条因为它们根本不认识帕鲁自己的数据块十六进制编辑器则连第一条都谈不上。在 JSON 账本里做第一次小手术找到那只帕鲁别一上来就乱翻跟着路径走.worldSaveData.CharacterSaveParameterMap.Value.RawData是什么CharacterSaveParameterMap是角色存档参数表玩家和帕鲁的数据都挂在这棵树上RawData是真正承载细节的原始数据块。何时用你想调等级、改属性、复制帕鲁的时候。坑在哪一棵树下可能挂着几百只帕鲁别用肉眼找用编辑器的搜索功能按CharacterID或实例 ID 定位动手前先记下原始数值。 遵循小步修改原则一次只动一个数字转回去进游戏验证再动下一个。出问题时你永远知道是刚才哪一步改的。反向转换覆盖确认、备份与锁回去的铁律python convert.py Level.sav.json --from-json是什么--from-json强制把 JSON 转回.sav输出默认是去掉.json后缀的原文件名。何时用每次改完 JSON 要写回游戏时。坑在哪目标文件已存在时工具会弹出覆盖确认脚本化的批量操作里用--force跳过确认。但真正值钱的铁律是这三条原始Level.sav必须备份在另一个目录这是安全改档的第一原则转回后务必进游戏验证一次确认数值生效、存档能正常读有条件就给 JSON 上个 Git每次改动都有记录后悔了随时回退。⚠️ 避坑专章最容易翻车的 4 个地方以及对策① 内存告急转大存档直接卡死。Level.sav解压后动辄几百 MB处理时内存占用很夸张。对策用--custom-properties只解析你关心的数据块其余结构一律跳过python convert.py Level.sav --to-json \ --custom-properties .worldSaveData.CharacterSaveParameterMap.Value.RawData,.worldSaveData.ItemContainerSaveData.Value.RawData上面这行只解角色和背包两类数据转换速度立刻上一个台阶。② 打开 JSON 就卡顿甚至直接打不开。文件太大时加--minify-json去掉缩进和空行体积小一截后续脚本处理也更快。③ JSON 里冒出NaN、Infinity这种非标准写法。存档里存在特殊浮点值标准 JSON 解析器会直接报错。加--convert-nan-to-null把它们统一转成null——注意这会丢掉Inf/-Inf的符号信息能不加就不加非加不可时先想清楚代价。④ 你以为工具会悄悄丢数据其实翻车的是你的手。这个项目本身保证位级一致不搞小动作但如果你在 JSON 里手滑删了字段、写错括号转回去照样坏档。所以每次改完先跑一句python -m json.tool Level.sav.json校验语法再谈转换。别慌顺手的事。下一步一份 10 分钟的行动清单找到Level.sav复制一份到安全位置空手往返演练一次验证链路通畅--to-json拆出账本用大编辑器打开挑一个最小目标比如改一个物品数量下手转回、进游戏、验证顺手给 JSON 上个 Git。当备份自由、修改自由都握在手里之后剩下的问题就变成你更想用这份能力去补足一次手滑的遗憾还是去试试那些正常游玩根本到不了的玩法边界这个选择交给你。【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考