From e74ac1e91ef553b3974bf23e3f8d89a0aedd2812 Mon Sep 17 00:00:00 2001 From: manpengan Date: Sat, 28 Mar 2026 22:31:31 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20Phase=201=20=E7=AB=8B=E9=A1=B9=E5=AE=8C?= =?UTF-8?q?=E6=88=90=20=E2=80=94=20=E5=9F=8E=E5=B8=82=E6=8A=93=E7=8C=AB?= =?UTF-8?q?=E7=8C=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 01-project-charter.md: 立项书(方向/MVP范围/成功指标/待决策项) - 02-game-design.md: 游戏设计(玩法规则/地图/猫猫/图鉴/广告/分享) - 03-content-pipeline.md: 内容管线(数据结构/素材规范/分包策略) Co-Authored-By: Claude Opus 4.6 (1M context) --- AGENTS.md | 10 +- CLAUDE.md | 12 +- docs/01-project-charter.md | 194 +++++++++++++++++++++++++++ docs/02-game-design.md | 193 ++++++++++++++++++++++++++ docs/03-content-pipeline.md | 261 ++++++++++++++++++++++++++++++++++++ 5 files changed, 659 insertions(+), 11 deletions(-) create mode 100644 docs/01-project-charter.md create mode 100644 docs/02-game-design.md create mode 100644 docs/03-content-pipeline.md diff --git a/AGENTS.md b/AGENTS.md index 561aa4f..c165f77 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,11 +1,11 @@ ## Project State -- **Project**: wechat-minigame — 微信小游戏 -- **Stage**: Phase 1 立项(待开始) -- **Last action**: project init + standard dev process setup -- **Next task**: Phase 1 — define game type, target users, project charter +- **Project**: 城市抓猫猫 (wechat-minigame) — City-themed stacking match-3 WeChat mini game +- **Stage**: Phase 1 charter done, 5 design decisions pending before Phase 2 +- **Last action**: Wrote 01-charter + 02-game-design + 03-content-pipeline +- **Next task**: Lock pending decisions → Codex supplements system design → Phase 2 - **Dev process**: 10-phase gated flow (~/pro/kb/workflows/standard-dev-process/SKILL.md) -- **Hard constraints**: Canvas rendering | 4MB first package | No DOM/BOM | 60fps target +- **Hard constraints**: Canvas 2D (no engine) | 4MB first package | No DOM/BOM | 60fps - **KB**: ~/pro/kb/projects/wechat-minigame/ diff --git a/CLAUDE.md b/CLAUDE.md index 5272a8e..30b5f1d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,13 +1,13 @@ -# wechat-minigame +# 城市抓猫猫(wechat-minigame) ## 项目速览 -- **项目**:wechat-minigame — 微信小游戏 -- **阶段**:Phase 1 立项(待开始) -- **上次结论**:项目初始化 + 标准开发流程接入 -- **下一步**:Phase 1 立项 — 确定游戏类型、目标用户、项目愿景 +- **项目**:城市抓猫猫 — 城市主题堆叠三消微信小游戏 +- **阶段**:Phase 1 立项完成,待锁定 5 项设计决策后进入 Phase 2 +- **上次结论**:立项书 + 游戏设计 + 内容管线 3 份文档完成 +- **下一步**:锁定待决策项 → Codex 补充系统设计 → Phase 2 竞品深度调研 - **开发流程**:10 阶段门禁制(~/pro/kb/workflows/standard-dev-process/SKILL.md) -- **关键约束**:Canvas 渲染 | 首包 4MB | 无 DOM/BOM | 60fps 目标 +- **关键约束**:Canvas 渲染 | 首包 4MB | 无 DOM/BOM | 60fps | 纯手写框架无引擎 - **KB 指针**:~/pro/kb/projects/wechat-minigame/ diff --git a/docs/01-project-charter.md b/docs/01-project-charter.md new file mode 100644 index 0000000..0166817 --- /dev/null +++ b/docs/01-project-charter.md @@ -0,0 +1,194 @@ +# 01 Project Charter + +## 1. 项目基本信息 + +| 字段 | 内容 | +|------|------| +| 项目名 | 城市抓猫猫 | +| 项目类型 | 微信小游戏 | +| 当前阶段 | 立项 / MVP 定义 | +| 平台约束 | Canvas 渲染、竖屏单手、首包 4 MB、无 DOM/BOM、60 fps 目标 | +| 文档目标 | 明确产品方向、MVP 范围、核心差异化与成功标准,作为后续设计和开发依据 | + +## 2. 一句话定义 + +城市主题的"抓大鹅式堆叠三消"微信小游戏,玩家通过解锁全球城市、收集特色猫猫与城市图鉴,获得"解谜 + 旅行收藏"的双重体验。 + +## 3. 产品愿景 + +- 做一个不只是"换皮抓大鹅"的小游戏,而是具备长期扩展能力的城市收藏型解谜产品。 +- 用"城市文化 + 猫猫 IP + 关卡挑战"形成可传播、可持续更新的内容结构。 +- 在微信生态内验证"轻玩法 + 强主题 + 强收集"的产品路线。 + +## 4. 目标用户 + +**核心画像** + +- **休闲解谜用户** -- 喜欢抓大鹅、羊了个羊、收纳、找物、消除类产品,追求短局放松和通关成就感。 +- **女性和泛休闲用户** -- 对猫猫、旅行、城市文化、可爱视觉有偏好,愿意截图分享和收藏打卡。 +- **微信生态用户** -- 碎片化游玩(通勤、午休、睡前),愿意分享和打卡,接受广告换奖励。 + +**市场数据支撑** + +| 数据点 | 数值 | 来源 | +|--------|------|------| +| 微信小游戏 MAU | 5.71 亿 | 2025 微信公开课 | +| 微信渗透率 | 51.5% | 同上 | +| 40 岁以上用户占比 | 42.1% | 同上 | +| 女性用户占比 | 53% | 同上 | +| 主动找游戏(下拉/搜索/分享) | > 80% | 同上 | +| 2025 小程序游戏市场收入 | 535.35 亿元(YoY +34.39%) | DataEye 2025 报告 | +| 收入结构 -- IAP 占比 | 68.11% | 同上 | +| 收入结构 -- IAA 占比 | 31.89% | 同上 | + +**用户获取关键路径**:微信下拉入口 > 好友分享卡片 > 搜索 > 广告投放。MVP 阶段优先依赖分享裂变和搜索自然流量。 + +## 5. 核心卖点 + +| # | 卖点 | 具体说明 | +|---|------|---------| +| 1 | 城市主题 | 每个城市都有独立视觉记忆点和特色物件(冰箱贴/纪念品/贴纸),形成可辨识的关卡身份 | +| 2 | 猫猫 IP | 每个城市对应一只特色猫猫(融合城市文化元素的参数化设计),形成收集驱动 | +| 3 | 探索 Meta | 通过城市解锁、护照盖章、图鉴完成度形成长期目标,激发完成主义动力 | +| 4 | 易上手 | 核心操作沿用成熟堆叠三消机制(点击拾取 → 槽位堆叠 → 三消消除),学习成本低,首局即懂 | +| 5 | 可扩展 | 城市内容包可持续更新(新洲/新城市/新猫猫),适合长线运营和版本节奏 | + +## 6. 竞品对比 + +### 6.1 直接竞品对比表 + +| 维度 | 羊了个羊 | 抓大鹅 | Water Sort Puzzle | Hexa Sort | 城市抓猫猫(本项目) | +|------|---------|--------|-------------------|-----------|---------------------| +| 品类 | 堆叠三消 | 堆叠三消 | 排序解谜 | 排序 + 建造 | 堆叠三消 + 城市收藏 | +| 核心驱动 | 社交裂变 + 高难度情绪 | 活动运营 + 闯关 | 单局解谜快感 | 排序 + 建造 Meta | 通关 + 收集 + 打卡 + 解锁 | +| 主题/世界观 | 弱(纯抽象) | 中(杂物主题) | 弱(纯色水管) | 中(城镇建造) | 强(全球城市 + 猫猫 IP) | +| D1 留存 | 高(社交拉动) | 35-45% | 40-50% | 45-55% | 目标 > 40% | +| D30 留存 | 依赖社交热度,衰减快 | 中等 | < 10%(无 Meta 层) | > 15%(有建造 Meta) | 目标 > 8%(城市图鉴 Meta) | +| 长线内容 | 弱 | 中 | 弱 | 中(建造) | 强(城市包持续扩展) | +| 日活参考 | 峰值超 300 万 | 百万级 | 全球千万级下载 | 终身收入 $2700 万+ | -- | +| 变现模型 | IAA 为主 | IAA + 轻 IAP | IAA 为主 | IAA + IAP | IAA 为主 → 逐步加 IAP | + +### 6.2 我们的差异化 + +- **不是单纯高难度情绪型产品**,而是"城市收藏型解谜" -- 用正向收集感替代挫败-裂变循环。 +- **不是杂物堆叠**,而是统一的"城市纪念品 / 冰箱贴 / 贴纸"视觉体系 -- 每个城市关卡有清晰的文化身份。 +- **不是单局刺激为主**,而是"通关 + 收集 + 打卡 + 解锁"复合驱动 -- 提供跨局的长期目标感。 +- **通过城市内容系统和难度控制系统建立后续壁垒** -- 竞品可抄玩法,但不易复制完整的城市内容库和生产流水线。 + +## 7. 核心产品判断 + +| 判断维度 | 方向 | +|---------|------| +| 核心玩法 | 抓大鹅式堆叠三消(点击拾取 → 槽位堆叠 → 三消消除) | +| 包装方向 | 城市探索 + 猫猫收集(护照/图鉴/猫猫档案) | +| 变现方向 | IAA 为主(冷启动期占比约 80%),轻 IAP 为辅;成熟期目标 IAP 提升至 40-45% | +| 版本策略 | 先做小而完整的 MVP(1 洲 6 城市),验证后再扩洲、国家、城市 | +| 激励视频 eCPM | 约 60-120 元/千次曝光(微信小游戏休闲品类参考值) | +| 社交裂变贡献 | 目标 30-50% 新用户来自好友分享 | +| 2026 首发激励金 | 上限 400 万/款(微信小游戏首发激励计划) | + +## 8. MVP 范围 + +### 8.1 进入 MVP + +| 模块 | 范围 | 说明 | +|------|------|------| +| 城市地图 | 1 个洲(亚洲) | 作为首批内容包 | +| 城市数量 | 6 个:北京、东京、曼谷、首尔、新加坡、伊斯坦布尔 | 文化辨识度高、素材丰富、覆盖东亚/东南亚/西亚 | +| 城市元素 | 每城市 12-15 个特色元素(冰箱贴风格) | 建筑、美食、文化符号、交通工具等 | +| 猫猫形象 | 每城市 1 个猫猫头形象 | 融合城市文化元素的参数化猫猫设计 | +| 图鉴系统 | 1 套基础城市护照/图鉴系统 | 城市解锁进度、猫猫收集、护照盖章 | +| 每日挑战 | 1 套每日挑战 | 每日 1 关限时挑战,提供日常活跃目标 | +| 分享系统 | 1 套基础分享明信片 | 城市通关/猫猫收集成果分享卡片 | +| 激励视频广告 | 复活、重排、道具、奖励翻倍 | 核心变现手段 | +| 插屏广告 | 局后展示 | 严格控频(每 3 局最多 1 次,单日上限 5 次) | + +### 8.2 不进入 MVP + +| 排除项 | 原因 | +|--------|------| +| 复杂剧情 | MVP 聚焦玩法验证,剧情增加开发和内容成本 | +| 重社交系统(组队、实时对战) | 技术复杂度高,MVP 只做分享裂变 | +| 过深国家/洲多级地图运营玩法 | MVP 简化为"洲 → 城市"二级结构 | +| 大量皮肤付费系统 | MVP 不做 IAP,V1.1+ 再引入 | +| 多玩法混合模式 | MVP 只验证堆叠三消核心玩法 | +| IAP 内购 | MVP 只做 IAA 验证,V1.1+ 加入去广告月卡等轻 IAP | + +## 9. 技术与内容壁垒 + +### 9.1 技术壁垒 + +| 壁垒 | 说明 | +|------|------| +| 城市内容系统 | 城市元素、标签、图鉴、封面、猫猫资产统一配置化(JSON 驱动),新增城市只需配置 + 资源,不改代码 | +| 可控难度生成器 | 控制遮挡层级、解法数、失败率、难度曲线;支持按城市/关卡精调,保证通关率在目标区间 | +| 资源分包策略 | 按洲/城市内容包加载,首包只含核心代码 + 首城资源;后续城市按需下载,保证首包 < 4 MB | +| 纯 Canvas 2D 手写框架 | 不用引擎(Cocos/Laya),首包预算约 2.5 MB;自研轻量渲染/事件/动画/资源管理模块 | + +### 9.2 内容壁垒 + +| 壁垒 | 说明 | +|------|------| +| 参数化猫猫设计体系 | 基于统一猫猫基础形态 + 城市文化参数(服饰/配饰/颜色/表情),批量生成城市猫猫 | +| 城市纪念品视觉语言 | 扁平冰箱贴风格,统一线条粗细、调色板、圆角风格,形成系列感 | +| 可持续扩展的城市图库和图鉴数据 | 结构化城市数据(地标、美食、交通、文化符号),支持快速扩展新城市 | +| AI 生成 + 人工修正的内容生产流水线 | AI 出图(Midjourney/SD)→ 人工修正(一致性/尺寸/透明背景)→ 入库,单城市素材产出周期 2-3 天 | + +## 10. 商业化思路 + +| 变现方式 | 触发场景 | 预估收入占比 | 阶段 | +|---------|---------|-------------|------| +| 激励视频 | 复活(通关失败时)、重排(牌面无解时)、获取道具、额外奖励翻倍 | 55-65% | MVP 起 | +| 插屏广告 | 局后结算页、城市解锁节点 | 15-20% | MVP 起 | +| 去广告月卡 | 12-18 元/月,免除所有强制广告 | 10-15% | V1.1+ | +| 猫猫装扮 | 猫猫皮肤/配饰付费解锁 | 3-5% | V1.1+ | +| 城市快速解锁 | 跳过通关直接解锁城市内容 | 2-5% | V1.1+ | + +**变现节奏**:冷启动期 IAA 占比约 80%,成熟期目标 IAP 提升至 40-45%。 + +**分享裂变**:城市解锁、猫猫收集、护照打卡结果生成分享卡片 → 好友点击进入游戏。 + +**开发者分成**:基础 60% + 月流水梯度激励最高 10% = 最高可达 70%。 + +## 11. 成功指标 + +### 11.1 MVP 验证指标(上线 2 周内) + +| 指标 | 目标值 | 说明 | +|------|--------|------| +| 新手首局完成率 | > 95% | 首关必须极简,验证新手引导有效性 | +| 单局时长 | 2-4 分钟 | 休闲小游戏最佳甜区,太短无沉浸感,太长碎片化不友好 | +| 次日留存(D1) | > 40% | 微信小游戏休闲品类合格线,低于此值需检查核心循环 | +| 激励视频完成率 | > 60% | 验证广告触发时机和奖励吸引力是否合理 | +| 首城通关率(6 关) | > 70% | 验证前 6 关难度曲线是否平滑 | +| 分享率(DAU 中分享人数占比) | > 15% | 验证分享明信片的传播动力 | + +### 11.2 中期指标(上线 1-3 个月) + +| 指标 | 目标值 | 说明 | +|------|--------|------| +| 7 日留存(D7) | > 20% | 验证城市解锁和图鉴系统能否提供跨日目标 | +| 30 日留存(D30) | > 8% | 验证 Meta 层(护照/图鉴/猫猫收集)的长期留存能力 | +| 人均解锁城市数 | > 3(6 城中) | 验证城市间推进动力是否足够 | +| 图鉴完成度(活跃用户平均) | > 40% | 验证收集系统的参与度 | +| ARPDAU | > 0.3 元 | 微信小游戏 IAA 品类基准线 | +| 自然新增占比 | > 50% | 验证产品自传播能力,降低获客成本依赖 | + +## 12. 当前待锁定决策 + +| # | 决策项 | 建议方向 | 决策依据 | 状态 | +|---|--------|---------|---------|------| +| 1 | 消除机制 | 沿用抓大鹅堆叠三消,不做大变体 | 机制成熟、用户认知成本低、开发风险小 | 待确认 | +| 2 | 首页层级 | MVP 简化为"洲 → 城市"二级(去掉国家层) | 减少导航深度,MVP 只有 1 洲 6 城市,三级无意义 | 待确认 | +| 3 | 首批 6 城市 | 北京、东京、曼谷、首尔、新加坡、伊斯坦布尔 | 文化辨识度高、素材丰富、地理分布覆盖亚洲主要区域 | 待确认 | +| 4 | 美术风格 | 扁平冰箱贴风 | 辨识度高、AI 生成友好、适合小尺寸 Canvas 渲染 | 待确认 | +| 5 | 素材生产 | AI 出图 + 人工修正 | 单城市 2-3 天产出,成本可控,质量可接受 | 待确认 | + +## 13. 下一步产出 + +| 产出物 | 文件 | 内容要点 | +|--------|------|---------| +| 核心玩法与系统设计 | `02-game-design.md` | 堆叠三消规则、槽位机制、道具设计、地图结构、图鉴系统、每日挑战规则 | +| 内容生产流水线 | `03-content-pipeline.md` | 城市数据结构(JSON schema)、素材规范(尺寸/格式/命名)、AI 生成 prompt 模板、人工修正 checklist | +| MVP 城市清单 | 同上或独立文档 | 6 城市元素清单(每城 12-15 个)、猫猫设计参数、封面/图鉴配置 | +| 核心玩法原型 | 代码原型 | 关卡生成规则草案、难度参数定义、核心交互 demo | diff --git a/docs/02-game-design.md b/docs/02-game-design.md new file mode 100644 index 0000000..09b2c36 --- /dev/null +++ b/docs/02-game-design.md @@ -0,0 +1,193 @@ +# 02 Game Design — 城市抓猫猫 + +## 1. 核心玩法规则 + +### 1.1 基础机制 + +抓大鹅式堆叠三消: + +- 场景中多层堆叠物件(城市特色元素:冰箱贴、美食、建筑、动物等) +- 上层物件遮挡下层,只有**未被完全遮挡**的物件可点击拾取 +- 底部 **7 格暂存槽** +- 点击物件 → 飞入暂存槽 → 3 个同类物件自动消除 +- 暂存槽满 7 格且无法消除 → 游戏失败 + +### 1.2 胜利/失败条件 + +| 条件 | 规则 | +|------|------| +| 胜利 | 清除场景中所有物件 | +| 失败 | 暂存槽满 7 格无法消除 | +| 时间 | 无时间限制(MVP 阶段),靠物件数量控制局时 2-4 分钟 | + +### 1.3 道具系统(MVP) + +| 道具 | 效果 | 免费额度 | 额外使用 | +|------|------|---------|---------| +| 重排 Shuffle | 重新打乱场景中剩余物件的堆叠顺序 | 每局 1 次 | 激励视频 | +| 撤回 Undo | 撤回最后拾取的 3 个物件放回场景原位 | 每局 1 次 | 激励视频 | +| 移出 Remove | 从暂存槽移出 3 个不同物件放到临时区(下次消除后回归暂存槽) | 每局 1 次 | 激励视频 | + +### 1.4 操作交互 + +| 交互 | 规格 | +|------|------| +| 拾取方式 | 单点点击(不用拖拽) | +| 飞入动画 | 贝塞尔曲线路径,0.2s | +| 消除动画 | 闪光 + 缩放消失,0.3s | +| 通关动画 | 撒花 + 城市特色猫猫出现,1s | + +--- + +## 2. 地图结构 + +### 2.1 导航层级(MVP 简化为二级) + +``` +主页面:洲选择(3x3 棋盘) + └── 洲内页面:城市选择(3x3 棋盘) + └── 城市关卡(单局游戏) +``` + +### 2.2 主页面设计 + +- 3x3 棋盘布局,每格代表一个洲 +- MVP 只开放 1 个洲(亚洲),其余锁定显示"即将开放" +- 洲封面:标志性元素 + 解锁进度(如"3/9 城市已解锁") + +### 2.3 洲内页面设计 + +- 3x3 棋盘布局,每格代表一个城市 +- 城市封面:特色猫猫头像 + 城市名 +- 已通关城市:猫猫头像点亮 + 通关星级 +- 未解锁城市:灰色剪影 + 锁图标 +- 解锁规则:顺序解锁(通关前一个解锁下一个),第 1 个城市默认解锁 + +### 2.4 城市关卡结构 + +每个城市包含 **6 个基础关卡**,全部通关才算"通关该城市"。 + +- 每关使用该城市 12-15 个特色元素中的 8-12 个 +- 难度递增:关 1 用 6 种元素各 3 个,关 6 用 10 种元素各 3-4 个 + 更深堆叠 +- 通关后获得该城市的猫猫收集卡 + +--- + +## 3. 城市猫猫系统 + +### 3.1 猫猫收集 + +- 每个城市对应 1 只特色猫猫 +- 通关该城市所有 6 关 → 获得猫猫收集卡 +- 猫猫头像作为城市封面显示在地图上 + +### 3.2 猫猫设计规则 + +每只猫猫的差异化维度: + +| 维度 | 说明 | +|------|------| +| 品种暗示 | 不写实,用颜色和花纹暗示 | +| 城市穿戴 | 城市特色装饰(东京猫戴招财猫面具、北京猫戴虎头帽) | +| 视觉风格 | 统一扁平冰箱贴风格,确保一致性 | + +### 3.3 猫猫展示 + +| 场景 | 表现 | +|------|------| +| 通关城市 | 猫猫出场动画(从屏幕外跳入 + 特效) | +| 图鉴页面 | 已收集猫猫陈列展示 | +| 未收集 | 灰色剪影 + "???" | + +--- + +## 4. 图鉴系统 + +### 4.1 城市图鉴 + +- 记录每个城市的通关状态、星级、特色元素收集进度 +- 展示该城市文化小知识(1-2 句话) + +### 4.2 猫猫图鉴 + +- 已收集猫猫陈列(按洲分类) +- 每只猫猫有名字 + 1 句话介绍 +- 收集进度:X/Y 只 + +### 4.3 护照系统 + +- 每通关一个城市,护照盖一个章 +- 护照页面可分享为"明信片" +- 护照进度是核心成就展示 + +--- + +## 5. 每日挑战 + +| 项目 | 规格 | +|------|------| +| 内容 | 每天 1 个随机城市的特殊关卡 | +| 难度 | 比普通关卡略高(更多物件种类、更深堆叠) | +| 奖励 | 金币(用于未来 IAP 系统)+ 特殊明信片 | +| 生成方式 | 程序化生成(基于难度参数随机组合) | + +--- + +## 6. 广告入口设计 + +| 广告类型 | 触发点 | 频次控制 | +|---------|--------|---------| +| 激励视频 | 失败后"复活"(清空暂存槽继续) | 每局最多 1 次 | +| 激励视频 | 使用额外道具(重排/撤回/移出) | 每种每局 1 次 | +| 激励视频 | 通关后"双倍奖励" | 每局可选 | +| 激励视频 | 每日签到奖励翻倍 | 每日 1 次 | +| 插屏广告 | 通关结算后(非失败后) | 每 3 局 1 次 | + +原则:**失败后不弹插屏**(避免负面情绪叠加),激励视频全部可选不强制。 + +--- + +## 7. 分享入口设计 + +| 触发点 | 分享内容 | 奖励 | +|--------|---------|------| +| 通关城市 | 城市猫猫卡片 + "我解锁了XX猫!" | 金币 | +| 护照盖章 | 护照截图 + 收集进度 | 道具 | +| 每日挑战通关 | 挑战结果卡片 | 金币 | +| 图鉴里程碑 | "已收集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 | 挑战级 | 最大物件数 + 最深堆叠 | diff --git a/docs/03-content-pipeline.md b/docs/03-content-pipeline.md new file mode 100644 index 0000000..1506490 --- /dev/null +++ b/docs/03-content-pipeline.md @@ -0,0 +1,261 @@ +# 03 Content Pipeline — 城市抓猫猫 + +## 1. 城市数据结构 + +每个城市是一个独立的内容包。使用 JS module 格式(微信小游戏 `require()` 不支持 JSON)。 + +### 1.1 城市配置 + +```javascript +// cities/beijing.js +module.exports = { + id: 'beijing', + name: '北京', + nameEn: 'Beijing', + continent: 'asia', + // 地图封面 + cover: { + catImage: 'images/cats/beijing.png', // 猫猫头像 + bgColor: '#CC2936', // 城市主色调 + }, + // 城市文化信息 + culture: { + tagline: '天安门前看猫猫', // 一句话标语 + funFact: '北京是世界上拥有最多宫殿的城市', // 文化冷知识 + }, + // 特色元素列表(12-15个) + elements: [ + { id: 'beijing_01', name: '糖葫芦', category: 'food', image: 'elements/beijing/tanghulu.png' }, + { id: 'beijing_02', name: '京剧脸谱', category: 'culture', image: 'elements/beijing/opera_mask.png' }, + // ... 12-15 个 + ], + // 关卡配置(6关) + levels: [ + { id: 1, elementCount: 6, piecesPerElement: 3, layers: 2, density: 'low' }, + { id: 2, elementCount: 7, piecesPerElement: 3, layers: 2, density: 'low' }, + { id: 3, elementCount: 8, piecesPerElement: 3, layers: 3, density: 'medium' }, + { id: 4, elementCount: 9, piecesPerElement: 3, layers: 3, density: 'medium' }, + { id: 5, elementCount: 10, piecesPerElement: 3, layers: 4, density: 'medium_high' }, + { id: 6, elementCount: 10, piecesPerElement: [3,3,3,3,3,6,3,3,3,3], layers: 4, density: 'high' }, + ], +} +``` + +**字段说明:** + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `id` | string | Y | 城市唯一标识,小写英文,用于文件路径 | +| `name` | string | Y | 中文名 | +| `nameEn` | string | Y | 英文名 | +| `continent` | string | Y | 所属洲 id | +| `cover.catImage` | string | Y | 猫猫头像路径(相对于资源根目录) | +| `cover.bgColor` | string | Y | 城市主色调 HEX | +| `culture.tagline` | string | Y | 一句话标语,不超过 10 个字 | +| `culture.funFact` | string | Y | 文化冷知识,不超过 25 个字 | +| `elements[].id` | string | Y | 格式 `{city_id}_{两位序号}` | +| `elements[].name` | string | Y | 元素中文名 | +| `elements[].category` | string | Y | 分类:`food` / `culture` / `landmark` / `nature` / `item` | +| `elements[].image` | string | Y | 图片路径(相对于资源根目录) | +| `levels[].piecesPerElement` | number\|number[] | Y | 3 的倍数;数组时长度须等于 `elementCount` | + +### 1.2 洲索引配置 + +```javascript +// continents/asia.js +module.exports = { + id: 'asia', + name: '亚洲', + nameEn: 'Asia', + bgColor: '#FF6B6B', + cities: ['beijing', 'tokyo', 'bangkok', 'seoul', 'singapore', 'istanbul'], + unlockOrder: ['beijing', 'tokyo', 'bangkok', 'seoul', 'singapore', 'istanbul'], +} +``` + +`unlockOrder` 决定城市解锁顺序:通关前一个城市后解锁下一个。 + +--- + +## 2. 素材规范 + +### 2.1 元素图标 + +| 项目 | 规范 | +|------|------| +| 尺寸 | 128x128px @2x(实际渲染 64x64) | +| 格式 | PNG,透明背景 | +| 风格 | 扁平冰箱贴风 -- 圆角矩形白底 + 彩色图标 + 1px 浅灰描边 + 微投影 | +| 色彩 | 高饱和度,同城市内元素色彩需有区分度(消除时快速识别) | +| 命名 | `{city_id}_{序号}.png`,如 `beijing_01.png` | + +### 2.2 猫猫头像 + +| 项目 | 规范 | +|------|------| +| 尺寸 | 封面 256x256px @2x + 图鉴 128x128px @2x | +| 格式 | PNG,透明背景 | +| 风格 | 正面朝向的扁平猫猫头,统一基础轮廓 + 城市特色装饰 | +| 差异化 | 通过颜色、花纹、头饰/装饰体现城市特色 | +| 命名 | `cat_{city_id}.png`(封面)、`cat_{city_id}_thumb.png`(图鉴) | + +### 2.3 城市背景 + +- 不做复杂背景图 +- 用城市主色调 (`bgColor`) 作为纯色/渐变底 +- 可选:底部用 2-3 个城市地标的简笔剪影 + +### 2.4 音效 + +| 音效 | 描述 | 时长 | +|------|------|------| +| 点击拾取 | 轻快的"叮" | 0.1s | +| 三消消除 | 满足感的"嗒嗒嗒"连续音 | 0.3s | +| 通关 | 猫叫 + 欢快音效 | 1s | +| 失败 | 温和的失望音(不要太负面) | 0.5s | + +格式要求:MP3,单声道,44.1kHz,单个文件 < 50KB。 + +--- + +## 3. 猫猫生成规则 + +### 3.1 基础模板 + +所有猫猫基于统一的基础轮廓模板: + +- 圆形头部 +- 三角形耳朵 +- 简笔五官(两眼 + 鼻 + 嘴 + 胡须) + +### 3.2 差异化参数 + +| 参数 | 说明 | 示例 | +|------|------|------| +| `baseColor` | 主体毛色 | 北京: 橘色, 东京: 白色 | +| `pattern` | 花纹类型 | 虎斑 / 纯色 / 三花 / 奶牛 | +| `patternColor` | 花纹颜色 | -- | +| `accessory` | 头饰/装饰 | 北京: 虎头帽, 东京: 招财猫铃铛 | +| `expression` | 表情 | 微笑 / 眯眼 / 吐舌 | + +### 3.3 生产流程 + +1. 用 AI 工具(Midjourney / DALL-E / Stable Diffusion)按参数生成初稿 +2. Prompt 模板: + ``` + flat design cat head icon, {baseColor} cat with {pattern}, + wearing {accessory}, cute, simple, sticker style, + white background, no text + ``` +3. 人工修正:统一线条粗细、色彩饱和度、整体风格一致性 +4. 导出 2 个尺寸(256px + 128px) + +--- + +## 4. 关卡配置格式 + +### 4.1 难度参数 + +```javascript +{ + elementCount: 8, // 使用多少种元素 + piecesPerElement: 3, // 每种元素几个(必须是 3 的倍数) + layers: 3, // 堆叠层数 + density: 'medium', // 遮挡密度:low / medium / medium_high / high +} +``` + +**难度递进规律:** 关 1-2 低密度入门 -> 关 3-4 中密度爬坡 -> 关 5-6 高密度挑战。关 6 允许 `piecesPerElement` 为数组,制造不均匀分布的额外难度。 + +### 4.2 关卡布局生成 + +不手工摆放物件位置,用程序化生成器: + +- **输入:** 难度参数 + 城市元素列表 +- **输出:** 每个物件的 `{ elementId, x, y, layer, rotation }` +- **生成约束:** + - 每层物件不超过总数的 40% + - 最底层至少有 30% 的物件初始可点击 + - 保证可解性(从目标状态反向推导) + +### 4.3 难度验证 + +用脚本模拟 1000 次随机合理操作,验证通关率: + +| 关卡 | 目标通关率 | +|------|-----------| +| 关 1 | > 95% | +| 关 2 | > 90% | +| 关 3 | > 80% | +| 关 4 | > 70% | +| 关 5 | > 60% | +| 关 6 | 50-60% | + +失败率过高时降低 `density` 或 `layers`。 + +--- + +## 5. 分包策略 + +### 5.1 包体划分 + +``` +主包(<= 4MB): +├── game.js + js/(核心框架、渲染引擎、游戏逻辑) ~150KB +├── images/ui/(通用 UI 元素、按钮、图标) ~300KB +├── images/cats/beijing.png(首个城市猫猫头像) ~50KB +├── audio/(通用音效,6-8 个) ~300KB +├── cities/beijing.js(首个城市数据配置) ~5KB +└── images/elements/beijing/(首个城市元素图标) ~200KB + ───────── + ~1005KB + +分包 - 城市包(每包 <= 2MB): +└── sub-asia/ + ├── cities/tokyo.js + bangkok.js + ... + ├── images/elements/tokyo/ + bangkok/ + ... + └── images/cats/tokyo.png + bangkok.png + ... +``` + +### 5.2 首包预算分配 + +| 内容 | 预估大小 | 说明 | +|------|---------|------| +| 代码(框架 + 逻辑) | ~150KB | 纯 Canvas 手写,无引擎 | +| 通用 UI 素材 | ~300KB | 按钮、图标、背景、字体 | +| 首城市素材(北京) | ~250KB | 15 元素 + 猫猫 + 封面 | +| 音效 | ~300KB | 6-8 个通用音效 | +| **合计** | **~1000KB** | **利用率 25%,空间充裕** | + +### 5.3 加载策略 + +- 进入洲页面时预下载该洲分包(`wx.preDownloadSubpackage`) +- 单个城市包预估:配置 ~5KB + 元素图 15x10KB = ~155KB + 猫猫 ~30KB = ~190KB +- 6 城市约 1.14MB,在分包限制内 + +--- + +## 6. MVP 城市清单与素材计划 + +### 6.1 首批 6 城市 + +| 城市 | 元素主题方向 | 猫猫特色 | +|------|------------|---------| +| 北京 | 糖葫芦、京剧脸谱、天安门、烤鸭、兔儿爷、长城砖、故宫角楼、豆汁、二锅头、鸟巢、铜锣、毛笔 | 橘猫 + 虎头帽 | +| 东京 | 寿司、招财猫、富士山、樱花、鸟居、拉面、抹茶、浮世绘、新干线、达摩、和服扇、章鱼烧 | 白猫 + 招财猫铃铛 | +| 曼谷 | 冬阴功、嘟嘟车、大象、泰拳手套、芒果糯米饭、金佛、莲花、榴莲、泰丝、椰子、船面、佛塔 | 暹罗猫配色 + 泰式花环 | +| 首尔 | 泡菜坛、石锅拌饭、韩服、景福宫、烧酒瓶、年糕、K-pop 话筒、太极旗扇、韩式炸鸡、柿子、海苔卷 | 韩国短尾猫 + 韩服小帽 | +| 新加坡 | 鱼尾狮、辣椒螃蟹、榴莲建筑、叻沙、金沙酒店、兰花、肉骨茶、冰激凌三明治、组屋、咖椰吐司 | 花猫 + 小狮子鬃毛 | +| 伊斯坦布尔 | 土耳其红茶、蓝色清真寺、热气球、烤肉串、郁金香、恶魔之眼、土耳其冰淇淋、地毯、石榴、旋转舞裙 | 安哥拉猫 + 恶魔之眼项圈 | + +### 6.2 生产时间估算(单城市) + +| 步骤 | 耗时 | 说明 | +|------|------|------| +| 元素清单确认 | 0.5h | 确定 12-15 个特色元素 | +| AI 出图 | 1h | Prompt 生成 + 筛选 | +| 人工修正 | 2-3h | 统一风格、调色、切图 | +| 猫猫设计 | 1h | AI 出图 + 人工修正 | +| 数据配置 | 0.5h | 写城市 JS module | +| **单城市合计** | **5-6h** | -- | +| **6 城市合计** | **30-36h** | 可并行压缩 |