← 返回作品集 叶明轩 · ShelfMatch(柜子三消)设计文档

《ShelfMatch》(暂定名)柜子三消 · 系统设计案 v1.1

作者:叶明轩 | 日期:2026-07 | 状态:v1.1 核心验证版(与可玩 Demo 实物一致) 配套材料:《GoodsMatch 产品拆解案》(同品类拆解)、可玩 Demo(Godot)

更新记录 - v1.0(2026-07-22):初版,八章结构 - v1.1(2026-07-23):道具系统从"v2 预留"转为实装(重排/加时);新增暂停系统;主界面实装;关卡生成器已按反向生成法(3.7)在 Demo 中实现


1. 设计背景与目标

1.1 项目定位

单人独立开发的求职作品集 Demo,品类为 Sort Match / 柜子三消(海外休闲游戏热门品类)。玩家在多个人造柜子之间挪动物品,凑齐三个相同物品消除,在倒计时内清空全部物品。

1.2 设计目标

1.3 品类参考与差异化论证

直接参考对象为 GoodsMatch 等海外头部 Sort Match 产品。该品类主流做法为步数制或无压模式,本 Demo 选择限时挑战制作为主模式,差异化论证如下:

  1. 同类产品深层物品多为完全遮挡,核心挑战是"记忆";本作深层物品半透明剪影可见,全部信息对玩家开放,核心挑战从"记忆"转移为"单位时间内的规划质量"
  2. 正因为信息全可见,时间压力不会制造"不公平感"——玩家失败的原因是"规划得慢/错",而非"运气差没翻到",挫败感可控
  3. 时间压力把空间管理的策略深度转化为即时紧张感,符合休闲玩家"短局高频刺激"的体验诉求
  4. 配套"消除返还时间"机制作为压力缓冲阀(见 3.6),给玩家"操作好就能续命"的掌控感

2. 系统概述与核心循环

一句话概述:在多个三格柜子之间挪动物品,凑齐三个相同即消除,倒计时内清空全部物品即胜利。

核心循环

观察全局(含深层剪影,信息全开放)
    → 规划挪动序列(先消谁、腾哪个柜)
    → 执行挪动(点击-放置)
    → 凑齐三同,触发消除(+分数 +返还时间)
    → 深层物品显露,棋盘信息更新
    → 基于新信息重新规划
    → 循环,直至清空(胜利)或超时(失败)

体验支柱: - 策略感:每一步挪动都在"凑对"与"腾空间"之间做权衡 - 紧张感:倒计时持续施压,消除续命制造"救回来"的爽点 - 掌控感:信息全可见,胜负归因于玩家自身决策质量


3. 详细规则

3.1 棋盘构成

3.2 操作规则

规则编号 规则内容
R-01 点击某柜子的最表层物品 → 该物品进入"选中态"(高亮上浮)
R-02 选中态下点击有空位的目标柜子 → 物品移动至该柜最浅空位
R-03 只能选中各柜最表层物品;中层/深层物品不可选(置灰)
R-04 目标柜子已满(3 件)时不可放入,点击无效并给出轻震反馈
R-05 选中态下点击空白处或再次点击该物品 → 取消选中
R-06 每次移动计为 1 步,步数记录用于结算展示与数据分析

3.3 消除规则

规则编号 规则内容
R-07 同一柜子内 3 个物品种类相同 → 立即触发消除
R-08 消除结算:+100 分,并按 3.6 返还时间
R-09 消除后该柜子变为空柜,可作为周转空间使用
R-10 消除判定在物品落位动画完成后触发,同一时间最多触发 1 组消除(本作无连锁消除设计,理由见 3.10 设计说明①)

3.4 深层显露规则

规则编号 规则内容
R-11 表层物品被移走或随消除移除后,下一层物品立即显露
R-12 未显露物品以 30% 透明度 + 去色剪影呈现,种类可辨认,不可交互
R-13 显露过程播放 0.2s 上浮动画,作为信息更新的视觉提示

3.5 胜负判定

规则编号 规则内容
R-14 棋盘上所有物品被清空 → 立即胜利,进入结算(按剩余时间评星)
R-15 倒计时归零且仍有物品未清空 → 失败,弹出重试界面
R-16 星级评定:剩余时间 ≥ 初始时间 40% → ★★★;≥ 15% → ★★;> 0 → ★

3.6 时间规则

规则编号 规则内容
R-17 每关初始时间 T 由关卡配置决定(见第 4 章数值表)
R-18 每次成功消除返还 +5 秒(不超过初始时间上限,防止时间无限膨胀)
R-19 倒计时 ≤10 秒进入警戒态:数字变红、每秒滴答音效
R-20 失败无额外惩罚,可立即重开本关

3.7 关卡生成规则(可解性保证)

