news 2026/8/24 19:48:44

虚幻引擎存档编辑器 uesave 教程:3 条命令把 .sav 存档转成 JSON 随意改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
虚幻引擎存档编辑器 uesave 教程:3 条命令把 .sav 存档转成 JSON 随意改

虚幻引擎存档编辑器 uesave 教程:3 条命令把 .sav 存档转成 JSON 随意改

【免费下载链接】uesaveRust library and CLI to read and write Unreal Engine save files项目地址: https://gitcode.com/gh_mirrors/ue/uesave

uesave 是一个用 Rust 编写的免费开源虚幻引擎存档编辑器,专门读写 UE 游戏的存档文件(GVAS 格式)。它能将二进制 .sav 存档完整解析成人类可读的 JSON,让你用文本编辑器直接改数值,再回写成游戏能识别的存档文件。适合存档备份、调整进度与资源、以及摸清游戏内部的数据结构。

.sav 存档为什么打不开

先搞懂对象:你双击 .sav 看到一堆乱码不是文件坏了。UE 存档是一种叫 GVAS(Game Archive)的二进制格式,属性名、类型标签、长度前缀全部以字节流形式存储,"序列化"就是把结构化数据压成这种字节流的过程。

用十六进制编辑器硬改当然可以,但你得先懂格式细节,写错一个字节整个存档就废了。uesave 把序列化这层脏活接过去:读取时按属性逐项还原成 JSON,写出时再按原格式落回字节,你只在可读层操作。核心解析逻辑在 uesave/src/archive.rs,属性的序列化实现在 uesave/src/serialization.rs,排错时可以对照源码看。

三步装好 uesave 存档编辑工具

装完后你会得到一个uesave命令,Windows、macOS、Linux 上行为一致。

先确认系统里有 Rust 工具链(需要 1.60.0 及以上):

rustc --version

然后从仓库安装:

cargo install --git https://gitcode.com/gh_mirrors/ue/uesave

最后验证:

uesave --version

有个容易踩的命名点:可执行包的源码目录叫 uesave_cli,但装出来的命令是uesave。跑uesave --help能看到全部四个子命令,其中三个是你日常会用到的。

三条命令覆盖全部工作流

  • to-json:把二进制存档导出为 JSON
  • from-json:把 JSON 回写成二进制存档
  • edit:一步完成"导出 → 打开编辑器 → 回写"

另有一个test-resave,后面排错时会用到。

UE 存档转 JSON:to-json 与 from-json 怎么配合

导出存档(输入输出默认走标准输入输出,也可以显式指定文件):

uesave to-json -i SaveGame.sav -o SaveGame.json

得到的是一份缩进整齐的 JSON,字段名就是游戏内部属性名。改完数值后回写:

uesave from-json -i SaveGame.json -o NewSaveGame.sav

注意回写时输出到新文件名,别直接覆盖原档。

想要最省事的方式,用edit一步到位:

uesave edit SaveGame.sav

它会按$EDITOR环境变量指定的编辑器打开临时 JSON,你保存退出后自动回写原文件;如果内容没改动,它会提示 "File unchanged" 并跳过写入。

游戏存档修改教程:以深岩银河为例的完整实录

这一节用《深岩银河》(Deep Rock Galactic,官方明确测试过其存档)走一遍完整流程,节奏是"操作 → 验证 → 收尾"。仓库根目录附带了一个 drg-save-test.sav 示例存档,建议第一次先拿它练手,别直接动真存档。

操作:备份、导出、改数

先找到存档目录。Windows 在C:\Users\<用户名>\AppData\Local\FSD\Saved\SaveGames\,Linux 在~/.local/share/DeepRockGalactic/FSD/Saved/SaveGames/

动手前复制一份原档,原则是:新存档验证可用之前,原档一个字节都不动:

cp SaveGame.sav SaveGame.bak.sav

导出为 JSON:

uesave to-json -i SaveGame.sav -o SaveGame.json

打开 JSON,找到想改的字段。深岩银河存档里常见的是信用点(Credits)和资源类数值。修改边界建议收紧一点:

  • 数字、字符串、布尔值可以直接改
  • 数组长度、对象层级保持原样,增删元素风险高
  • 看不懂的字段原封不动

改完回写到新文件:

uesave from-json -i SaveGame.json -o SaveGame_modified.sav

验证:回写前和加载后各查一次

回写前,你可以顺手确认 JSON 结构没有被动坏:用编辑器的折叠和搜索功能,重点扫一眼改动过的区域附近是否还有括号、逗号问题。

回写后,把新存档文件名改回原存档名(原档仍有 .bak 备份),启动游戏加载,核对信用点、资源等数值是否生效,同时确认游戏没有报存档错误。

收尾:替换原档并留后路

游戏确认能正常读档后,这套修改才算落地。备份文件先留着,过几天确认没有连锁问题再删。如果加载失败,直接用SaveGame.bak.sav回滚,再回来查"排错手册"。

