flowchart TD command["接收玩家命令"] --> clone["复制当前 RunState"] clone --> resolve["在副本消费 RNG 并完整结算"] resolve --> validate{"不变量通过?"} validate -- 否 --> rollback["丢弃副本并记录异常"] validate -- 是 --> tx["提交事务与 RunState"] tx --> save["序列化 Checkpoint + checksum"] save --> atomic["写临时槽并原子替换主槽"] atomic --> render["通知表现层"] crash["刷新/崩溃/重新打开"] --> load["读取主槽;失败则读备份槽"] load --> verify{"版本和 checksum 有效?"} verify -- 否 --> newRun["提示存档损坏并开始新局"] verify -- 是 --> dedupe["恢复已提交 transactionId 集合"] dedupe --> resume["从最近安全 phase 恢复"]