Files
wechat-minigame/docs/02-game-design.md
manpengan faeb453a64 nav: 三级导航分页结构 + 中国地区索引
- 02-game-design 地图结构重写:洲→国家→城市,3x3棋盘分页
- 中国 40 城按 8 地区分组(华北/东北/华东/华中/华南/西南/西北/港澳)
- 导航索引数据:continents/index + asia + regions/china + pagination工具

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 23:20:58 +08:00

14 KiB
Raw Blame History

02 Game Design — 城市抓猫猫

1. 核心玩法规则

1.1 基础机制

抓大鹅式堆叠三消:

  • 场景中多层堆叠物件(城市特色元素:冰箱贴、美食、建筑、动物等)
  • 上层物件遮挡下层,只有未被完全遮挡的物件可点击拾取
  • 底部 7 格暂存槽
  • 点击物件 → 飞入暂存槽 → 3 个同类物件自动消除
  • 暂存槽满 7 格且无法消除 → 游戏失败

1.2 胜利/失败条件

条件 规则
胜利 清除场景中所有物件
失败 暂存槽满 7 格无法消除
时间 无时间限制MVP 阶段),靠物件数量控制局时 2-4 分钟

1.3 道具系统MVP

道具只操作暂存槽,不操作场景物件,避免恢复堆叠遮挡的复杂度。

道具 效果 免费额度 额外使用
撤回 Undo 将暂存槽最后放入的 1 个物件移回场景顶层(不恢复原位,放到顶层空闲位置) 每局 3 次 激励视频
移出 Remove 将暂存槽中 3 个物件移到旁路寄存区1 格),下次有任意消除发生时自动回归暂存槽 每局 1 次 激励视频
洗牌 Shuffle 重新随机排列场景中所有剩余物件的位置和层级 每局 1 次 激励视频

道具状态转移表:

暂存槽状态:[A][B][C][D][E][F][G]  7 格)
旁路寄存区:[X][Y][Z]              3 格,仅 Remove 道具使用)

── Undo ──
前置:暂存槽非空
操作:取暂存槽末位 1 个物件 → 放回场景顶层可见位置
后置:暂存槽空出 1 格
特殊:如果暂存槽为空则道具不可用(置灰)

── Remove ──
前置:暂存槽已用 ≥ 3 格 且 旁路寄存区为空
操作:取暂存槽中 3 个不同类型的物件 → 移入旁路寄存区
后置:暂存槽空出 3 格
回归条件:场景中发生任意一次三消 → 旁路寄存区物件自动回归暂存槽
回归溢出:如果回归时暂存槽已满 7 格 → 先回归再判定失败(即回归物件 + 当前槽位 > 7 则游戏失败)
限制:旁路寄存区非空时不可再次使用 Remove

── Shuffle ──
前置:场景中剩余物件 > 0
操作:所有场景物件重新随机分配位置和层级
后置:物件总数和种类不变,堆叠关系重新生成
特殊Shuffle 后需保证至少 30% 物件可点击(同关卡生成约束)

道具交互约束:

  • Undo 和 Remove 互斥使用:旁路寄存区非空时 Undo 不可用(避免回归顺序混乱)
  • Shuffle 与其他道具无冲突
  • 复活(激励视频):清空暂存槽 + 清空旁路寄存区,场景状态不变,继续游戏

1.4 操作交互

交互 规格
拾取方式 单点点击(不用拖拽)
飞入动画 贝塞尔曲线路径0.2s
消除动画 闪光 + 缩放消失0.3s
通关动画 撒花 + 城市特色猫猫出现1s

2. 地图结构

2.1 导航层级

3x3 棋盘)
  └── 国家3x3 棋盘,超过 9 国分页)
       └── 城市3x3 棋盘,超过 9 城分页)
            └── 关卡(单局游戏)

中国因城市数量多40 城),额外增加"地区"层级:

亚洲 → 中国 → 地区3x3→ 城市3x3→ 关卡
亚洲 → 日本 → 城市3x3→ 关卡

2.2 洲选择页(第 1 级)

1 页3×3 棋盘:

┌────────┬────────┬────────┐
│  亚洲  │  欧洲  │ 北美洲 │
├────────┼────────┼────────┤
│ 南美洲 │  非洲  │ 大洋洲 │
├────────┼────────┼────────┤
│        │        │        │
└────────┴────────┴────────┘

6 个洲3 个空位留给未来扩展。MVP 只开放亚洲,其余显示锁定 + "即将开放"。

每个洲的封面:洲标志性图案 + 解锁进度(如"6/70 城市已解锁")。

2.3 国家选择页(第 2 级)

亚洲 — 2 页

Page 1:

