Files
ChildHood/docs/design/收集系统-执行案.md
T
starmen1265 c3c10a9fcb refactor(skills): Agent架构重构——去阶段/去步骤号/审查纯Issue化/工作流拆技能/目录扁平化
- 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/路径引用
2026-06-08 16:03:24 +08:00

11 KiB
Raw Blame History

收集系统执行案(v0.1 原型)

迭代记录

迭代版本 修改日期 状态 说明
v0.1.0 2026-06-05 📝 设计中 初版执行案,覆盖 v0.1 基础拾取的完整行为规则
v0.1.1 2026-06-05 📝 设计中 架构重构:收集系统从拾取流程中剥离,仅负责收集进度追踪和收集通知;拾取通知归物品系统;引入「杂物」品类概念

状态标记:📝 设计中 | 🔄 开发中 | ✅ 已同步


系统概述

收集系统是游戏的情感锚点。它追踪玩家的收集进度,在达成收集里程碑时给予反馈。

v0.1 范围:一个收集品类「杂物」,共 10 个物品。系统接收物品系统的获得通知,判定是否为新收集,更新进度,弹出收集通知。

核心设计决定(已确认)

  1. 收集系统不感知拾取过程 — 收集系统不关心物品怎么来的(拾取、翻找、购买、奖励……),只从收到物品系统的「获得物品」通知开始工作。
  2. 收集通知与拾取通知分离 — 拾取通知(「找到了 XXX」)由物品系统负责,每次获得物品都弹。收集通知(「发现了新的杂物,进度 X/Y」)由收集系统负责,仅在判定为新收集时弹出。
  3. v0.1 单一品类的简单追踪 — 只有一种收集品类「杂物」,无分类、无图鉴、无世界反馈。

系统边界

收集系统负责 收集系统不负责
维护收集品类进度(当前数/总数) 物品如何获得(拾取/翻找/购买)
判定是否为新收集 拾取通知 UI(「找到了 XXX」)
弹出收集通知(「发现了新的杂物,进度 X/Y」) 物品在场景中的位置和表现
全部收集完成时的特殊表现 物品进入背包的流程

依赖关系

物品系统(上游)

收集系统依赖物品系统发出的「获得物品」通知。

通知内容:

  • 物品名称(如「彩色弹珠(蓝色)」)
  • 物品所属品类(如「杂物」)
  • 物品内部编号

v0.1 中触发此通知的行为:

  1. 交互系统的「拾取」交互完成时(动画播放到物品消失时间点)
  2. 交互系统的「废纸箱翻找」获得结果物品时(翻找动画完成,结果包含物品)

后续版本可能有更多触发来源:购买、小游戏奖励、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 秒 「杂物全部收集完成!」文字