Integrate mossy cavern stage scene
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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 |
@@ -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++。
|
||||||
|
|||||||
@@ -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,再迁移当前局部贴图缓存。
|
||||||
|
|||||||
@@ -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 玩法。下一步围绕地图编辑器继续微调场景块位置和碰撞对齐。
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user