№ · 完成设计
CH.06.23
终局表现与存档读档设计
目标:把同福客栈的终局做成“可演出、可复盘、可回退”的完整体验,而不是一张失败提示页。玩家在终局后能够清楚看见发生了什么、为什么会败、能从哪个时间点重来,以及如何管理自定义存档。
设计原则
- 终局不是删档,不是报错页。
- 终局必须展示时间、因果和可操作入口。
- 读档必须保留时间语义,现实时间和游戏时间都要可见。
- 自定义存档必须能按时间点管理,而不是只有单一覆盖式存档。
- 旧存档优先兼容,不能因为新存档管理而丢进度。
当前基础
- 当前项目已经有单一主存档,写入 key 为
tongfu_inn_save_v1。 - 现有存档已经包含
lastSaveTime,可作为现实时间来源。 - 现有存档已经包含
gameTime,可作为游戏时间来源。 - 现有存档已经包含
failureEndgame,可作为终局状态来源。 - 现阶段最适合的方案是“单个 live save + 一组快照存档”的混合模式。
- 快照索引、快照正文和导出包应分开管理,避免把浏览器索引和大体积状态混在一起。
时间字段约定
createdAt:现实世界创建时间,使用Date.now()。updatedAt:现实世界最后修改时间,手动改名、置顶、加备注后都应更新。gameTime:游戏世界时间,至少包含day、slot、timeOfDay。- 存档卡片必须同时展示
createdAt和gameTime,不能只显示一个时间轴。
终局表现方式
终局进入时,不直接切黑屏,而是进入一个分层收束页。
表现顺序
- 时间冻结:暂停主循环、停止新事件推进。
- 终局落幕:给出终局标题和触发原因。
- 因果展开:按预警期、加压期、抉择期、收束期展示时间线。
- 结果清点:列出损失、遗产、种子和当前状态。
- 操作入口:给出重开、读档、复盘、导出等动作。
终局页内容
- 终局名称,例如“偷税漏税被举报”。
- 终局类型,
soft_fail/delayed_fail/hard_shutdown。 - 触发时间,现实时间 + 游戏时间。
- 关键属性,现金、声望、治安、忠诚、机变、好感等。
- 关键因子,最近的风险种子和失败链。
- 终局结果,停业、封灶、罚款、离岗、查封等。
- 可继承遗产,账本残页、回执、口碑标签、旧信物等。
页面结构
- 顶栏:终局标题、终局类型、发生时间、周目编号。
- 主栏:终局时间线,按预警期、加压期、抉择期、收束期展开。
- 副栏:关键属性、关键人物、失败种子、遗产清点。
- 底栏:查看复盘、从最近安全点重开、读取时间点存档、导出快照、新开周目。
视觉语气
- 终局页要像“客栈收账台”或“败局回放册”,不要像系统报错弹窗。
- 以纸张、账册、封条、官差文书、江湖帖子这些视觉隐喻为主。
- 失败不应该只有红色警告,而要有戏文式收束感。
终局后的操作
终局页建议提供这些动作:
- 查看复盘。
- 读取时间点存档。
- 从最近安全点重开。
- 重新开局。
- 导出当前快照。
- 返回标题页。
终局重开路径
从最近安全点重开- 默认选择最近一次非终局、非只读、非锁定的快照。
- 优先级建议为
checkpoint -> manual -> quick -> auto。 - 读回后继续经营,不进入终局复盘模式。
读取终局快照- 默认打开最近一条
endgame快照。 - 该路径只读查看,不直接覆盖当前经营档。
- 可进一步选择“以此为起点重开”,生成新的手动档。
- 默认打开最近一条
读取时间点存档- 打开存档浏览器,自由筛选和比较。
- 支持按现实时间、游戏时间、类型、标签、终局标记筛选。
重新开局- 清空本周目经营状态,回到新周目起点。
- 后续若有周目遗产,可在这里单独加“继承遗产”开关。
重开规则
- 如果玩家点“从最近安全点重开”,默认加载最近一次非终局、非只读、非锁定的快照。
- 如果玩家点“读取时间点存档”,进入存档浏览器,自选任意快照。
- 如果玩家点“读取终局快照”,默认保留终局相关元数据,不直接清空失败信息。
- 如果玩家点“重新开局”,进入新周目,默认不继承本周目经营状态。
- 如果项目后续加入周目遗产,则“重新开局”可再单独提供“继承遗产”分支。
自定义存档
存档管理采用“快照”概念,而不是只有一个覆盖式主档。
存档类型
auto:自动存档,来源于时间推进或关键节点。manual:玩家手动创建的时间点存档。quick:快速存档,便于临时回退。checkpoint:系统关键节点存档,例如进入终局前、重大事件前。endgame:终局快照,只读或半只读,用于复盘。export:导出档,便于备份或分享。
存档时间点命名
- 手动存档应允许玩家自己写标题和备注。
- 系统可按当前游戏时间自动生成标题,例如
第12天 · 傍晚 · 税案前。 - 同一游戏日可以有多个存档,必须依靠现实时间、备注、标签和置顶状态区分。
- 终局快照的默认标题应包含终局标识,例如
终局快照 · tax_reported。
存档元数据
每个存档卡片至少要显示:
- 存档名。
- 存档类型。
- 现实时间。
- 游戏时间。
- 存档备注。
- 当前版本号。
- 失败终局标记。
- 关键标签,例如“税案前”“擂台后”“傍晚”“夜间”。
- 锁定、置顶和缩略图状态。
推荐元数据结构
export type SaveSlotType = 'auto' | 'manual' | 'quick' | 'checkpoint' | 'endgame' | 'export';
export interface SaveSnapshotMeta {
slotId: string;
title: string;
note?: string;
slotType: SaveSlotType;
createdAt: number; // 现实时间,Date.now()
updatedAt: number; // 现实时间
gameTime: GameTimeState;
appVersion: string;
roadmapVersion: string;
saveSchemaVersion: number;
failureId?: FailureEndgameId;
failureStage?: string;
tags: string[];
locked?: boolean;
pinned?: boolean;
thumbnailUrl?: string;
}
export interface SaveSnapshotRecord {
meta: SaveSnapshotMeta;
state: GameState;
}
存储建议
tongfu_inn_save_v1:当前主运行档。tongfu_inn_save_slots_v1:存档索引。tongfu_inn_save_snapshots_v1:快照内容。tongfu_inn_save_export_v1:可选导出包,用于备份或跨设备迁移。
主运行档负责继续游玩,快照目录负责时间点回放和手动存档管理。
读档流程
浏览器内流程
- 打开存档列表。
- 按现实时间、游戏时间、类型、标签筛选。
- 点选某个快照,先看预览卡。
- 确认是否覆盖当前进度。
- 读档后恢复对应的时间、角色、资源和终局状态。
存档浏览器
- 左侧按类型分组,右侧按时间轴排序。
- 顶部支持搜索、标签、现实时间范围和游戏时间范围筛选。
- 卡片上同时显示现实时间和游戏时间,不允许隐藏其中任意一个。
endgame类型默认带只读提示,避免被误当成普通手动档。
读档校验
- 旧存档缺字段时自动补默认值。
- 不同版本存档读入时必须先归一化。
- 如果快照来自终局,默认保留终局相关元数据。
- 如果快照来自终局前安全点,读档后恢复可继续经营状态。
时间语义
- 现实时间用于知道“这个档是什么时候存的”。
- 游戏时间用于知道“这个档在故事里处于哪一刻”。
- 两者必须同时展示,不能只留一个。
- 如果同一现实时间内连续存了多个档,必须再依赖
slotId、备注和创建先后顺序区分。
终局快照规则
终局发生时,系统建议自动做一次只读快照:
- 记录失败发生的现实时间。
- 记录失败发生的游戏时间。
- 记录失败种子、压力值、阶段和关键属性。
- 记录本次终局可继承遗产。
- 记录此时的现实时间、游戏时间和终局标题。
这样玩家就算没有手动存档,也能从终局节点回看或重开。
交互约定
- 存档卡片默认显示“现实时间 + 游戏时间”双时间轴。
- 同一游戏日可以有多个快照,但必须靠时间点和备注区分。
- 玩家可以给手动存档写备注,例如“税案前一晚”“擂台前”“郭芙蓉离店前”。
- 终局页上的“读取时间点存档”应优先展示最近几个安全点。
- 只读终局快照不应被误删,最多允许归档隐藏。
- 玩家手动建档时,建议同时提供“当前时间点名称”和“备注”两个输入。
- 快照导出后再次导入,应保留原始现实时间、游戏时间和版本信息。
验收标准
- 终局页能清楚展示败因、时间、结果和遗产。
- 终局后能进入读档和重开流程。
- 存档卡片能同时看到现实时间和游戏时间。
- 玩家能创建和管理自定义时间点存档。
- 旧存档继续可读,不丢进度。
- 终局快照默认只读,但可以复制成新的手动快照继续游玩。
建议版本拆分
App v1.15.0:终局表现最小闭环
- 终局页接管失败结果展示。
- 加入终局时间线和遗产摘要。
- 提供“查看复盘 / 从最近安全点重开 / 读取时间点存档”的入口。
- 终局页要区分“查看终局”与“恢复经营”两条路径,避免玩家误触直接覆盖。
App v1.16.0:自定义时间点存档
- 引入手动存档与快照目录。
- 存档卡片显示现实时间与游戏时间。
- 支持备注、标签、置顶和归档。
- 增加按时间点命名的自动标题和时间范围筛选。
App v1.17.0:读档管理增强
- 提供筛选、排序、重命名、导出、导入。
- 支持终局快照与普通快照并存。
- 把版本不一致时的读档提示做完整。
- 增加终局快照复制为普通快照的单独动作。