┌────────┬────────┬────────┐
│  中国  │  日本  │  韩国  │
├────────┼────────┼────────┤
│  泰国  │ 新加坡 │  越南  │
├────────┼────────┼────────┤
│马来西亚│印度尼西亚│ 菲律宾│
└────────┴────────┴────────┘

Page 2:

┌────────┬────────┬────────┐
│  印度  │ 阿联酋 │ 土耳其 │
├────────┼────────┼────────┤
│ 以色列 │ 尼泊尔 │ 柬埔寨 │
├────────┼────────┼────────┤
│斯里兰卡│  缅甸  │  蒙古  │
└────────┴────────┴────────┘

欧洲 — 2 页

Page 1:

法国、英国、意大利、西班牙、德国、荷兰、瑞士、奥地利、捷克

Page 2:

希腊、俄罗斯、葡萄牙、挪威、瑞典、丹麦、芬兰、冰岛、匈牙利

北美洲 — 1 页

美国、加拿大、墨西哥 + 6 空位

南美洲 — 1 页

巴西、阿根廷、秘鲁、智利、哥伦比亚 + 4 空位

非洲 — 1 页

埃及、南非、摩洛哥、肯尼亚 + 5 空位

大洋洲 — 1 页

澳大利亚、新西兰 + 7 空位

2.4 中国地区选择页(第 3 级,仅中国)

中国 40 个城市按地区分组1 页 3×3

┌────────┬────────┬────────┐
│  华北  │  东北  │  华东  │
├────────┼────────┼────────┤
│  华中  │  华南  │  西南  │
├────────┼────────┼────────┤
│  西北  │  港澳  │        │
└────────┴────────┴────────┘

各地区包含城市:

地区 城市 数量 页数
华北 北京、天津、石家庄、太原、呼和浩特 5 1
东北 沈阳、长春、哈尔滨、大连 4 1
华东 上海、南京、杭州、合肥、福州、南昌、济南、苏州、厦门、青岛、宁波 11 2
华中 郑州、武汉、长沙 3 1
华南 广州、深圳、南宁、海口、三亚 5 1
西南 成都、重庆、贵阳、昆明、拉萨 5 1
西北 西安、兰州、西宁、银川、乌鲁木齐 5 1
港澳 香港、澳门 2 1

2.5 城市选择页(第 3/4 级)

其他国家(非中国)— 直接展示城市

国家 城市数 页数
日本 4东京、大阪、京都、札幌 1
韩国 3首尔、釜山、济州 1
泰国 3曼谷、清迈、普吉 1
美国 7纽约、洛杉矶、旧金山、拉斯维加斯、华盛顿、芝加哥、迈阿密 1
意大利 4罗马、米兰、威尼斯、佛罗伦萨 1
其他国家 1-3 1

所有国家的城市数均 ≤ 9无需分页除华东 11 城需 2 页外)。

2.6 城市封面设计

每个格子显示:

  • 该城市/国家/洲的特色猫猫头像(已解锁:彩色,未解锁:灰色剪影)
  • 名称(中文)
  • 进度信息(已解锁:"X/6 关",未解锁:"🔒"

2.7 分页交互

  • 左右滑动翻页,底部圆点指示器
  • 首次进入默认第 1 页
  • 翻页动画 0.3s 弹性过渡

2.8 解锁规则

  • 同一层级内顺序解锁(通关前一个解锁下一个)
  • 第一个项目默认解锁
  • 跨层级:通关一个国家所有城市后,解锁下一个国家
  • 中国地区内:通关华北所有城市后解锁东北,以此类推
  • MVP 只开放亚洲洲,亚洲内只开放中国(北京)和已有 MVP 城市

3. 城市猫猫系统

3.1 猫猫收集

  • 每个城市对应 1 只特色猫猫
  • 通关该城市所有 6 关 → 获得猫猫收集卡
  • 猫猫头像作为城市封面显示在地图上

3.2 猫猫设计规则

每只猫猫的差异化维度:

维度 说明
品种暗示 不写实,用颜色和花纹暗示
城市穿戴 城市特色装饰(东京猫戴招财猫面具、北京猫戴虎头帽)
视觉风格 统一扁平冰箱贴风格,确保一致性

3.3 猫猫展示

场景 表现
通关城市 猫猫出场动画(从屏幕外跳入 + 特效)
图鉴页面 已收集猫猫陈列展示
未收集 灰色剪影 + "???"

4. 图鉴系统

4.1 城市图鉴

  • 记录每个城市的通关状态、星级、特色元素收集进度
  • 展示该城市文化小知识1-2 句话)

4.2 猫猫图鉴

  • 已收集猫猫陈列(按洲分类)
  • 每只猫猫有名字 + 1 句话介绍
  • 收集进度X/Y 只

4.3 护照系统

  • 每通关一个城市,护照盖一个章
  • 护照页面可分享为"明信片"
  • 护照进度是核心成就展示

