c3c10a9fcb
- game-reviewer: 删除本地审查记录,仅Issue评论 - quality-gate-review: 删除审查记录/步骤号/阶段标准 - game-dev: 删除阶段感知节,4个工作流详情拆到技能 - game-designer: 删除原型/批量生产阶段,执行案规范拆到技能 - game-pm: 去掉节号和步骤号 - 全局去掉步骤标号(①-⑧/步骤1-5/1.4.X/第一步-第四步) - 新建技能: code-implementation/deviation-report/design-execution - 原型目录扁平化: docs/design/prototype/* → docs/design/ - requirements-analysis及子文件去步骤号和阶段引用 - stage-iteration/sketch/roadmap去任务编号 - 更新所有docs/design/路径引用
11 KiB
11 KiB
收集系统执行案(v0.1 原型)
迭代记录
| 迭代版本 | 修改日期 | 状态 | 说明 |
|---|---|---|---|
| v0.1.0 | 2026-06-05 | 📝 设计中 | 初版执行案,覆盖 v0.1 基础拾取的完整行为规则 |
| v0.1.1 | 2026-06-05 | 📝 设计中 | 架构重构:收集系统从拾取流程中剥离,仅负责收集进度追踪和收集通知;拾取通知归物品系统;引入「杂物」品类概念 |
状态标记:📝 设计中 | 🔄 开发中 | ✅ 已同步
系统概述
收集系统是游戏的情感锚点。它追踪玩家的收集进度,在达成收集里程碑时给予反馈。
v0.1 范围:一个收集品类「杂物」,共 10 个物品。系统接收物品系统的获得通知,判定是否为新收集,更新进度,弹出收集通知。
核心设计决定(已确认)
- 收集系统不感知拾取过程 — 收集系统不关心物品怎么来的(拾取、翻找、购买、奖励……),只从收到物品系统的「获得物品」通知开始工作。
- 收集通知与拾取通知分离 — 拾取通知(「找到了 XXX」)由物品系统负责,每次获得物品都弹。收集通知(「发现了新的杂物,进度 X/Y」)由收集系统负责,仅在判定为新收集时弹出。
- v0.1 单一品类的简单追踪 — 只有一种收集品类「杂物」,无分类、无图鉴、无世界反馈。
系统边界
| 收集系统负责 | 收集系统不负责 |
|---|---|
| 维护收集品类进度(当前数/总数) | 物品如何获得(拾取/翻找/购买) |
| 判定是否为新收集 | 拾取通知 UI(「找到了 XXX」) |
| 弹出收集通知(「发现了新的杂物,进度 X/Y」) | 物品在场景中的位置和表现 |
| 全部收集完成时的特殊表现 | 物品进入背包的流程 |
依赖关系
物品系统(上游)
收集系统依赖物品系统发出的「获得物品」通知。
通知内容:
- 物品名称(如「彩色弹珠(蓝色)」)
- 物品所属品类(如「杂物」)
- 物品内部编号
v0.1 中触发此通知的行为:
- 交互系统的「拾取」交互完成时(动画播放到物品消失时间点)
- 交互系统的「废纸箱翻找」获得结果物品时(翻找动画完成,结果包含物品)
后续版本可能有更多触发来源:购买、小游戏奖励、NPC 交换、剧情奖励等。收集系统不需要知道这些来源,只认通知。
状态定义
| 状态字段 | 类型 | 说明 |
|---|---|---|
| progress | 整数 | 当前已收集的杂物品数(0-10) |
| collectedIDs | 集合 | 已收集物品的内部编号集合,用于判定新收集 |
| isComplete | 布尔值 | progress 是否达到 10,初始为 false |
状态转换
初始状态(progress=0, collectedIDs={}, isComplete=false)
│
├──(收到获得物品通知 + 判定为新收集)──→ progress+1, collectedIDs 增加 ID
│ 若 progress=10 → isComplete=true
│
├──(收到获得物品通知 + 判定为非新收集)──→ 状态不变,不弹收集通知
│
└──(游戏重启)──→ 回到初始状态(v0.1 无持久化)
行为规则
一、收到获得物品通知后的流程
物品系统发出「获得物品」通知后,收集系统按以下顺序执行:
| 步骤 | 行为 | 说明 |
|---|---|---|
| 1 | 查品类 | 检查通知中的物品品类是否为收集系统追踪的品类。v0.1 只追踪「杂物」,其他品类忽略 |
| 2 | 查重复 | 检查物品内部编号是否已在 collectedIDs 中。若已存在,判定为非新收集,流程结束,不弹收集通知 |
| 3 | 记录 | 将物品内部编号加入 collectedIDs,progress +1 |
| 4 | 弹收集通知 | 显示收集通知 UI(见下文) |
| 5 | 完成判定 | 若 progress 达到 10,将 isComplete 置为 true,触发完成表现 |
二、收集通知 UI
显示规则
- 触发条件:步骤 4(判定为新收集时)
- 触发时机:物品系统的拾取通知(「找到了 XXX」)弹出后 0.3 秒(建议值,可调,范围 0.1-0.5 秒),避免与拾取通知视觉重叠
- 位置:屏幕右上角,在拾取通知下方。若当前无拾取通知显示,则在拾取通知的默认位置显示
- 内容:
发现了新的杂物,进度 <当前>/<总数>(例:发现了新的杂物,进度 3/10) - 颜色:文字为浅金色(与拾取通知的白色区分),建议色值 #F0D060(可调)
- 大小:与拾取通知文字大小一致
显示动画
| 阶段 | 行为 | 时长 |
|---|---|---|
| 淡入 | 通知从透明渐变到不透明 | 0.2 秒(建议值,可调,范围 0.1-0.3 秒) |
| 停留 | 保持完全显示 | 2.0 秒(建议值,可调,范围 1.5-3.0 秒) |
| 淡出 | 通知从不透明渐变到透明,完全透明后移除 | 0.3 秒(建议值,可调,范围 0.2-0.5 秒) |
与拾取通知的叠放
- 收集通知始终在拾取通知下方
- 若短时间内连续触发多条收集通知(v0.1 不会发生,但架构上支持),新通知从上一条下方弹出
- 最大同屏收集通知数:2 条
三、收集进度 UI
显示规则
- 位置:屏幕左上角,距左边距 3%屏幕宽度(建议值,可调,范围 2%-5%),距上边距 3%屏幕高度(建议值,可调,范围 2%-5%)
- 格式:
<品类图标> <品类名> <当前数>/<总数>(例:📦 杂物 3/10) - 图标:白盒阶段用简单符号或纯色方块,尺寸约 20×20 像素(建议值,可调)
- 文字:白色文字,正常字体大小
- 常驻显示:游戏开始后始终可见
数值更新动画
- progress 数字变化时有一个轻微的放大-缩小弹性效果(缩放到 1.2 倍再回到 1.0 倍,时长 0.2 秒,建议值,可调,范围 0.1-0.4 秒)
四、全部收集完成表现
- 当 progress 达到 10(isComplete 变为 true)时:
- 收集进度 UI 的数字变更为金色,并播放一次放大弹性效果(1.4 倍缩放,时长 0.5 秒,建议值,可调,范围 0.3-0.8 秒)
- 在最后一条收集通知消失后 0.5 秒(建议值,可调,范围 0.3-1.0 秒),屏幕中央弹出完成提示文字:「杂物全部收集完成!」,白色大字,显示 2.0 秒(建议值,可调,范围 1.5-3.0 秒)后淡出
- 无其他特殊效果(过场动画、NPC 反应等留给后续版本)
v0.1 杂物品类清单
以下 10 个物品归属于「杂物」品类。物品在场景中的位置、交互表现由交互系统定义,收集系统仅关心物品名称和品类归属。
| # | 物品名称 | 稀有度 | 获取方式(通知来源) |
|---|---|---|---|
| 1 | 彩色弹珠(蓝色) | 普通 | 场景拾取 |
| 2 | 彩色弹珠(红色花纹) | 普通 | 场景拾取 |
| 3 | 小石子 | 普通 | 场景拾取 |
| 4 | 水浒卡(鲁智深) | 稀有 | 场景拾取 |
| 5 | 糖纸(大白兔) | 普通 | 场景拾取 |
| 6 | 香味橡皮擦 | 普通 | 场景拾取 |
| 7 | 水浒卡(武松) | 稀有 | 废纸箱翻找 |
| 8 | 弹珠(透明冰花) | 普通 | 场景拾取 |
| 9 | 小弹力球 | 普通 | 场景拾取 |
| 10 | 玻璃弹珠(猫眼) | 稀有 | 场景拾取 |
稀有度影响物品系统拾取通知的图标颜色(普通=白色,稀有=金色),不影响收集系统的行为。收集系统对所有物品一视同仁。
边界情况处理
重复获得同一物品
- 若物品系统对同一物品发出多次获得通知(理论上 v0.1 不应发生,因拾取物为 oneShot)→ 收集系统在步骤 2 查重复时判定为非新收集,不增加 progress,不弹收集通知
- 不会出现进度超过 10 的情况
全部收集完成
- 见「全部收集完成表现」章节
- 完成后继续收到新通知(不会发生):查重复判定拦截,无副作用
重启状态处理
- v0.1 不实现存档,每次启动游戏收集状态完全重置
- 重置内容:progress 归零、collectedIDs 清空、isComplete 置为 false
- 收集进度 UI 恢复显示
杂物 0/10
收集通知与拾取通知时序
- 收集通知在拾取通知弹出后延迟 0.3 秒弹出
- 若拾取通知已消失(停留时间已过),收集通知在原拾取通知位置显示
- 两条通知不会完全重叠,有时间差和位置差
跨系统交互
与物品系统的关系(上游)
- 单向接收通知:收集系统被动接收物品系统的「获得物品」通知,不主动请求
- 通知内容:物品名称、物品品类、物品内部编号
- 无反向通信:收集系统不向物品系统发送任何信息
与交互系统的关系(间接)
- 收集系统与交互系统无直接通信
- 交互系统的拾取交互 → 触发物品系统发出通知 → 收集系统收到通知
- 交互系统的废纸箱翻找获得物品 → 触发物品系统发出通知 → 收集系统收到通知
- 收集系统不知道物品来自交互系统
与 UI 系统的关系
- 收集通知 UI:由收集系统控制显示内容、弹出位置、动画时序
- 收集进度 UI:由收集系统控制显示位置、数值更新、完成变色效果
- 拾取通知 UI:由物品系统控制,收集系统不干涉
v0.1 不实现清单
| 功能 | 排除原因 |
|---|---|
| 多品类收集(弹珠、卡片、糖纸等) | v0.1 统一归为「杂物」 |
| 收集图鉴 UI | 后续版本 |
| 收集品分类和稀有度系统 | 后续版本 |
| 世界反馈(NPC 讨论收集、称号) | 后续版本 |
| 收集完成触发的支线剧情 | 后续版本 |
| 收集进度持久化 | v0.1 无存档 |
可调参数汇总
| 参数 | 建议值 | 可调范围 | 说明 |
|---|---|---|---|
| 收集通知延迟 | 0.3 秒 | 0.1-0.5 秒 | 拾取通知弹出后到收集通知弹出的间隔 |
| 收集通知淡入时长 | 0.2 秒 | 0.1-0.3 秒 | |
| 收集通知停留时长 | 2.0 秒 | 1.5-3.0 秒 | |
| 收集通知淡出时长 | 0.3 秒 | 0.2-0.5 秒 | |
| 收集通知文字颜色 | #F0D060 | — | 浅金色,与拾取通知白色区分 |
| 最大同屏收集通知数 | 2 条 | 1-3 条 | |
| 进度 UI 距左边距 | 3% 屏幕宽度 | 2%-5% | |
| 进度 UI 距上边距 | 3% 屏幕高度 | 2%-5% | |
| 进度数字弹性缩放 | 1.2 倍 | 1.1-1.5 倍 | 单次新收集时 |
| 进度数字弹性时长 | 0.2 秒 | 0.1-0.4 秒 | 单次新收集时 |
| 完成金色缩放倍率 | 1.4 倍 | 1.2-1.8 倍 | 全部收集完成时 |
| 完成金色缩放时长 | 0.5 秒 | 0.3-0.8 秒 | 全部收集完成时 |
| 完成提示延迟 | 0.5 秒 | 0.3-1.0 秒 | 收集通知消失后到完成提示弹出的间隔 |
| 完成提示显示时长 | 2.0 秒 | 1.5-3.0 秒 | 「杂物全部收集完成!」文字 |