news 2026/8/18 12:21:20

Palworld存档转换完整指南:用palworld-save-tools把SAV变成可读JSON(附实操与避坑要点)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Palworld存档转换完整指南:用palworld-save-tools把SAV变成可读JSON(附实操与避坑要点)

Palworld存档转换完整指南:用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

玩《幻兽帕鲁》(Palworld)玩到深处,几乎人人都会撞上同一堵墙:想改点数值、想挪服务器、想救回一个快坏掉的存档,结果发现存档全是.sav二进制文件,记事本打开一片乱码。palworld-save-tools 正是为这件事而生的开源工具——它能把 Palworld 的 SAV 存档文件完整解析成人类可读的 JSON,你改完再转回去,文件可以做到比特级无损,堪称"存档界的同声传译"。

一个让我深夜破防的场景

先讲我自己的故事。有一次我在联机房养了一只 4 词条的稀有帕鲁,结果好友手滑把基地拆了,顺手把我唯一一只闪光帕鲁连带传送到了地图边缘。我气得想直接改存档把它"传送"回来,但打开Level.sav一看,满屏的二进制乱码直接劝退。当时网上能找到的存档工具,要么只能读不能写,要么会把存档改坏,折腾一整晚,最后只能老实重抓。

后来我找到了 palworld-save-tools,前后不到十分钟就搞定了:把存档转成 JSON → 找到对应数据改数值 → 转回 SAV → 丢进游戏。从此我养成了一个习惯:任何改动之前先备份,改坏了也能一键回滚。这篇文章就把我摸索出来的完整流程和踩过的坑一次讲清楚。

它是谁:把"天书"翻译成"账本"的存档翻译官

一句话定位:palworld-save-tools 是一个将 Palworld 的.sav存档文件与 JSON 格式互转的命令行工具,面向三类人:

  • 普通玩家:想微调帕鲁数值、改物品数量、修复坏档;
  • 服务器管理员:批量处理玩家存档、迁移联机档到专用服务器;
  • 开发者:把存档解析能力封装进自己的工具(社区里不少帕鲁服务器管理工具就是基于它做的)。

它的工作链路可以想象成一次"翻译—修改—回译":.sav是游戏写的"天书",JSON 是你能看懂的"账本",你只需要在账本上改数字,工具会负责把修改后的账本重新"翻译"回天书,让游戏照常读取。

三条路上手:3 分钟跑通第一次存档转换

路线 A:Windows 用户,拖拽文件就能用

Windows 下最快的方式几乎不需要记任何命令。把工具包解压后,你会看到一个convert.cmd批处理脚本:

  1. 找到你的存档目录(Steam 版通常在%LOCALAPPDATA%\Pal\Saved\SaveGames\<SteamID>\<SaveID>下);
  2. Level.sav直接拖到这个脚本图标上,松手;
  3. 等终端跑完,同目录下就会出现一个Level.sav.json
  4. 改完 JSON 后,再把这个.json文件拖回脚本上,就能还原成.sav

脚本会自动依次尝试python3pythonpy三种命令,直到找到可用的 Python 解释器,省去了手动配置环境变量的麻烦。

路线 B:命令行一行搞定

如果你习惯用终端,流程同样简单。先确认 Python 3.9 或更高版本已安装,然后执行:

# SAV 转 JSON python convert.py "路径/Level.sav" # JSON 转回 SAV python convert.py "路径/Level.sav.json"

它默认根据文件扩展名自动判断转换方向:.sav就转 JSON,.json就转回 SAV,不需要额外参数。

路线 C:当成 Python 库装进你的项目

需要二次开发的场景,可以直接从 PyPI 安装:

pip install palworld-save-tools

安装后会多出一个palworld-save-tools命令行入口,等价于上面的convert.py;同时你也可以在代码里直接 import 它的转换函数,后文"进阶玩法"会给出示例。想追最新版代码,也可以克隆仓库到本地研究:

