Integrate mossy cavern stage scene

This commit is contained in:
2026-06-10 02:21:44 +08:00
parent dddae61bd9
commit 7d0f115fcb
12 changed files with 71 additions and 36 deletions
+28 -28
View File
@@ -12,47 +12,47 @@ collision 1760 500 300 28
collision 2180 455 260 28
collision 2650 515 360 28
tileset graybox_ground assets/stage/stage_01/tiles/graybox_ground.png 10 10 0.62 0.68 0.73 1.0
tileset graybox_platform assets/stage/stage_01/tiles/graybox_platform.png 10 14 0.62 0.68 0.73 1.0
layer background_far BackgroundFar 0.25
rect 0 0 3200 720 0.08 0.10 0.14 1.0
rect 360 120 420 220 0.13 0.16 0.21 1.0
rect 1380 90 560 260 0.12 0.15 0.20 1.0
rect 2440 140 520 210 0.13 0.16 0.21 1.0
rect 0 0 3200 720 0.04 0.06 0.05 1.0
rect_sprite_src -140 80 980 620 0.34 0.54 0.36 0.38 assets/stage/stage_01/background/mossy_background_decoration.png 0 0 1030 4096
rect_sprite_src 860 35 940 620 0.30 0.50 0.34 0.34 assets/stage/stage_01/background/mossy_background_decoration.png 1180 0 900 3500
rect_sprite_src 2020 100 980 560 0.31 0.52 0.34 0.34 assets/stage/stage_01/background/mossy_background_decoration.png 2680 170 1060 1520
rect_sprite_src 2660 410 1060 360 0.26 0.44 0.30 0.30 assets/stage/stage_01/background/mossy_background_decoration.png 2460 2920 1180 880
endlayer
layer background_mid BackgroundMid 0.55
rect 80 360 280 240 0.18 0.22 0.27 1.0
rect 1020 310 340 290 0.18 0.22 0.27 1.0
rect 2020 330 360 270 0.18 0.22 0.27 1.0
rect 2860 280 260 320 0.18 0.22 0.27 1.0
rect_sprite_src -180 390 560 260 0.45 0.70 0.45 0.42 assets/stage/stage_01/background/mossy_hills.png 50 580 420 420
rect_sprite_src 520 335 760 300 0.46 0.72 0.46 0.36 assets/stage/stage_01/background/mossy_hills.png 720 40 1160 500
rect_sprite_src 1390 360 720 270 0.42 0.68 0.43 0.36 assets/stage/stage_01/background/mossy_hills.png 760 650 1120 720
rect_sprite_src 2310 330 760 310 0.40 0.66 0.42 0.36 assets/stage/stage_01/background/mossy_hills.png 645 650 1280 840
rect_sprite_src 2860 400 560 240 0.43 0.68 0.44 0.34 assets/stage/stage_01/background/mossy_hills.png 1460 1520 520 420
endlayer
layer level_visual LevelVisual 1.0
tile_rect graybox_ground 0 600 320 8 0 0.62 0.68 0.73
tile_rect graybox_platform 230 500 22 2 0 0.62 0.68 0.73
tile_rect graybox_platform 560 430 26 2 0 0.62 0.68 0.73
tile_rect graybox_platform 930 510 26 2 0 0.62 0.68 0.73
tile_rect graybox_platform 1250 420 23 2 0 0.62 0.68 0.73
tile_rect graybox_platform 1760 500 30 2 0 0.62 0.68 0.73
tile_rect graybox_platform 2180 455 26 2 0 0.62 0.68 0.73
tile_rect graybox_platform 2650 515 36 2 0 0.62 0.68 0.73
rect_sprite_src -70 520 1680 270 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 420 1120 1560 490
rect_sprite_src 1520 520 1680 270 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 420 1120 1560 490
rect_sprite_src 230 460 240 100 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 500 40 1050 420
rect_sprite_src 540 390 300 105 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 500 540 1060 430
rect_sprite_src 910 470 310 105 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 500 40 1050 420
rect_sprite_src 1230 380 270 105 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 500 540 1060 430
rect_sprite_src 1740 460 340 105 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 500 40 1050 420
rect_sprite_src 2160 415 300 105 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 500 540 1060 430
rect_sprite_src 2625 475 400 120 1.0 1.0 1.0 1.0 assets/stage/stage_01/tiles/mossy_floating_platforms.png 420 1120 1560 490
endlayer
layer props_back PropsBack 1.0
rect 118 392 88 208 0.26 0.30 0.34 1.0
rect 780 250 72 180 0.26 0.30 0.34 1.0
rect 1440 300 80 300 0.26 0.30 0.34 1.0
rect 1880 360 110 240 0.26 0.30 0.34 1.0
rect 2520 390 92 210 0.26 0.30 0.34 1.0
rect 3040 315 82 285 0.26 0.30 0.34 1.0
rect_sprite_src 110 120 150 500 0.78 0.94 0.72 0.72 assets/stage/stage_01/props/mossy_hanging_plants.png 70 0 360 1240
rect_sprite_src 780 80 130 430 0.78 0.94 0.72 0.62 assets/stage/stage_01/props/mossy_hanging_plants.png 550 0 330 1180
rect_sprite_src 1430 115 150 520 0.78 0.94 0.72 0.68 assets/stage/stage_01/props/mossy_hanging_plants.png 990 0 360 1300
rect_sprite_src 1880 155 190 420 0.78 0.94 0.72 0.62 assets/stage/stage_01/props/mossy_hanging_plants.png 1340 0 470 1040
rect_sprite_src 2510 160 170 450 0.78 0.94 0.72 0.64 assets/stage/stage_01/props/mossy_hanging_plants.png 540 1260 420 1040
rect_sprite_src 3030 110 160 500 0.78 0.94 0.72 0.66 assets/stage/stage_01/props/mossy_hanging_plants.png 1020 1320 420 1120
endlayer
layer props_front PropsFront 1.0
rect 520 580 220 34 0.14 0.17 0.18 0.90
rect 1510 570 280 42 0.14 0.17 0.18 0.90
rect 2580 572 260 38 0.14 0.17 0.18 0.90
rect_sprite_src 510 560 260 80 0.85 1.0 0.82 0.78 assets/stage/stage_01/tiles/mossy_floating_platforms.png 0 540 430 430
rect_sprite_src 1490 545 330 95 0.85 1.0 0.82 0.78 assets/stage/stage_01/tiles/mossy_floating_platforms.png 0 540 430 430
rect_sprite_src 2560 550 330 90 0.85 1.0 0.82 0.78 assets/stage/stage_01/tiles/mossy_floating_platforms.png 0 540 430 430
endlayer
battle_zone zone_01_intro 520 260 560 340 0 0 1940 720
+7 -4
View File
@@ -6,12 +6,14 @@ This directory is reserved for the first playable side-scrolling ACT stage.
| Slot | Expected file | Notes | Source / License |
| --- | --- | --- | --- |
| Far background | `background/background_far.png` | Large or horizontally tileable image. | TBD |
| Mid background | `background/background_mid.png` | Parallax midground image or prop sheet. | TBD |
| Tileset | `tiles/stage_01_tileset.png` | Ground, platform, wall, edge tiles. | TBD |
| Far background | `background/mossy_background_decoration.png` | Mossy cave silhouettes used by `BackgroundFar` layer. | Local asset pack: `X:\NS_unknown_game\asset\Mossy Cavern`; license TBD |
| Mid background | `background/mossy_hills.png` | Mossy hill silhouettes used by `BackgroundMid` layer. | Local asset pack: `X:\NS_unknown_game\asset\Mossy Cavern`; license TBD |
| Tileset | `tiles/mossy_tileset.png` | Full Mossy tileset atlas, reserved for later tile-id based editing. | Local asset pack: `X:\NS_unknown_game\asset\Mossy Cavern`; license TBD |
| Floating platforms | `tiles/mossy_floating_platforms.png` | Current `LevelVisual` ground and platform sprites in `stage_01.map`. | Local asset pack: `X:\NS_unknown_game\asset\Mossy Cavern`; license TBD |
| Graybox ground tiles | `tiles/graybox_ground.png` | Optional temporary tileset referenced by `stage_01.map`; fallback color is used if missing. | TBD |
| Graybox platform tiles | `tiles/graybox_platform.png` | Optional temporary platform tileset referenced by `stage_01.map`; fallback color is used if missing. | TBD |
| Props sheet | `props/stage_01_props.png` | Crates, signs, lamps, blockers, exits. | TBD |
| Props sheet | `props/mossy_hanging_plants.png` | Current hanging plant props used by `PropsBack` layer. | Local asset pack: `X:\NS_unknown_game\asset\Mossy Cavern`; license TBD |
| Decoration / hazards sheet | `props/mossy_decorations_hazards.png` | Reserved for later foreground props and hazards; not used for gameplay yet. | Local asset pack: `X:\NS_unknown_game\asset\Mossy Cavern`; license TBD |
| Hit spark | `effects/hit_spark.png` | Small combat impact effect. | TBD |
| Dust | `effects/dust.png` | Run, jump, and landing dust. | TBD |
| Music / ambience | `../../music/stage_01.ogg` | Optional loopable stage audio cue. | TBD |
@@ -23,3 +25,4 @@ This directory is reserved for the first playable side-scrolling ACT stage.
- Prefer PNG for visual assets.
- Record the original download URL, author, license, and any attribution text before using an asset.
- Keep collision data separate from visual tiles; visual alignment should stay within 4 pixels of collision.
- Current Mossy Cavern integration only covers map scene visuals. Character animations, slimes, plant animations, hazards, and combat use are intentionally deferred.
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

