Files
ChildHood/docs/design/关卡设计工作流.md
T
starmen1265 22711cf946 feat(tools): 添加世界布局草图工具 World Layout Sketcher
三级层次化布局绘图 → AI 解读 → 关卡执行案前置输入

工具特性:
- L1 场景总览(道路/水域/区域/不可通行)→ L2 区域详图(建筑/绿地)
- 双层画布架构:L2 底图显示 L1 内容,绘图层独立操作
- L1↔L2 双向像素缩放同步
- 像素扫描提取连通区域(BFS),输出 bounds + 世界坐标
- JSZip 打包下载(JSON + 独立 PNG 像素文件 + 预览图)
- 加载时从 ZIP 恢复完整画布像素数据

集成更新:
- 新增 .claude/skills/world-sketcher/ 技能定义
- game-designer agent 添加 world-sketcher skill + 布局草图前置步骤
- 关卡设计工作流插入 ③a-③c 子流程
2026-06-09 16:49:54 +08:00

13 KiB
Raw Blame History

关卡设计工作流:策划文档规范 + 程序白模搭建

本文档定义 ChildHood 项目中策划如何产出关卡执行案、程序如何基于关卡执行案和 BlockingStarterPack 资产搭建白模关卡。是策划和程序两个角色之间的交接桥梁。


一、总览

1.1 两个文档,两个角色

文档 产出角色 性质 用途
场景设计案 scene-vXX-<name>.md 策划 氛围愿景 定义场景的感觉、叙事意图、时代元素
关卡执行案 level-vXX-<name>-execution.md 策划 空间精度搭建指南 坐标、尺寸、BSP 资产映射、交互/收集品位置

关系:场景设计案描述"这里应该是什么感觉",关卡执行案描述"程序应该在什么位置放什么资产来实现这个感觉"。两者互补,不是替代。

1.2 在 7 步流水线中的位置

① 设计案(含场景设计案)
    ↓
② 阶段路线图
    ↓
③ 执行案(系统执行案 + 关卡执行案)
    ├─ ③a 世界布局草图(World Layout Sketcher)  ← 用户绘图 + AI 解读
    ├─ ③b 布局解读文档确认                        ← 用户确认区域布局
    └─ ③c 关卡执行案                              ← 基于确认后的布局产出
    ↓ [PM 审查:执行案质量门]
④ 程序设计
    ↓ [PM 审查:程序设计质量门]
⑤ 美术产出
    ↓ [PM 审查:美术资产验收门]
⑥ 程序实现(含白模搭建子任务 6a)  ← 白模搭建在此阶段执行
    ↓ [PM 审查:程序实现验收门]
⑦ 版本复盘

③a-③c 关卡执行案子流程:

  1. ③a 世界布局草图:使用 tools/world-sketcher/sketch.html 绘图工具,用户用颜色画笔画出世界布局(L1 场景总览 → L2 区域详图),保存 PNG + JSON
  2. ③b 布局解读确认:AI 分析草图产出布局解读文档(<场景名>-layout-v<XX>.md),用户确认区域坐标、连通关系
  3. ③c 关卡执行案:策划基于确认后的布局解读文档产出关卡执行案,坐标直接采用解读文档中的数据

v0.1 特殊情况:由于 v0.1 的 ③执行案质量门已通过(三个系统执行案已批准),关卡执行案作为补充文档在 ④或 ⑥早期补充,PM 做轻量审查。

v0.2 及以后:关卡执行案纳入标准 ③执行案阶段,与其他系统执行案一起接受完整质量门审查。


二、策划职责边界

2.1 策划在关卡执行案中做什么

  • ✅ 定义区域坐标范围和尺寸(cm 单位)
  • ✅ 定义每个结构体和布景的位置、尺寸
  • ✅ 标记可交互物体和收集品的精确位置
  • ✅ 引用 BSP 资产类别名和组合方式(如 "Wall_400x300 × 2 叠加")
  • ✅ 为每个区域指定标识色材质(如 MI_DevRed)
  • ✅ 定义交通流线和区域连接关系
  • ✅ 定义场景边界遮挡方式
  • ✅ 提供光照方向建议(建议值,可调)

2.2 策划不做什么

  • ❌ 不写引擎组件名(Actor、Component、Blueprint、Widget 等)
  • ❌ 不写文件路径(如 /Game/Content/BlockingStarterPack/...)
  • ❌ 不写 Blueprint 类名或 C++ 类名
  • ❌ 不写精确的硬编码参数值(标注"建议值,可调"并附范围)
  • ❌ 不写代码或脚本

2.3 BSP 资产建议的性质

策划在关卡执行案中引用的 BSP 资产建议是方向性指引,不是硬性要求。程序有权根据实际资产尺寸和可用性做替代,但必须在搭建报告中记录偏差。


三、坐标体系:混合方式

3.1 场景绝对坐标系

  • 原点:场景西南角地平面
  • X 轴:向东为正
  • Y 轴:向北为正
  • Z 轴:向上为正
  • 单位:cm(对应 UE5 中 1 uu = 1 cm)

