Skip to content

存档、偏好设置与回滚

存档系统

SaveSystem 将当前 EngineState 序列化为 JSON。

go
state := engine.GetSaveState()
err := engine.SaveSystem.Save(1, state)

state, err = engine.SaveSystem.Load(1)
engine.LoadSaveState(state)

内置 UI 的 SAVE/LOAD 会调用同一套系统。

EngineState 内容

存档包含:

  • 当前节点 ID 和 Step 下标
  • 背景 Key 和路径
  • 立绘状态
  • 当前 BGM Key
  • 变量表
  • 历史文本
  • 回滚快照

注意:运行时函数、回调和外部句柄不会被序列化。

SaveDir

go
galgo.Config{
    SaveDir: "./saves",
}

当前实现的普通存档文件名为:

text
saves/save_1.json
saves/save_2.json

全局解锁状态:

text
saves/gallery.json

偏好设置

偏好设置由 config.PreferencesManager 管理,适合保存不应随存档回滚的数据,例如音量、语言、全屏状态和自定义全局标记。

go
engine.Preferences.SetCustom("true_ending_unlocked", true)
engine.Preferences.Save()

value, ok := engine.Preferences.GetCustom("true_ending_unlocked")

回滚

每次执行阻塞文本前,Galgo 会保存一份回滚快照。玩家打开 LOG 后点击历史文本,可回到对应状态。

回滚会恢复:

  • 脚本位置
  • 背景和立绘
  • 变量
  • 对话历史

回滚不会恢复:

  • Steam 后端状态
  • 已写入全局解锁文件的成就/画廊
  • 偏好设置

如果在 Callback 中修改了外部文件、网络状态或第三方 SDK,这些副作用不会被回滚。需要可回滚的数据应写入 Engine 变量。

Released under the project license.