git clone https://gitcode.com/gh_mirrors/pa/palworld-save-tools

把俄罗斯套娃一层层拆开:SAV 文件里到底藏着什么

想用得安心,得稍微知道它"翻译"的到底是什么。Palworld 的存档基于虚幻引擎的 GVAS 格式,而且外面还套了压缩壳,整个过程可以理解成拆俄罗斯套娃:

  1. 最外层是压缩数据:文件开头有PlZ三个魔数(部分新版本存档会先多一层CNK头),随后是压缩方式标记。目前主流有两种:0x31表示单层 zlib 压缩,0x32表示双层 zlib 压缩——也就是压缩过的数据再压一遍。工具第一步就是按标记逐层解压,校验长度无误后取出原始 GVAS 字节流;
  2. 中层是 GVAS 结构:解压后的数据是虚幻引擎的序列化格式,里面塞满了头部信息、版本号、以及一棵巨大的属性树;
  3. 最内层才是游戏数据:公会、角色、物品、基地、工作分配等,全部以二进制属性形式埋在树里。

转换回 SAV 时则完全逆着走一遍:JSON → GVAS 字节流 → 按原压缩方式(单层或双层 zlib)重新压好,并补上长度头与魔数。正因为这个流程是可逆的,工具才能承诺"SAV 转 JSON 再转回 SAV,压缩前的字节一模一样"。

它能"读懂"的九大存档数据结构

普通 Unreal 存档编辑器只能把数据当作一团未知字节囫囵吞下,而 palworld-save-tools 额外为以下九类数据写了专门的解析逻辑,这也是它区别于同类工具的核心价值:

数据结构对应游戏内容
GroupSaveDataMap公会、组织等团体信息
CharacterSaveParameterMap玩家与帕鲁的角色数据
MapObjectSaveData地图上摆放的物件
ItemContainerSaveData物品容器(箱子、背包等)
CharacterContainerSaveData角色容器(如帕鲁终端)
DynamicItemSaveData动态物品(带独立属性的装备等)
FoliageGridSaveDataMap植被网格数据
BaseCampSaveData据点 / 基地信息
WorkSaveData工作分配与工作台状态

简单说:别人只能看到"这里有一坨数据",它能告诉你"这坨数据里哪个字节是公会名、哪个字节是帕鲁等级"。以公会数据为例,转换后的 JSON 大致长这样(具体字段随游戏版本略有差异,以你导出的实际文件为准):

