From 887b6e44858848fe75710ab56e8aae0a63e99dfa Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Mon, 1 Jun 2026 00:54:58 +0800 Subject: [PATCH] =?UTF-8?q?docs(design):=20=E6=B7=BB=E5=8A=A0=E6=B8=B8?= =?UTF-8?q?=E6=88=8F=E6=84=BF=E6=99=AF=E3=80=81=E7=B3=BB=E7=BB=9F=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E4=B8=8Ev0.1=E8=8C=83=E5=9B=B4=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增: game-vision.md, v01-scope.md, brainstorm 记录, player-controller/interaction-system/collection-system 设计, scene-v01-suburban 场景设计 更新: CLAUDE.md 协作规范, style-guide 时代设定, current.md/roadmap.md 进度追踪, design 命令模板 --- .claude/commands/design.md | 148 ++++++++++- CLAUDE.md | 6 +- docs/art/style-guide.md | 30 ++- docs/design/activities/scene-v01-suburban.md | 261 +++++++++++++++++++ docs/design/brainstorm-2026-06-01.md | 67 +++++ docs/design/game-vision.md | 148 +++++++++++ docs/design/systems/collection-system.md | 204 +++++++++++++++ docs/design/systems/interaction-system.md | 237 +++++++++++++++++ docs/design/systems/player-controller.md | 130 +++++++++ docs/design/v01-scope.md | 148 +++++++++++ docs/plans/current.md | 25 +- docs/plans/roadmap.md | 76 +++++- 12 files changed, 1444 insertions(+), 36 deletions(-) create mode 100644 docs/design/activities/scene-v01-suburban.md create mode 100644 docs/design/brainstorm-2026-06-01.md create mode 100644 docs/design/game-vision.md create mode 100644 docs/design/systems/collection-system.md create mode 100644 docs/design/systems/interaction-system.md create mode 100644 docs/design/systems/player-controller.md create mode 100644 docs/design/v01-scope.md diff --git a/.claude/commands/design.md b/.claude/commands/design.md index bf1bbf0..5411a25 100644 --- a/.claude/commands/design.md +++ b/.claude/commands/design.md @@ -1,13 +1,6 @@ # /design — 策划模式 -进入策划 Agent 角色。 - -## 执行步骤 - -1. 读取 `docs/plans/current.md`,了解当前进度和待设计项 -2. 列出 `docs/design/` 目录下的文件,了解已有设计文档 -3. 列出 `config/` 目录下的文件,了解已有配置表 -4. 简要汇报:当前设计进度、待设计项、下一步建议 +进入策划 Agent 角色,启动 brainstorming 工作流。 ## 角色规则 @@ -17,3 +10,142 @@ - 设计新系统时,先产出设计文档,再产出对应配置表 - **不做**: 不写蓝图、不写 C++、不处理 .uasset 文件 - 完成工作后**汇报结果**,等待开发者确认,不要自动更新 `current.md` + +## + +**在讨论阶段(阶段 0-5)完成前,绝不产出任何设计文档或配置文件。** +讨论阶段的唯一输出是提问、倾听、总结共识。 +只有阶段 5 获得开发者明确确认后,才进入文档产出阶段。 + +**反模式警告**: 如果你想"先快速把文档写出来再讨论"——停。这就是造成最多返工的做法。 + +--- + +## 执行步骤 + +### 阶段 0:上下文读取 + +1. 读取 `docs/plans/current.md`,了解当前进度 +2. 列出 `docs/design/` 目录下已有文档 +3. 列出 `config/` 目录下已有配置表 +4. 检查是否有已有的 brainstorming 讨论记录(见"讨论记录"章节) +5. 简要汇报状态,然后**立即进入阶段 1** + +### 阶段 1:愿景探索(大图景) + +**目标**: 理解这个游戏到底想成为什么。 + +通过**一次一个问题**的方式,探讨以下维度(不要求全部覆盖,根据开发者的回答自然展开): + +- **核心情感**: 玩家玩完之后应该有什么感觉?怀旧的温暖?淡淡的忧伤?还是什么? +- **与灵感的差异**: 《放学后少年》和《我的暑假》我们学什么?不学什么?我们独特的味道在哪? +- **目标玩家**: 这是做给谁玩的?是给自己(同龄人)的回忆录?还是给年轻人看"以前的日子"? +- **核心记忆点**: 如果玩家只能记住一个瞬间,你希望那是什么? +- **不做什么**: 有什么是你明确不想做的?(比如:不想做成恐怖游戏、不想有战斗系统) + +**提问原则**: +- 优先用 AskUserQuestion 提供选项,但保留开放回答的空间 +- 如果开发者的回答模糊,追问具体场景:"能不能给我一个画面?" +- 可以挑战假设:"你说的怀旧感,是温暖的那种还是带点遗憾的?" +- 可以提建议:"我觉得这里有个有意思的方向……你怎么看?" + +**完成标志**: 开发者说"差不多聊透了",或者策划判断核心愿景已清晰。 +简要总结本阶段达成的共识,然后进入阶段 2。 + +### 阶段 2:支柱深挖(逐个讨论) + +**目标**: 对每个核心玩法支柱进行深入探讨。 + +按照游戏的核心支柱逐个讨论(顺序可调整)。每个支柱 2-5 轮提问。 + +**叙事支柱**: +- 故事的起承转合是什么?有明确的结局吗? +- 叙事怎么穿插在日常中?是事件触发还是自然发生? +- 情感弧线?开头和结尾的情绪差异? +- 有没有你特别想讲的"那个场景"或"那个时刻"? + +**小游戏支柱**: +- 最想做的 3-5 个小游戏是什么?为什么是这些? +- 每个小游戏的核心操作乐趣在哪?(弹珠是准头?四驱车是改装?) +- 小游戏之间的关系?还是各自独立? +- 输了怎么办?赢了有什么奖励? + +**收集支柱**: +- 收集的动机是什么?为了完成图鉴?为了解锁剧情?还是单纯满足感? +- 收集品的深度?是简单的数量堆叠还是有稀有度、有故事? +- 玩家怎么知道该收集什么?地图指引?NPC 提示?还是纯探索? + +**其他可能的话题**(根据阶段 1 的讨论自然展开): +- 角色成长/变化? +- 经济系统(零花钱)? +- 社交关系(和小伙伴的友谊值)? +- 白天/夜晚的变化? +- 天气系统? + +**提问原则**: +- 如果开发者对某个支柱不感兴趣或没想法,跳过,不强求 +- 注意发现支柱之间的关联(比如"收集的卡片可以用来拍洋画") +- 主动提出潜在问题:"如果小游戏和收集完全独立,会不会感觉是两个游戏?" + +**完成标志**: 所有主要支柱都讨论到了(或开发者明确表示不需要讨论)。 +简要总结各支柱的设计方向。 + +### 阶段 3:场景与世界观 + +**目标**: 明确游戏世界的空间和时间设定。 + +- **场景地图**: 游戏世界长什么样?有几个主要区域?怎么连通的? +- **时代细节**: 哪些千禧年的元素是"必须有"的?哪些是锦上添花? +- **空间尺度**: 是紧凑的一条街?还是有一个可以闲逛的小镇? +- **室外/室内**: 哪些建筑可以进入?哪些只是装饰? +- **乡下乡土情节**: 去乡下是什么形式?可以自由去?还是剧情触发? + +**完成标志**: 对游戏世界的空间布局有共识。 +简要总结场景设计方向。 + +### 阶段 4:范围与优先级 + +**目标**: 明确接下来要做什么版本、做什么内容。 + +- **当前版本目标**: 这个版本要验证什么核心体验? +- **不做的事**: 明确排除哪些内容? +- **验收标准**: 怎么判断这个版本"做完了"? +- **版本之间的关系**: 当前版本的输出如何支撑下一个版本? + +如果 `docs/plans/roadmap.md` 已有版本规划,在此基础上讨论是否需要调整。 + +**完成标志**: 对当前版本的范围达成共识。 + +### 阶段 5:共识总结与文档提案 + +**目标**: 把所有讨论成果组织起来,提出需要产出的设计文档。 + +1. **总结所有共识**: 用简洁的列表回顾阶段 1-4 达成的所有设计决策 +2. **提出文档清单**: 根据共识,列出需要产出的设计文档(文件名 + 一句话说明) +3. **标注优先级**: 哪份文档最核心,应该先产出? +4. **征求确认**: 等待开发者确认或调整 + +**产出节奏**: 先产出最核心的文档(通常是游戏愿景或范围定义),开发者确认后再展开其他文档。 + +**完成标志**: 开发者确认文档清单,说"可以开始写了"。 +此时 HARD GATE 解除,进入阶段 6。 + +### 阶段 6:文档产出(HARD GATE 之后) + +按确认的清单逐个产出设计文档: + +1. **先产出最核心文档**,产出后汇报,等开发者确认 +2. 开发者确认后,展开下一份文档 +3. 每份文档产出后汇报结果,不自动更新 `current.md` +4. 全部完成后,更新 `docs/plans/current.md` 和 `docs/plans/roadmap.md` + +--- + +## 讨论记录 + +每次 brainstorming 讨论的成果应记录到 `docs/design/` 目录下: +- 文件名: `brainstorm-YYYY-MM-DD.md` +- 内容: 各阶段达成的共识摘要 +- 用途: 下次 /design 时可以读取,避免重复讨论已确认的内容 + +如果已有讨论记录,阶段 1-4 可以跳过已确认的部分,直接进入未讨论的维度。 diff --git a/CLAUDE.md b/CLAUDE.md index 77bab3b..fe18f9d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,12 +1,14 @@ # ChildHood(我的童年) -> 80年代中国乡村童年生活模拟 · UE5.7.4 · 3D Lowpoly · 单人独立开发 +> 千禧年前后城郊结合区童年生活模拟 · UE5.7.4 · 3D Lowpoly · 单人独立开发 ## 项目概况 - **引擎**: Unreal Engine 5.7.4 - **美术风格**: 3D Lowpoly,温暖色调,怀旧氛围 -- **核心玩法**: 模拟80年代中国乡村儿童的日常生活(弹珠、跳绳、捉虫、探险等) +- **核心玩法**: 模拟千禧年前后城郊结合区儿童的日常生活(探索、小游戏互动、收集、剧情叙事) +- **灵感来源**: NDS《放学后少年》自由探索 + PS《我的暑假》日常叙事节奏 +- **时代背景**: 2000年前后,城市边缘的城郊结合区(如南京迈皋桥),兼顾乡村情节 - **开发者**: starmen1265(单人独立开发) - **仓库**: E:\MiceCola\work\ChildHood diff --git a/docs/art/style-guide.md b/docs/art/style-guide.md index 0e87bc8..78e786d 100644 --- a/docs/art/style-guide.md +++ b/docs/art/style-guide.md @@ -6,18 +6,19 @@ ## 总体风格 -**3D Lowpoly — 温暖怀旧的80年代中国乡村** +**3D Lowpoly — 温暖怀旧的千禧年前后中国城郊** -低多边形建模风格,强调形状的简洁与色彩的温暖感。不追求写实,而是通过精简的几何体和柔和的色彩唤起童年记忆中的那份纯真与温暖。 +低多边形建模风格,强调形状的简洁与色彩的温暖感。不追求写实,而是通过精简的几何体和柔和的色彩唤起童年记忆中的那份纯真与温暖。场景融合了城郊结合区的特征——既有老街巷的质朴,也有城市化进程中新旧交替的痕迹。 --- ## 色彩方向 -- **主色调**: 暖黄、土褐、草绿 — 对应乡村的自然环境 -- **辅助色**: 天蓝、夕阳橙、烟囱灰 — 营造时间流逝感 -- **避免**: 高饱和度荧光色、冷硬的工业色系 -- **整体氛围**: 阳光洒在泥土路上的温暖感,而非阴暗或压抑 +- **主色调**: 暖黄、灰白水泥、草绿 — 城郊日常生活的主色 +- **辅助色**: 天蓝、夕阳橙、铁锈红 — 营造时间流逝感与老旧感 +- **点缀色**: 小卖部招牌的褪色红/蓝、零食包装的鲜艳色块 — 时代的记忆点 +- **避免**: 高饱和度荧光色(霓虹灯感)、冷硬的现代工业色系 +- **整体氛围**: 阳光照在水泥路和老旧墙面的温暖感,带有新旧混杂的时代痕迹 --- @@ -36,16 +37,18 @@ - **材质类型**: 主要是 Unlit 或简单的 Lambert,不做复杂 PBR - **贴图尺寸**: 道具 128×128 或 256×256,角色 512×512 - **色调映射**: 保持色彩明亮温暖,避免过暗的阴影 +- **特殊处理**: 墙面可以有手绘感的裂缝和剥落痕迹,体现年代感 --- ## 参考关键词 -- 低多边形乡村 / Lowpoly countryside +- 低多边形城郊 / Lowpoly suburban China - 怀旧游戏美术 / Nostalgic game art -- 80年代中国农村 / 1980s rural China +- 2000年代中国城镇 / Turn-of-millennium Chinese town - 温暖色调低模 / Warm tone lowpoly - 《纪念碑谷》色彩感(参考方向,非照搬) +- 千禧年中国小城镇 / Y2K Chinese small town --- @@ -53,8 +56,9 @@ | 类别 | 示例 | |---|---| -| 地形 | 泥土路、田埂、小溪、山坡 | -| 建筑 | 砖瓦房、土墙院落、小卖部、祠堂 | -| 植被 | 草地、稻田、大树、竹丛、菜地 | -| 道具 | 弹珠、毽子、竹蜻蜓、纸飞机、橡皮筋 | -| 角色 | 男孩、女孩、小伙伴、邻居爷爷/奶奶 | +| 地形 | 水泥路、泥土小巷、水塘边、小坡、拆迁空地 | +| 建筑 | 老式居民楼、带院子的平房、小卖部、菜市场棚子、工地围挡 | +| 植被 | 行道树、杂草丛生的空地、墙角的藤蔓、阳台上的盆栽 | +| 道具 | 弹珠、溜溜球、四驱车、水浒卡、竹蜻蜓、小浣熊干脆面 | +| 标志物 | 公用电话亭、晾衣杆、老式自行车、红砖墙、褪色招牌 | +| 角色 | 男孩(主角)、小伙伴、邻居大叔/阿姨、小卖部老板 | diff --git a/docs/design/activities/scene-v01-suburban.md b/docs/design/activities/scene-v01-suburban.md new file mode 100644 index 0000000..14b7d73 --- /dev/null +++ b/docs/design/activities/scene-v01-suburban.md @@ -0,0 +1,261 @@ +# v0.1 场景设计 — 城郊小街 + +> 本文档定义 v0.1 白盒场景的具体内容,供程序搭建白盒和美术制作资产参考。 + +--- + +## 场景概述 + +**场景名称**: 城郊小街 + +**一句话描述**: 一条连接家和外部世界的小街——小卖部、老居民楼、空地和水塘,千禧年前后城郊结合区的缩影。 + +**规模**: 约 80m × 60m 的可探索区域,步行走一圈约 2-3 分钟 + +**时间设定**: 夏日的下午(v0.1 固定时段,不做时间变化) + +--- + +## 区域划分与地图 + +``` + ┌──────────────┐ + │ 水塘边 │ + │ (芦苇·青蛙) │ + └──────┬───────┘ + │ 小路 + ┌──────┴───────┐ + │ 巷子(窄) │ + │ (猫·纸箱·蛛网) │ + ┌─────────┴──────────────┴──────────┐ + │ │ + ┌──────┴──────┐ 主 街 道 ┌────────────┴───┐ + │ 我的家 │ (水泥路) │ 空地/操场 │ + │ (小院·平房) │ ←────────→ │ (弹珠·大树·水坑) │ + └──────┬──────┘ └────────────────┘ + │ │ + ┌──────┴──────┐ ┌─────────┴────┐ + │ 小卖部 │ │ 老居民楼 │ + │ (零食·冰柜) │ │ (背景装饰) │ + └─────────────┘ └──────────────┘ +``` + +**流线**: 家 → 街道 → 各分支区域(小卖部/空地/巷子→水塘) + +--- + +## 各区域详细设计 + +### 1. 家(Home) + +**位置**: 场景西南角 +**面积**: 约 8m × 6m(含小院) + +**描述**: +带小院子的平房(或一楼的套房),主角住的地方。院子有铁皮门,院子不大但塞满了生活痕迹。 + +**环境细节**: +- 小院:晾衣杆(挂着衣服)、旧自行车靠墙、角落的杂物堆 +- 外观:红砖墙或水泥外墙,窗户有铁栏杆,门是那种绿色铁门或木门 +- 门口:一块小门垫,门旁可能有对联/福字的痕迹 + +**室内(v0.1 简化)**: +- 单间或小客厅即可,不需要完整户型 +- 老式冰箱、大脑袋电视(搁在电视柜上)、一张书桌 +- 墙上挂着日历 +- v0.1 室内可以不实现,仅作为视觉背景(门打开看到内部但不可进入) +- 如果实现,最小空间:冰箱 + 电视 + 书桌 + 床 + +**可交互物体**: 冰箱、电视、书桌、日历、床(详见 interaction-system.md) + +**氛围**: 熟悉、安全、有点乱但温馨 + +--- + +### 2. 小卖部(Corner Shop) + +**位置**: 家旁边,沿主街道 +**面积**: 约 6m × 4m + +**描述**: +街角的小卖部,玻璃柜台里面摆着各种零食,墙上挂着卡片架。是孩子们放学后的"圣地"。 + +**环境细节**: +- 外观:蓝色或绿色的褪色招牌("XX百货"或手写的"小卖部") +- 门:卷帘门或玻璃推拉门(白天是打开的) +- 柜台:玻璃柜台,里面分层摆着零食 +- 货架:靠墙的简易金属货架 +- 冰柜:那种顶盖掀开的老式冰柜 +- 角落:一台小电视,正在放动画片或电视剧 + +**可交互物体**: 零食货架、冰柜、卡片架、老板(NPC) + +**时代物品参考**: +- 辣条(卫龙/大刀肉) +- 大大泡泡糖(送贴纸!) +- 小浣熊干脆面(集水浒卡!) +- 健力宝 / 北冰洋 +- 袋装冰(冰块装在透明塑料袋里) +- 各种5毛钱的零食 + +**氛围**: 零食的诱惑、夏天的冰柜味、电视的声音 + +--- + +### 3. 主街道(Main Street) + +**位置**: 场景中心,东西走向 +**长度**: 约 50m +**宽度**: 约 5m(两侧有建筑/围墙) + +**描述**: +一条水泥路面的街道,不宽,偶尔有自行车经过(v0.1 不需要动态车辆)。街道两侧有各种生活痕迹。 + +**环境细节**: +- 路面:灰色水泥,有些裂缝和修补的痕迹 +- 两侧:围墙、居民楼底楼、零散的摊位痕迹 +- 街边:公用电话亭、老式路灯、电线杆(电线交错) +- 生活痕迹:墙上贴着的小广告、褪色的标语、地上的落叶 + +**可交互物体**: 公用电话亭、老式自行车、晾衣杆、墙上的涂鸦、下水道盖 + +**氛围**: 千禧年城郊的日常——不精致但有人气 + +--- + +### 4. 空地/操场(Vacant Lot) + +**位置**: 场景东侧 +**面积**: 约 15m × 12m + +**描述**: +一片开阔的空地,可能是拆迁后还没建设的地块。地面是硬土和杂草,是孩子们的主要活动场地。 + +**环境细节**: +- 地面:硬黄土 + 稀疏的杂草 + 几处低洼(下雨后积水坑) +- 中央:一棵大梧桐树(提供阴凉) +- 边缘:零散的砖块、废弃的建材 +- 地面上隐约可以看到弹珠游戏的"圈"(画在地上的痕迹) + +**可交互物体**: 散落的弹珠、水浒卡碎片、小石子、大树、水坑 + +**氛围**: 孩子们的领地——虽然简陋但充满可能 + +--- + +### 5. 巷子(Alley) + +**位置**: 连接街道和水塘的窄通道 +**长度**: 约 25m +**宽度**: 约 2-3m + +**描述**: +两侧是居民楼或围墙的窄巷子,光线略暗,有种探险的感觉。走到尽头就是水塘。 + +**环境细节**: +- 两侧:斑驳的墙面、生锈的铁窗、窗外伸出晾衣杆 +- 地面:青砖或石板,有些地方长了青苔 +- 细节:墙角有蜘蛛网、窗台上有花盆、角落有废纸箱 +- 声音:巷子里回声明显(v0.1 不需要,后续版本可加) + +**可交互物体**: 流浪猫、老窗户、废纸箱、蜘蛛网 + +**氛围**: 安静、略带神秘、有种"大人不知道的地方"的感觉 + +--- + +### 6. 水塘边(Pond) + +**位置**: 场景最北端 +**面积**: 水塘约 15m × 10m,岸边约 3m 宽 + +**描述**: +城郊保留的小水塘,周边有芦苇和杂草。夏天的傍晚会有蛙叫。水面映着天空和周围的树。 + +**环境细节**: +- 水面:深绿色,有微微的波纹(简单材质动画即可) +- 岸边:泥土坡度,长着芦苇和杂草 +- 细节:荷叶、青蛙、偶尔掠过的蜻蜓 +- 远景:水塘对岸是模糊的田野/工地(场景边界) + +**可交互物体**: 水塘、青蛙、芦苇、散落的糖纸和橡皮擦 + +**氛围**: 夏天的水边——有点危险但很吸引人 + +--- + +### 7. 老居民楼(背景装饰) + +**位置**: 场景东南角 +**状态**: v0.1 为纯背景装饰,不可进入 + +**描述**: +一栋5-6层的老式居民楼,灰白外墙,阳台上晒着衣服。作为场景背景提供"城郊居民区"的氛围。 + +**细节**: +- 外墙有些剥落和裂缝 +- 阳台上有晾衣杆、花盆、杂物 +- 底楼可能有杂物间或车库 +- 楼梯间入口(v0.1 不可进入) + +--- + +## 时代元素清单 + +以下元素应出现在场景各处,营造千禧年前后城郊的时代感: + +### 静态物件 +| 物件 | 位置 | 说明 | +|------|------|------| +| 褪色招牌 | 小卖部上方 | 蓝底白字或手写体 | +| 公用电话亭 | 街道边 | IC卡电话,可能有广告贴纸 | +| 老式自行车 | 家门口/街道边 | 永久牌/凤凰牌,后座有铁丝筐 | +| 晾衣杆 | 家院子/居民楼阳台 | 竹竿或铁管,挂着衣服被子 | +| 红砖墙 | 巷子/家外围 | 有爬山虎或剥落的墙皮 | +| 电线杆 | 街道边 | 木头或水泥杆,电线交错 | +| 工地围挡 | 场景边缘 | 蓝色铁皮围挡,写着标语 | +| 广告墙 | 街道边 | 手绘的移动/联通广告 | +| 菜市场棚子 | 街道某段 | 简易铁皮棚(v0.1 纯装饰) | +| 垃圾桶 | 街道角落 | 绿色铁皮垃圾桶 | + +### 地面细节 +- 水泥路裂缝 +- 砖缝中的杂草 +- 地面上的粉笔画痕迹 +- 积水坑(反光材质) +- 散落的零食包装纸 + +### 环境氛围 +- 夏日的暖色阳光(下午3-4点的光线) +- 微微的热气蒸腾感(v0.1 用简单的后处理热浪效果?可选) +- 远处模糊的蝉鸣声(v0.1 不做声音,后续版本) + +--- + +## 收集品分布(v0.1) + +场景中散落的 10 个可拾取收集品: + +| # | 物品 | 位置 | 稀有度 | +|---|------|------|--------| +| 1 | 彩色弹珠(蓝色) | 空地地面 | 普通 | +| 2 | 彩色弹珠(红色花纹) | 巷子深处 | 普通 | +| 3 | 小石子 | 空地水坑旁 | 普通 | +| 4 | 水浒卡碎片(鲁智深) | 空地砖块旁 | 稀有 | +| 5 | 糖纸(大白兔) | 水塘岸边 | 普通 | +| 6 | 橡皮擦(半透明) | 水塘岸边 | 普通 | +| 7 | 水浒卡碎片(武松) | 巷子废纸箱内 | 稀有 | +| 8 | 弹珠(透明冰花) | 街道下水道盖旁 | 普通 | +| 9 | 小浣熊调料包 | 小卖部门口 | 普通 | +| 10 | 玻璃弹珠(猫眼) | 家院子角落 | 稀有 | + +拾取后物品消失(oneShot),收集计数 +1。 + +--- + +## 场景边界处理 + +- 场景边缘用自然元素围合:围墙、居民楼、水塘、工地围挡 +- 不可到达的区域用物理碰撞阻挡 +- 不需要加载屏幕或过渡区域(v0.1 单一关卡) +- 场景边缘可放置远景(简单面片 + 天空盒)暗示更大的世界 diff --git a/docs/design/brainstorm-2026-06-01.md b/docs/design/brainstorm-2026-06-01.md new file mode 100644 index 0000000..876d346 --- /dev/null +++ b/docs/design/brainstorm-2026-06-01.md @@ -0,0 +1,67 @@ +# Brainstorm 讨论记录 — 2026-06-01 + +> 参与者:开发者 starmen1265 + 策划 Agent +> 状态:进行中(收集系统已聊完,小游戏/叙事/场景待续) + +--- + +## 阶段 1:愿景探索 — 已完成 ✅ + +### 核心情感(重要修正) + +**之前 vision 文档的说法**:"怀旧但不伤感,温暖中有淡淡的离别感" +**修正为**:游戏基调是**开心、无忧无虑**的。忧伤不是游戏主动营造的,而是经历过那个时代的玩家自带的反应。游戏只负责还原快乐的童年,伤感是玩家的副产品。 + +### 独特性(不是"中国版放学后少年") + +- **时代细节**是底色——街景、人物、物件,呈现千禧年风貌 +- **小游戏**是"玩"——童年最深刻的记忆就是玩 +- **收集系统**是情感锚点——帮玩家补全当年没集齐的、找回已丢失的 + +### 节奏设计 + +- 以"天"为节奏单位 +- 每天内时间基本自由掌控 +- 大时间线上有约定和目标("下周要去乡下"、"约了跟谁比赛"),给方向感但不说教 +- 时间流逝是温柔的推动力,不是催促 + +### 核心记忆点 + +1. "这不就是我小时候吗"——被某个物件/场景/声音击中的共鸣瞬间 +2. "终于集齐了"——收集完成的圆满满足感 + +### 明确不做 + +- 无战斗 · 无失败惩罚 · 非开放世界 · 纯单机 + +--- + +## 阶段 2:支柱深挖 — 进行中 + +### ✅ 收集系统(已聊完,已产出设计文档) + +核心设计决策: +- 四类收集品体系(普通玩具 / 带收集属性玩具 / 纯收集品 / 时代特色物品) +- 获取方式混合,各有不同(买、赢、捉、发现) +- 三重价值:玩法用途 + 解锁内容 + 情感叙事 +- 专门展示界面,全收集完可能成为游戏场景一部分 +- 世界反馈:NPC 讨论、给称号、用新称呼 +- 集齐可触发支线剧情,不影响主线 +- 情感核心:补全遗憾 → 圆满满足 → 被世界认可 + +### ⏳ 小游戏(待明天继续) + +### ⏳ 叙事支柱(待讨论) + +### ⏳ 其他话题(待讨论) + +--- + +## 待办 + +- [ ] 继续阶段 2:小游戏支柱深挖 +- [ ] 继续阶段 2:叙事支柱深挖 +- [ ] 阶段 3:场景与世界观 +- [ ] 阶段 4:范围与优先级 +- [ ] 阶段 5:共识总结与文档提案 +- [ ] 全部完成后更新 `game-vision.md`(核心情感已修正) diff --git a/docs/design/game-vision.md b/docs/design/game-vision.md new file mode 100644 index 0000000..0498cf3 --- /dev/null +++ b/docs/design/game-vision.md @@ -0,0 +1,148 @@ +# 游戏愿景 — ChildHood(我的童年) + +> 本文档为整个项目的核心锚点,所有设计与开发决策以此为准。 + +--- + +## 一句话概念 + +一个关于千禧年前后城郊小男孩的夏天——在即将消失的老街巷里漫游、和小伙伴玩闹、收集那些后来再也见不到的小东西。 + +--- + +## 灵感来源 + +### 《放学后少年》(NDS) +**我们取什么**: +- 放学后的自由探索感——地图上随处可去的开放感 +- 小游戏的多样性——各种不同玩法的迷你活动 +- 校园/街区的生活气息——每个角落都有故事 + +**我们不照搬**: +- 日式校园文化(我们是城郊小街) +- 过于碎片化的活动列表(我们需要更强的叙事线串联) + +### 《我的暑假》系列(PS) +**我们取什么**: +- 日常的诗意——普通的一天也可以很动人 +- 时间流逝感——从早到晚的光影变化 +- 昆虫采集等收集系统的深度和满足感 +- 叙事节奏——不是大开大合的剧情,而是日常中的小事件串联 + +**我们不照搬**: +- 日本乡村文化(我们是中国城郊) +- 昆虫采集为核心玩法(我们的收集更广泛、更贴合城郊生活) + +--- + +## 三大支柱 + +### 1. 剧情叙事 — 日常的诗意 + +不是英雄冒险,是关于一个普通男孩的普通日子。叙事通过日常事件展开: +- **主线**: 一个暑假的故事——从放假到开学前夕 +- **日常事件**: 小卖部打折、邻居家搬家、暴雨后的水坑、新来的小伙伴 +- **情感基调**: 怀旧但不伤感,温暖中有淡淡的离别感(因为你知道这些终将消失) + +叙事风格参考: +- 每个可交互物体都有"我"的内心独白式描述 +- 事件触发自然,不强推剧情 +- 留白——有些事不需要说破 + +### 2. 小游戏互动 — 那个年代的玩法 + +千禧年前后的经典儿童游戏,每种都是一个独立的小游戏: +- **弹珠** — 地上画圈弹弹珠,比准头和力度 +- **跳绳/跳皮筋** — 节奏类玩法,配合口诀 +- **拍洋画/拍卡片** — 力度和角度的物理小游戏 +- **四驱车** — 在自制的轨道上竞速 +- **捉迷藏** — 在场景中的追逐与躲藏 +- **斗鸡** — 单脚站立互相撞 + +每种小游戏的设计原则: +- 操作简单(1-2 个核心操作) +- 有明确的输赢和计分 +- 支持与 NPC 对战 +- 有难度递进(可以越玩越好) + +### 3. 收集系统 — 那些再也见不到的东西 + +收集品是时代的切片,每件物品都承载记忆: +- **零食卡牌**: 水浒卡、三国卡、数码宝贝贴纸 +- **小玩意**: 弹珠(不同花色)、溜溜球、陀螺、荧光手表 +- **昆虫**: 在特定场景和时间可以捉到的虫子 +- **日常物件**: 用过的橡皮、写过的作业本、车票、糖纸 +- **声音**: 录下环境中的声音(蝉鸣、卖豆腐的喇叭、电视广告) + +收集系统的设计原则: +- 每件物品有图鉴式描述(带叙事文字) +- 收集进度可视化 +- 部分"稀有"物品需要特定条件触发 +- 收集不仅是数量,更是"故事"——触发回忆碎片 + +--- + +## 时代背景与地域 + +### 时代:2000年前后 +- **社会背景**: 城市化加速,城郊地带正在快速变化 +- **科技**: 没有智能手机,电视是主要娱乐,小霸王/GameBoy 是奢侈品 +- **文化**: 动画片(数码宝贝、龙珠、柯南)、流行音乐(周杰伦刚出道) +- **食物**: 辣条5毛一包、大大泡泡糖、小浣熊干脆面(集卡!)、冰棍推车 + +### 地域:城郊结合区 +- **特征**: 老旧居民楼 + 还没拆完的平房 + 新建的工地,三者并存 +- **典型场景**: 迈皋桥这类南京城郊——地铁站(或公交站)附近的老街、菜市场、小卖部 +- **生活痕迹**: 晾在阳台的衣服、楼道里的杂物、街角的修车摊、傍晚的炊烟 +- **自然**: 不远处的田野和水塘,周末可以去的"乡下"(比如外公外婆家) + +### 乡下乡土情节 +- 部分剧情中可以去乡下(坐公交或被大人带去) +- 乡下的节奏更慢、空间更开阔 +- 是城郊日常的对照——城郊在变,乡下在远去 + +--- + +## 叙事结构:混合模式 + +### 时间框架 +- 整体时间线:一个暑假(约7-8月,50天左右) +- 每天分为:**上午 / 下午 / 傍晚 / 夜晚** 四个时段 +- 时段之间通过事件触发过渡,不是强制切分 + +### 自由探索 +- 在每个时段内,玩家自由在场景中移动和活动 +- 事件散落在场景各处,靠近或满足条件时触发 +- 部分事件有时间段限制(例如:小卖部老板下午才开门) + +### 叙事层次 +- **日常层**: 每天都可以做的事——出门、找小伙伴、去小卖部、在街上玩 +- **事件层**: 特定日子/条件触发的故事事件——邻居家搬家、暴雨天、表哥来访 +- **情感层**: 通过收集品和环境叙事传达的情感——老街要拆了、朋友要转学了 + +--- + +## 主角设定 + +- **性别**: 男孩 +- **年龄**: 约10-12岁(小学四五年级) +- **性格**: 默认通过行动和内心独白表达,不给玩家强加性格 +- **家庭**: 和父母住在城郊的老房子里(或居民楼) +- **社交**: 有几个固定的小伙伴,通过剧情逐步认识 + +### 主角作为叙事视角 +- 玩家通过主角的"眼睛"看世界 +- 物品描述、场景描述都是主角的内心独白 +- 主角不会说话(无对话树),但可以通过行动表达 + +--- + +## 版本规划摘要 + +| 版本 | 目标 | 验证什么 | +|------|------|----------| +| v0.1 | 场景漫游 + 环境交互 | 在千禧年城郊场景中的探索感和氛围感 | +| v0.2 | 第一个完整小游戏 | 小游戏的操作手感和趣味性 | +| v0.3 | 一天时间循环 | 时间系统的节奏感和日常的诗意 | +| v0.4 | 叙事事件 + 收集系统 | 剧情驱动力和收集的满足感 | +| v1.0 | 完整游戏 | 整体体验的完整性和情感表达 | diff --git a/docs/design/systems/collection-system.md b/docs/design/systems/collection-system.md new file mode 100644 index 0000000..f69b022 --- /dev/null +++ b/docs/design/systems/collection-system.md @@ -0,0 +1,204 @@ +# 收集系统 — 设计文档 + +> 对应版本:v0.1(基础拾取)→ v0.4(完整系统)→ v1.0(全量内容) +> 讨论来源:brainstorm-2026-06-01 + +--- + +## 设计目标 + +收集系统是游戏的**情感锚点**。它不是普通的"集齐图鉴"玩法,而是一个帮玩家**补全当年遗憾**的系统——有人当年没集齐水浒卡,有人集齐了但弄丢了。游戏给他们一个"圆满"的机会。 + +--- + +## 核心原则 + +1. **还原感**:每件收集品都是真实存在过的东西,玩家看到会说"我也有过!" +2. **补全遗憾**:不是从零开始的收集,而是帮你"找回"丢失的记忆 +3. **多重价值**:收集品同时是玩具、是解锁钥匙、也是回忆载体 +4. **世界回应**:收集成就会被世界认可——NPC 会讨论、会给称号、会改变称呼 + +--- + +## 收集品分类体系 + +### 第一类:普通玩具 + +**收集逻辑**:拿到一个就算完成,重在"拥有过"。 + +| 举例 | 说明 | +|------|------| +| 溜溜球 | 拿到一个溜溜球即完成 | +| 陀螺 | 拿到一个陀螺即完成 | +| 弹弓 | 拿到一个弹弓即完成 | +| 荧光手表 | 拿到即完成 | + +**设计意图**:快节奏的小成就,让玩家早期就能体验到"收集到了"的满足感。 + +### 第二类:带收集属性的玩具 + +**收集逻辑**:同一种玩具有多个变体,需要集齐全套。这些物品本身也是小游戏的核心道具。 + +| 收集套组 | 变体说明 | 获取方式 | +|----------|----------|----------| +| 弹珠 | 不同花色/材质(猫眼、透明、彩纹……) | 赢弹珠比赛、场景拾取 | +| 洋画/卡片 | 水浒卡108将、三国卡、数码宝贝贴纸 | 买零食开包装、和小伙伴交换 | +| 四驱车零件 | 不同马达、轮胎、底盘(用于四驱车改装) | 小卖部购买、比赛奖励 | + +**设计意图**:深度收集的核心——多变体、有稀有度、有获取挑战。同时直接关联小游戏玩法(弹珠比赛用弹珠、拍洋画用卡片)。 + +### 第三类:纯收集品 + +**收集逻辑**:主要过程在于"收集"本身,这些物品通常不能拿来玩,或者主要不是用来玩的。 + +| 收集套组 | 变体说明 | 获取方式 | +|----------|----------|----------| +| 糖果纸 | 不同品牌/款式的糖果包装纸 | 吃糖果获得、场景拾取 | +| 昆虫 | 不同种类的昆虫(知了、蜻蜓、瓢虫……) | 特定地点和时间捕捉 | +| 声音 | 环境中录下的声音(蝉鸣、卖豆腐的喇叭、电视广告) | 特定场景触发录制 | + +**设计意图**:收集过程本身就是体验。捉虫要有地点和时间的探索感,录声音要有"等待那个瞬间"的仪式感。 + +### 第四类:时代特色物品 + +**收集逻辑**:触发动机是时代共鸣——"我吃过这个!""我见过这个!" + +| 举例 | 说明 | +|------|------| +| 长鼻王 | 时代经典零食 | +| 无花果丝 | 那个味道忘不了 | +| 大大泡泡糖 | 里面有纹身贴纸 | +| 小浣熊干脆面 | 集卡就是从这开始的 | +| 健力宝罐 | 国民饮料 | + +**设计意图**:这类物品是"时代博物馆"的展品。每件物品的图鉴描述要写得像一段回忆,让玩家被击中。 + +--- + +## 获取方式设计 + +每种收集品有符合现实逻辑的获取途径: + +| 获取方式 | 对应收集品 | 说明 | +|----------|-----------|------| +| **买零食开包装** | 卡片、贴纸 | 在小卖部买干脆面/泡泡糖,开包装出随机卡片 | +| **赢小游戏** | 弹珠、部分卡片 | 和 NPC 玩弹珠赢了拿走弹珠,拍洋画赢了拿卡片 | +| **场景拾取** | 糖果纸、小物件 | 散落在场景中,探索发现 | +| **特定地点捕捉** | 昆虫 | 在水塘边、草丛、树下等特定位置,有时间限制 | +| **场景触发录制** | 声音 | 在特定场景等待/触发特定事件 | +| **NPC 交换** | 各种 | 和小伙伴交换重复的卡片、用收集品换新东西 | +| **剧情奖励** | 特殊物品 | 完成某个故事事件后获得 | + +--- + +## 展示系统 + +### 收集图鉴界面 + +- 专门的收集展示界面,按四大分类组织 +- 每件物品有:3D 模型展示 + 时代背景描述 + 主角内心独白 +- 进度可视化(已收集/总数) + +### 收集完成的特殊展示 + +- 当某一套收集品集齐时,图鉴页有特殊的视觉效果(比如页面变金色、播放一段回忆动画) +- **如果所有收集品全部集齐**:收集系统/界面本身成为游戏场景的一部分——可能是主角房间里多了一个展示柜,或者其他形式的物理化呈现 + +--- + +## 世界反馈机制 + +收集不仅是系统内部的进度,**游戏世界会回应玩家的收集成就**: + +### NPC 反应 + +| 触发条件 | NPC 反应 | +|----------|----------| +| 集齐某套卡片 | 小伙伴聊天时提到"听说谁谁谁集齐了水浒卡,太厉害了" | +| 集齐弹珠 | 小伙伴来找你比弹珠的频率增加 | +| 完成某个收集里程碑 | 获得新称号,NPC 以后用新称呼叫你 | + +### 称号系统 + +- 收集成就会解锁称号(如"卡片大师"、"弹珠王"、"百科全书") +- 称号不只是 UI 展示,NPC 会实际在对话中使用 +- 不同 NPC 可能给你不同的称号(小伙伴叫你"弹珠王",妈妈叫你"小 collector") + +--- + +## 剧情触发 + +- 集齐特定收集品会触发**支线剧情** +- 这些剧情是额外的故事片段,**不影响主线** +- 举例:集齐某套卡片后,NPC 大孩子来找你交换/挑战,引出一段关于那个年代集卡热潮的回忆 + +--- + +## 与其他系统的关联 + +``` +收集系统 ←→ 小游戏系统 + ├── 弹珠(收集品)→ 弹珠比赛(小游戏) + ├── 卡片(收集品)→ 拍洋画(小游戏) + └── 四驱车零件(收集品)→ 四驱车竞速(小游戏) + +收集系统 ←→ 探索系统 + ├── 场景拾取 → 自由探索 + ├── 昆虫捕捉 → 特定地点/时间探索 + └── 声音录制 → 环境互动 + +收集系统 ←→ NPC/社交系统 + ├── NPC 称号和称呼变化 + ├── NPC 交换机制 + └── NPC 对收集成就的讨论 + +收集系统 ←→ 叙事系统 + ├── 物品图鉴中的回忆文字 + └── 集齐触发的支线剧情 +``` + +--- + +## 各版本范围 + +### v0.1 — 基础拾取 + +- 10 个可拾取物品(弹珠、糖果纸、橡皮擦等简单物品) +- 简单的收集计数(拾取后计数字 +1) +- 无分类、无图鉴 UI、无世界反馈 + +### v0.2 — 收集基础框架 + +- 引入四类收集品分类 +- 基础图鉴 UI +- 收集品与小游戏关联(弹珠比赛得弹珠) +- 部分收集品可通过小游戏获取 + +### v0.3 — 收集与时间 + +- 时间相关的收集品(特定时间出现的昆虫) +- NPC 基础交换 +- 声音录制初步 + +### v0.4 — 完整收集系统 + +- 完整图鉴界面(含 3D 展示和叙事文字) +- NPC 称号系统 +- 收集完成的世界反馈 +- 集齐触发的支线剧情 +- 全部收集完的特殊展示 + +### v1.0 — 全量内容 + +- 所有收集品内容填充完毕 +- 全套收集品平衡和稀有度调整 +- 收集系统物理化展示(主角房间展示柜等) + +--- + +## 设计要点备忘 + +- 收集品数量要合理——太多会变成苦差事,太少没有收集的乐趣 +- 稀有度设计要有梯度——常见品容易获得给正反馈,稀有品需要努力才有成就感 +- 不要让收集变成强迫——玩家不收集也能通关,收集是自愿的、有乐趣的 +- 每件物品的文案要花心思——这是"被击中"瞬间的主要来源之一 diff --git a/docs/design/systems/interaction-system.md b/docs/design/systems/interaction-system.md new file mode 100644 index 0000000..b1a5cac --- /dev/null +++ b/docs/design/systems/interaction-system.md @@ -0,0 +1,237 @@ +# 环境交互系统 — 设计文档 + +> 对应程序实现:交互组件基类、交互检测、UI 提示系统 + +--- + +## 设计目标 + +让玩家通过"触碰"来感知这个世界——每一个可交互的物体都是一段记忆的入口。交互系统是 v0.1 的核心体验,它决定了玩家能否真正"活"在这个场景中。 + +--- + +## 交互类型 + +### 1. 观察(Examine) — 最核心的交互 + +**用途**: 查看物品或场景,触发主角的内心独白 + +**表现**: +- 角色走近物品,按交互键 +- 屏幕底部或侧面浮现一段文字(主角的内心独白) +- 文字打字机效果逐字出现,按任意键加速/跳过 +- 不进入独立界面,在场景中原地显示 + +**文案风格示例**: +``` +[旧冰箱] +夏天的时候最期待打开冰箱的那一刻。 +冰棒、西瓜、偶尔还有一瓶健力宝。 +现在想起来,那个冰箱的嗡嗡声好像还在耳边。 + +[墙上的涂鸦] +不知道是谁画的,但画得还挺像奥特曼的。 +我以前也想在墙上画,被我妈追着打了半条街。 + +[地上的弹珠] +一颗彩色花纹的弹珠,大概是哪个小孩掉的。 +我以前也丢过最喜欢的那颗,找了整个下午都没找到。 +``` + +**设计原则**: +- 每个观察文本都是一个独立的"微叙事" +- 文字简短(2-4句),不冗长 +- 带有情感但不矫情 +- 用孩子的视角看世界,不是大人回望 + +### 2. 拾取(Pick Up) + +**用途**: 收集场景中散落的小物品 + +**表现**: +- 靠近地面上的可拾取物品(发光或微光提示) +- 按交互键,角色弯腰拾取动画 +- 屏幕右上角弹出物品获得提示(图标 + 名称,1.5秒后消失) +- 物品自动进入背包/收集列表 + +**v0.1 可拾取物品**: +- 弹珠(不同花色) +- 小石子 +- 橡皮擦 +- 糖纸 +- 水浒卡碎片 + +### 3. 操作(Operate) + +**用途**: 与场景设施或大型物体交互 + +**操作类型**: +| 操作 | 表现 | 示例 | +|------|------|------| +| 开门/关门 | 角色推门动画,门物理旋转 | 家的门、小卖部的门 | +| 翻找 | 角色弯腰/伸手动画 | 翻抽屉、翻纸箱 | +| 使用设施 | 角色走到设施前触发 | 按公用电话、开水龙头 | + +**v0.1 操作交互对象**: +- 家的门(进出) +- 小卖部门(进出) +- 公用电话亭(观察 + 对话文本) +- 水塘边的石头(可以打水漂?v0.2) + +### 4. 对话(Talk) — v0.1 简化版 + +**用途**: 与场景中的 NPC 交谈 + +**v0.1 简化方案**: +- v0.1 不实现完整对话系统 +- NPC 以"观察"方式交互——走近 NPC 显示一段对话/描述 +- 例如:走近小卖部老板 → 显示"老板正在柜台后面打瞌睡,电视里放着还珠格格。" +- 后续版本再加入对话树和分支 + +--- + +## 交互提示 UI + +### 触发规则 +- 角色进入可交互物体的**触发半径**(默认1.5m)时显示提示 +- 角色离开触发半径时提示消失 +- 多个物体在范围内时,只显示最近的那个 + +### 提示样式 + +``` +┌─────────────────────────┐ +│ [E] 查看旧冰箱 │ +└─────────────────────────┘ +``` + +- 位置:物体上方偏移(屏幕空间投影) +- 字体:简洁的中文字体,白色带轻微描边 +- 图标:交互键(E)+ 动作词(查看/拾取/打开) +- 过渡:淡入淡出(0.2秒) + +### 交互类型图标 +| 类型 | 图标文字 | 颜色 | +|------|----------|------| +| 观察 | 🔍 查看 | 白色 | +| 拾取 | ✋ 拾取 | 黄色 | +| 操作 | 🖐 打开 | 白色 | + +--- + +## 交互后的叙事文本 UI + +### 显示位置 +- 屏幕下方居中,半透明背景条 +- 不遮挡主视角 + +### 样式 +``` +╭──────────────────────────────────────────╮ +│ │ +│ 夏天的时候最期待打开冰箱的那一刻。 │ +│ 冰棒、西瓜、偶尔还有一瓶健力宝。 │ +│ │ +│ [E] 关闭 │ +╰──────────────────────────────────────────╯ +``` + +- 背景:半透明黑色(透明度约60%) +- 文字:白色,逐字出现(打字机效果,每字约0.05秒) +- 按 E 或 ESC 关闭文本 +- 文本显示期间角色可以缓慢移动(不硬锁定) + +--- + +## 交互对象数据结构 + +每个可交互物体需要以下信息: + +```json +{ + "id": "fridge_home", + "name": "旧冰箱", + "type": "examine", + "triggerRadius": 1.5, + "interactText": "查看旧冰箱", + "narrativeText": [ + "夏天的时候最期待打开冰箱的那一刻。", + "冰棒、西瓜、偶尔还有一瓶健力宝。", + "现在想起来,那个冰箱的嗡嗡声好像还在耳边。" + ], + "oneShot": false +} +``` + +- `oneShot: true` 表示只触发一次(如拾取物品、一次性事件) +- `oneShot: false` 表示可反复交互(如观察类),但文本可以随机变化 + +--- + +## v0.1 交互对象清单 + +按场景区域划分(配合 scene-v01-suburban.md): + +### 家 +| ID | 名称 | 类型 | 描述 | +|---|---|---|---| +| fridge_home | 旧冰箱 | 观察 | 夏天的冰箱记忆 | +| tv_home | 老式电视 | 观察 | 大脑袋电视,天线要调 | +| bed_home | 我的床 | 观察 | 床底下的宝藏箱 | +| desk_home | 书桌 | 观察 | 没写完的暑假作业 | +| calendar_home | 日历 | 观察 | 圈着"开学的日期",被划掉了又画上 | + +### 小卖部 +| ID | 名称 | 类型 | 描述 | +|---|---|---|---| +| door_shop | 小卖部门 | 操作 | 进出小卖部 | +| shelf_snack | 零食货架 | 观察 | 辣条、泡泡糖、干脆面…… | +| shelf_drink | 冰柜 | 观察 | 健力宝、北冰洋、袋装冰 | +| owner_shop | 老板 | 观察(NPC) | 打瞌睡的老板和电视声 | +| card_rack | 卡片架 | 观察 | 水浒卡、数码宝贝卡片 | + +### 街道 +| ID | 名称 | 类型 | 描述 | +|---|---|---|---| +| phone_booth | 公用电话亭 | 观察 | IC卡电话的回忆 | +| bike_street | 老式自行车 | 观察 | 爸爸的永久牌 | +| laundry | 晾衣杆 | 观察 | 满院子飘着的衣服 | +| wall_graffiti | 墙上的涂鸦 | 观察 | 不知谁画的奥特曼 | +| manhole | 下水道盖 | 观察 | 弹珠掉进去的声音 | + +### 空地 +| ID | 名称 | 类型 | 描述 | +|---|---|---|---| +| ground_marble | 散落的弹珠 | 拾取 | 彩色花纹弹珠 | +| ground_card | 水浒卡碎片 | 拾取 | 被踩脏的卡片 | +| ground_stone | 小石子 | 拾取 | 打水漂用的石头 | +| tree_empty | 大树 | 观察 | 爬不上去的梧桐树 | +| puddle | 水坑 | 观察 | 昨天下的雨还没干 | + +### 巷子 +| ID | 名称 | 类型 | 描述 | +|---|---|---|---| +| cat_alley | 流浪猫 | 观察 | 巷子深处的猫 | +| window_alley | 老窗户 | 观察 | 窗台上的花盆 | +| box_alley | 废纸箱 | 操作(翻找) | 可能藏着好东西 | +| spider_alley | 蜘蛛网 | 观察 | 角落里的蛛网 | + +### 水塘边 +| ID | 名称 | 类型 | 描述 | +|---|---|---|---| +| pond_edge | 水塘 | 观察 | 水面倒映着天空 | +| frog_pond | 青蛙 | 观察 | 荷叶上的青蛙 | +| reed_pond | 芦苇 | 观察 | 风吹过的沙沙声 | +| ground_wrapper | 糖纸 | 拾取 | 彩色的糖纸 | +| ground_eraser | 橡皮擦 | 拾取 | 用了一半的橡皮 | + +--- + +## v0.1 不包含 + +- 对话树 / 对话分支系统 +- 物品背包 UI(物品拾取后只计入收集计数) +- 物品使用/组合系统 +- NPC AI(NPC 为静态站位) +- 交互对象的动画变化(如开门后门保持打开) +- 时间相关的交互变化 diff --git a/docs/design/systems/player-controller.md b/docs/design/systems/player-controller.md new file mode 100644 index 0000000..2524b65 --- /dev/null +++ b/docs/design/systems/player-controller.md @@ -0,0 +1,130 @@ +# 玩家角色控制 — 设计文档 + +> 对应程序实现:角色控制器、摄像机系统、动画蓝图 + +--- + +## 设计目标 + +让玩家"成为那个男孩"——操作直觉、移动流畅,通过简单的操控就能沉浸在城郊场景的漫游中。控制器不应成为体验的障碍。 + +--- + +## 视角设计 + +### 摄像机:第三人称跟随 + +- **风格参考**: 《我的暑假》的观察距离——不远不近,能看到角色全身和周围环境 +- **默认距离**: 角色身后约3-4米,略高于角色头部(约15°俯角) +- **镜头特点**: + - 跟随平顺,有轻微延迟(软跟随,不生硬锁定) + - 角色转身时镜头平滑过渡 + - 靠墙时镜头自动拉近,避免穿墙 + +### 操作方式 + +| 操作 | 手柄(默认) | 键鼠 | +|------|-------------|------| +| 移动 | 左摇杆 | WASD | +| 视角 | 右摇杆 | 鼠标移动 | +| 跑步 | 按住左摇杆 / R1 | 按住 Shift | +| 蹲下 | R3 / ○ | 按住 Ctrl | +| 交互 | △ / A | E | +| 取消/返回 | ○ / B | ESC | + +> 注:优先适配键鼠操作,手柄映射作为后续优化。 + +--- + +## 移动系统 + +### 步行(默认) +- **速度**: 正常散步节奏,约 2.5 m/s +- **用途**: 探索、观察环境、接近可交互物体 +- **特征**: 步行动画自然,有轻微的左右摇摆 + +### 跑步 +- **速度**: 约步行速度的 1.8 倍(约 4.5 m/s) +- **触发**: 按住跑步键 + 移动方向 +- **体力**: v0.1 不做体力限制,后续版本可考虑加入(跑累了会喘气减速) +- **特征**: 跑步时有明显的加速过渡,停下时有减速惯性 + +### 蹲下 +- **速度**: 约步行的 0.5 倍 +- **用途**: + - 探索低矮空间(桌底、床底、矮灌木丛) + - 悄悄靠近(捉虫、捉迷藏) + - 查看地面上的小东西 +- **特征**: 蹲下后视角自动降低,能看到平时忽略的细节 + +### 转身与停止 +- 转身有动画过渡,不瞬移 +- 停止时有惯性减速(约0.2秒),不会突兀地定住 +- 急停时有一小步调整动画 + +--- + +## 交互触发方式 + +### 靠近触发 +- 当角色接近可交互物体(约1.5米)时,屏幕显示交互提示 +- 提示样式:物体上方出现简洁的图标 + 文字(如"🔍 查看冰箱") +- 多个可交互物体时,优先显示最近的 +- 玩家按交互键执行 + +### 交互锁定 +- 交互中角色自动面朝物体 +- 交互动画播放期间,移动输入被短暂抑制 +- 可通过取消键提前退出交互 + +--- + +## 动画需求清单 + +### 基础移动动画 +| 动画 | 优先级 | 说明 | +|------|--------|------| +| Idle(待机) | P0 | 自然站立,有呼吸起伏和偶尔的小动作 | +| Walk(步行) | P0 | 4方向或8方向步行循环 | +| Run(跑步) | P0 | 跑步循环,起步和停止有过渡 | +| Crouch Idle(蹲伏待机) | P1 | 蹲下时的待机姿势 | +| Crouch Walk(蹲伏移动) | P1 | 蹲下时的缓慢移动 | + +### 交互动画 +| 动画 | 优先级 | 说明 | +|------|--------|------| +| Pick Up(拾取) | P0 | 弯腰捡起地面物品 | +| Open Door(开门) | P1 | 推门/拉门动作 | +| Open Drawer(翻抽屉) | P2 | 拉开抽屉查看 | +| Examine(端详) | P1 | 拿起物品在手中翻转查看 | + +### 过渡动画 +| 动画 | 优先级 | 说明 | +|------|--------|------| +| Walk ↔ Run 过渡 | P0 | 步行与跑步之间的平滑混合 | +| Stand ↔ Crouch 过渡 | P1 | 站立与蹲下之间的过渡 | +| Stop(急停) | P1 | 从移动状态停止的过渡 | + +--- + +## v0.1 最小可行范围 + +v0.1 只需实现以下核心操控: + +### 必做(P0) +- [x] 第三人称摄像机跟随 +- [x] WASD 步行移动 +- [x] Shift 跑步(速度切换,无体力限制) +- [x] 靠近物体显示交互提示 +- [x] E 键交互(拾取地面物品) + +### 可以简化 +- 蹲下系统 → v0.2 再实现 +- 动画可以用简单的占位动画 +- 摄像机碰撞处理可以简化 + +### 不做 +- 体力系统 +- 攀爬/跳跃 +- 手柄适配(v0.1 优先键鼠) +- 角色换装/自定义 diff --git a/docs/design/v01-scope.md b/docs/design/v01-scope.md new file mode 100644 index 0000000..4eaa378 --- /dev/null +++ b/docs/design/v01-scope.md @@ -0,0 +1,148 @@ +# v0.1 范围定义 — 场景漫游与环境交互 + +> 本文档明确 v0.1 原型的功能边界,作为程序和美术 Agent 的需求基准。 + +--- + +## v0.1 目标 + +**验证核心问题**: 玩家能否在千禧年城郊场景中感受到"探索的乐趣"和"时代的氛围"? + +**体验目标**: +1. 玩家能自由漫步在城郊小街场景中 +2. 通过观察和交互,感受到千禧年前后城郊的生活气息 +3. 每个可交互物体都提供一小段叙事文本,唤起怀旧感 +4. 收集散落的物品,获得探索的满足感 + +**一句话**: "在一条千禧年的城郊小街上散步,翻翻冰箱、看看小卖部、捡起地上的弹珠。" + +--- + +## In Scope(v0.1 包含) + +### 玩家控制 +- [x] 第三人称摄像机跟随 +- [x] WASD 步行移动 +- [x] Shift 跑步(速度切换) +- [x] E 键交互 + +### 场景 +- [x] 城郊小街白盒场景(6个区域:家、小卖部、街道、空地、巷子、水塘边) +- [x] 基础地面和碰撞体 +- [x] 简单的天空盒(夏日晴空) +- [x] 基础光照(午后阳光方向光 + 环境光) + +### 交互系统 +- [x] 靠近物体显示交互提示 UI +- [x] 观察类交互(25+ 个可观察物体,每个有叙事文本) +- [x] 拾取类交互(10 个收集品) +- [x] 操作类交互(开门) +- [x] 交互后叙事文本的显示 UI + +### 收集系统(简化版) +- [x] 拾取物品的计数显示 +- [x] 物品获得时的 UI 提示 + +### 视觉 +- [x] Lowpoly 风格的白盒几何体(不需要最终美术资产) +- [x] 用简单颜色区分不同区域和物体 +- [x] 基本的场景氛围(暖色调光照) + +--- + +## Out of Scope(v0.1 不包含) + +### 明确排除 +- ❌ 完整的小游戏系统(弹珠、跳绳等)→ v0.2 +- ❌ 时间循环系统(一天四个时段)→ v0.3 +- ❌ NPC AI 和移动 +- ❌ 对话树 / 对话选择 +- ❌ 物品背包 UI(只做计数,不做界面) +- ❌ 物品使用 / 组合系统 +- ❌ 任务系统 +- ❌ 蹲下系统 +- ❌ 跳跃 / 攀爬 +- ❌ 手柄支持 +- ❌ 音频系统(BGM、音效)→ 后续版本 +- ❌ 存档/读档系统 +- ❌ 设置菜单(画质、音量等) +- ❌ 多语言支持 +- ❌ 过场动画 / 镜头演出 +- ❌ 粒子效果(除了基础材质动画) +- ❌ 远景 / 天气系统 + +--- + +## 验收标准 + +### 基础运行 +- [ ] 游戏能正常启动并加载场景 +- [ ] 角色出现在"家"门口 +- [ ] 无崩溃、无严重性能问题(目标:稳定30帧以上) + +### 移动体验 +- [ ] WASD 移动响应流畅,无延迟感 +- [ ] 摄像机跟随平滑,不穿墙 +- [ ] 跑步和步行速度差异明显 +- [ ] 转身和停止有自然的过渡 + +### 交互体验 +- [ ] 靠近可交互物体时正确显示提示 +- [ ] 按E键能触发交互,显示叙事文本或拾取物品 +- [ ] 叙事文本以打字机效果逐字显示 +- [ ] 离开交互范围时提示自动消失 + +### 场景体验 +- [ ] 6个区域均可到达和探索 +- [ ] 每个区域至少有3个可交互物体 +- [ ] 场景有基本的视觉辨识度(不同区域有不同感觉) +- [ ] 10个收集品可以全部找到并拾取 + +### 氛围体验(主观判断) +- [ ] 走在街上能感受到"千禧年城郊"的时代感 +- [ ] 交互文本能唤起某种怀旧感或共鸣 +- [ ] 整体体验让人想继续探索更多 + +--- + +## 与 v0.2 的衔接点 + +v0.1 完成后,v0.2 将在以下基础上扩展: + +1. **新增小游戏**: 在"空地"区域加入弹珠小游戏 + - v0.1 的空地已预留了弹珠游戏的位置(地面上的"圈") + - 交互系统可复用和扩展 + +2. **蹲下系统**: 在交互基础上增加蹲下探索 + - 部分隐藏物品需要蹲下才能发现 + +3. **NPC 对话**: 从简单的观察文本升级为对话系统 + - 小卖部老板可以交谈 + - 可能出现小伙伴 NPC + +4. **音效**: 为场景添加基础音效 + - 脚步声、交互音效、环境音 + +5. **室内空间**: 扩展家的内部和小卖部内部 + - v0.1 如果只做了室外,v0.2 补全室内 + +--- + +## 开发优先级(供程序 Agent 参考) + +1. **P0 — 必须完成**: 角色控制 + 摄像机 + 交互系统核心 + 场景白盒 +2. **P1 — 应该完成**: 全部25+观察交互 + 10个拾取品 + 收集计数 +3. **P2 — 可以简化**: 叙事文本 UI 效果、光照细节、场景装饰 + +--- + +## 预估工作量(粗略) + +| 模块 | 预估 | 说明 | +|------|------|------| +| 角色控制器 | 1-2天 | UE5 内置 Character + 摄像机设置 | +| 交互系统 | 2-3天 | 基类 + 检测 + UI 提示 + 文本显示 | +| 场景白盒 | 2-3天 | 6个区域的基础几何体搭建 | +| 交互内容填充 | 1-2天 | 配置25+交互对象的数据 | +| 调试打磨 | 1-2天 | 测试和修复 | +| **合计** | **7-12天** | 单人独立开发节奏 | diff --git a/docs/plans/current.md b/docs/plans/current.md index 5d844da..f929deb 100644 --- a/docs/plans/current.md +++ b/docs/plans/current.md @@ -1,19 +1,36 @@ # 当前进度 -> 最后更新:2026-05-31 +> 最后更新:2026-06-01 > 代理完成工作后汇报结果,由开发者确认后才勾选 ✔ -## 当前里程碑:v0.1 第一个可玩原型 +## 当前里程碑:v0.1 场景漫游与环境交互 ### 进行中 -- [ ] 建立项目基础设施(目录结构、规范文档) +- [ ] 角色控制器(第三人称移动 + 摄像机) +- [ ] 交互系统实现(检测 + 提示 UI + 文本显示) +- [ ] v0.1 场景白盒搭建(6个区域) +- [ ] 交互内容数据配置(25+ 观察点 + 10 拾取品) +- [ ] 收集计数系统 ### 待开始 -(待策划定义 v0.1 的具体功能范围) +- [ ] v0.1 场景白盒视觉优化 +- [ ] 主角占位模型 +- [ ] 关键交互物体简单模型 +- [ ] 基础光照和氛围设定 +- [ ] v0.1 验收测试 ### 已完成 - [x] Git 分支策略与提交规范 - [x] 项目目录结构与协作体系设计 +- [x] 建立项目基础设施(目录结构、规范文档) +- [x] 游戏愿景文档(game-vision.md) +- [x] v0.1 范围定义(v01-scope.md) +- [x] 玩家控制设计(player-controller.md) +- [x] 交互系统设计(interaction-system.md) +- [x] v0.1 场景设计(scene-v01-suburban.md) +- [x] 修正项目时代设定(CLAUDE.md + style-guide.md) +- [ ] 收集系统设计(collection-system.md)— 文档已产出,待确认 +- [ ] Brainstorm 讨论记录(brainstorm-2026-06-01)— 阶段 1 完成,阶段 2 收集系统完成,待继续小游戏部分 diff --git a/docs/plans/roadmap.md b/docs/plans/roadmap.md index 191134a..a932689 100644 --- a/docs/plans/roadmap.md +++ b/docs/plans/roadmap.md @@ -1,18 +1,76 @@ # 项目路线图 -## v0.1 — 第一个可玩原型 +## v0.1 — 场景漫游与环境交互 -**目标**: 跑通核心玩法循环,验证"童年体验"的乐趣点 +**目标**: 验证"在千禧年城郊场景中自由漫游并与环境交互"的核心体验 -- [ ] 定义 v0.1 包含的活动(弹珠?捉虫?跳绳?) -- [ ] 核心系统:玩家移动与交互 -- [ ] 场景:乡村环境白盒 -- [ ] 至少一个完整可玩的小游戏 +### 策划(Design) +- [x] 游戏愿景文档(game-vision.md) +- [x] v0.1 范围定义(v01-scope.md) +- [x] 玩家控制设计(player-controller.md) +- [x] 交互系统设计(interaction-system.md) +- [x] v0.1 场景设计(scene-v01-suburban.md) -## v0.2 — 核心玩法成型 +### 程序(Programming) +- [ ] 角色控制器(第三人称移动 + 摄像机) +- [ ] 交互系统实现(检测 + 提示 UI + 文本显示) +- [ ] v0.1 场景白盒搭建(6个区域) +- [ ] 交互内容数据配置(25+ 观察点 + 10 拾取品) +- [ ] 收集计数系统 -(待 v0.1 完成后规划) +### 美术(Art) +- [ ] v0.1 场景白盒的视觉优化(用色彩区分区域) +- [ ] 主角占位模型(Lowpoly 简单角色) +- [ ] 关键交互物体的简单模型(冰箱、电视、小卖部柜台等) +- [ ] 基础光照和氛围设定 + +### 验收 +- [ ] 6个区域均可探索 +- [ ] 25+ 交互点可正常触发 +- [ ] 10个收集品可拾取 +- [ ] 整体帧率稳定30+ + +--- + +## v0.2 — 第一个完整小游戏 + +**目标**: 在空地中加入弹珠小游戏,验证操作手感和趣味性 + +(待 v0.1 完成后详细规划) + +预期内容: +- 弹珠小游戏完整实现 +- 蹲下探索系统 +- NPC 对话基础版 +- 基础音效(脚步、交互、环境) +- 家和小卖部的室内空间 + +--- + +## v0.3 — 一天时间循环 + +**目标**: 实现上午/下午/傍晚/夜晚的时间流动,验证日常节奏感 + +(待 v0.2 完成后详细规划) + +预期内容: +- 一天四时段的时间系统 +- 时段与光照变化联动 +- 时段与 NPC 位置/行为联动 +- 时间触发的事件 + +--- + +## v0.4 — 叙事与收集 + +**目标**: 加入剧情事件链和完整的收集图鉴系统 + +(待 v0.3 完成后详细规划) + +--- ## v1.0 — 正式发布 -(远期目标) +**目标**: 完整的暑假故事,从放假到开学前夕 + +(远期目标,待前序版本完成后规划)