程序在 UE5 中将关卡原点设在场景西南角,所有绝对坐标直接对应 UE5 世界坐标。

3.2 区域内偏移坐标系

  • 每个区域定义一个区域原点(该区域西南角在场景中的绝对坐标)
  • 区域内所有物件的坐标使用相对于区域原点的偏移
  • 偏移格式:(ΔX, ΔY, ΔZ),ΔX 向东为正,ΔY 向北为正,ΔZ 向上为正

3.3 为什么用混合坐标

  • 区域级绝对坐标:让程序快速定位每个区域在大场景中的位置,便于地面铺设和边界搭建
  • 区域内相对偏移:策划不需要在脑中做加法,每个区域内部的物件位置从 (0,0,0) 开始数即可。程序搭建时先在绝对坐标放置区域原点空 Actor,再按偏移量摆放内部物件

四、程序白模搭建工作流

白模搭建是 ⑥程序实现 的子任务(记为 6a),在系统代码实现(6b-6d)之前或并行执行。

4.1 输入与输出

输入:

  • level-vXX-<name>-execution.md — 关卡执行案(空间指南)
  • scene-vXX-<name>.md — 场景设计案(氛围参考)
  • interaction-system-execution.md — 交互物清单
  • collection-system-execution.md — 收集品清单
  • <system>-tech.md — 技术设计方案
  • Content/BlockingStarterPack/ — BSP 资产

输出:

  • Content/Maps/LVL_<SceneName>V<XX>.umap — 白模关卡文件
  • docs/technical/level-vXX-build-report.md — 搭建报告(偏差记录)

4.2 搭建流程

Phase A: 准备              Phase B: 地面与边界        Phase C: 逐区域搭建
  A1 阅读关卡执行案           B1 铺设地面               C1 结构体
  A2 创建资产映射表           B2 放置边界遮挡物          C2 布景物
  A3 创建关卡文件                                     C3 交互物
                                                     C4 收集品

Phase D: 光照              Phase E: 验证
  D1 定向光/天空光           E1 角色比例检查
  D2 路灯/局部光源            E2 流线通行检查

Phase A: 准备

A1 — 阅读关卡执行案

通读整个关卡执行案,重点关注:

  • 场景参数(总尺寸、角色身高/视角高度)
  • 区域坐标布局表和交通流线
  • 每个区域的结构体和布景清单
  • 交互物和收集品的位置

A2 — 创建资产映射表

在搭建报告或技术方案中,将策划的 BSP 资产建议映射到引擎中的实际资产路径:

设计文档资产建议 实际 UE 资产路径 备注
Wall_400x300 BlockingStarterPack/Meshes/Architecture/Walls/SM_Wall_400x300 400×20×300 cm
BedSingle BlockingStarterPack/Meshes/Bedroom/SM_BedSingle
Primitives 组合 BlockingStarterPack/Meshes/Primitives/SM_Cube 按需缩放

A3 — 创建关卡文件

创建 Content/Maps/LVL_<SceneName>V<XX>.umap。设置:

  • World Settings:GameMode override 指向项目 GameMode
  • Player Start:放在区域 Z1(家)门口附近
  • 无需 World Partition 或 Level Streaming(80m×60m 单关卡足够)

Phase B: 地面与边界

B1 — 铺设地面

使用 SM_Floor_1000x1000 平铺覆盖整个场景。按区域分配标识色材质。

B2 — 放置边界遮挡物

按关卡执行案第五章放置边界围墙/围挡。确保所有边界启用物理碰撞。

Phase C: 逐区域搭建

按区域编号顺序搭建(建议 Z1 → Z3 → Z2 → Z4 → Z5 → Z6 → Z7,先搭主路径再搭分支)。

每个区域按以下顺序:

  1. C1 结构体:放置墙体、地板、门框、窗框等建筑构件
  2. C2 布景物:放置家具、装饰物等场景道具
  3. C3 交互物:在指定位置放置交互物 Actor(按技术方案配置)
  4. C4 收集品:在指定位置放置收集品 Actor(按技术方案配置)

Phase D: 光照

  1. 定向光:根据关卡执行案光照建议放置 Directional Light
  2. 天空光:Sky Light 提供环境补光
  3. 路灯/局部光源:在全局物件清单中标记了光源的位置放置点光源

Phase E: 验证

E1 — 角色比例检查:

以主角(身高 ~120cm)视角验证:

  • 所有门洞可通过(最低门洞高度 > 180cm)
  • 室内摄像机不穿墙/天花板
  • 窗台高度合理(主角能看出去或够不到)
  • 桌面/柜台高度与主角身高协调

E2 — 流线通行检查:

沿主流线行走验证:

  • 主要路径无死胡同(除非设计如此)
  • 区域过渡自然、方向感清晰
  • 步行距离合理(从家到最远点不超过 1 分钟游戏内步行)
  • 视线引导合理(玩家知道该往哪走)

4.3 Actor 命名规范

所有关卡内 Actor 遵循统一命名:

