Palworld存档转换完整指南:把Level.sav变成看得懂的JSON,再原样变回去
Palworld存档转换完整指南:把Level.sav变成看得懂的JSON,再原样变回去
【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools
你有没有过这样的经历:想给帕鲁调一调属性,给基地加一点资源,打开存档目录,看到那个Level.sav,双击……记事本弹出一屏乱码,像一本用外星语写的日记。这时候,专为帕鲁世界打造的palworld-save-tools存档转换工具就能登场了——它的本事很单纯:把.sav转成人类能读的 JSON,你改完,它再原样转回去,一个字节都不差。
这篇文章不打算按"安装—教程—问答—总结"的老套路走,而是想带你去"改档现场"逛一圈:跟着我这位已经踩过坑的老玩家,把这款 SAV 文件转换工具从陌生聊到顺手。
第一幕 那个深夜,我的存档对我笑了
先讲个真实到扎心的画面:深夜两点,我蹲在电脑前,面前是一个 200MB 的Level.sav。我用通用存档编辑器打开它,角色数据缺胳膊少腿,帕鲁属性显示成一串问号,基地建筑信息直接消失。想改个背包,愣是找不到入口。
那一刻我意识到三件事,这也是这个项目最值钱的三个真相:
真相一:二进制存档是"加密日记",JSON 是"翻译稿"。通用编辑器只认识标准格式,就像只会读印刷体的人遇到了手写狂草。而palworld-save-tools是专门研究过帕鲁手写习惯的那位翻译官。
真相二:它懂帕鲁特有的"黑话"。这个工具在 v0.1.4.0 版本的基础上,几乎解析了Level.sav里所有已知的自定义数据结构——公会和组织的GroupSaveDataMap、玩家与帕鲁的CharacterSaveParameterMap、地图建筑MapObjectSaveData、物品容器ItemContainerSaveData、基地营地的完整配置BaseCampSaveData……这些恰恰是通用工具全军覆没的地方。
真相三:正确性比速度重要。项目的开发哲学写得很直白:SAV → JSON → SAV 这条往返路线,要做到压缩前比特级一致。翻译一次、再翻译回来,稿子必须一字不差,这就是"兜底保险"。
第二幕 第一次试玩:三分钟跑通 SAV → JSON
听起来很麻烦?其实从"拿到工具"到"看到 JSON",三分钟就够了。
第一步,确认你有 Python 3.9 或更高版本。Windows 用户可以去微软商店装,装完在终端敲一句python --version能回版本号就行。
第二步,把工具请到本地:
git clone https://gitcode.com/gh_mirrors/pa/palworld-save-tools cd palworld-save-tools第三步,开始第一趟转换:
python convert.py Level.sav注意看,命令后面的文件名用的是相对路径,也就是说在项目目录下执行即可。运行完,你会发现旁边多了一个Level.sav.json——恭喜,你的存档第一次"开口说话"了。
想把它变回去?一样简单:
python convert.py Level.sav.json它会自动生成Level.sav。整个过程全靠文件扩展名智能判断方向,不需要你手动声明。
如果你用的是 Windows,还有一条更省事的"拖拽流":把存档文件直接拖到convenience_tools/convert.cmd上,松手,完事。JSON 拖回去又能还原成 SAV,跟魔法一样。对应关系先记在下面这张小抄上:
| 你要做什么 | 做法 | 产出 |
|---|---|---|
| SAV 转 JSON | python convert.py 存档.sav或拖到 convert.cmd | 存档.sav.json |
| JSON 转 SAV | python convert.py 存档.sav.json或拖到 convert.cmd | 存档.sav |
| 强行指定方向 | 加--to-json或--from-json | 忽略扩展名判断 |
| 指定输出位置 | 加--output 路径 | 文件写到别处 |
第三幕 打开 JSON 之后:这堆"天书"在说什么
好,JSON 是打开了,但里面还是密密麻麻的嵌套结构,怎么办?别慌,先看地图,再看街道。
整个 JSON 的骨架叫 GVAS(Unreal 引擎的存档格式),最关键的街区都挂在.worldSaveData下面。而"街道名"怎么解析,全写在palworld_save_tools/paltypes.py这个文件里。挑几条主街给你认认门:
| 数据结构路径 | 管的是什么 |
|---|---|
.worldSaveData.GroupSaveDataMap | 公会、组织等玩家团体 |
.worldSaveData.CharacterSaveParameterMap.Value.RawData | 玩家和帕鲁的完整属性 |
.worldSaveData.ItemContainerSaveData | 各种物品容器 |
.worldSaveData.BaseCampSaveData | 基地营地的家底 |
.worldSaveData.WorkSaveData | 工作台和分配的任务 |
想给某只帕鲁改属性?顺着CharacterSaveParameterMap找下去,它的数值就以明明白白的样子躺在 JSON 里。比如一个简化后的片段长这样:
{ "key": "角色唯一ID", "value": { "RawData": { "character_id": "Pal_赤炎兽", "level": 35, "talent_1": 90 } } }当然真实文件比这深得多,但"看懂它"已经不再是天方夜谭——你只是在读一本目录清晰的字典,而不是乱码。
第四幕 大文件不慌:三招让内存冷静下来
Level.sav动辄几百 MB,转出来的 JSON 更是大得能吓哭记事本。这时候有三个减压阀:
第一招,JSON 瘦身:加一个--minify-json,输出变成紧凑单行格式,体积明显变小,也更方便其他程序消费。
python convert.py Level.sav --minify-json第二招,选择性解析:如果你只想动公会和角色数据,可以用--custom-properties点名:
python convert.py Level.sav --custom-properties \ .worldSaveData.GroupSaveDataMap,\ .worldSaveData.CharacterSaveParameterMap.Value.RawData没点名的数据块会被跳过,内存占用直线下降,处理速度反而更快。
第三招,换把称手的编辑器。别拿记事本硬刚大 JSON,VS Code 或 JetBrains 系 IDE 才能流畅打开、折叠、搜索。
这几种组合怎么选?一张表说清楚:
| 使用场景 | 推荐参数 | 效果 |
|---|---|---|
| 单人存档小改 | 默认参数 | 全量解析,直观 |
| 服务器批量处理 | --minify-json | 文件更小,流转更快 |
| 只改公会+角色 | --custom-properties | 内存占用最低 |
| 完整备份 | 默认全量 | 不丢任何细节 |
第五幕 血泪教训:我替你踩过的五个坑
工具再顺手,坑还是有的。下面五条是我真金白银换来的经验,建议先收藏:
坑一:JSON 用记事本打开直接卡死。不是文件坏了,是它太大了。换 VS Code、Sublime Text 这类现代编辑器;只想瞄一眼结构,可以先用jq之类的命令行工具过滤查看。
坑二:改完转回 SAV,游戏报"存档损坏"。九成原因是改坏了。请务必先备份原文件,然后"小步快跑"——一次只改一小块,进游戏验证没问题再改下一处。
坑三:改的时候把数字类型弄错了。JSON 里是整数的地方填了小数,是文本的地方填了数字,转换器会不知所措。改之前先看一眼原值类型,保持同款。
坑四:convert.cmd拖拽后没反应。Windows 用户常见病。试试在系统设置里搜"管理应用执行别名",把 Python 相关的别名关掉;或者干脆放弃拖拽,改用命令行python convert.py 你的存档.sav。
坑五:输出文件已存在时被反复询问。转换器默认会跟你确认"是否覆盖",批量跑脚本时很烦人。加上--force就能安静地直接覆盖。
第六幕 想继续深挖?三扇门为你敞开
如果你不满足于"会用",想弄明白"为什么",这几扇门可以推一推:
- 想知道数据结构怎么定义?看
palworld_save_tools/paltypes.py,所有类型提示和自定义属性都登记在这里。 - 想研究某个具体数据的解析逻辑?进
palworld_save_tools/rawdata/目录,基地、角色、容器、工作台……每种数据类型都有一个独立模块,拆得很干净。 - 想看命令行入口?
palworld_save_tools/commands/convert.py就是convert.py的真身。 - 想确认"比特级一致"不是吹牛?
tests/test_cli_scripts.py里有一段往返测试:SAV → JSON → SAV 连续转三轮,最后逐字节比对,分毫不差才通过。这大概就是这个项目最硬核的浪漫。
如果你是开发者,还可以pip install palworld-save-tools把它当库用,在代码里直接调用解析引擎,省去自己啃二进制格式的苦功。
收工之前
说到底,palworld-save-tools做的事只有一件:把帕鲁世界的存档,从"天书"翻译成"人话",再一句不差地翻译回去。它不需要你懂 Unreal 引擎,不需要你读得懂十六进制,只需要你有一点点耐心和一份备份。
所以,别犹豫了——从今天起,第一步就是找到你的Level.sav,跑一次python convert.py Level.sav,亲眼看看你的帕鲁数据第一次以看得懂的姿态出现在屏幕上。剩下的路,你自己就能走下去了。🚀
【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
