存檔指令碼診斷與清理決策對照表
| 診斷指標現象 | 典型根本誘因 | 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 在高頻製造指令碼膨脹。