LVL_<ZoneID>_<Category>_<Description>

ZoneID:   Z1-Z7
Category: STR(结构体) | PROP(布景) | INTR(交互物) | COLL(收集品) | BND(边界) | LGT(光源)

示例:

  • LVL_Z1_STR_SouthWall — Z1 家的南墙
  • LVL_Z1_PROP_OldBicycle — Z1 家的旧自行车
  • LVL_Z1_INTR_01_Fridge — Z1 第 1 号交互物(冰箱)
  • LVL_Z1_COLL_10_CatEyeMarble — Z1 第 10 号收集品(猫眼弹珠)
  • LVL_Z3_BND_EastBarricade — Z3 街道东段施工围挡
  • LVL_Z3_LGT_StreetLight_01 — Z3 第 1 盏路灯

4.4 Outliner 文件夹结构

LVL_<SceneName>V<XX>/
  Z1_<区域名>/
    Structure/
    Props/
    Interactables/
    Collectibles/
  Z2_<区域名>/
    ...
  Zn_<区域名>/
    ...
  Global/
    Boundaries/
    Lighting/
    PlayerStart/

4.5 搭建报告

搭建完成后,产出 docs/technical/level-vXX-build-report.md,包含:

章节 内容
搭建概要 总 Actor 数、各类别数量、实际关卡尺寸
逐区域对照 文档要求 vs 实际搭建,标注偏差
资产替代清单 文档建议资产 vs 实际使用资产,附原因
缩放记录 使用了非 1:1 缩放的 Actor
未实现项 跳过或占位的项目及原因
比例验证结果 E1/E2 检查清单的实际结果

发布要求:报告内容必须同时:

  1. 写入本地文件 docs/technical/level-vXX-build-report.md
  2. 以评论形式发布到对应任务 Issue(与本地文件内容一致,供 PM 和策划直接在 Issue 中查看)

搭建报告在 ⑦版本复盘时作为偏差分析的输入。


五、PM 关卡文档质量门检查项

以下检查项补充到标准执行案质量门中,仅在审查关卡执行案时使用。

5.1 关卡资产存在验证

关卡执行案的质量门仅做资产存在验证——确认策划引用的 BSP 资产在 Content/BlockingStarterPack/ 中实际存在:

  • 关卡执行案中引用的每个 BSP 资产类别是否在 BlockingStarterPack 中存在?
  • 标记为"Primitives 组合"的替代方案是否合理(Cube/Cylinder/Sphere 等)?
  • 标识色材质引用是否在 14 种可用材质范围内?

5.2 搭建异常上报

关卡执行案的空间精度、比例、跨文档一致性等维度的准确性,由程序在白模搭建过程中验证(Phase E 比例检查和流线检查)。PM 不在质量门阶段检查这些维度。

流程:

  1. 程序在白模搭建 Issue 评论中发布搭建报告,包含偏差和异常
  2. PM 阅读搭建报告,如果发现程序汇报了异常(如尺寸偏差、资产无法匹配、比例问题、交互物位置冲突等),PM 将异常汇总并汇报给用户确认
  3. 用户决定是否需要策划修正关卡执行案,或接受当前偏差
  4. PM 不自行判断关卡空间精度的通过/不通过

六、特殊考虑

6.1 儿童主角比例

ChildHood 的主角是 ~120cm 身高的儿童,不是标准成人(~180cm)。这影响:

  • 门洞高度:BSP 门框为成人设计(~200-300cm),儿童通过没有问题,但需要注意摄像机高度
  • 摄像机视角:~100cm 高度,比标准第三人称低。2.5m 围墙在成人视角可以看过去,在儿童视角会感觉更高更封闭
  • 家具比例:标准 BSP 家具(桌高 ~75cm、床高 ~50cm)对儿童视角是合理的
  • 街道宽度:5m 宽的街道对儿童感觉宽敞但不空旷

6.2 中式城郊场景的资产缺口

BlockingStarterPack 以西式/现代城市场景为主。以下千禧年城郊物件没有精确匹配:

  • 小卖部招牌/柜台 → Primitives 组合 + 标识色材质
  • 公用电话亭 → Primitives 组合
  • 红砖墙 → Wall + MI_DevRed
  • 绿色铁门 → RotativeDoor + MI_DevGreen
  • 晾衣杆 → Beam + Cylinder 支撑
  • 水泥路面裂缝 → Floor + Decal 贴花

完整替代方案参见 .claude/refs/blockout-asset-reference.md 第十五节。

6.3 单关卡场景

v0.1 场景为 80m×60m,不需要 World Partition、Level Streaming 或 Data Layer。整个场景在一个 .umap 文件中加载。后续版本扩展到 150m×120m 时可能需要评估是否使用 Data Layer 或 Sub-level。

6.4 单人开发节奏

单人开发者切换策划和程序角色时,关卡执行案就是交接文档。策划会话中产出执行案,程序会话中按执行案搭建白模。搭建报告是反向交接——记录实际搭建中的偏差,供策划下次更新执行案。