ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ER-Save-Editor 存档编辑器安全使用完全指南:PC 与 PlayStation 双平台操作手册

ER-Save-Editor 存档编辑器安全使用完全指南:PC 与 PlayStation 双平台操作手册

ER-Save-Editor 存档编辑器安全使用完全指南:PC 与 PlayStation 双平台操作手册

【免费下载链接】ER-Save-EditorElden Ring Save Editor. Compatible with PC and Playstation saves.项目地址: https://gitcode.com/GitHub_Trending/er/ER-Save-Editor

ER-Save-Editor 是一款用 Rust 编写的艾尔登法环存档编辑器,支持对 PC 与 PlayStation 两类存档做直接修改:改属性、加物品、换装备、调事件进度。前提是你有本地 Rust(cargo)环境,以及 PC 版的 .sl2 存档文件,或 PlayStation 版通过 Save Wizard 导出的 .txt 存档。

环境准备:Rust 构建与双平台存档识别检查

使用存档编辑器前,先确认环境能完整构建并跑起来:

  1. 安装 Rust 工具链(rustup),保证cargo可用
  2. 克隆仓库到本地(仓库为只读使用,不要提交任何修改)
  3. 执行 release 构建,首次会编译 egui/eframe 等 GUI 依赖,耗时较长属正常
  4. 准备一份修改前备份的存档文件(后面所有操作都基于备份进行)
# 克隆源码到本地目录(仓库只读,仅供构建运行) git clone https://gitcode.com/GitHub_Trending/er/ER-Save-Editor

验证环境就绪的最短命令:

# 编译成功即代表依赖链完整,target/release 下会生成可执行文件 cargo build --release

两个平台的存档差异决定了后续可用功能,先对照这张表确认你手里的文件属于哪一类:

对比维度PC 平台PlayStation 平台
文件格式.sl2(BND4 容器)Save Wizard 导出的 .txt
识别方式文件头 4 字节魔数BND4固定偏移 0x1960070 处 regulation 段做 MD5 校验和比对
头部大小0x300 字节0x70 字节
平台标识字段含 SteamID(需与账号一致)无 SteamID 字段
专属功能角色跨档导入、改 SteamID仅通用编辑功能

常见环境踩坑

  • 现象:Linux 上cargo build报 webkit/gtk 相关错误 → eframe 需要系统图形库 → 安装依赖:sudo apt install build-essential libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-dev pkg-config
  • 现象:打开文件后界面中央出现红色 "Save file has irregular data!" → 打开的文件不是 .sl2 或 Save Wizard 导出的 .txt(常见是主机原始 .dat)→ 用 Save Wizard 重新导出 PlayStation 存档,或改用 PC 官方 .sl2
  • 现象:cargo run卡了很久才出窗口 → 首次构建触发完整依赖编译 → 先用cargo build --release,之后运行都会很快

核心功能操作

首次运行:打开存档并识别平台

目的:把存档载入编辑器,让顶部状态栏显示平台识别结果。

# 启动图形界面(Windows release 下自动隐藏控制台窗口) cargo run --release

窗口打开后,把 .sl2 或 .txt 拖进窗口,或点左上角 open 按钮(文件过滤器只认 sl2 / txt 两类)。成功标志:顶部显示Platform: PC或Platform: Playstation,左侧出现角色名列表和 General、Stats、Equipment、Inventory、Event Flags、Regions 六个分区按钮。

⚠️ 出现红色 "Save file has irregular data!" 说明文件结构不符,此时不要点 save 写回,否则可能生成无法识别的文件。

修改属性、卢恩与角色名(General / Stats 页)

目的:得到目标 build 的角色基础面板。

General 页改角色名(上限 16 字符)与性别;Stats 页直接拖拽八项属性。每个属性输入框的合法范围是"该职业初始值 ~ 99"(代码里按职业起始值做了下限钳制),等级行会自动按"八项属性之和 - 79"实时显示;Current Souls 的合法范围是 0 ~ 999,999,999。

⚠️ 属性下限由创建角色时的职业决定,无法把 Vigor 拉到低于该职业初始值;改完务必用顶部 save 按钮另存为新文件,别直接覆盖原档。

批量添加物品、武器与护符(Inventory 页)

目的:把整件 build 需要的装备一次塞进存档,跳过游戏内刷取。

Inventory 页左上角在 Single / Bulk 两种模式间切换,下方五个标签页对应物品类别:Items、Weapons、Armors、Ashes of War、Talismans。

  • Single 模式:左侧列表选中物品 → 中间面板按物品类型显示定制项(数量、Weapon Level、Infusion 附魔、Affinity 属性)→ 点 Add。普通武器的强化上限是 +25,特殊类型(由 reinforceTypeId 判定)为 +10
  • Bulk 模式:按分组勾选(顶部 Select All 可全选/反选)→ 统一设置 Projectile Quantity(1~99)与 Weapon Level(0~25,界面自动换算出对应的 Somber 升级档位)→ 点 Add All 全部入包

