diff --git a/docs/02-game-design.md b/docs/02-game-design.md index 8a1b705..9992e0f 100644 --- a/docs/02-game-design.md +++ b/docs/02-game-design.md @@ -252,112 +252,192 @@ Framework Ready: 全量 6 洲 48 国 127 城市的 catalog 已搭好,扩城市 ## 4. 收集系统 — 城市主题礼物区 -玩家通过通关获得两种收藏品,存放在"城市主题礼物区"。 +5 层收集体系,和导航层级一一对应,存放在"城市主题礼物区"。 -### 4.1 收藏品类型 +### 4.1 五层收集品总览 -| 收藏品 | 获取方式 | 每城数量 | 说明 | -|--------|---------|---------|------| -| 城市冰箱贴 | 通关城市内每个小关卡(关 1-6) | 6 个 | 每关奖励 1 个该城市特色冰箱贴 | -| 城市邮票贴 | 通关城市全部 6 关 | 1 个 | 集齐 6 个冰箱贴后自动获得城市邮票 | -| 城市猫猫 | 通关城市 Boss 关(关 6) | 1 只 | 同时获得邮票和猫猫 | +| 层级 | 收藏品 | 获取条件 | 数量 | 收集册 | +|------|--------|---------|------|--------| +| 关卡 | 城市冰箱贴 | 通关每个小关卡 | 每城 6 个 | 冰箱贴收集册 | +| 城市 | 城市邮票贴 | 通关城市全部 6 关 | 每城 1 个 | 邮票贴收集册 | +| 地区 | 地区猫猫头像贴 | 通关地区内全部城市 | 每地区 1 个 | 猫猫收集册 | +| 国家 | 国家动物形象贴 | 通关国家内全部城市/地区 | 每国 1 个 | 动物收集册 | +| 大洲 | 洲地图 | 通关洲内全部国家 | 每洲 1 张 | 地图收集册 | -### 4.2 冰箱贴系统 +``` +通关关卡 → 冰箱贴 + └→ 集齐 6 关 → 城市邮票 + └→ 集齐地区全城市 → 地区猫猫(不同品种) + └→ 集齐国家全地区 → 国家代表动物 + └→ 集齐洲全国家 → 洲地图 +``` -**获取规则:** -- 每通关 1 个小关卡,奖励该城市 1 个特色冰箱贴 -- 冰箱贴内容对应该关使用的城市特色元素(如北京关 1 → 糖葫芦冰箱贴) -- 通关动画结束后,冰箱贴从画面飞入收集册 +### 4.2 冰箱贴(关卡级) -**冰箱贴收集册:** -- 入口在"城市主题礼物区" -- 按城市分页展示,每页最多 6 个冰箱贴(对应 6 关) -- 已收集:彩色冰箱贴 + 关卡编号 -- 未收集:灰色占位 + 锁图标 -- 全城市集齐 6 个时,页面顶部显示"已完成 ✅" +- 通关每个小关卡奖励 1 个该城市特色冰箱贴 +- 冰箱贴对应该关的代表元素(如北京关 1 → 天安门冰箱贴) +- 通关动画后冰箱贴飞入收集册 -**冰箱贴数据:** ```javascript -// 冰箱贴和城市元素绑定,每关指定 1 个代表元素 { id: 'magnet_beijing_1', cityId: 'beijing', levelId: 1, - elementId: 'beijing_03', // 天安门 — 该关的代表元素 + elementId: 'beijing_03', name: '天安门冰箱贴', image: 'images/magnets/beijing/magnet_beijing_1.png', } ``` -### 4.3 邮票贴系统 +### 4.3 邮票贴(城市级) -**获取规则:** -- 通关城市全部 6 关后自动获得该城市邮票贴 -- 邮票贴和城市猫猫同时发放(Boss 关通关奖励) -- 获得邮票时播放"盖章"动画(邮戳落下 + 印章音效) +- 通关城市全部 6 关后自动获得 +- 获得时播放"盖章"动画(邮戳落下 + 印章音效) +- 每张邮票:城市名 + 标志图案 + 获得日期 -**邮票贴收集册:** -- 入口在"城市主题礼物区" -- 按洲分页展示 -- 每个邮票:城市名 + 城市标志图案 + 获得日期 -- 已收集:彩色邮票 -- 未收集:灰色虚线框 + 城市名 -- 集齐一个洲的全部邮票后,解锁"洲际旅行家"成就 - -**邮票贴数据:** ```javascript { id: 'stamp_beijing', cityId: 'beijing', name: '北京邮票', image: 'images/stamps/stamp_beijing.png', - acquiredDate: null, // 获得后写入日期 } ``` -### 4.4 城市主题礼物区 +### 4.4 猫猫头像贴(地区级) + +- 通关地区内全部城市后获得该地区专属猫猫 +- **每个地区的猫猫品种不同**,体现地域特色 + +| 地区 | 猫猫品种 | 设计方向 | +|------|---------|---------| +| 华北 | 中华狸花猫 | 虎斑花纹 + 红围巾 | +| 东北 | 临清狮猫 | 白色长毛 + 雪花耳饰 | +| 华东 | 三花猫 | 三色 + 丝绸蝴蝶结 | +| 华中 | 橘猫 | 胖橘 + 辣椒项链 | +| 华南 | 奶牛猫 | 黑白 + 木棉花簪 | +| 西南 | 玄猫 | 全黑 + 银饰耳坠 | +| 西北 | 黄狸猫 | 沙色 + 敦煌丝带 | +| 港澳台 | 玳瑁猫 | 棕黑花色 + 珍珠耳环 | + +> 非中国国家不设地区层级,跳过此奖励,直接从城市邮票到国家动物。 + +```javascript +{ + id: 'cat_region_north_china', + regionId: 'north_china', + breed: '中华狸花猫', + name: '小狸', + image: 'images/cats/region/cat_north_china.png', +} +``` + +### 4.5 国家动物形象贴(国家级) + +- 通关国家内全部城市后获得该国代表动物 +- 动物选最具国家辨识度的标志性物种 + +| 国家 | 代表动物 | 设计方向 | +|------|---------|---------| +| 中国 | 大熊猫 | 竹子 + 国旗配色 | +| 日本 | 柴犬 | 和风围巾 | +| 韩国 | 珍岛犬 | 韩服小帽 | +| 泰国 | 大象 | 泰式花环 | +| 新加坡 | 鱼尾狮 | 金沙造型 | +| 土耳其 | 安哥拉猫 | 蓝眼异瞳 | +| 法国 | 高卢鸡 | 贝雷帽 | +| 英国 | 柯基犬 | 皇冠 | +| 意大利 | 意大利狼 | 罗马斗篷 | +| 美国 | 白头鹰 | 星条旗翅膀 | +| 澳大利亚 | 袋鼠 | 拳击手套 | +| 巴西 | 金刚鹦鹉 | 桑巴羽冠 | +| 埃及 | 法老猎犬 | 法老头饰 | +| 印度 | 孟加拉虎 | 莲花 | + +> 更多国家动物随城市扩展逐步添加。扁平冰箱贴风格,和城市元素视觉统一。 + +```javascript +{ + id: 'animal_china', + countryId: 'china', + animal: '大熊猫', + name: '团团', + image: 'images/animals/animal_china.png', +} +``` + +### 4.6 洲地图(大洲级) + +- 通关洲内全部国家后获得该洲完整地图 +- 地图上标注所有已通关城市的位置 +- 获得时播放地图展开动画(卷轴铺开 + 城市点亮) + +| 洲 | 地图风格 | 设计方向 | +|----|---------|---------| +| 亚洲 | 丝绸之路风 | 暖色调 + 古地图纹理 | +| 欧洲 | 航海图风 | 羊皮纸 + 罗盘 | +| 北美洲 | 公路旅行风 | 66 号公路 + 路标 | +| 南美洲 | 探险地图风 | 丛林 + 河流 | +| 非洲 | 大草原风 | 日落 + 金合欢树 | +| 大洋洲 | 珊瑚礁风 | 海洋蓝 + 珊瑚 | + +```javascript +{ + id: 'map_asia', + continentId: 'asia', + name: '亚洲地图', + image: 'images/maps/map_asia.png', +} +``` + +### 4.7 城市主题礼物区 **入口位置:** 主页底部 Tab 或城市页右上角礼物图标 -**包含 3 个子页面:** +**包含 5 个收集册(Tab 切换):** -| 子页面 | 内容 | 进度展示 | -|--------|------|---------| -| 冰箱贴收集册 | 按城市分页的冰箱贴网格 | X/总数 | -| 邮票贴收集册 | 按洲分页的邮票网格 | X/Y 城市已集齐 | -| 猫猫图鉴 | 按洲分类的猫猫陈列 | X/Y 只已收集 | +| 收集册 | 内容 | 分页方式 | 进度 | +|--------|------|---------|------| +| 🧲 冰箱贴册 | 每关获得的城市冰箱贴 | 按城市分页,每页 6 格 | X/总数 | +| 📮 邮票册 | 每城获得的城市邮票 | 按洲分页 | X/Y 城市 | +| 🐱 猫猫册 | 每地区获得的猫猫头像 | 按国家分页 | X/Y 地区 | +| 🐾 动物册 | 每国获得的代表动物 | 按洲分页 | X/Y 国家 | +| 🗺️ 地图册 | 每洲获得的洲地图 | 一页展示全部 | X/6 洲 | **总览信息栏(礼物区顶部):** -- 冰箱贴:已收集 X / 总 Y 个 -- 邮票:已收集 X / 总 Y 个 -- 猫猫:已收集 X / 总 Y 只 +- 🧲 冰箱贴 X/Y · 📮 邮票 X/Y · 🐱 猫猫 X/Y · 🐾 动物 X/Y · 🗺️ 地图 X/6 -### 4.5 分享触发 +### 4.8 分享触发 | 触发点 | 分享内容 | |--------|---------| | 获得冰箱贴 | "我收集了XX冰箱贴!" + 冰箱贴图片 | -| 获得城市邮票 | "XX城市邮票到手!" + 邮票图片 + 护照进度 | -| 集齐一个城市全部冰箱贴 | "XX城市冰箱贴全收集!" | -| 集齐一个洲全部邮票 | "亚洲旅行家达成!" + 全部邮票合照 | +| 获得城市邮票 | "XX城市邮票到手!" + 邮票图片 | +| 获得地区猫猫 | "华北狸花猫收入囊中!" + 猫猫图片 | +| 获得国家动物 | "中国大熊猫 GET!" + 动物图片 | +| 获得洲地图 | "亚洲地图集齐!" + 地图全景 | +| 五册全满里程碑 | "世界旅行家达成!" + 五册合照 | -### 4.6 与 playerState 的关系 +### 4.9 与 playerState 的关系 ```javascript -// playerState 新增字段 +// playerState 收集字段 { - // 冰箱贴收集 collectedMagnets: [ - // { magnetId: 'magnet_beijing_1', cityId: 'beijing', levelId: 1, acquiredDate: '2026-03-28' } + // { magnetId, cityId, levelId, acquiredDate } ], - - // 邮票收集 collectedStamps: [ - // { stampId: 'stamp_beijing', cityId: 'beijing', acquiredDate: '2026-03-28' } + // { stampId, cityId, acquiredDate } + ], + collectedRegionCats: [ + // { catId, regionId, acquiredDate } + ], + collectedAnimals: [ + // { animalId, countryId, acquiredDate } + ], + collectedMaps: [ + // { mapId, continentId, acquiredDate } ], - - // 猫猫收集(已有,不变) - collectedCats: ['beijing'], } ---