存档脚本诊断与清理决策对照表
| 诊断指标现象 | 典型根本诱因 | ReSaver 清理操作指令 | 安全等级 | 预期修复效果 |
|---|---|---|---|---|
| 游离脚本实例 (Unattached Instances) | 中途卸载脚本 Mod 遗留孤立变量与函数 | Remove unattached instances | 高(极低风险) | 缩减存档体积,根除缺失引用的后台日志刷屏 |
| 挂起堆栈 (Suspended Stacks) | 脚本等待已销毁的 NPC/地块导致永久挂起 | Terminate suspended stacks | 中等风险(需甄别) | 解除任务触发器卡死;可能重置当前活动线程 |
| 未定义元素 (Undefined Elements) | 损坏的动态数组或丢失的 FormID 引用 | Remove undefined elements | 高(极低风险) | 防止引擎遍历内部数据结构时产生内存访问违规闪退 |
| 死循环脚本线程 (Infinite Loops) | 劣化 Mod 高频每毫秒轮询引擎状态 | 存档工具无法解决,必须打补丁或移除 Mod | 禁止盲目强清 | 强杀核心循环会导致关联任务流程永久瘫痪 |
使用 Papyrus 虚拟机的 Creation 引擎(如《上古卷轴5》《辐射4》)会将所有运行中的脚本实例、本地变量直接序列化写入 .ess 存档。如果中途卸载脚本 Mod,引擎并不会删除对应数据,而是持续保留断头线程,导致存档体积急剧膨胀、互动提示延迟、开门载入变长以及自动保存时闪退。
使用 FallrimTools (ReSaver) 诊断存档实操
在处理任何存档前,必须手动复制一份备份至外部安全路径。
- 定位并备份目标存档:
- 存档路径:
Documents\My Games\[游戏名]\Saves\save[编号].ess - 将目标文件完整复制至外部备份文件夹:
C:\SaveBackups\。
- 存档路径:
- 启动并加载 ReSaver:
- 运行 ReSaver.exe。
- 点击 File -> Open,选择要诊断的存档。
- 查看虚拟机全局健康状态:
- 观察顶部统计窗格:
- Active Scripts(活跃脚本):正常基线通常在 50 至 500 之间。若超过 5,000,表明存在严重的脚本洪水。
- Suspended Stacks(挂起堆栈):正常值应为 0 至 5。超过 50 通常意味着游戏主线程正被假死脚本拖垮。
- 观察顶部统计窗格:
安全清理执行步骤
- 点击顶部菜单栏:选择 Clean -> Show unattached instances。
- 仔细审查列出的脚本名,确认其确属已移除的 Mod。
- 右键选择 Delete all unattached instances。
- 选择 Clean -> Show undefined elements。
- 右键点击并选择 Delete all undefined elements。
- 排查挂起堆栈:
- 如果游戏内遇到 NPC 对话无法推进或按 E 无反应,选择 Clean -> Show suspended stacks。
- 仅终止那些明确指向已删除 Mod 的挂起堆栈。绝对不要终止原生主线任务脚本(例如
MQ101或跟随者系统脚本)。
- 另存为新存档:
- 选择 File -> Save As。
- 保存为新的编号名称(如
save002_cleaned.ess),严禁直接覆写原存档。
清理后游戏内验证清单
- 进入游戏并读取清理后的新存档,角色必须位于简单室内场景(如空酒馆或个人住宅)。
- 使用等待功能原地等待 72 游戏小时,让 Papyrus 垃圾回收机制清空单元缓冲区。
- 验证保存速度:健康的存档写入应在 2 秒内完成;若保存仍然卡顿数秒,表明仍有活跃 Mod 在高频制造脚本膨胀。