ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

幻兽帕鲁存档编辑实战:palworld-save-tools 让 .sav 与 JSON 自由互转

幻兽帕鲁存档编辑实战:palworld-save-tools 让 .sav 与 JSON 自由互转 幻兽帕鲁存档编辑实战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-save-tools正是解决这个问题的钥匙它能把.sav存档完整地翻译成人类可读的 JSON改完之后再原样转回.sav。读完本文你会掌握从安装、转换、修改到批量自动化的完整流程。一、先看清对手存档文件里到底藏着什么在动手之前先花一分钟理解存档的本质这能帮你少踩很多坑。.sav文件本质上是游戏引擎的序列化数据它把世界里的每一样东西都编码成字节流还做了压缩处理。palworld-save-tools 的处理流程可以概括为两条路解压与解码把压缩的.sav解包成引擎内部的 GVAS 结构再按帕鲁特有的规则解析成 JSON反向还原把 JSON 重新编码、压缩回字节流产出和原文件一致的.sav。整个过程的目标是无损官方明确承诺SAV → JSON → SAV的往返转换压缩前应得到逐字节一致的还原结果。这意味着你可以放心大胆地改 JSON只要不写坏语法游戏就能正常读取。对于大部分玩家来说最常接触的是Level.sav——它承载了整个世界的核心数据。工具目前能够解析的数据结构包括以下这些想改的东西对应的数据结构说明公会、组织信息GroupSaveDataMap成员、权限等组织类数据玩家与帕鲁属性CharacterSaveParameterMap角色等级、技能、外观等地图上的物件MapObjectSaveData建筑位置、世界物品背包与容器ItemContainerSaveData物品数量、资源储备帕鲁存储容器CharacterContainerSaveData帕鲁仓库、个体属性动态物品DynamicItemSaveData带状态变化的物品植被网格FoliageGridSaveDataMap地表植物等基地与营地BaseCampSaveData基地布局、生产设施工作相关数据WorkSaveData工作分配与任务状态记住这张表后面用--custom-properties选择性解析时会用到它。二、三种方式把工具装进你的电脑palworld-save-tools 需要 Python 3.9 或更高版本。不同习惯的用户有三条路可以选方式一直接用 pip 安装推荐开发者pip install palworld-save-tools安装完成后命令行里会多出一个palworld-save-tools命令可以直接调用。由于项目仍在快速迭代、接口可能变化建议锁定具体版本号再升级。方式二克隆源码安装推荐想读代码的用户git clone https://gitcode.com/gh_mirrors/pa/palworld-save-tools cd palworld-save-tools pip install .这种方式的额外好处是你可以在本地直接运行python convert.py脚本也能随时翻阅palworld_save_tools/目录下的源码搞清楚每一块数据是怎么被解析的。方式三Windows 用户免命令行最省事从项目的发布页下载最新的 Windows 压缩包解压到任意文件夹后直接把.sav文件拖到convert.cmd上松手即可完成转换把.sav.json再拖上去一次就能转回.sav。整个过程不需要敲任何命令。如果convert.cmd双击后没有反应多半是 Windows 的应用执行别名拦住了 Python到系统设置里关掉相关别名再试或者干脆改用终端方式。三、完成你的第一次存档转换Steam 版《幻兽帕鲁》的存档默认放在这个目录下%LOCALAPPDATA%\Pal\Saved\SaveGames\SteamID\SaveID\核心文件就是Level.sav。动手之前先把原始文件复制一份到安全的地方——这是整个流程中最重要的一步后面所有操作都建立在这份备份之上。找到存档后在终端里执行二选一取决于你的安装方式# 方式一使用全局命令 palworld-save-tools Level.sav # 方式二在源码目录里直接运行 python convert.py Level.sav工具会根据文件扩展名自动判断方向.sav转 JSON.json转回.sav。默认输出文件名为原文件名加上.json后缀反过来则是去掉.json。如果你想显式指定转换方向可以用两个强制参数# 强制 SAV → JSON palworld-save-tools Level.sav --to-json # 强制 JSON → SAV palworld-save-tools Level.sav.json --from-json转换得到的 JSON 文件会很大。用 Visual Studio Code 或 JetBrains 系的编辑器打开会流畅很多记事本这种轻量工具很可能直接卡死。修改完成后执行反向命令把改动写回游戏即可。四、命令行参数速查每个选项什么时候用工具提供了一组实用的开关这里按使用场景重新整理一份速查表参数作用典型使用场景--to-json强制按 SAV→JSON 方向转换文件扩展名异常时兜底--from-json强制按 JSON→SAV 方向转换同上反向兜底--output/-o自定义输出路径不想覆盖默认命名时--force/-f覆盖已有文件不再询问脚本批量运行时避免卡在确认提示--minify-json输出压缩后的 JSON供其他程序二次处理加快读取--convert-nan-to-null把 NaN/Inf 浮点值转成 null保证 JSON 合法性但会丢失 Inf 信息--custom-properties只解析指定的数据结构大存档提速、按需解析其中--custom-properties是最值得研究的参数单独开一节细说。五、大存档的提速秘诀按需解析一个完整Level.sav的 JSON 可能达到数 GB处理时对内存和 CPU 都是考验。如果你只关心某一类数据完全没必要把整个世界都解析出来。--custom-properties接受一个逗号分隔的路径列表路径来自paltypes.py中定义的属性映射。例如只想看公会和角色数据palworld-save-tools Level.sav --to-json \ --custom-properties .worldSaveData.GroupSaveDataMap,.worldSaveData.CharacterSaveParameterMap.Value.RawData这条命令会跳过其余所有结构只处理你点名的那几个解析速度往往能提升一半以上内存占用也大幅下降。这是个非常实用的思路先把范围缩小改完再整体转换回去。与之搭配的还有两个小技巧大存档尽量用 64 位 Python并在转换前关闭无关程序给足内存余量如果 JSON 是给脚本或工具消费的加上--minify-json能明显加快读取。六、常见翻车现场与对策即便是熟练用户也难免在几个老地方栽跟头。提前了解这些坑能省下不少时间转换失败或文件损坏。先确认存档没被游戏进程占用必要时用游戏自带的存档修复功能处理后重试。若依然失败回到备份文件重新操作。内存不足。存档越大解析越吃内存。使用--custom-properties缩小范围是最直接的解法也可以先把 Level.sav 移到 SSD 上减少磁盘读写等待。游戏读不了修改后的存档。九成是 JSON 语法出了问题——多一个逗号、少一个引号都会让转换结果失效。修改前先确认 JSON 校验通过每次只改少量内容出问题也好定位。覆盖提示反复弹出。批量处理时加上--force让脚本一口气跑完单次操作时则保留确认提示避免手滑覆盖重要文件。数据神秘失踪。检查是否使用了--convert-nan-to-null——这个开关会把Inf/-Inf这类特殊浮点值转成 null属于有损操作。不是必要场景尽量别开。七、从手动改到自动化批量处理与生态工具当你要处理的存档不止一个时手敲命令就太慢了。写一段简单的 Python 脚本把转换 → 修改 → 还原串成流水线import subprocess save_files [save1/Level.sav, save2/Level.sav, save3/Level.sav] for save_file in save_files: # 1. 转成 JSON subprocess.run([palworld-save-tools, save_file, --to-json, --force]) # 2. 在这里插入你的 JSON 修改逻辑 # 3. 转回 SAV subprocess.run([palworld-save-tools, save_file .json, --from-json, --force])如果你想省掉自己写逻辑的功夫社区里已经有一批围绕 palworld-save-tools 构建的工具PalEdit图形化帕鲁编辑器可视化调整帕鲁属性palworld-host-save-fix把联机存档迁移到专用服务器处理玩家 ID 转换palworld-server-tool通过 RCON 和存档解析管理专用服务器palworld-server-toolkit一套杂项存档操作工具集。这些工具各有所长但底层都离不开解析 → 修改 → 回写这条主线理解了本文的原理你就能更好地驾驭它们。八、一个值得信任的项目背后有清晰的原则最后聊聊这个项目本身的设计理念它决定了你用它时能有多放心零外部依赖脚本用 Python 标准库即可运行不要求装任何第三方包性能增强是可选项正确性优先宁可慢一点也要保证往返转换逐字节一致这是所有修改操作的安全底线正在完善项目路线图包括解析全部已知数据结构、优化 CPU 与内存占用。模块分工也很清晰archive.py负责存档读写gvas.py处理引擎数据palsav.py管压缩解压paltypes.py定义类型映射commands/convert.py是命令行入口rawdata/目录下则是一系列针对具体结构的解析器。想深入研究的读者从这里下手准没错。结语备份然后开始你的第一次修改现在工具已经装好、命令已经记住、坑也提前排过了。回到开头那个周末——与其对着乱码发愁不如动手把角色等级调一调体验一次数据在手的掌控感。给第一次动手的你三句叮嘱先备份再谈修改小步走一次只动一处改完立刻验证游戏能否读取合理使用单人游戏里自娱自乐别在多人服务器上影响他人体验。从今天的第一次转换开始你会发现原本神秘的存档文件不过是另一个可以放心摆弄的文本而已。【免费下载链接】palworld-save-toolsTools for converting Palworld .sav files to JSON and back项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表