diff --git a/docs/06-gameplay-variants.md b/docs/06-gameplay-variants.md new file mode 100644 index 0000000..b212e01 --- /dev/null +++ b/docs/06-gameplay-variants.md @@ -0,0 +1,311 @@ +# 06 Gameplay Variants — 城市抓猫猫 + +> 基于现有堆叠三消主循环的 4 种玩法变体,不推翻核心规则。 + +--- + +## 上线顺序总览 + +| 版本 | 玩法 | 说明 | +|------|------|------| +| V1 | 普通清盘 + 城市委托关 + 城市 Boss 关 | MVP 即包含 | +| V1.1 | 猫猫救援关 | 增加情绪价值 | +| V1.2 | 锁链物件 + 冰冻物件 | 拉开中后期层次 | + +**不做清单(当前阶段):** 纯倒计时竞速、拖拽型新核心玩法、多种机关混搭、PVP/排行榜驱动关卡、第二套副玩法。 + +--- + +## 1. 城市委托关 + +### 一句话定义 + +在"清盘"之外,再加一个和城市主题强绑定的任务目标。 + +### 胜利/失败条件 + +| 条件 | 规则 | +|------|------| +| 胜利 | 清空盘面 **且** 完成委托目标 | +| 失败 | 暂存槽满 7 格无法消除(同主循环) | +| 特殊 | 清盘但未完成委托 → 算失败,提示"目标未完成" | + +### 任务模板(5 种) + +| # | 模板 | 示例 | 难度影响 | +|---|------|------|---------| +| 1 | 类目收集 | 消除 6 个美食类 / 3 个地标类三消 | 低 | +| 2 | 指定元素 | 收集 3 个"糖葫芦"或 3 个"鸟居" | 中 | +| 3 | 顺序目标 | 先完成 2 次文化类三消,再完成 2 次自然类三消 | 中高 | +| 4 | 低风险目标 | 通关时槽位峰值不超过 5 | 中 | +| 5 | 禁用目标 | 本关不能使用 Shuffle | 高 | + +### 局内 UI 表现 + +- 顶部增加 1 个小任务条(图标 + 进度文字,如 🍜 3/6) +- 任务完成时任务条闪光 + ✅ +- 不增加新按钮或交互 + +### 关卡参数 + +```javascript +// LevelPreset 扩展字段 +{ + // ...原有字段 + mission: { + type: 'category_collect', // 模板类型 + target: { category: 'food', count: 6 }, // 目标参数 + }, + // mission 为 null 时为普通清盘关 +} +``` + +### 技术改动点 + +| 改动 | 范围 | 复杂度 | +|------|------|--------| +| 新增 `missionState` 统计模块 | gameplay | 低 | +| 三消回调里检查任务进度 | gameplay | 低 | +| 顶部任务条 UI | ui | 低 | +| LevelPreset 增加 `mission` 字段 | content | 低 | + +**技术复杂度:低** + +### 投放建议 + +- 每城市关 2-5 挂委托目标(关 1 不挂,保持纯教学) +- Boss 关(关 6)最多挂 2 个委托目标 +- V1 即上线 + +--- + +## 2. 猫猫救援关 + +### 一句话定义 + +盘面里藏着猫猫目标物,清出来才算完成这关。 + +### 胜利/失败条件 + +| 条件 | 规则 | +|------|------| +| 胜利 | 清空盘面 **且** 清出全部猫猫目标物 | +| 失败 | 暂存槽满 7 格无法消除 | +| 特殊 | 清盘但猫猫目标物仍在 → 算失败 | + +### 目标物设计 + +- 放入 1-2 个特殊物件:猫铃铛 / 猫爪徽章 / 猫罐头 +- 本质是普通物件 + `isRescueTarget: true` 标记 +- 不是"移动的猫"或"多段状态猫",第一版保持简单 +- 三消时如果包含目标物,计为救援成功 + +### 局内 UI 表现 + +- 目标物带高亮金色边框,区别于普通物件 +- 屏幕上方显示收集进度:🐾 0/2 +- 救出猫猫时播放猫叫音效 + 欢庆动画 +- 通关奖励比普通关多(额外 Undo ×1 或特殊明信片) + +### 关卡参数 + +```javascript +{ + // ...原有字段 + rescueTargets: [ + { elementId: 'beijing_special_bell', count: 1 }, + { elementId: 'beijing_special_paw', count: 1 }, + ], + // rescueTargets 为空数组或 null 时为普通关 +} +``` + +### 技术改动点 + +| 改动 | 范围 | 复杂度 | +|------|------|--------| +| 物件增加 `isRescueTarget` 标记 | content/gameplay | 低 | +| 三消回调里检查目标物收集 | gameplay | 低 | +| 目标物高亮渲染(金色边框) | ui | 低 | +| 救援进度 UI | ui | 低 | +| 每城市增加 2-3 个特殊元素资源 | content | 中 | + +**技术复杂度:低到中** + +### 投放建议 + +- 每城市关 3 或关 4 做救援关(玩家已熟悉基础操作后引入) +- 不和委托关同时叠加(避免认知负载过重) +- V1.1 上线 + +--- + +## 3. 机关物件关 + +### 一句话定义 + +少量特殊物件改变消除节奏,但不改"点击入槽 → 三消消除"的根规则。 + +### 3.1 锁链物件 + +**规则:** +- 外观带锁链标记 +- 被锁时不可点击(点击无反应,不是灰色不是隐藏) +- 解锁条件:该物件的遮挡物全部清除 **且** 周围关联的 2 个普通物件已被消除 +- 解锁后恢复为普通物件,正常参与点击-入槽-三消 + +**与 7 格槽位共存方式:** +- 锁链只影响"何时能点",不改变入槽和三消规则 +- 解锁后的物件和普通物件完全相同 + +### 3.2 冰冻物件 + +**规则:** +- 外观带冰层效果 +- 第一次点击:触发"解冻"动画(碎冰效果 0.3s),**不入槽** +- 第二次点击:正常入槽参与三消 +- 解冻状态持久保留,不会回冻 + +**与 7 格槽位共存方式:** +- 冰冻只增加一次额外点击,不改变入槽规则 +- 解冻后和普通物件完全相同 + +### 局内 UI 表现 + +- 锁链物件:物件上叠加锁链图标,解锁时锁链断裂动画 0.3s +- 冰冻物件:物件上叠加冰层半透明效果,解冻时碎冰动画 0.3s +- 不增加新按钮或 UI 面板 + +### 关卡参数 + +```javascript +{ + // ...原有字段 + mechanics: [ + { type: 'chain', count: 2 }, // 2 个锁链物件 + // 或 + { type: 'frozen', count: 3 }, // 3 个冰冻物件 + ], + // V1.2 初期:每关只用 1 种机关,不混搭 +} +``` + +### 设计边界 + +- 一关最多 2-4 个机关物件 +- 不同时混多种机关类型(V1.2 阶段) +- 机关只影响"何时能点",不改三消规则本身 + +### 技术改动点 + +| 改动 | 范围 | 复杂度 | +|------|------|--------| +| PieceInstance 增加 `mechanic` 字段 | gameplay | 低 | +| 点击判定增加锁链/冰冻前置检查 | gameplay | 中 | +| 锁链解锁条件检测(周围物件消除计数) | gameplay | 中 | +| 冰冻二次点击状态管理 | gameplay | 低 | +| 锁链/冰层渲染和动画 | ui | 中 | +| 生成器支持机关物件放置 | difficulty-gen | 中 | + +**技术复杂度:中** + +### 投放建议 + +- 关 4-5 引入(前 3 关保持纯净教学) +- 锁链和冰冻分城市引入,不同时出现 +- V1.2 上线 + +--- + +## 4. 城市 Boss 关 + +### 一句话定义 + +每城市第 6 关做成"毕业关",难度更高、有主题目标、通关解锁城市猫猫。 + +### 胜利/失败条件 + +| 条件 | 规则 | +|------|------| +| 胜利 | 清空盘面 + 完成所有附加目标(委托/机关) | +| 失败 | 暂存槽满 7 格无法消除 | +| 通关奖励 | 城市猫猫收集卡 + 护照盖章 + 下一城市解锁 | + +### Boss 关配方(最多取 2 种组合) + +| 元素 | 说明 | 版本 | +|------|------|------| +| 更深堆叠 | layers +1, density 提升, 物件数增加 | V1 | +| 城市委托目标 | 1-2 个委托任务 | V1 | +| 猫猫救援 | 盘面埋 1 个猫猫目标物 | V1.1 | +| 机关物件 | 2-3 个锁链或冰冻 | V1.2 | + +**V1 Boss 关配方**:更深堆叠 + 1 个城市委托目标。 + +### 局内 UI 表现 + +- 进入时显示"BOSS"标记 + 城市名 +- 通关后:全屏猫猫解锁动画(猫猫从画面外跳入 + 撒花 + 护照盖章动画) +- 比普通通关动画长(2-3s vs 1s),增加仪式感 + +### 关卡参数 + +```javascript +{ + id: 6, + difficultyTier: 'boss', + seedBase: 11006, + elementCount: 10, + piecesPerElement: [3,3,3,3,3,6,3,3,3,3], + layers: 4, + density: 'high', + targetPassRate: 0.55, + targetDurationSec: [120, 240], + isBoss: true, + mission: { type: 'category_collect', target: { category: 'landmark', count: 3 } }, + // V1.1 可追加 rescueTargets + // V1.2 可追加 mechanics +} +``` + +### 技术改动点 + +| 改动 | 范围 | 复杂度 | +|------|------|--------| +| LevelPreset 增加 `isBoss` 标记 | content | 低 | +| Boss 通关触发猫猫解锁 + 护照盖章流程 | gameplay/state | 中 | +| Boss 专属 UI(标记 + 加长通关动画) | ui | 中 | +| Boss 关在城市页的视觉区分 | ui | 低 | + +**技术复杂度:中** + +### 投放建议 + +- 每城市固定关 6 为 Boss 关 +- V1 即上线(配合委托目标) +- V1.1/V1.2 随新机制逐步丰富 Boss 关配方 + +--- + +## 技术复杂度总结 + +| 玩法 | 复杂度 | 核心改动 | 版本 | +|------|--------|---------|------| +| 城市委托关 | 低 | missionState 统计 + 任务条 UI | V1 | +| 城市 Boss 关 | 中 | isBoss + 猫猫解锁流程 + 加长动画 | V1 | +| 猫猫救援关 | 低-中 | isRescueTarget + 收集进度 + 特殊素材 | V1.1 | +| 锁链物件 | 中 | 解锁条件检测 + 锁链渲染 | V1.2 | +| 冰冻物件 | 中 | 二次点击状态 + 冰层渲染 | V1.2 | + +--- + +## 与现有系统的兼容关系 + +| 系统 | 影响 | +|------|------| +| 核心三消规则 | 不变 | +| 7 格暂存槽 | 不变 | +| 道具系统(Undo/Remove/Shuffle) | 不变(机关物件解锁/解冻后道具正常生效) | +| Overlap Graph | 不变(机关只影响点击前置条件,不影响遮挡判定) | +| Solver/Validator | 需扩展:委托目标验证、机关物件可达性验证 | +| 存档 playerState | 需扩展:missionProgress(按关卡记录委托完成态) |