5. 每日挑战

项目 规格
内容 每天 1 个随机城市的特殊关卡
难度 比普通关卡略高(更多物件种类、更深堆叠)
奖励 道具补给Undo ×2+ 特殊明信片
生成方式 程序化生成(基于难度参数随机组合)

6. 广告入口设计

广告类型 触发点 频次控制
激励视频 失败后"复活"(清空暂存槽继续) 每局最多 1 次
激励视频 使用额外道具(重排/撤回/移出) 每种每局 1 次
激励视频 通关后"双倍奖励" 每局可选
激励视频 每日签到奖励翻倍 每日 1 次
插屏广告 通关结算后(非失败后) 每 3 局 1 次

原则:失败后不弹插屏(避免负面情绪叠加),激励视频全部可选不强制。


7. 分享入口设计

触发点 分享内容 奖励
通关城市 城市猫猫卡片 + "我解锁了XX猫" 道具补给Undo ×1
护照盖章 护照截图 + 收集进度 道具补给Shuffle ×1
每日挑战通关 挑战结果卡片 道具补给Undo ×2
图鉴里程碑 "已收集X只猫猫" 特殊明信片

分享卡片设计:猫猫形象 + 城市背景色 + 进度信息 + 小程序入口按钮。


8. 难度设计思路

8.1 难度参数

参数 范围 说明
物件种类数 6-12 种类越多,匹配越难
每种物件数量 3 的倍数(通常 3 或 6 必须是 3 的倍数保证可消除
堆叠层数 2-5 层 层数越多,可见物件越少
遮挡密度 低/中/高 物件重叠面积占比
总物件数 18-60 局时控制核心参数

8.2 城市内难度曲线

关1: 6种 × 3个 = 18件, 2层, 低遮挡   → 新手教学
关2: 7种 × 3个 = 21件, 2层, 低遮挡   → 轻松熟悉
关3: 8种 × 3个 = 24件, 3层, 中遮挡   → 开始有策略
关4: 9种 × 3个 = 27件, 3层, 中遮挡   → 需要思考
关5: 10种 × 3个 = 30件, 4层, 中高遮挡 → 考验规划
关6: 10种 × 3-6个 = 36件, 4层, 高遮挡 → Boss关

8.3 跨城市难度递进

城市序号 定位 特点
城市 1北京 教学城市 最简单,引导玩家熟悉机制
城市 2-3 平滑上升 物件种类增加,层级不变
城市 4-5 进阶挑战 引入更高层级 + 更多种类
城市 6 挑战级 最大物件数 + 最深堆叠

9. 玩家存档模型

所有玩家数据持久化到 wx.Storagekey 为 player_state

9.1 存档 Schema

const playerState = {
  // 版本控制(存档迁移用)
  saveVersion: 1,

  // 城市进度
  unlockedCities: ['beijing'],          // 已解锁城市 id 列表
  levelProgress: {
    // city_id: { levelId: { stars: 0-3, completed: bool, bestMoves: number } }
    beijing: {
      1: { stars: 3, completed: true },
      2: { stars: 2, completed: true },
      // ...
    },
  },

  // 收集
  collectedCats: ['beijing'],           // 已收集猫猫的城市 id
  passportStamps: ['beijing'],          // 已盖章城市 id

  // 道具库存
  inventory: {
    undo: 3,                            // 撤回次数
    remove: 1,                          // 移出次数
    shuffle: 1,                         // 洗牌次数
  },

  // 每日挑战
  dailyChallenge: {
    date: '2026-03-28',                 // 上次挑战日期YYYY-MM-DD
    completed: false,
    cityId: 'tokyo',                    // 今日挑战城市
    seed: 12345,                        // 关卡生成种子
  },

  // 广告冷却
  adCooldowns: {
    interstitialCount: 0,               // 今日插屏已展示次数
    lastInterstitialTime: 0,            // 上次插屏时间戳
    lastRewardDate: '2026-03-28',       // 上次激励视频日期
  },

  // 设置
  settings: {
    soundEnabled: true,
    musicEnabled: true,
    vibrationEnabled: true,
  },

  // 统计
  stats: {
    totalGamesPlayed: 0,
    totalGamesWon: 0,
    totalShareCount: 0,
    firstPlayDate: '2026-03-28',
  },
}

9.2 存档读写规则

规则 说明
读取时机 游戏启动时读取一次,缓存在内存
写入时机 关卡通关/失败、道具使用、城市解锁、设置变更时写入
写入方式 wx.setStorageSync('player_state', state) 同步写入
版本迁移 读取时检查 saveVersion,低于当前版本则执行迁移函数
数据上限 wx.Storage 上限 10MB预估存档 < 50KB