进度、任务与存档
一轮进度的六个门槛
- 第一次可见反馈:8 次点击完成 WAKE THE SEED。
- 第一次自动化:32 星火购买小手。
- 第一次结构选择:解锁并装备工具,最多三槽。
- 第一次空间协作:拖动 SHOP 内环形成 TEAM。
- 第一次物理输入:在 STAR RUSH 中倾斜收集星光。
- 第一次永久转化:累计 1M lifetime 星火后发射,获得星章与星礼入口。
任务奖励只负责把玩家推过相邻门槛,不替代主经济。成就则记录“已经学会什么”,不会形成必须逐项清单化的压力。
Web 存档
网页存档使用带校验和的 envelope:
ts
interface SaveEnvelope {
format: 1
checksum: string // FNV-1a over JSON payload
payload: SaveStateV1
}写入时先把旧 primary 复制为 backup,再写新 primary。localStorage 不可用时回退到 sessionStorage,再回退到内存;恢复出厂前会封锁后续写入,避免 pagehide 自动保存把刚删除的数据复活。
ESP32 存档
固件把相同策略移到 NVS:
save_primary与save_backup双副本。- magic、schema、state size 与 checksum 防止错误解码。
- 常规 dirty 状态最多 60 秒写一次,降低 Flash 磨损。
- 购买、设置、首次 TEAM、星礼和发射等关键操作立即保存。
- v7 电源序列在关机前冻结 tick,提交 NVS,再逐字节读回 primary;失败就取消软件关机。
截至 2026-08-19,实板已从 schema1/v2 迁移到 schema3/state v4。旧格式继续可读,非法设置会钳制到最近合法档位。
时间可信度
PCF85063 的 integrity 位无效或年份过旧时,固件用构建时间播种 RTC。逻辑时间采用“墙钟 epoch + 单调时钟 delta”,UI 线程不直接等待 I²C。
离线收益需要同时满足:
- 当前 RTC 可信;
- 旧存档保存时间可信;
- 新时间不早于旧时间;
- 间隔落入配置封顶。
如果任一条件不成立,游戏只更新保存时间,不生成伪造资源。
发射后的保留与重置
| 内容 | 发射后 |
|---|---|
| 当前星火、点击力、造星队等级 | 重置 |
| 轨道临时结构、连击、热量 | 重置 |
| lifetime 计数(用于本轮门槛) | 开始新轮 |
| 星章、历史总星章 | 保留 |
| 已购买星礼 | 保留 |
| 历史新星与成就档案 | 保留 |
| 语言、动效、音量、倾斜、息屏设置 | 保留 |
轮回动画期间输入锁定,结束后自动回到 SEED。这样状态提交、视觉高潮和下一轮起点有明确顺序,不会出现发射中途又购买或切页的竞态。