窗口底部的日志区会逐条记录添加结果。成功标志:日志无报错,Browse 子页能看到新物品。

📎 建议在此插入:ER-Save-Editor 主界面截图(左侧角色与分区菜单,右侧 Inventory 批量添加面板及底部日志)

⚠️ 可添加的物品必须存在于存档内置的 regulation 参数表中;若物品名列表为空或查不到目标武器,通常是存档与游戏版本不匹配(需查阅项目最新 issue/PR 确认支持情况)。

更换当前装备栏(Equipment 页)

目的:让角色进游戏就是预期配置,省去手动换装。

页面按行罗列所有装备位:左右手武器各 3 个、Arrows / Bolts 各 2 个、四件 Armor、Talismans(数量随存档内护符栏位)、Quickslots 与 Pouch 共 16 格。每个格子点 Change,右侧面板会列出当前存档库存里对应类别的物品,点 Equip 换上;已装物品显示 Unequip 可直接卸下。

⚠️ 这里只能装备"已经在库存里"的物品;新武器必须先在 Inventory 页添加,否则 Change 列表里看不到它。

激活圣所、Boss 击杀与地图区域(Event Flags / Regions 页)

目的:批量设置剧情与探索进度状态,方便测试或速通。

Event Flags 页左侧有七个分类:Sites Of Grace(按地图分组)、Whetblades、Cookbooks、Maps、Bosses(复活/击杀)、Summoning Pools、Colosseums。每项都是三态复选框(勾选/取消/半选),顶部还有 "All Bosses" 这类一键按钮。Regions 页提供 All Regions / Open World / Dungeons / Bosses 四个批量按钮,下方按地图分组列出每个区域。

⚠️ 事件标志对应的是特定版本的游戏内容;新版若调整了事件表,某些标志可能无实际效果(需查阅项目最新 issue/PR 确认)。

跨存档角色导入与 SteamID 修改(PC 专属)

目的:把另一个存档里的角色整体迁移到当前存档,或更换角色归属的 Steam 账号。

点右上角Import Character(仅当当前是 PC 存档且成功识别出 SteamID 时可用)→ 弹窗中 From 选源角色、To 选目标角色 → 点 Import,该角色的槽位数据会被复制过来。顶部的 Steam ID 输入框最多 17 位,界面自带的提示很明确:它必须与将要使用这份存档的 Steam 账号一致。

⚠️ PlayStation 存档没有 SteamID 字段,Import 按钮在此类文件上不可用;跨档导入仅限 PC 存档之间。

底层机制速览:存档如何被识别与重写

识别逻辑是理解一切限制的关键,核心在src/save/save.rs:

pub enum SaveType { Unknown, PC(PCSave), PlayStation(PSSave) } // is_pc:读文件头 4 字节,与 ASCII "BND4" 比对 let is_pc = magic == [66, 78, 68, 52];

PC 存档整体结构(src/save/pc/pc_save.rs):

pub struct PCSave { pub header: SaveHeader, // 0x300 字节,原样读入/写回 pub save_slots: Vec<PCSaveSlot>, // 固定 10 个角色槽位 pub user_data_10: UserData10, // 角色概览、SteamID pub user_data_11: PcUserData11 // 内含 regulation 物品参数表 }

白话解释:打开时按文件头区分平台,再按小端序顺序读入头部、10 个固定槽位和公共数据;保存时把内存结构整体序列化回字节流覆盖写盘。这决定了"只认两种文件""最多 10 个角色""没有撤销、整文件重写"这三个行为。物品名、武器强化上限、附魔列表则来自存档内嵌的 regulation 表(BND4 容器解析见src/util/bnd4.rs)。

.sl2 / .txt ──> 识别:BND4 魔数 或 regulation MD5 │ ▼ SaveType (PC / PlayStation) │ Read trait:小端序逐段读取 ▼ header + 10 个 save slots + user_data_10/11 │ ViewModel 内存中编辑 ▼ Write trait:整体序列化 ──> 写出新文件

存档修改排查手册:常见故障与修复

1. 打开即报 irregular data

  • 触发条件:打开的文件不是 .sl2 或 Save Wizard .txt(如主机原始 .dat、其他游戏存档)
  • 快速定位:xxd -l 4 存档.sl2,PC 存档前 4 字节应为42 4e 44 34(即 BND4)
# 查看文件头魔数,确认是不是 BND4 容器 xxd -l 4 ER0000.sl2
  • 解决方案:1) PlayStation 存档用 Save Wizard 重新导出 2) PC 用官方 .sl2 文件 3) 仍无法识别则查项目 issue 区