排错手册:转换报错的常见修复

遇到报错先别怀疑自己,多数情况工具已经提示了原因。下面按出现频率列:

MapProperty / SetProperty 解析失败:存档里这类字段的内部结构缺少类型上下文,uesave 会先尝试猜测,猜错就会报解析错误。解决办法是用-t参数手动指定类型,例如:

uesave to-json -i SaveGame.sav -o SaveGame.json -t .UnlockedItemSkins.Skins=Guid

edittest-resave同样支持-t参数,格式都是字段路径=类型

文件读不了或明显异常:确认 .sav 完整(大小正常、传输没被截断),并确认用的是最新版 uesave。

回写后游戏拒绝读档:最常见原因是 JSON 结构被改动——数组长度变了、字段被增删。值随便改,结构尽量不动。

改动大存档时容易出错的流程问题:JSON 可能很大,用支持折叠的代码编辑器,只展开要改的节点;改重要存档前先在一份无关紧要的存档上试同样的修改。

解析时有非致命告警:如果告警刷屏干扰阅读,加--no-warn静默。

想确认工具对某个存档是否完全可靠:跑一次回环测试,

uesave test-resave SaveGame.sav

它会把存档重新序列化一遍并逐字节比对,输出 "Resave successful" 说明该存档可以完整往返,改动风险最低。

进阶用法:批量转换与 Rust 库扩展

批量转换不需要脚本语言,一个 shell 循环就够:

for f in *.sav; do uesave to-json -i "$f" -o "${f%.sav}.json"; done

uesave 本身是一个 crate(Rust 库),CLI 只是它的外壳。想在自己的程序里读存档字段,可以直接依赖这个库,uesave/examples/read-save/main.rs 演示了如何打开存档并读取"已游玩局数"字段;另一个示例 uesave/examples/space-rig-decorator/ 则展示了完整读写一份带复杂结构的存档。

仓库里还有一个浏览器版本:uesave_wasm/把核心库编译成 WebAssembly,web/目录下是 Svelte 前端,转换在浏览器里完成,适合不方便装 Rust 环境的场景。基于库 API 你还能自定义序列化规则、扩展支持的游戏类型,把它嵌进自己的工具链。


本文基于 uesave 0.7.1 编写,官方完整验证对象是《深岩银河》存档,兼容 UE4.26+ 与 UE5.0–5.2 的存档;换其他游戏前,建议先跑一次test-resave确认往返可靠再动手。

【免费下载链接】uesaveRust library and CLI to read and write Unreal Engine save files项目地址: https://gitcode.com/gh_mirrors/ue/uesave

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

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

RTOS内核裁剪与优化

在资源有限的微控制器上引入实时操作系统,往往意味着一个现实矛盾:RTOS能够降低软件复杂度、提升任务管理能力,但内核本身也会占用代码空间、RAM以及CPU时间。 因此,RTOS裁剪并不是简单地“把不用的功能关掉”,而应该围绕应用需求,对任务、调度、内核对象、内存管理、中…

作者头像 李华
网站建设 2026/8/24 19:44:55

2026 文生视频:让 AI 把文字变成电影,MonkeyCode 免费上手

深夜 11 点&#xff0c;剪辑师阿May盯着屏幕上的空剪辑轨发呆。甲方丢来一段 300 字的文案&#xff1a;「要一条 30 秒的品牌片&#xff0c;要有科技感、要大气、要高级。」没有演员、没有实拍、没有分镜脚本——只有这 300 字。同事路过看了一眼&#xff1a;「你直接用 AI 生成…

作者头像 李华
网站建设 2026/8/24 19:42:18

100+ 轮对话不丢上下文:增量压缩的工程实践

TL;DR&#xff08;30 秒速览&#xff09; 深度研究会话 100 轮&#xff0c;上下文超过 128K token 窗口——直接截断丢历史&#xff0c;全量发送超预算增量压缩&#xff1a;只保留"上一轮摘要 最近几轮原文"&#xff0c;每轮只处理增量&#xff0c;不重新加载完整历…

作者头像 李华
网站建设 2026/8/24 19:42:00

多智能体辩论中的记忆掩码技术:原理、实现与调优

1. 项目概述&#xff1a;当AI学会“选择性遗忘”来辩论最近在折腾多智能体&#xff08;Multi-Agent&#xff09;系统&#xff0c;特别是让多个大语言模型&#xff08;LLM&#xff09;坐在一起“开会”或“辩论”的场景。这听起来很酷&#xff0c;但实操起来&#xff0c;问题一大…

作者头像 李华
网站建设 2026/8/24 19:39:01

G-Helper风扇控制:5步调出ROG笔记本最安静的散热曲线

G-Helper风扇控制&#xff1a;5步调出ROG笔记本最安静的散热曲线 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exp…

作者头像 李华