ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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 分钟跑通第一次存档转换路线 AWindows 用户拖拽文件就能用Windows 下最快的方式几乎不需要记任何命令。把工具包解压后你会看到一个convert.cmd批处理脚本找到你的存档目录Steam 版通常在%LOCALAPPDATA%\Pal\Saved\SaveGames\SteamID\SaveID下把Level.sav直接拖到这个脚本图标上松手等终端跑完同目录下就会出现一个Level.sav.json改完 JSON 后再把这个.json文件拖回脚本上就能还原成.sav。脚本会自动依次尝试python3、python、py三种命令直到找到可用的 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 格式而且外面还套了压缩壳整个过程可以理解成拆俄罗斯套娃最外层是压缩数据文件开头有PlZ三个魔数部分新版本存档会先多一层CNK头随后是压缩方式标记。目前主流有两种0x31表示单层 zlib 压缩0x32表示双层 zlib 压缩——也就是压缩过的数据再压一遍。工具第一步就是按标记逐层解压校验长度无误后取出原始 GVAS 字节流中层是 GVAS 结构解压后的数据是虚幻引擎的序列化格式里面塞满了头部信息、版本号、以及一棵巨大的属性树最内层才是游戏数据公会、角色、物品、基地、工作分配等全部以二进制属性形式埋在树里。转换回 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只在需要时才会引入。对普通用户来说这意味着部署极简也不会遇到依赖冲突的连环坑。实战三个高频场景从零跑通场景一给帕鲁体检并调整数值先把Level.sav转成 JSON用支持大文件的编辑器打开VS Code 或 JetBrains 系列 IDE 均可搜索CharacterSaveParameterMap顺着层级找到目标帕鲁的RawData里面就是它的各项属性、词条、等级经验直接改数字保存 JSON转回 SAV放回存档目录启动游戏验证。小提示改存档前一定把原Level.sav复制一份到别的文件夹改坏了随时换回去这是成本最低的后悔药。场景二把联机存档迁移到专用服务器联机房和专用服务器的存档在某些数据上不互通常见痛点是玩家 ID 对不上。这类迁移本质上就是批量修改 JSON 里的 ID 字段转成 JSON 后搜索并替换玩家 UID再把文件转回 SAV。社区里很多联机档转服务器档的工具底层干的就是这件事。场景三存档疑似损坏时的抢救流程遇到进不去游戏、怀疑存档损坏的情况别急着删档先把Level.sav转 JSON观察转换过程是否报错如果转换成功用编辑器检查 JSON 里是否有异常值比如缺失的大段数据、明显不合理的负值修好或删掉异常片段后转回 SAV重新进游戏测试如果转换阶段就报not a compressed Palworld save之类的错说明文件本身已经坏了这时候只能靠你之前的备份来恢复。顺带一提工具专门区分了Level.sav、LevelMeta.sav、LocalData.sav、WorldOption.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这样工具会跳过其他所有结构的深度解析大存档的转换耗时和内存占用都能明显下降。避坑指南把别人踩过的坑提前绕开以下几条是我和不少玩家用下来最常踩的坑提前知道能省一整晚大 JSON 文件别用普通记事本打开。Level.sav转出来的 JSON 动辄几百 MBWindows 记事本基本打不开务必用 VS Code 这类现代编辑器否则会卡死甚至闪退内存不够是常态。转换过程会把整份存档读进内存再重建小内存机器处理后期大存档时可能直接内存不足。缓解办法升级 64 位 Python、用--minify-json减小输出、用--custom-properties只解析需要的部分覆盖前一定要看提示。默认情况下如果输出文件已存在工具会问你y/n确认是否覆盖配合--force可以跳过确认但也意味着误操作时没有缓冲机会所以我个人只在脚本化批量处理时才加--force游戏版本与工具版本要匹配。帕鲁更新频繁存档结构也会跟着变。如果转换报错先看看工具是否有新版本、有没有适配你当前游戏版本的说明双向转换 ≠ 乱改保险箱。虽然往返转换是比特级无损的但你在 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, forceTrue, minifyTrue, # 压缩输出给下游程序提速 )想深度定制解析逻辑的开发者则可以基于gvas、palsav这两个模块自建解析管线前者负责 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),仅供参考
返回列表