Expand mossy cavern stage map

This commit is contained in:
2026-06-10 11:08:07 +08:00
parent 21f633658c
commit c6d42ff0e0
7 changed files with 162 additions and 83 deletions
+3 -1
View File
@@ -74,10 +74,12 @@ endbattle_zone
当前 `stage_01.map` 已接入 Mossy Cavern 场景图集:
- 世界尺寸为 `6400 x 720`,当前按现有摄像机逻辑保持 720 高度,主要扩展横向探索长度。
- `BackgroundFar` 使用 `mossy_background_decoration.png` 做远景洞穴轮廓。
- `BackgroundMid` 使用 `mossy_hills.png` 做中景苔藓轮廓。
- `LevelVisual` 使用 `mossy_floating_platforms.png` 做地面和悬空平台。
- `PropsBack` / `PropsFront` 使用苔藓悬挂植物和平台边缘装饰
- `PropsBack` / `PropsFront` 使用苔藓悬挂植物、发光装饰和前景暗部遮挡
- Battle zone 已扩展为 5 段:入口、下沉洞道、主洞厅、高低平台群和出口段。
本轮只接入地图场景视觉,碰撞仍由 `collision` 独立定义;角色、怪物、植物动画和 hazard 玩法暂不接入。
+2
View File
@@ -47,6 +47,8 @@ UI
- `props/mossy_decorations_hazards.png`
- `tiles/mossy_tileset.png`
当前 `stage_01.map` 已按参考图重做为 `6400 x 720` 的横向大地图。视觉结构包含远景洞穴轮廓、中景苔藓丘、顶部压暗悬挂植物、地面/平台裁切、发光装饰和前景暗部遮挡。
由于当前 `tile_rect` 只能取 tileset 第一行,正式 Mossy 场景暂时优先使用 `rect_sprite_src` 从大图集裁切。`mossy_tileset.png` 已落位,等后续扩展 tile row/column 或 tile id 后再用于精细铺砖。
## 约束
+11 -10
View File
@@ -341,19 +341,20 @@ game/assets
### 6.3 关卡数据格式
初期可以用 JSON
当前项目已经改为 `.map` 文本数据,由 `StageMapLoader` 读取
```json
{
"player_spawn": { "x": 100, "y": 300 },
"bounds": { "x": 0, "y": 0, "w": 3200, "h": 720 },
"solids": [],
"enemy_spawns": [],
"triggers": []
}
```text
map stage_01
world 6400 720
camera 0 0 6400 720
player_spawn 160 496
collision <x> <y> <w> <h>
layer <id> <role> <parallax>
rect_sprite_src <x> <y> <w> <h> <r> <g> <b> <a> <texture> <sx> <sy> <sw> <sh>
battle_zone <id> <trigger_x> <trigger_y> <trigger_w> <trigger_h> <camera_x> <camera_y> <camera_w> <camera_h>
```
后续可以考虑接入 Tiled,或者制作自定义简单编辑器
当前已经有自定义网页地图编辑器,后续优先继续完善 `.map` 编辑和部署流程
## 7. 动画和美术阶段
@@ -204,7 +204,7 @@ mindmap
- `StageLayerSource` 已接入:每个 `StageRect` 可选择色块占位或 sprite 资源路径,加载失败时回退色块。
- `StageAssetSlots` 已建立:`stage_01` 资源目录和素材来源记录已预留,素材回来后可直接落位。
- `StageProps` 已统一:后景/前景 props 都走 `StageLayer`,前景层在 actor 之后绘制,可用于近景遮挡。
- 第一关宽度已扩展到 3200 像素,并加入 3 个 battle zone 占位与敌人出生点。
- 第一关宽度已扩展到 6400 像素,并加入 5 个 battle zone 占位与敌人出生点。
下一步:
+15 -12
View File
@@ -17,7 +17,7 @@
第一轮场景骨架进度:
- `LevelDefinition` 已扩展世界尺寸、玩家出生点、镜头范围、分层视觉、battle zone 和敌人出生点数据。
- 第一关灰盒宽度已扩展到 3200 像素
- 第一关地图已扩展到 `6400 x 720`,当前主数据在 `game/assets/map/stage_01.map`
- `StageRenderer` 已支持远景、中景、地面/平台、后景 props 分层绘制,当前先用色块占位。
- `DebugOverlay` 已能显示碰撞、玩家框、battle zone、camera lock 范围和 spawn point。
- `WhiteboxScene` 已支持 debug overlay,具体快捷键记录在 `../controls.md`
@@ -35,10 +35,10 @@
第一关不急着做最终题材,先做通用 ACT 测试关:
- 横向推进,总宽度先控制在 2400 到 3200 像素。
- 横向推进,当前 Mossy Cavern 测试关宽度为 6400 像素。
- 主要视口仍用 1280x720。
- 地面以平路为主,加入 2 到 3 段平台高低差
- 至少预留 3 个战斗区域,每个区域宽度 480 到 720 像素。
- 主路线先保持连续地面,避免当前平台碰撞不支持台阶/斜坡导致卡关;高度变化主要放在悬空平台上,用于测试跳跃和镜头推进
- 至少预留 5 个战斗区域,每个区域宽度约 780 到 980 像素。
- 每个战斗区域有明确的入口、站位空间、敌人刷出点和退出方向。
- 保留一个跳跃测试段,用来验证移动手感。
- 保留一个窄平台/边缘段,用来验证镜头和碰撞。
@@ -164,11 +164,13 @@ game/assets/stage/stage_01/
### Step 5:加入战斗区域数据
在关卡中标出 3 个 battle zone
当前 Mossy Cavern 大地图标出 5 个 battle zone
- `zone_01_intro`
- `zone_02_platform`
- `zone_03_exit`
- `zone_01_entrance`
- `zone_02_lower_cavern`
- `zone_03_main_hall`
- `zone_04_high_garden`
- `zone_05_exit`
每个区域包含:
@@ -201,7 +203,7 @@ game/assets/stage/stage_01/
- 至少 5 个平台/地面碰撞块。
- 至少 2 层背景。
- 至少 8 个装饰物。
- 至少 3 个 battle zone debug 标记。
- 至少 5 个 battle zone debug 标记。
- 场景资源路径集中在 `game/assets/stage/stage_01/`
- 文档记录已使用素材来源和授权信息。
@@ -224,8 +226,8 @@ game/assets/stage/stage_01/
1. 已完成:扩展 `LevelDefinition`,加入世界尺寸、玩家出生点、镜头限制、敌人出生点、battle zone 占位数据。
2. 已完成:扩展 `StageRenderer`,支持背景层、地面/平台视觉层、后景 props,第一版继续用色块。
3. 已完成:扩展白盒关卡宽度到 3200 像素,并整理成 3 段推进节奏。
4. 已完成:加入 3 个 battle zone debug 标记,但暂不做锁镜头和刷敌逻辑。
3. 已完成:扩展关卡宽度到 6400 像素,并整理成 5 Mossy Cavern 推进节奏。
4. 已完成:加入 5 个 battle zone debug 标记,但暂不做刷敌逻辑。
5. 已完成:加入 spawn point debug 标记,用于后续接 `EnemyActor`
6. 已完成:补 debug 开关,可切换碰撞、battle zone、spawn point。
@@ -252,7 +254,7 @@ game/assets/stage/stage_01/
- `LevelDefinition` 能表达世界尺寸、玩家出生点、相机边界、碰撞、视觉层、props、battle zone、spawn point。
- `StageRenderer` 能按层绘制远景、中景、地面/平台、后景 props、前景 props,并支持资源图和色块占位两种来源。
- `DebugOverlay` 能显示碰撞、battle zone、camera lock、spawn point、玩家包围盒。
- 关卡灰盒能从起点跑到终点,至少 3 个推进段和 3 个 battle zone 都能被观察到;具体验收流程见 `../scene_acceptance.md`
- 关卡灰盒能从起点跑到终点,至少 5 个推进段和 5 个 battle zone 都能被观察到;具体验收流程见 `../scene_acceptance.md`
- 素材目录、命名、来源记录文件已经准备好,后续放入 PNG 后只改资源引用。
### 场景骨架实施顺序
@@ -328,5 +330,6 @@ game/assets/stage/stage_01/
2. 已完成:`stage_01.map``BackgroundFar``BackgroundMid``LevelVisual``PropsBack``PropsFront` 已改用 `rect_sprite_src` 裁切 Mossy 图集。
3. 已完成:碰撞、玩家出生点、camera bounds、battle zone 和 spawn point 保持原数据,不把视觉块当碰撞使用。
4. 已完成:贴图 `LevelVisual` 不再叠加灰盒辅助顶线,避免平台素材显示异常。
5. 已完成:参考 `asset\Mossy Cavern\参考图`,把 `stage_01.map` 扩展为 `6400 x 720` 的横向大地图,包含入口、下沉洞道、主洞厅、高低平台群和出口 5 个推进段。
暂不接入 `BlueWizard Animations``Plant Animations``Slimes` 和 hazard 玩法。下一步围绕地图编辑器继续微调场景块位置和碰撞对齐。
+6 -6
View File
@@ -7,11 +7,11 @@
- 场景入口:`WhiteboxScene`
- 关卡数据:`game/assets/map/stage_01.map`
- 关卡 fallback`CreateWhiteboxLevel()` 内置 C++ 白盒数据
- 世界尺寸:`3200 x 720`
- 玩家出生点:`(160, 380)`
- 关卡边界:`0 -> 3200`
- 世界尺寸:`6400 x 720`
- 玩家出生点:`(160, 496)`
- 关卡边界:`0 -> 6400`
- 视口:`1280 x 720`
- Battle zones`zone_01_intro``zone_02_platform``zone_03_exit`
- Battle zones`zone_01_entrance``zone_02_lower_cavern``zone_03_main_hall``zone_04_high_garden``zone_05_exit`
- 资源槽位:`game/assets/stage/stage_01/`
- 地图资源:`game/assets/map/stage_01.map`
- Tile 数据:`stage_01.map` 中的 `tileset` / `tile_rect`
@@ -72,7 +72,7 @@ Test-Path build\switch\aarch64\release\switch_game\romfs\assets\fonts
1. 启动 Windows 版 `Frostbite2DGame.exe`
2. 从出生点向右移动,确认摄像机横向跟随且不露出世界外黑边。
3. 依次进入 3 个 battle zone,确认 camera bounds 平滑切换,没有硬切瞬移。
3. 依次进入 5 个 battle zone,确认 camera bounds 平滑切换,没有硬切瞬移。
4. 通过 debug 清场或离开区域解除锁定,确认摄像机恢复全关卡跟随。
5. 使用 debug 分项开关检查:
- 碰撞矩形和场景网格。
@@ -92,7 +92,7 @@ Test-Path build\switch\aarch64\release\switch_game\romfs\assets\fonts
- Switch `Frostbite2DGameSwitch` 构建:通过。
- Switch RomFS:已包含 character、shader、`stage_01` 资源槽位和 `assets/map/stage_01.map`
- 地图加载:`stage_01.map` 已作为第一关主数据源;C++ 白盒数据仅作为 fallback。
- 地图 tile 化:`level_visual` 已由 `tileset` / `tile_rect` 表达;tileset 图片缺失时使用 fallback 色绘制
- 地图视觉:`stage_01.map` 已扩展为 `6400 x 720` 的 Mossy Cavern 大地图,当前主要通过 `rect_sprite_src` 裁切场景图集表达
- 引擎能力接入:`Animation`/NPK/PNG 角色资源优先级、`UIScene`/`TextSprite` UI、`Sound`/`Music` cue、`SaveSystem` debug 存档已接入。
- 手动跑图:未在本轮执行,等待后续素材/战斗区域进一步接入时复测。