1.4 KiB
1.4 KiB
运行时预览与测试作品存档隔离(2026-04-26)
背景
幕预览和测试作品用于百梦主检查玩法表现,不能被当作玩家正式游玩记录。若这类运行时复用正式 RPG 壳、story action 或 snapshot 接口,必须在进入个人存档页、游玩统计、作品游玩历史前被过滤。
落地约束
- 前端预览态
GameState必须写入runtimeMode: "preview"或runtimeMode: "test"。 - 前端可同步写入
runtimePersistenceDisabled: true作为更明确的禁存标记。 useRpgSessionPersistence自动存档必须跳过上述预览/测试态。- runtime story 网关仍提交带禁存标记的
snapshot,避免服务端退回读取用户正式快照;服务端必须按禁存标记返回临时响应而不落库。 - SpacetimeDB projection 层必须兜底识别上述标记:即便有旧入口误写
runtime_snapshot,也不刷新profile_save_archive、profile_played_world、profile_dashboard_state和钱包流水。
当前实现
- 幕预览运行时在启动游戏壳时写入
runtimeMode: "preview"与runtimePersistenceDisabled: true。 - 前端自动存档会跳过预览/测试态。
- runtime story 接口收到预览/测试快照时,只构造本次响应所需的临时 snapshot,不写入
runtime_snapshot。 server-rs/crates/spacetime-module/src/runtime/profile.rs在 profile projection 同步前统一短路预览/测试快照。