2. 打开时 panic 崩溃

  • 触发条件:文件被截断、复制不完整或为 0 字节
  • 快速定位:ls -lh 存档.sl2,与备份文件大小对比是否一致
  • 解决方案:1) 恢复备份 2) 从最近一次干净存档重做修改 3) 不要对疑似损坏文件反复强开

3. 改名后没生效

  • 触发条件:角色名超过 16 个字符(输入框上限为 0x10)
  • 快速定位:在 General 页重新输入并数一下字符数
  • 解决方案:1) 缩短到 16 字符以内 2) 另存为新文件 3) 游戏内进一次角色界面确认

4. Import Character 按钮灰掉

  • 触发条件:当前是 PlayStation 存档,或存档未能识别出 SteamID
  • 快速定位:看左上角平台标识是否为Platform: Playstation
  • 解决方案:1) 跨档导入仅支持 PC 存档 2) 改用 PC 存档操作 3) PS 用户只使用通用编辑分区

5. 物品名列表为空 / 找不到目标武器

  • 触发条件:存档内置的 regulation 表与当前游戏版本不一致
  • 快速定位:换一份同版本正常存档打开,对比 Inventory 页物品列表是否一致
  • 解决方案:1) 使用与游戏版本匹配的存档 2) 确认编辑器是否已适配新版(需查阅项目最新 issue/PR)

6. 以上都无效时的兜底操作

  • 触发条件:文件依旧无法打开,或修改后游戏内存档损坏
  • 快速定位:用编辑器重新打开最近一次备份,确认备份本身可读
  • 解决方案:1) 回滚到最近备份 2) 在干净存档上只改一项并另存验证 3) 能稳定复现就按项目要求附带复现步骤上报 issue

进阶玩法与扩展

如果你想给新角色快速配齐整件库存(批量加 + 换装组合)

先用备份隔离风险,再走"Inventory Bulk → Add All → Equipment 换装"流水线:

# ① 先备份原档(带时间戳,防止覆盖后无法回滚) cp ER0000.sl2 "ER0000_backup_$(date +%Y%m%d_%H%M%S).sl2" # ② 启动编辑器:Bulk 模式 Add All 填满库存,再到 Equipment 页逐格 Equip cargo run --release

Bulk 模式勾选整组武器 + 统一 Weapon Level,是整件 build 入档最快的路径,加完立刻到 Equipment 页把主武器、护符、护甲换上再保存。

如果想记录存档修改前后的"指纹"

把备份文件作为校验输入,给每次修改留可追溯依据:

# 修改前:对备份算 MD5 校验和(消息摘要算法,用于判断文件是否变化) md5sum ER0000_backup.sl2 | tee before.md5 # 修改并另存后:对比两个文件指纹,确认写盘确实发生了 md5sum ER0000_backup.sl2 ER0000_modified.sl2

指纹一致说明这次保存根本没落盘(忘了点 save 或选错了目标文件),两行输出直接定位问题。

如果你想批量管理多份存档备份

# 批量备份目录内全部 .sl2 存档并生成指纹清单 for f in saves/*.sl2; do name=$(basename "$f") cp "$f" "backups/$name" # 同名备份,隔离实验区与备份区 md5sum "backups/$name" # 记录指纹,回滚前可先比对 done

💡 建议把backups/与日常实验目录分开存放,实验存档损坏时直接用指纹匹配过的备份回滚。

如果想用编辑器做 build 实验而不碰主角色

利用"一份存档 10 个槽位"的机制:用 Import Character 把老角色复制到一个空槽位,SteamID 改为你实验用的账号,随后只在新槽位上改 Stats 与 Inventory。主角色槽位全程不动,实验失败也只是删掉一个槽位的数据。

📎 建议在此插入:ER-Save-Editor 左侧角色槽位列表与 Import Character 弹窗截图(From/To 双栏选择界面)

安全守则与收尾

  • 必须:每次修改前用cp做带时间戳备份,编辑器保存是整文件覆盖写、没有撤销
  • 必须:使用 PC 存档前把 SteamID 改成实际要用的账号(17 位内,界面有明确提示)
  • 建议:存档与游戏版本保持一致,小步修改、另存验证后再继续
  • 建议:项目定位是离线 build 实验工具,README 明确说明功能未经在线测试,请勿用于联机

本地存档修改是理解艾尔登法环数据结构最直接的方式——备份在手、小步验证,想要的 build 距离你只差几次点击。

【免费下载链接】ER-Save-EditorElden Ring Save Editor. Compatible with PC and Playstation saves.项目地址: https://gitcode.com/GitHub_Trending/er/ER-Save-Editor

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进