{ "worldSaveData": { "GroupSaveDataMap": { "Value": { "RawData": { "GroupType": "EPalGroupType::Guild", "GuildName": "我的第一座牧场", "PlayerUIds": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"] } } } } }

看到这种可读结构,你就知道该去哪一行改名字、该去哪一段找角色了。

为什么敢把存档交给它:两条设计底线

工具的作者在项目里写明了两个开发原则,我建议所有用户在动手前都先看一眼:

  • 正确性优先于性能。转换过程宁可慢一点、吃内存多一点,也要保证SAV → JSON → SAV之后(压缩前)逐字节一致。这意味着一份存档哪怕只是来回转换不改动任何内容,得到的文件也和原来完全相同,游戏不会因为"格式变了"而拒绝读取;
  • 零外部依赖。整个工具只依赖 Python 3.9+ 标准库,装完 Python 就能跑,不需要 pip 装任何第三方包。可选依赖(比如提升性能的recordclass)只在需要时才会引入。对普通用户来说,这意味着部署极简,也不会遇到依赖冲突的连环坑。

实战:三个高频场景从零跑通

场景一:给帕鲁"体检"并调整数值

  1. 先把Level.sav转成 JSON;
  2. 用支持大文件的编辑器打开(VS Code 或 JetBrains 系列 IDE 均可),搜索CharacterSaveParameterMap
  3. 顺着层级找到目标帕鲁的RawData,里面就是它的各项属性、词条、等级经验;
  4. 直接改数字,保存 JSON;
  5. 转回 SAV,放回存档目录启动游戏验证。

小提示:改存档前一定把原Level.sav复制一份到别的文件夹,改坏了随时换回去,这是成本最低的后悔药。

场景二:把联机存档迁移到专用服务器

联机房和专用服务器的存档在某些数据上不互通,常见痛点是玩家 ID 对不上。这类迁移本质上就是"批量修改 JSON 里的 ID 字段":转成 JSON 后,搜索并替换玩家 UID,再把文件转回 SAV。社区里很多"联机档转服务器档"的工具,底层干的就是这件事。

场景三:存档疑似损坏时的抢救流程

遇到进不去游戏、怀疑存档损坏的情况,别急着删档:

  1. 先把Level.sav转 JSON,观察转换过程是否报错;
  2. 如果转换成功,用编辑器检查 JSON 里是否有异常值(比如缺失的大段数据、明显不合理的负值);
  3. 修好或删掉异常片段后转回 SAV,重新进游戏测试;
  4. 如果转换阶段就报"not a compressed Palworld save"之类的错,说明文件本身已经坏了,这时候只能靠你之前的备份来恢复。

顺带一提,工具专门区分了Level.savLevelMeta.savLocalData.savWorldOption.sav等文件,通常需要处理的是体积最大的Level.sav

参数速查表:把这几个选项记熟就够了

命令行提供了不少开关,实际高频用到的基本就这几个:

参数作用
--to-json强制按 SAV 转 JSON 处理,无视扩展名
--from-json强制按 JSON 转 SAV 处理,无视扩展名
--output-o指定输出文件路径,默认是"原文件名+.json"
--force-f输出文件已存在时不再询问,直接覆盖
--minify-json输出压缩后的 JSON(去掉缩进与空格),文件更小、后续程序处理更快
--custom-properties只解析指定的数据结构,其余跳过,显著提速
--convert-nan-to-null把 NaN / Inf 浮点数转成 null,代价是可能丢失信息,默认关闭

其中--custom-properties是最实用的加速手段。比如我只关心公会和角色数据,就可以这样限制解析范围:

palworld-save-tools Level.sav --custom-properties .worldSaveData.GroupSaveDataMap,.worldSaveData.CharacterSaveParameterMap.Value.RawData

这样工具会跳过其他所有结构的深度解析,大存档的转换耗时和内存占用都能明显下降。

避坑指南:把别人踩过的坑提前绕开

以下几条是我和不少玩家用下来最常踩的坑,提前知道能省一整晚:

  1. 大 JSON 文件别用普通记事本打开Level.sav转出来的 JSON 动辄几百 MB,Windows 记事本基本打不开,务必用 VS Code 这类现代编辑器,否则会卡死甚至闪退;
  2. 内存不够是常态。转换过程会把整份存档读进内存再重建,小内存机器处理后期大存档时可能直接内存不足。缓解办法:升级 64 位 Python、用--minify-json减小输出、用--custom-properties只解析需要的部分;
  3. 覆盖前一定要看提示。默认情况下,如果输出文件已存在,工具会问你y/n确认是否覆盖;配合--force可以跳过确认,但也意味着误操作时没有缓冲机会,所以我个人只在脚本化批量处理时才加--force
  4. 游戏版本与工具版本要匹配。帕鲁更新频繁,存档结构也会跟着变。如果转换报错,先看看工具是否有新版本、有没有适配你当前游戏版本的说明;
  5. 双向转换 ≠ 乱改保险箱。虽然往返转换是比特级无损的,但你在 JSON 里"瞎改"造成的逻辑错误(比如把数量改成负数、把 ID 改成不存在的值)工具不会帮你兜底,改完记得进游戏实测。

进阶玩法:把转换能力嵌进你自己的脚本

如果你会一点 Python,还能把它的转换能力直接拿来用。比如批量把整个目录的存档转成 JSON,代码可以精简到几行:

from pathlib import Path from palworld_save_tools.commands.convert import convert_sav_to_json for sav in Path("save_games").glob("*.sav"): convert_sav_to_json( str(sav), str(sav) + ".json", force=True, minify=True, # 压缩输出,给下游程序提速 )

想深度定制解析逻辑的开发者,则可以基于gvaspalsav这两个模块自建解析管线:前者负责 GVAS 结构读写,后者负责 SAV 的压缩与解压,二者组合就能实现"读入存档 → 自定义处理 → 写回存档"的完整闭环。

结语:现在就去备份一份存档试试

回顾一下全文要点:

  • 是什么:palworld-save-tools 是一个 SAV 与 JSON 互转的 Palworld 存档工具,能把二进制天书翻译成可读账本;
  • 怎么用:Windows 拖拽convert.cmd、命令行python convert.py、或pip install三选一,3 分钟即可跑通;
  • 为什么可靠:正确性优先 + 零依赖,往返转换比特级无损;
  • 怎么避坑:大 JSON 用专业编辑器、注意内存占用、改档前永远备份、留意游戏版本兼容。

如果你正被某个帕鲁数值、某次服务器迁移或某个"打不开的存档"困扰,现在就可以先去存档目录把Level.sav复制一份,然后跑一次转换,亲眼看一看你辛苦经营的世界在 JSON 里长什么样。相信我,看到那行可读的"GuildName"时,你会觉得这一切都值了。

【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 12:20:38

C++26新特性落地,存量代码库的现代升级经验

从标准到产线&#xff1a;C26 新特性的工程化落地思路 C26 的草案已趋于稳定&#xff0c;对于长期维护百万行级代码库的系统软件团队来说&#xff0c;真正的挑战从来不是“特性有没有”&#xff0c;而是“怎么在不翻车的前提下用上新东西”。过去两年&#xff0c;我所在的团队…

作者头像 李华
网站建设 2026/8/18 12:18:02

Packmol 从零上手:分子动力学模拟初始构型的完整构建指南

Packmol 从零上手&#xff1a;分子动力学模拟初始构型的完整构建指南 【免费下载链接】packmol Packmol - Initial configurations for molecular dynamics simulations 项目地址: https://gitcode.com/gh_mirrors/pa/packmol Packmol 是一个用 Fortran 写就的开源打包工…

作者头像 李华
网站建设 2026/8/18 12:17:57

2026上海移动硬盘数据恢复选型避坑指南及机构对比测试

2026年&#xff0c;高频跨城办公与大型项目协作让便携式移动硬盘成为职场刚需标配。伴随频繁携带&#xff0c;摔落异响、意外进水等物理损坏&#xff0c;以及误格式化引起的逻辑故障成为数据安全的高危触点。当意外发生时&#xff0c;一块存储着核心项目代码或绝密标书的硬盘&a…

作者头像 李华
网站建设 2026/8/18 12:17:11

大模型服务新范式:Agentic Discovery实现推理时动态协同与性能扩展

1. 项目概述&#xff1a;当大模型开始自我进化最近在跟几个做模型推理和部署的朋友聊天&#xff0c;大家普遍有个感觉&#xff1a;大模型&#xff08;LLMs&#xff09;上线后的表现&#xff0c;跟离线评测时总有点“货不对板”。你精心调教好的模型&#xff0c;在真实用户五花八…

作者头像 李华
网站建设 2026/8/18 12:15:14

LAVE框架:基于潜在视觉证据的视频工具使用智能体规划技术解析

1. 项目概述&#xff1a;当AI学会“看视频”并“动手”解决问题最近在搞多模态智能体研究的朋友&#xff0c;估计都绕不开一个核心挑战&#xff1a;如何让AI不仅看懂视频里发生了什么&#xff0c;还能像人一样&#xff0c;基于看到的画面信息&#xff0c;规划并执行一系列工具操…

作者头像 李华