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 2180 455 260 28
collision 2650 515 360 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 layer background_far BackgroundFar 0.25
rect 0 0 3200 720 0.08 0.10 0.14 1.0 rect 0 0 3200 720 0.04 0.06 0.05 1.0
rect 360 120 420 220 0.13 0.16 0.21 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 1380 90 560 260 0.12 0.15 0.20 1.0 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 2440 140 520 210 0.13 0.16 0.21 1.0 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 endlayer
layer background_mid BackgroundMid 0.55 layer background_mid BackgroundMid 0.55
rect 80 360 280 240 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 1020 310 340 290 0.18 0.22 0.27 1.0 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 2020 330 360 270 0.18 0.22 0.27 1.0 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 2860 280 260 320 0.18 0.22 0.27 1.0 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 endlayer
layer level_visual LevelVisual 1.0 layer level_visual LevelVisual 1.0
tile_rect graybox_ground 0 600 320 8 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
tile_rect graybox_platform 230 500 22 2 0 0.62 0.68 0.73 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
tile_rect graybox_platform 560 430 26 2 0 0.62 0.68 0.73 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
tile_rect graybox_platform 930 510 26 2 0 0.62 0.68 0.73 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
tile_rect graybox_platform 1250 420 23 2 0 0.62 0.68 0.73 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
tile_rect graybox_platform 1760 500 30 2 0 0.62 0.68 0.73 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
tile_rect graybox_platform 2180 455 26 2 0 0.62 0.68 0.73 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
tile_rect graybox_platform 2650 515 36 2 0 0.62 0.68 0.73 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 endlayer
layer props_back PropsBack 1.0 layer props_back PropsBack 1.0
rect 118 392 88 208 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 780 250 72 180 0.26 0.30 0.34 1.0 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 1440 300 80 300 0.26 0.30 0.34 1.0 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 1880 360 110 240 0.26 0.30 0.34 1.0 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 2520 390 92 210 0.26 0.30 0.34 1.0 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 3040 315 82 285 0.26 0.30 0.34 1.0 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 endlayer
layer props_front PropsFront 1.0 layer props_front PropsFront 1.0
rect 520 580 220 34 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 1510 570 280 42 0.14 0.17 0.18 0.90 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 2580 572 260 38 0.14 0.17 0.18 0.90 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 endlayer
battle_zone zone_01_intro 520 260 560 340 0 0 1940 720 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 | | Slot | Expected file | Notes | Source / License |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Far background | `background/background_far.png` | Large or horizontally tileable image. | 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/background_mid.png` | Parallax midground image or prop sheet. | 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/stage_01_tileset.png` | Ground, platform, wall, edge tiles. | 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 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 | | 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 | | Hit spark | `effects/hit_spark.png` | Small combat impact effect. | TBD |
| Dust | `effects/dust.png` | Run, jump, and landing dust. | TBD | | Dust | `effects/dust.png` | Run, jump, and landing dust. | TBD |
| Music / ambience | `../../music/stage_01.ogg` | Optional loopable stage audio cue. | 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. - Prefer PNG for visual assets.
- Record the original download URL, author, license, and any attribution text before using an asset. - 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. - 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 序号。 - `tile_index` 当前表示 tileset 第一行的横向 tile 序号。
- `r g b` 是该批 tile 的灰盒 fallback 色,alpha 固定为 `1.0` - `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。 -`tile_rect` 扩展成可表达 tile row/column 或 tile id。
- 增加空 layer、battle zone 无 spawn、tile texture 不存在等更严格错误日志。 - 增加空 layer、battle zone 无 spawn、tile texture 不存在等更严格错误日志。
- 保留 `whitebox_level.cpp` 作为 fallback,不再把主地图写死在 C++。 - 保留 `whitebox_level.cpp` 作为 fallback,不再把主地图写死在 C++。
+15 -1
View File
@@ -34,6 +34,20 @@ UI
- 支持 `.map` tile entry 绘制。 - 支持 `.map` tile entry 绘制。
- 支持 tileset 图片缺失时按 tile fallback 色绘制。 - 支持 tileset 图片缺失时按 tile fallback 色绘制。
- 资源缺失时先检查 `Asset::exists()`,再回退色块,不触发纹理加载错误日志。 - 资源缺失时先检查 `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。 - 给 tile entry 增加 tile id 或二维 source index。
- 把正式 tileset 素材接入 `stage_01.map` - 用地图编辑器继续调整 Mossy 场景块、前后景装饰和碰撞对齐
- 如果引擎提供统一 Texture cache,再迁移当前局部贴图缓存。 - 如果引擎提供统一 Texture cache,再迁移当前局部贴图缓存。
+11
View File
@@ -319,3 +319,14 @@ game/assets/stage/stage_01/
3. 把灰盒 `StageLayer` 的色块替换成 sprite/tile 条目。 3. 把灰盒 `StageLayer` 的色块替换成 sprite/tile 条目。
4. 对齐视觉块和碰撞块,误差控制在 4 像素以内。 4. 对齐视觉块和碰撞块,误差控制在 4 像素以内。
5. 更新素材来源和授权记录。 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.top() + parallaxOffset.y,
rect.bounds.width(), rect.bounds.height()); rect.bounds.width(), rect.bounds.height());
drawStageRect(rect, bounds); 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(), drawRect(frostbite2D::Rect(bounds.left(), bounds.top(), bounds.width(),
4.0f), 4.0f),
frostbite2D::Color(0.91f, 0.95f, 0.98f, 1.0f)); frostbite2D::Color(0.91f, 0.95f, 0.98f, 1.0f));