SAV 转 JSON 怎么操作?palworld-save-tools 完整指南

📅 发布时间:2026/8/22 3:31:43
SAV 转 JSON 怎么操作?palworld-save-tools 完整指南
SAV 转 JSON 怎么操作palworld-save-tools 完整指南【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-toolspalworld-save-tools 能把 Palworld 的 .sav 二进制存档转成易读的 JSON易读的数据格式改完再原样转回 .sav。读完本文你会装好环境、跑通第一次转换并掌握部分解析、无损校验与批量备份等常用操作。环境准备装好 Python 和 palworld-save-tools要求只有一条Python 3.9 或更高版本。该工具不依赖任何第三方库装完即用。方式一从 PyPI 安装并验证pip install palworld-save-tools palworld-save-tools --help✅ 看到 Converts Palworld save files to and from JSON 的帮助输出即成功。方式二直接克隆源码使用项目零依赖无需再装git clone https://gitcode.com/gh_mirrors/pa/palworld-save-tools cd palworld-save-tools✅ 目录里出现 palworld_save_tools/ 和 tests/ 即成功。源码方式后续统一用python -m palworld_save_tools.commands.convert调用。第一次跑通一个存档文件走完整流程仓库的 tests/testdata/ 目录里放了多个真实样例存档适合先拿来做实验。按下面 5 步走一遍你就掌握了核心流程。第 1 步确认样例文件存在ls tests/testdata/Level.sav✅ 输出 tests/testdata/Level.sav 即成功。第 2 步SAV 转 JSON输出文件名默认在原文件名后追加 .jsonpython -m palworld_save_tools.commands.convert tests/testdata/Level.sav✅ 看到 Writing JSON to tests/testdata/Level.sav.json且该文件已生成。第 3 步用 VS Code 等现代编辑器打开 Level.sav.json搜索 CharacterSaveParameterMap确认能看到角色数据结构。JSON 可能很大别用记事本。第 4 步JSON 转回 SAV用 --output 指定新文件名避免覆盖原档python -m palworld_save_tools.commands.convert tests/testdata/Level.sav.json --output Level-rt.sav✅ 看到 Writing SAV file to Level-rt.sav 即成功。第 5 步对比 Level-rt.sav 与原始 Level.sav 的解压后内容应完全一致具体校验命令见下文场景二。核心场景实战把 Level.sav 转成 JSON 并只解析你要的数据 适用场景只想看角色与公会信息不想等整个大存档解析完 ⏱️ 1 分钟难度低⚠️ 注意Level.sav 全量转出的 JSON 会非常大吃内存也吃编辑器能少解析就少解析。指定 --custom-properties 只解码指定路径的数据其余部分跳过深度解析python -m palworld_save_tools.commands.convert Level.sav \ --output Level.json \ --custom-properties .worldSaveData.GroupSaveDataMap,.worldSaveData.CharacterSaveParameterMap.Value.RawData✅ 看到 Writing JSON to Level.json 即成功Level.json 里只有公会与角色相关数据。原理一句话--custom-properties 按路径选择要启用的解码函数路径清单定义在 paltypes.py 的 PALWORLD_CUSTOM_PROPERTIES 中。 提示传 --custom-properties all 表示全量解析这是默认行为只关心个别数据时按需传子集能明显缩短转换时间。改完 JSON 转回 SAV 并验证无损 适用场景你修改了存档内容写回游戏前想确认没有改坏 ⏱️ 3 分钟⚠️ 注意写回游戏目录前务必备份原始 .sav覆盖操作不可逆。第 1 步编辑 Level.json 中你关心的字段保持原有数据类型不变。第 2 步转回 SAVpython -m palworld_save_tools.commands.convert Level.json --output Level-new.sav✅ 看到 Writing SAV file to Level-new.sav 即成功。第 3 步用项目自带的往返校验脚本确认转换链路无损python -m palworld_save_tools.commands.resave_test Level.sav✅ 看到 Files are the same! 即成功脚本会生成 .resave.json 和 .resave.sav 两个临时文件。原理一句话resave_test 执行 SAV→JSON→SAV 全流程再逐字节比对两份存档解压后的内容一致即无损。 提示每次游戏更新或大改存档前先跑一遍这个校验出问题能立刻分清是工具还是你的修改导致的。批量备份专用服务器存档 适用场景专用服务器管理员定期备份多名玩家的存档 ⏱️ 2 分钟⚠️ 注意跑批量脚本前先把整个 SaveGames 目录复制一份双保险。mkdir -p backup/$(date %Y%m%d) for f in /path/to/Pal/Saved/SaveGames/*/Level.sav; do id$(basename $(dirname $f)) python -m palworld_save_tools.commands.convert $f \ --output backup/$(date %Y%m%d)/${id}.sav.json --minify-json --force done✅ 循环结束无报错且 backup 当天目录里出现若干 .sav.json 文件即成功。 提示--minify-json 去掉缩进和换行减小体积、方便其他程序读取--force 跳过覆盖确认提示脚本才能无人值守跑完。让 JSON 兼容严格解析器 适用场景转出的 JSON 要交给第三方工具处理NaN 值导致对方解析失败 ⏱️ 1 分钟部分浮点字段会存为 NaN标准 JSON 规范不承认它严格解析器会直接报错。加一个参数即可规避python -m palworld_save_tools.commands.convert Level.sav --convert-nan-to-null✅ 看到 Writing JSON to Level.sav.json 即成功输出中的 NaN 已变为 null。⚠️ 注意Inf/-Inf 同样会被转成 null属于不可逆的信息丢失只在下游工具确实读不了 NaN 时才用。横向对比palworld-save-tools 与通用存档工具怎么选对比维度palworld-save-tools通用 Unreal 存档工具手动二进制编辑SAV 与 JSON 双向转换支持多为只读单向不支持基地、公会、角色等 Palworld 结构逐字段解析保留为原始字节需自行逆向往返一致性逐字节比对校验不涉及难以保证第三方依赖无纯标准库各有依赖取决于工具上手成本一条命令中等高如果你要查看或修改 Palworld 存档内容选 palworld-save-tools只是想快速看一眼存档大致结构通用 Unreal 工具也够用。进阶玩法两个方向把转换能力接进自己的代码以及把往返校验做成批处理。方向一直接调用转换函数跳过命令行from palworld_save_tools.commands.convert import ( convert_sav_to_json, convert_json_to_sav, ) # 存档转 JSON只解析角色数据 convert_sav_to_json( Level.sav, Level.json, custom_properties_keys[.worldSaveData.CharacterSaveParameterMap.Value.RawData], ) # 修改 JSON省略再转回 SAV convert_json_to_sav(Level.json, Level-new.sav)✅ 运行后当前目录生成 Level.json 和 Level-new.sav 即成功。方向二批量校验多个存档的往返完整性配合 cron 或 systemd 定时任务即可无人值守for f in /path/to/SaveGames/*/Level.sav; do python -m palworld_save_tools.commands.resave_test $f done✅ 每个存档都输出 Files are the same! 即全部通过出现 Files are different! 时优先检查对应版本是否跟上了游戏更新。问题自检QPalworld 的存档文件在哪里Steam 版 Windows 在 %LOCALAPPDATA%\Pal\Saved\SaveGames\ \ \Level.sav专用服务器在服务器端 Pal/Saved/SaveGames 目录下。没有存档可以先用仓库 tests/testdata/ 里的样例练手。Q报 not a compressed Palworld save 或 unknown save type 怎么办先确认文件是完整的 .sav 而非残缺拷贝或改名的文件。若刚经历过游戏更新先升级工具再重试pip install --upgrade palworld-save-tools✅ 升级完成后重新执行转换。Q转回的 SAV 和原文件大小不一样是不是坏了SAV 是 zlib 压缩格式一种压缩算法压缩后大小会波动不能只看体积。用往返校验判断python -m palworld_save_tools.commands.resave_test Level.sav✅ 输出 Files are the same! 说明内容无损。Q提示 already exists, this will overwrite the file 卡住了输出文件已存在工具在等你手动确认。脚本或重跑场景加 --force 跳过提示或用 --output 换个文件名python -m palworld_save_tools.commands.convert Level.sav --output Level-copy.json --force✅ 看到 Writing JSON to Level-copy.json 即成功。Q怎么快速确认 JSON 里有没有我要的数据在 VS Code 里打开 Level.sav.json 后直接搜索CharacterSaveParameterMap 是角色BaseCampSaveData 是基地GroupSaveDataMap 是公会。搜不到说明该路径未启用解析回到只解析你要的数据一节检查 --custom-properties。Q可解析的属性路径清单在哪里看看源码 palworld_save_tools/paltypes.py 中的 PALWORLD_CUSTOM_PROPERTIES 字典键就是全部可选路径。懒得挑时传 all 全量解析python -m palworld_save_tools.commands.convert Level.sav --custom-properties all✅ 看到 Writing JSON to Level.sav.json 即成功。收尾照着这四步走基础背熟 SAV 转 JSON、JSON 转 SAV 两条命令能独立完成一次往返。应用用 --custom-properties 按需求裁剪解析范围写回游戏前跑一遍 resave_test。自动化把批量备份与批量校验放进定时任务服务器存档自动归档。进阶在自己的项目里直接 import 转换函数把它当存档处理库用。版本提醒palworld-save-tools 处于快速迭代期游戏更新后存档结构可能变化建议 pip 安装时锁定具体版本需要新功能时再按需升级。【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考