规则编号 规则内容
R-21 采用反向生成法:先构造"已完成状态"(所有物品三三成组放在柜中),再按合法移动规则倒推随机打乱 K 步,得到初始布局
R-22 由于打乱过程只使用合法移动,生成的布局必然存在至少一条解法路径(即倒推路径本身),从算法上保证无死局
R-23 打乱步数 K 与分散度参数挂钩:K 越大,同类物品越分散,难度越高
R-24 生成后校验:任一种类物品数量非 3 的倍数 → 判定非法布局,丢弃重新生成

3.8 道具系统(v1.1 实装)

规则编号 规则内容
R-25 「重排」道具:将当前棋盘所有剩余物品重新随机分配(种类与数量不变);重排后不允许出现已成组的柜子;每关限用 2 次
R-26 「加时」道具:倒计时 +10 秒;与消除返还共用同一上限(封顶 = 初始时间 T,见 R-18);每关限用 2 次
R-27 两个道具的使用次数在每关开始时重置为 2 次;次数用尽后按钮置灰不可点
R-28 道具通过关卡内底部道具栏使用,按钮实时显示剩余次数

设计说明:反向生成法(3.7)已从算法上保证关卡必可解,因此「重排」的定位不是防死局的兜底,而是给"思路绕晕了"的玩家一次重新整理棋盘的机会;「加时」则是限时模式下的压力调节阀,给"差一口气"的玩家容错。两者共同构成本作的"挫败感保险",且通过次数限制防止依赖。

3.9 暂停系统(v1.1 实装)

规则编号 规则内容
R-29 点击暂停按钮 → 游戏暂停:倒计时停止、棋盘锁定输入,弹出暂停菜单
R-30 暂停菜单三选项:①继续游戏(恢复原局面)②重新开始(重置本关:倒计时、道具次数回满,布局按 3.7 重新生成,与上一局不同)③返回主界面
R-31 暂停期间唯一可交互对象为暂停菜单;玩家切出/最小化游戏时自动进入暂停态(衔接 E-07)

3.10 设计说明(面试备答)

为什么不做连锁消除:本作策略点是"规划挪动序列",连锁消除会把乐趣稀释成"碰运气看连锁",与空间管理的核心定位冲突,主动舍弃。 ② 为什么空柜不限制使用:空柜周转是本品类策略的本质(类似汉诺塔的辅助柱),限制周转等于砍掉策略深度;时间制已经提供了全局约束,无需再限制步数。 ③ 为什么剪影可见而非全遮挡:见 1.3 差异化论证——把挑战从记忆转移到规划质量。 ④ 为什么加时道具与消除返还共用上限:v1.1 曾考虑让道具突破上限以强化"破局感",最终选择统一封顶——保持"初始时间 T 就是本关资源总量"这一数值直觉的唯一性,避免玩家对时间预算产生两套认知;道具的价值体现在"容错机会"而非"额外资源"。


4. 数值模型

4.1 难度变量定义

变量 符号 对难度的影响
柜子数量 C 越多周转空间越大,难度越低;但物品总量也越多
物品种类数 K 种类越多,凑对路径越长,难度越高
堆叠层数 L 层数越深,可操作物品比例越低,规划链越长
分散度 D 由打乱步数控制,同类越分散,所需挪动步数越多

4.2 时间预算公式

初始时间 T = 基础操作时间 + 物品总数 N × 单件决策时间 s − 分散度修正
实测校准:v1 按 s = 3 秒/件估算,上线后按第 8 章实测数据回归修正
消除返还 b = 5 秒/次(返还上限 = T)

4.3 关卡数值表(v1 共 5 关)

关卡 柜子 C 种类 K 层数 L 物品总数 初始时间 T 设计目的 目标通过率
L1 4 3 1 12 90s 教学关:学会挪动与三消 ≥90%
L2 5 4 2 24 100s 引入堆叠与剪影信息 ≥80%
L3 6 5 2 30 110s 规划链变长,学会腾柜 ≥65%
L4 6 6 3 36(+空柜) 120s 深堆叠,多层规划 ≥50%
L5 7 6 3 36(高分散) 130s 综合考验,满星挑战 40~60%

注:L4/L5 配置 1 个初始空柜作为周转空间,柜数与物品数解耦——这是难度微调的关键手段。

4.4 计分规则

单次消除 +100 分;通关结算分 = 消除分 + 剩余时间 × 10。分数仅用于自我挑战与展示,不与解锁挂钩(v1 无外围经济)。

4.5 数值验证方法

  1. 开发者自测:每关连续通关 10 次,记录剩余时间分布,中位数应落在 ★★ 区间
  2. 小范围试玩:3~5 名朋友,记录第 8 章埋点数据,按目标通过率调 T 与分散度
  3. 迭代方向:失败时剩余物品 >30% → 时间不足或分散度过高;大量玩家卡同一点 → 检查该关布局生成参数

