# 产品结构 这是一个**多玩法**休闲 puzzle,不是单一机制的游戏。三个玩法共用一个壳,规则、盘面模型和关卡彼此独立。 工作名沿用目录 `number-swipe`。上架名未定。三个玩法各自有对外名称。 ## 目录 ``` number-swipe/ docs/PRODUCT.md 本文件:壳、隔离规则、玩法清单 docs/design.md UI 设计规范:令牌、组件、动效(玩法一为参考实现) docs/design.html 同上的设计师版:色板、样张、可回放动效 modes/ 01-number-stroke/ 玩法一 · 数字一笔 docs/GDD.md levels/ 02-connect-1234/ 玩法二 · 连连气球 docs/GDD.md src/flow.ts 连消畅玩状态机 src/supply.ts 成袋补给、落点评价与救场 03-hex-walls/ 玩法三 · 六边一笔 docs/GDD.md levels/ shared/ 壳:选玩法、设置、存档索引、广告位 ``` ## 隔离规则 1. **玩法之间禁止互相引用。** 三个 `modes/*` 不得互相 import。 2. **规则、求解器、关卡、对局视图属于玩法。** 盘面模型不默认共用。玩法一是矩形格,玩法三是六边形 + 边墙,即使都是“顺序一笔画”也各写一份。玩法二是圆球 + 物理,更不能复用格子。 3. **`shared/` 只放壳。** 允许:玩法注册表、首页选玩法、设置、存档索引、广告位、安全区、通用按钮皮肤。禁止:过关判定、邻接、提示算法、关卡 JSON、掉落表。 4. **存档按玩法分桶。** `mode:01-number-stroke` / `mode:02-connect-1234` / `mode:03-hex-walls`。 5. **原型按玩法分开跑。** 各玩法的 Web 原型进自己的 `web/`。不要求绑在同一个 index.html。 6. **Cocos 按玩法切场景。** 资源与脚本放 `assets/modes//`。 壳看到的入口: ```ts interface PuzzleMode { id: string; title: string; mount(root: HTMLElement, ctx: ShellContext): void; unmount(): void; } ``` `ShellContext` 只提供存档读写、音效、振动、返回首页。 ## 玩法清单 | id | 目录 | 类型 | 状态 | 规格 | |---|---|---|---|---| | `01-number-stroke` | `modes/01-number-stroke` | 关卡逻辑:矩形一笔画 + 序号 | M1/M2:Web 原型可玩,26 关(教学 10 + 进阶 10 + 奇偶 6) | [GDD](../modes/01-number-stroke/docs/GDD.md) | | `02-connect-1234` | `modes/02-connect-1234` | 气球合成:顺号/同号、掉落接力、彩虹双倍 | Web 可玩,Cocos 迁移包 | [GDD](../modes/02-connect-1234/docs/GDD.md) | | `03-hex-walls` | `modes/03-hex-walls` | 关卡逻辑:六边形一笔画 + 边墙 | M1/M2:Web 原型可玩,10 关 | [GDD](../modes/03-hex-walls/docs/GDD.md) | 一和三同属路径推理,但几何和障碍不同,**不是 DLC 关系**。二是物理连号合成循环;2026-09-15 根据试玩反馈改成无关卡的持续连消,突出掉落接力和放飞。旧十关作为历史实验保留。 新玩法开工顺序:写该玩法 GDD → 锁规则 → 再写该玩法的 `src/`。 ## 共享决策(全产品) - 手机竖屏,单机,离线可玩 - 默认无体力、无计时。玩法二当前为无关卡、无步数限制的连消畅玩模式 - 竖直切面无广告;上线后的去广告 / 激励视频由壳统一接 - 先 Web 原型验证该玩法,再进 Cocos - 关卡、掉落表、美术全部原创,不使用第三方题库和素材 ## 里程碑(产品级) | 阶段 | 内容 | |---|---| | 现在 | 三个玩法独立可运行;一、三为关卡原型,二为气球连消畅玩版并附 Cocos 迁移包 | | 各玩法 M1 | 只在自己的 `modes/` 里做可玩原型,互不阻塞 | | 壳 | 至少两个玩法原型可玩之后,再做选玩法首页 | 不要等三个玩法都做完再写代码。任意一个玩法都可以单独进 M1。