5分钟上手uesave:虚幻引擎存档读写实用手册
【免费下载链接】uesaveRust library and CLI to read and write Unreal Engine save files项目地址: https://gitcode.com/gh_mirrors/ue/uesave
你是不是也遇到过这种情况:想改一下游戏里的数值,可打开 .sav 文件全是二进制乱码,根本无从下手?uesave 是一个用 Rust 写的开源工具,专门读取和写入虚幻引擎的存档文件(GVAS 格式),能把它变成人话 JSON,你改完再写回去,游戏照样认。
- 🚀一条命令完成二进制与 JSON 互转,不用写任何代码
- 🔎一键往返验证,改完立刻知道存档坏没坏
- 💻跨平台,Windows、macOS、Linux 都能跑
- 🎮真机验证,《深岩银河》存档已完整支持读写
🧰 环境自检与一键安装:3步把 uesave 装到手
1. 确认 Rust 是否已装
uesave 需要现场编译,所以先确认环境里有 Rust(1.60 以上)。这条命令用来检查 Rust 编译器版本:
rustc --version看到类似rustc 1.75.0 (...)的输出才算 OK;如果提示找不到命令,先去装好 Rust 再回来继续。
2. 一条命令安装 uesave
环境没问题,就执行下面这条命令,它会从仓库拉源码并编译安装:
cargo install --git https://gitcode.com/gh_mirrors/ue/uesave首次编译要几分钟,耐心等。装完后~/.cargo/bin目录下会多出uesave可执行文件。
3. 验证装好没装好
在终端敲一下:
uesave --version看到版本号输出,说明成功了(当前版本为 0.7.1)。顺手再跑一句uesave --help,能看到 to-json、from-json、edit、test-resave 四个子命令,就说明一切就绪。
🔁 一条命令把 .sav 存档转成可读 JSON
主流程就是"输入 → 动作 → 输出":把二进制存档丢进去,拿回一份结构化 JSON。输入一个 .sav,输出一个 .json:
uesave to-json mygame.sav mygame.json两个参数依次是输入和输出。想先瞄一眼不落盘,把输出写成-直接打到终端:
uesave to-json mygame.sav -转换前后效果对比:
| 转换前 | 转换后 |
|---|---|
| .sav 二进制文件,编辑器打开全是乱码 | 结构化 JSON 文本文件 |
| 文本编辑器碰都不敢碰 | 随便用编辑器查找、改值 |
| 数据藏在字节里无从下手 | 数值、字符串、列表一目了然 |
下面是从《深岩银河》存档里截取的最小示例,感受一下 JSON 长什么样:
{ "root": { "properties": { "NumberOfGamesPlayed": 2173, "Credits": 4200, "BestRigName": "Drill-01", "RecentlyPlayedModes": ["mining", "combat"] } } }接下来是反方向,把编辑好的 JSON 写回游戏能识别的二进制:
uesave from-json mygame.json mygame_new.sav动手前先把操作边界划清楚:
- ✅放心改:数值、字符串、布尔值
- ⚠️谨慎改:数组的增删、嵌套对象里的字段
- ❌别动:属性名、GUID(带连字符的长串)、JSON 整体结构
🔍 深岩银河实战:端到端走一遍改档流程
拿最典型的场景练手——修改一份《深岩银河》存档。
第1步:定位存档文件。不同平台路径不一样:
- Windows:
C:\Users\<你的用户名>\AppData\Local\FSD\Saved\SaveGames\ - Linux / macOS:
~/.local/share/DeepRockGalactic/FSD/Saved/SaveGames/
先备份,这一步不能省:
cp SaveGame.sav SaveGame_backup.sav第2步:转成 JSON。进入存档目录执行转换:
uesave to-json SaveGame.sav SaveGame.json看到 SaveGame.json 生成,说明转换成功。
第3步:改关键数据。打开 JSON,用搜索功能找到Credits这类字段,把数值改成你想要的,比如 50000。只改数值本身,别碰字段名。
第4步:写回二进制。保存 JSON 后执行:
uesave from-json SaveGame.json SaveGame_modified.sav第5步:验证改好的存档。uesave 自带往返测试,这条命令会重新读一遍再写一遍,确认结构完好:
uesave test-resave SaveGame_modified.sav看到Resave successful就可以放心替换了。替换清单:
- 原始备份还在(上面已做),心里有底
- 把 SaveGame_modified.sav 重命名为原文件名
- 启动游戏,确认数值生效且没有闪退
- 有任何不对劲,立刻把备份文件放回去
⚡ 效率工具箱:两招省一半功夫
一条命令直接编辑
嫌来回转换麻烦的话,直接:
uesave edit SaveGame.sav它会自动生成临时 JSON、调起你的默认编辑器,退出保存后自动写回二进制;一个字没改的话它会提示 "File unchanged, doing nothing."。省掉了手动转两次文件的来回折腾。
批量转换整个存档目录
存档多也不怕,把下面这段存成脚本,放进存档目录跑:
#!/bin/bash # 用法:bash batch_convert.sh for save in *.sav; do echo "正在转换: $save" uesave to-json "$save" "${save%.sav}.json" done省掉了逐个敲命令的重复劳动,一个目录几十份存档秒转完。
🛡️ 动手前检查与高频坑
动手前先过一遍清单:
- 版本兼容:确认游戏用虚幻引擎制作,且存档格式能被工具支持(深岩银河已完整验证)
- 先备份:原始存档拷一份到别处再开改
- 先拿无关紧要的存档试:第一把刀别落在心爱存档上
- 先改一个小数值试试水:改一个、测一轮,再扩大范围
问题:转换完游戏读不了存档→
- 检查 JSON 结构是否完整,属性名和结尾标记别删
- 确认没动过看不懂的数组和对象
- 用
uesave test-resave先跑一遍往返验证再替换
问题:to-json 报错(如 bad magic value)→
- 确认文件真是 GVAS 存档,别拿加密档或其他格式试
- 升级 uesave 到最新版再试
- 个别字段类型猜不出时,可用
-t参数手动指定,例如-t .UnlockedItemSkins.Skins=Guid
问题:JSON 太大翻不动→
- 直接用编辑器的全局搜索定位字段名
- 只改要改的值,其余部分保持原样
🗂️ 仓库长什么样:目录一眼看懂
uesave/ ├── uesave/ # 核心 Rust 库 │ ├── src/ │ │ ├── archive.rs # GVAS 格式读写核心逻辑 │ │ ├── serialization.rs # 属性序列化与 JSON 互转 │ │ └── error.rs # 错误类型定义 │ ├── examples/ # 示例程序(read-save 等) │ └── drg-save-test.sav # 深岩银河测试用存档 ├── uesave_cli/ # 命令行工具(就是你装的 uesave 命令) │ └── src/main.rs # to-json / from-json / edit 的实现 ├── uesave_wasm/ # 浏览器端 WebAssembly 构建 ├── web/ # 网页版存档编辑器前端 └── Cargo.toml # 工作区配置(版本、许可证统一在此)几个关键文件一句话说明:
uesave/src/archive.rs:GVAS 格式解析的核心,读写都从这里走uesave_cli/src/main.rs:命令行全部功能所在,看它就够uesave/drg-save-test.sav:现成的测试存档,先拿它练手
把整个流程串成一行:备份原档 → to-json 转换 → 改 JSON → from-json 写回 → test-resave 验证。
最后叮嘱几句:
- 原始存档的备份永远留着
- 只改你看得懂的字段
- 拿没心动的存档先试水
- 探索之余记得享受乐趣
其实你做的不只是改数字,而是在亲手读游戏背后的数据结构。把 uesave 用熟了,任何虚幻引擎存档你都能用同一套流程打开,甚至能顺便搞懂引擎是怎么序列化数据的。你可以放心地开始第一次存档编辑了,这条路一旦走通,后面全是探索的乐趣。
本文基于 uesave 0.7.1 编写,适用于虚幻引擎 GVAS 格式存档,《深岩银河》存档已完整验证读写;动手前请先确认你所玩游戏的引擎版本在支持范围内。
【免费下载链接】uesaveRust library and CLI to read and write Unreal Engine save files项目地址: https://gitcode.com/gh_mirrors/ue/uesave
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考