Savesystems 存档系统
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/save-systems-sh-o2qqrz。
技能介绍
要解决的具体问题
游戏存档的核心难点不在于写入字节,而在于三点:明确哪些状态必须持久化、避免写入中途崩溃导致存档损坏,以及发布补丁后仍能读取旧存档。一个合格的存档本质上是游戏状态的序列化快照,它必须能跨会话、跨重启、跨内容更新保持可用。
技能如何工作
该技能将存档设计拆解为一条可落地的技术流程:
- 确定权威状态:保存
hp、位置、种子、解锁标记等数据,而非引擎对象或场景节点;加载时通过数据重建对象。 - 引入版本字段:每个存档携带
version整数,作为后续升级到当前格式的依据。 - 选择存档格式:优先用 JSON 保证可读性和调试效率;当对体积或速度有更高要求时,再考虑二进制格式。
- 原子写入策略:先写入临时文件,
flush后再替换目标文件,同时保留.bak备份,降低崩溃或断电导致的半写风险。 - 防御式加载逻辑:按版本读取 → 迁移到当前版本 → 校验 → 实例化;解析失败时自动回退到上一份有效存档。
- 受控自动存档:在安全边界触发,写入独立槽位并限流,避免覆盖手动存档或保存不一致状态。
- 完整验证流程:保存后完全退出游戏,重新启动并加载存档,确认状态一致;同时测试旧版本存档的迁移与读取。
适用边界与注意点
本技能不涉及 Roblox 云持久化的具体实现、序列化数据模型本身,也不替代 Godot 引擎中 FileAccess / ResourceSaver 的具体用法。在多人游戏中,本地存档由玩家掌控,不可直接视为在线状态的权威来源。
参考资料
references/versioning-and-migration.md — 包含 schema 演进策略、迁移链设计、备份与回滚机制、格式取舍建议及加载期校验清单。
使用场景
- 游戏需要保存玩家进度,并在补丁发布后仍能读取旧存档,你要设计版本号与迁移流程。
- 写入存档时可能因崩溃或断电中断,你要实现临时文件加原子替换,避免半写损坏。
- 需要在检查点自动保存,但又要避免覆盖手动存档,你要划分独立槽位和触发边界。
- 存档格式从 JSON 改为二进制,你要保留旧文件的可读性并设计回滚路径。
适合人员
- 做单机或联机游戏的程序员,需要在重启和补丁后稳定保存与读取状态。
- 负责存档格式演进的技术负责人,需要在改动 schema 时减少旧存档丢失风险。
- 独立开发者,要在 Godot 或 Unity 里实现存档槽、自动存档和备份机制。
- 排查存档损坏问题的 QA 或技术支持,需要复现崩溃写入并验证回退方案。