Files
ChildHood/tools/world-sketcher/README.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

150 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# World Layout Sketcher — 世界布局草图工具
> 在场景概念与关卡执行案之间,提供可视化布局沟通工具。
> 用颜色画笔绘制世界布局 → AI 解读 → 双方确认 → 产出执行案。
## 快速开始
1. 双击 `sketch.html` 在浏览器中打开(推荐 Chrome / Edge)
2. 左侧设置场景名称和世界尺寸(米)
3. 选择画笔,在画布上绘制
4. **双击** 已绘制区域 → 为该区域命名
5. 勾选「可进入」→ 创建下级详图(L1 → L2)
6. 保存 PNG + JSON
---
## 三级层次
| 层级 | 范围 | 绘制内容 | 说明 |
|------|------|---------|------|
| **L1** 场景总览 | ≤1km | 大区域、主干道、河流 | 鸟瞰全局,定位区域关系 |
| **L2** 区域详图 | ≤300m | 建筑、内部道路、绿化、水体 | 每个区域的详细布局 |
| **L3** 建筑内部 | 预留 | 拖放细节资产 | 未来版本 |
### 导航方式
- L1 画布上,双击已命名的区域并勾选「可进入」
- 左侧元素列表中点击 **"进入 →"**
- 面包屑导航点击 **"场景总览"** 返回上级
---
## 画笔图例
| 画笔 | 颜色 | 用途 | 对应 UE 材质 |
|------|------|------|-------------|
| 道路 Road | 灰 `#909090` | 道路、马路、小路 | MI_DevGray |
| 建筑 Building | 橙 `#E07020` | 建筑物 | MI_DevOrange |
| 水域 Water | 天蓝 `#40A0D0` | 河流、水塘、水体 | MI_DevSkyBlue |
| 植被 Greenery | 绿 `#40B040` | 树木、草地、绿化带 | MI_DevGreen |
| 不可通行 Blocked | 棕 `#A07040` | 山体、围墙、不可达区域 | MI_DevBrown |
| 区域 Zone | 红 `#D04040` | 区域边界、地块划分 | MI_DevRed |
| 橡皮擦 Eraser | — | 擦除 | — |
**L1 层**主要用:区域、道路、水域
**L2 层**主要用:建筑、道路、植被、水域、不可通行
---
## 绘图工具
| 工具 | 快捷键 | 说明 |
|------|--------|------|
| 画笔 | P | 自由绘制,按住鼠标拖动 |
| 矩形 | R | 绘制矩形区域,拖动定义两角 |
| 橡皮擦 | E | 擦除画布内容 |
| 操作 | 快捷键 |
|------|--------|
| 撤销 | Ctrl+Z |
| 重做 | Ctrl+Y |
| 网格开关 | G |
---
## 坐标系
- **原点**:画布左下角(西南角)
- **X+**:向右(东)
- **Y+**:向上(北)
- **单位**:厘米(与 UE5 一致,1 uu = 1 cm)
- 画布顶部 = 世界最大 Y,画布底部 = 世界 Y=0
状态栏实时显示鼠标位置的世界坐标。
---
## 输出文件
保存全部时生成:
```
<场景名>-L1-overview.png # L1 画布截图
<场景名>-scene.json # 完整场景数据(所有层级)
```
### scene.json 结构
```json
{
"scene_name": "城郊小街",
"version": "v01",
"origin": "SW corner, X+ East, Y+ North",
"brush_legend": { "色值": { "type": "类型", "mi_material": "MI_Dev*" } },
"levels": {
"L1": {
"world_size_m": [500, 400],
"canvas_size_px": [1000, 800],
"scale_m_per_px": 0.5,
"elements": [
{ "id": "el_xxx", "type": "zone", "name": "城郊小街", "has_detail": true, "detail_ref": "L2-el_xxx" }
]
},
"L2-el_xxx": {
"world_size_m": [80, 60],
"elements": [
{ "id": "el_yyy", "type": "building", "name": "家", "has_detail": true }
],
"parent_level": "L1",
"parent_element": "el_xxx"
}
}
}
```
---
## 工作流集成
在关卡设计流程中的位置:
```
场景概念 (场景-vXX.md)
↓
【World Layout Sketcher】 ← 本工具
↓
AI 布局解读文档 (场景名-layout-vXX.md)
↓ 用户确认
关卡执行案 (关卡-vXX-执行案.md)
↓
搭建指南 → Level Builder → UE5 关卡
```
### AI 解读流程
1. 用户在工具中画好布局,保存 PNG + JSON
2. 将 PNG 提供给 AI(Claude vision)
3. AI 分析颜色区域,结合 JSON 中的比例尺和命名信息
4. AI 产出结构化布局解读 Markdown(区域表、连通关系、待确认问题)
5. 用户确认后,策划基于解读文档产出关卡执行案
---
## 设计原则
- **强制使用预定义画笔**:无自由拾色器,保证每个像素都映射到已知地形类型
- **层次化设计**:L1 定大局,L2 定细节,L3 预留
- **人机共读**:PNG 供人和 AI 视觉分析,JSON 供程序化解析
- **与 Level Builder 一致**:画笔颜色直接映射 MI_Dev* 标识色材质