4.6 道具数值(v1.1 新增)

道具 效果 使用次数 共享上限
重排 剩余物品重新随机分配 2 次/关,过关重置
加时 倒计时 +10 秒 2 次/关,过关重置 与消除返还共用,封顶 = T

调参观察点(衔接第 8 章):道具使用率过低(<20% 玩家使用)说明数值感知弱或 UI 引导不足;重排使用率显著高于加时 → 关卡布局过绕;加时使用率显著高于重排 → 时间预算偏紧。


5. 交互与 UI 说明

5.1 界面结构

5.2 关键交互反馈

场景 反馈
选中物品 上浮 10px + 高亮描边
可放置柜子 槽位虚线框亮起
已满柜子 置灰,点击时轻震 + 红闪
三同消除 物品缩放消失动画 + 飘分"+100" + 飘时间"+5s"
深层显露 0.2s 上浮 + 剪影转实体渐变
≤10 秒警戒 倒计时变红 + 滴答音
使用加时道具 倒计时数字跳变 + 飘字"+10s"(v1.1)
使用重排道具 剩余物品播放重新落位动画(v1.1)
道具次数用尽 按钮置灰,点击无效(v1.1)

6. 边界情况处理

编号 边界场景 处理方案
E-01 消除动画播放期间玩家继续点击 锁输入 0.3s,防止连点导致状态错乱
E-02 选中态下点击自己所在柜子 视为取消选中
E-03 玩家反复横跳"绕圈"不消除 不限制,时间压力自然约束;属合法策略行为
E-04 生成布局含非 3 倍数种类 生成器校验丢弃(R-24),玩家不可见
E-05 最后一次消除与倒计时归零同帧 消除优先,判定胜利(对玩家有利原则)
E-06 返还时间使倒计时超过初始上限 封顶 = 初始时间 T(R-18)
E-07 玩家中途切出/最小化 自动进入暂停态,回来时呈现暂停菜单(衔接 R-31)
E-08 奇数层柜子(如只放1件的柜) 允许存在,三消判定照常(凑满3件才触发)
E-09 暂停菜单弹出瞬间有动画在播 动画照常播完但不结算新输入,恢复后状态一致(v1.1)
E-10 暂停中点"重新开始" 倒计时与道具次数回满,布局重新生成(反向生成重跑,与上局不同)(v1.1)
E-11 重排后剩余物品无法避免成组 重排逻辑内置校验:出现已成组柜子则重新随机,直到满足(与 R-25 一致)(v1.1)

7. 配置表结构

7.1 关卡配置表 level_config

字段 类型 含义 示例
level_id int 关卡 ID 1
cabinet_count int 柜子总数(含空柜) 5
item_types array 本关启用物品种类 [apple, orange, grape, melon]
layer_depth int 最大堆叠层数 2
shuffle_steps int 反向生成打乱步数(分散度) 40
empty_cabinets int 初始空柜数 1
init_time float 初始时间(秒) 100
bonus_time float 单次消除返还(秒) 5
star_thresholds array 星级剩余时间比例 [0.4, 0.15]
items_enabled bool 道具开关(v1.1 已开启) true
prop_reshuffle_count int 重排道具每关次数(v1.1) 2
prop_addtime_count int 加时道具每关次数(v1.1) 2
prop_addtime_value float 加时道具秒数(v1.1) 10

7.2 物品配置表 item_config

字段 类型 含义
item_id string 物品 ID
name string 显示名
sprite string 贴图资源路径
silhouette_tint color 剪影颜色(默认同贴图去色)

设计要点:新增一个关卡 = 在 level_config 加一行配置 + 零代码改动。这正是系统策划"配置驱动"思想的落地证明。


8. 埋点与验证指标

8.1 本地数据记录(v1 用本地文件实现)

事件 记录字段 用途
关卡开始 level_id, 时间戳 计算尝试次数
每次移动 level_id, 步序号, 耗时 玩家决策速度分布
消除触发 level_id, 剩余时间 消除节奏分析
胜利 level_id, 剩余时间, 总步数 通过率与星级分布
失败 level_id, 剩余物品数, 已用步数 定位卡点:时间不足 or 布局过难
道具使用(v1.1) level_id, 道具类型, 使用时剩余时间 道具使用率与使用时机分析

8.2 验证指标与调参决策

指标 目标值 不达标时的动作
L1 首通率 ≥90% 降分散度 / 加 T
L5 通过率 40~60% 偏离则调 shuffle_steps
失败时平均剩余物品 ≤30% >30% 说明时间预算不足
平均每步耗时 1.5~3s >3s 说明剪影信息不清或布局太绕

9. 开发计划(附录)


本文档遵循"程序看完不用问就能开发"的标准撰写,所有规则均标注编号,供实现与面试答辩引用。