+9 -2
View File
@@ -72,11 +72,18 @@ endbattle_zone
- `tile_index` 当前表示 tileset 第一行的横向 tile 序号。
- `r g b` 是该批 tile 的灰盒 fallback 色,alpha 固定为 `1.0`
当前 `stage_01.map``level_visual` 地面和平台从长色块替换为 `tile_rect`,碰撞仍由 `collision` 独立定义。
当前 `stage_01.map`接入 Mossy Cavern 场景图集:
- `BackgroundFar` 使用 `mossy_background_decoration.png` 做远景洞穴轮廓。
- `BackgroundMid` 使用 `mossy_hills.png` 做中景苔藓轮廓。
- `LevelVisual` 使用 `mossy_floating_platforms.png` 做地面和悬空平台。
- `PropsBack` / `PropsFront` 使用苔藓悬挂植物和平台边缘装饰。
本轮只接入地图场景视觉,碰撞仍由 `collision` 独立定义;角色、怪物、植物动画和 hazard 玩法暂不接入。
## 下一步
- 下一阶段开始正式做地图场景,优先建设简易 `.map` 编辑器,详见 `map_editor.md`
- 继续用地图编辑器调整 Mossy 场景视觉块和碰撞对齐
-`tile_rect` 扩展成可表达 tile row/column 或 tile id。
- 增加空 layer、battle zone 无 spawn、tile texture 不存在等更严格错误日志。
- 保留 `whitebox_level.cpp` 作为 fallback,不再把主地图写死在 C++。
+15 -1
View File
@@ -34,6 +34,20 @@ UI
- 支持 `.map` tile entry 绘制。
- 支持 tileset 图片缺失时按 tile fallback 色绘制。
- 资源缺失时先检查 `Asset::exists()`,再回退色块,不触发纹理加载错误日志。
- `LevelVisual` 里的贴图矩形不再叠加灰盒顶边辅助线;只有纯色占位块会显示该辅助线。
## 当前素材接入
第一关已经通过 `rect_sprite_src` 接入 Mossy Cavern 场景图集:
- `background/mossy_background_decoration.png`
- `background/mossy_hills.png`
- `tiles/mossy_floating_platforms.png`
- `props/mossy_hanging_plants.png`
- `props/mossy_decorations_hazards.png`
- `tiles/mossy_tileset.png`
由于当前 `tile_rect` 只能取 tileset 第一行,正式 Mossy 场景暂时优先使用 `rect_sprite_src` 从大图集裁切。`mossy_tileset.png` 已落位,等后续扩展 tile row/column 或 tile id 后再用于精细铺砖。
## 约束
@@ -44,5 +58,5 @@ UI
## 下一步
- 给 tile entry 增加 tile id 或二维 source index。
- 把正式 tileset 素材接入 `stage_01.map`
- 用地图编辑器继续调整 Mossy 场景块、前后景装饰和碰撞对齐
- 如果引擎提供统一 Texture cache,再迁移当前局部贴图缓存。
+11
View File
@@ -319,3 +319,14 @@ game/assets/stage/stage_01/
3. 把灰盒 `StageLayer` 的色块替换成 sprite/tile 条目。
4. 对齐视觉块和碰撞块,误差控制在 4 像素以内。
5. 更新素材来源和授权记录。
### Mossy Cavern 场景接入
当前第一关已经先接入 `X:\NS_unknown_game\asset\Mossy Cavern` 的场景图集,范围只包含地图视觉:
1. 已完成:把 Mossy 背景、平台、悬挂植物和装饰图集复制到 `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` 不再叠加灰盒辅助顶线,避免平台素材显示异常。
暂不接入 `BlueWizard Animations``Plant Animations``Slimes` 和 hazard 玩法。下一步围绕地图编辑器继续微调场景块位置和碰撞对齐。
+1 -1
View File
@@ -107,7 +107,7 @@ void StageRenderer::drawLayer(const LevelDefinition& level,
rect.bounds.top() + parallaxOffset.y,
rect.bounds.width(), rect.bounds.height());
drawStageRect(rect, bounds);
if (layer.role == StageLayerRole::LevelVisual) {
if (layer.role == StageLayerRole::LevelVisual && !rect.source.hasTexture()) {
drawRect(frostbite2D::Rect(bounds.left(), bounds.top(), bounds.width(),
4.0f),
frostbite2D::Color(0.91f, 0.95f, 0.98f, 1.0f));