From 7bbcd9696ee179b9960676dc31c715ccb7c87fe4 Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Tue, 9 Jun 2026 19:12:36 +0800 Subject: [PATCH] =?UTF-8?q?chore(tools):=20=E6=9B=B4=E6=96=B0=E6=90=AD?= =?UTF-8?q?=E5=BB=BA=E6=8C=87=E5=8D=97=E5=92=8Clevel-builder=E8=BE=93?= =?UTF-8?q?=E5=87=BA/=E8=A7=A3=E6=9E=90=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/technical/关卡-v01-搭建指南.md | 69 ++--- tools/level-builder/output/build_log.json | 254 +++++++++--------- tools/level-builder/output/level_v01.json | 246 +++++++++-------- .../parsers/build_guide_parser.py | 14 +- 4 files changed, 299 insertions(+), 284 deletions(-) diff --git a/docs/technical/关卡-v01-搭建指南.md b/docs/technical/关卡-v01-搭建指南.md index dee2d40..eea27b9 100644 --- a/docs/technical/关卡-v01-搭建指南.md +++ b/docs/technical/关卡-v01-搭建指南.md @@ -348,40 +348,43 @@ LVL_SuburbanV01/ | # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 (P,Y,R) | 缩放 | 材质 | |---|-----------|------|-------------|-------------|------|------| -| 1 | LVL_Z1_STR_SouthWall_01 | Wall_400x300 | (200, 0, 0) | (0,0,0) | — | MI_DevRed | -| 2 | LVL_Z1_STR_SouthWall_02 | Wall_400x300 | (600, 0, 0) | (0,0,0) | — | MI_DevRed | -| 3 | LVL_Z1_STR_WestWall_01 | Wall_400x300 | (0, 200, 0) | (0,90,0) | — | MI_DevRed | -| 4 | LVL_Z1_STR_WestWall_02 | Wall_400x300 | (0, 600, 0) | (0,90,0) | — | MI_DevRed | -| 5 | LVL_Z1_STR_EastWall_01 | Wall_400x300 | (980, 200, 0) | (0,90,0) | — | MI_DevRed | -| 6 | LVL_Z1_STR_EastWall_02 | Wall_400x300 | (980, 600, 0) | (0,90,0) | — | MI_DevRed | -| 7 | LVL_Z1_STR_NorthWall_West | Wall_400x300 | (200, 780, 0) | (0,0,0) | — | MI_DevRed | -| 8 | LVL_Z1_STR_NorthWall_Gate | WallDoorDouble_400x300 | (500, 780, 0) | (0,0,0) | — | MI_DevRed | -| 9 | LVL_Z1_STR_NorthWall_East | Wall_400x300 | (800, 780, 0) | (0,0,0) | — | MI_DevRed | -| 10 | LVL_Z1_STR_GateDoor | RotativeDoor_01 | (500, 780, 0) | (0,0,0) | — | MI_DevGreen | -| 11 | LVL_Z1_STR_HouseSouthWall | WallWindow_400x300 | (400, 30, 0) | (0,0,0) | — | MI_DevWhite | -| 12 | LVL_Z1_STR_HouseSouthWin | WallWindowSmall_200x300 | (600, 30, 0) | (0,0,0) | — | MI_DevWhite | -| 13 | LVL_Z1_STR_HouseWestWall | Wall_400x300 | (200, 220, 0) | (0,90,0) | — | MI_DevWhite | -| 14 | LVL_Z1_STR_HouseWestTop | Wall_400x100 | (200, 220, 300) | (0,90,0) | — | MI_DevWhite | -| 15 | LVL_Z1_STR_HouseEastWall | Wall_400x300 | (780, 220, 0) | (0,90,0) | — | MI_DevWhite | -| 16 | LVL_Z1_STR_HouseEastTop | Wall_400x100 | (780, 220, 300) | (0,90,0) | — | MI_DevWhite | -| 17 | LVL_Z1_STR_HouseNorthWall | WallDoor_200x300 | (400, 410, 0) | (0,0,0) | — | MI_DevWhite | -| 18 | LVL_Z1_STR_HouseNorthFill | Wall_400x300 | (600, 410, 0) | (0,0,0) | — | MI_DevWhite | +| 1 | LVL_Z1_STR_SouthWall_01 | Wall_400x300 | (200, -200, 0) | (0,0,0) | — | MI_DevRed | +| 2 | LVL_Z1_STR_SouthWall_02 | Wall_400x300 | (600, -200, 0) | (0,0,0) | — | MI_DevRed | +| 3 | LVL_Z1_STR_SouthWall_03 | Wall_200x300 | (900, -200, 0) | (0,0,0) | — | MI_DevRed | +| 4 | LVL_Z1_STR_WestWall_00 | Wall_200x300 | (0, -100, 0) | (0,90,0) | — | MI_DevRed | +| 5 | LVL_Z1_STR_WestWall_01 | Wall_400x300 | (0, 200, 0) | (0,90,0) | — | MI_DevRed | +| 6 | LVL_Z1_STR_WestWall_02 | Wall_400x300 | (0, 600, 0) | (0,90,0) | — | MI_DevRed | +| 7 | LVL_Z1_STR_EastWall_00 | Wall_200x300 | (980, -100, 0) | (0,90,0) | — | MI_DevRed | +| 8 | LVL_Z1_STR_EastWall_01 | Wall_400x300 | (980, 200, 0) | (0,90,0) | — | MI_DevRed | +| 9 | LVL_Z1_STR_EastWall_02 | Wall_400x300 | (980, 600, 0) | (0,90,0) | — | MI_DevRed | +| 10 | LVL_Z1_STR_NorthWall_West | Wall_400x300 | (200, 780, 0) | (0,0,0) | — | MI_DevRed | +| 11 | LVL_Z1_STR_NorthWall_Gate | WallDoorDouble_400x300 | (500, 780, 0) | (0,0,0) | — | MI_DevRed | +| 12 | LVL_Z1_STR_NorthWall_East | Wall_400x300 | (800, 780, 0) | (0,0,0) | — | MI_DevRed | +| 13 | LVL_Z1_STR_HouseSouthWall | Wall_400x300 | (400, 30, 0) | (0,0,0) | — | MI_DevWhite | +| 14 | LVL_Z1_STR_HouseSouthWin | WallWindowSmall_200x300 | (700, 30, 0) | (0,0,0) | — | MI_DevWhite | +| 15 | LVL_Z1_STR_HouseWestWall | Wall_400x300 | (200, 220, 0) | (0,90,0) | — | MI_DevWhite | +| 16 | LVL_Z1_STR_HouseEastWall | Wall_400x300 | (780, 220, 0) | (0,90,0) | — | MI_DevWhite | +| 17 | LVL_Z1_STR_HouseNorthWall | WallDoor_200x300 | (300, 410, 0) | (0,0,0) | — | MI_DevWhite | +| 18 | LVL_Z1_STR_HouseNorthFill | Wall_400x300 | (590, 410, 0) | (0,0,0) | — | MI_DevWhite | | 19 | LVL_Z1_STR_HouseRoof_01 | Floor_300x400 | (350, 230, 280) | (0,0,0) | — | MI_DevBrown | | 20 | LVL_Z1_STR_HouseRoof_02 | Floor_300x400 | (650, 230, 280) | (0,0,0) | — | MI_DevBrown | -| 21 | LVL_Z1_STR_CourtyardFloor | Floor_1000x1000 | (500, 400, 0) | (0,0,0) | (1, 0.8, 1) | MI_DevGray | +| 21 | LVL_Z1_STR_CourtyardFloor | Floor_1000x1000 | (500, 300, 0) | (0,0,0) | (1, 1.0, 1) | MI_DevGray | -> **院门修改**:改用 WallDoorDouble_400x300(双开门洞墙),门洞更宽(~200cm),匹配执行案院门 200cm 宽要求。 +> **院门修改**:改用 WallDoorDouble_400x300(双开门洞墙),门洞更宽(~200cm),匹配执行案院门 200cm 宽要求。移除 RotativeDoor_01(100cm 单门与双开门洞不匹配),白模阶段仅用墙洞表示院门。 > **Z1 房屋**:西墙/东墙旋转 (0,90,0) 使其沿 Y 轴展开,正确围合房屋。 -> **房屋北墙**:WallDoor_200x300 门洞用于室内木门(100cm 宽足够),上方用 Wall_400x300 自然覆盖。 +> **房屋北墙**:WallDoor_200x300 门洞用于室内木门(100cm 宽足够),移至 X=300 起始对齐西墙,Wall_400x300 填充剩余至东墙。 +> **房屋南墙**:WallWindow_400x300 改为 Wall_400x300(实心墙),WallWindowSmall_200x300 移至 X=700 避免重叠。 +> **房屋顶墙**:移除 HouseWestTop/HouseEastTop(Wall_400x100 在 Z=300 高于屋顶 Z=280,无功能)。 +> **南边界外推**:区域南墙从 Y=0 移至 Y=-200,给房屋南墙留出空间;新增 SouthWall_03、WestWall_00、EastWall_00 延伸围合;院子地面向南扩展。 #### C1.2 布景物(Props) | # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 | |---|-----------|------|-------------|------|------|------| | 1 | LVL_Z1_PROP_OldBicycle | Car01 | (100, 650, 0) | (0.2, 0.2, 0.2) | — | 50%缩放,靠西院墙 | -| 2 | LVL_Z1_PROP_ClothesPole_Beam | Beam_300 | (500, 600, 180) | — | MI_DevWhite | 横杆 | -| 3 | LVL_Z1_PROP_ClothesPole_Pole1 | Cylinder | (380, 600, 0) | (0.05, 0.05, 3.6) | MI_DevGray | 支撑柱 | -| 4 | LVL_Z1_PROP_ClothesPole_Pole2 | Cylinder | (620, 600, 0) | (0.05, 0.05, 3.6) | MI_DevGray | 支撑柱 | +| 2 | LVL_Z1_PROP_ClothesPole_Beam | Cube | (500, 600, 160) | (2.4, 0.05, 0.05) | MI_DevWhite | 横杆(水平放置) | +| 3 | LVL_Z1_PROP_ClothesPole_Pole1 | Cylinder | (380, 600, 0) | (0.05, 0.05, 1.6) | MI_DevGray | 支撑柱 160cm | +| 4 | LVL_Z1_PROP_ClothesPole_Pole2 | Cylinder | (620, 600, 0) | (0.05, 0.05, 1.6) | MI_DevGray | 支撑柱 160cm | | 5 | LVL_Z1_PROP_JunkPile_Box1 | WoodenBox_Small | (850, 100, 0) | — | — | 东南角 | | 6 | LVL_Z1_PROP_JunkPile_Box2 | WoodenBox_Small | (870, 120, 35) | — | — | 叠放在上方 | | 7 | LVL_Z1_PROP_JunkPile_Bucket | Bucket_01 | (890, 80, 0) | — | — | | @@ -512,18 +515,18 @@ LVL_SuburbanV01/ | 11 | LVL_Z2_STR_Roof_01 | Floor_300x400 | (1250, 400, 280) | (0,0,0) | MI_DevBrown | | 12 | LVL_Z2_STR_Roof_02 | Floor_300x400 | (1350, 400, 280) | (0,0,0) | MI_DevBrown | | 13 | LVL_Z2_STR_Awning_01 | Floor_200x300 | (1100, 700, 260) | (0,0,0) | MI_DevWhite | -| 14 | LVL_Z2_STR_Awning_02 | Floor_200x300 | (1400, 700, 260) | (0,0,0) | MI_DevWhite | +| 14 | LVL_Z2_STR_Awning_02 | Floor_200x300 | (1300, 700, 260) | (0,0,0) | MI_DevWhite | #### C3.2 布景物 | # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 | |---|-----------|------|-------------|------|------|------| -| 1 | LVL_Z2_PROP_Counter | Cube | (1200, 500, 0) | (2, 0.6, 0.9) | MI_DevGlassWhite | 玻璃柜台 | +| 1 | LVL_Z2_PROP_Counter | Cube | (1100, 360, 0) | (2, 0.6, 0.9) | MI_DevGlassWhite | 玻璃柜台,避开冰柜和门 | | 2 | LVL_Z2_PROP_ShelfEast_01 | Fence_Small_400 | (1520, 300, 0) | (1, 1, 1.8) | MI_DevGray | 东墙货架(竖放) | | 3 | LVL_Z2_PROP_ShelfEast_02 | Fence_Small_400 | (1520, 300, 180) | (1, 1, 1.8) | MI_DevGray | 二层 | | 4 | LVL_Z2_PROP_ShelfSouth | Fence_Small_400 | (1100, 230, 0) | (1, 1, 1.8) | MI_DevGray | 南墙货架 | | 5 | LVL_Z2_PROP_Freezer | Container_Normal | (1050, 400, 0) | (0.25, 0.15, 0.4) | MI_DevWhite | 老式冰柜 | -| 6 | LVL_Z2_PROP_SmallTV | Monitor_01 | (1350, 540, 90) | (0.6, 0.6, 0.6) | MI_DevGray | 柜台角落 | +| 6 | LVL_Z2_PROP_SmallTV | Monitor_01 | (1200, 350, 90) | (0.6, 0.6, 0.6) | MI_DevGray | 柜台东端上方 | | 7 | LVL_Z2_PROP_Signboard | Cube | (1150, 610, 280) | (3, 0.05, 0.4) | MI_DevBlue | 招牌 | | 8 | LVL_Z2_PROP_CardRack | Cube | (1400, 550, 0) | (0.4, 0.2, 0.3) | MI_DevGray | 卡片架 | @@ -711,11 +714,13 @@ LVL_SuburbanV01/ ### G-01 路灯(3 个) -| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 材质 | -|---|-----------|------|-------------|------| -| 1 | LVL_Z3_LGT_StreetLight_01 | RoadLamp_01 | (1500, 1050, 0) | — | -| 2 | LVL_Z3_LGT_StreetLight_02 | RoadLamp_01 | (3000, 1050, 0) | — | -| 3 | LVL_Z3_LGT_StreetLight_03 | RoadLamp_01 | (4500, 1050, 0) | — | +> RoadLamp_01 天然 850cm 高,缩放 (0.7, 0.7, 0.5) 降至约 425cm,匹配城郊路灯尺度。 + +| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 缩放 | 材质 | +|---|-----------|------|-------------|------|------|------| +| 1 | LVL_Z3_LGT_StreetLight_01 | RoadLamp_01 | (1500, 1050, 0) | (0,0,0) | (0.7, 0.7, 0.5) | — | +| 2 | LVL_Z3_LGT_StreetLight_02 | RoadLamp_01 | (3000, 1050, 0) | (0,0,0) | (0.7, 0.7, 0.5) | — | +| 3 | LVL_Z3_LGT_StreetLight_03 | RoadLamp_01 | (4500, 1050, 0) | (0,0,0) | (0.7, 0.7, 0.5) | — | ### G-02 垃圾桶(2 个,街道南侧) diff --git a/tools/level-builder/output/build_log.json b/tools/level-builder/output/build_log.json index 3791016..3be764e 100644 --- a/tools/level-builder/output/build_log.json +++ b/tools/level-builder/output/build_log.json @@ -2365,7 +2365,7 @@ "zone_id": "Z1", "location": [ 200.0, - 0.0, + -200.0, 0.0 ], "rotation": [ @@ -2396,7 +2396,7 @@ "zone_id": "Z1", "location": [ 600.0, - 0.0, + -200.0, 0.0 ], "rotation": [ @@ -2417,6 +2417,68 @@ "rarity": "", "source_ref": "" }, + { + "name": "LVL_Z1_STR_SouthWall_03", + "status": "ok", + "actor_name": "LVL_Z1_STR_SouthWall_03", + "asset_key": "Wall_200x300", + "asset_type": "static_mesh", + "category": "STR", + "zone_id": "Z1", + "location": [ + 900.0, + -200.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ], + "material": "MI_DevRed", + "folder": "LVL_SuburbanV01/Z1_家/Structure", + "note": "", + "trigger_radius": 0.0, + "interact_type": "", + "rarity": "", + "source_ref": "" + }, + { + "name": "LVL_Z1_STR_WestWall_00", + "status": "ok", + "actor_name": "LVL_Z1_STR_WestWall_00", + "asset_key": "Wall_200x300", + "asset_type": "static_mesh", + "category": "STR", + "zone_id": "Z1", + "location": [ + 0.0, + -100.0, + 0.0 + ], + "rotation": [ + 0.0, + 90.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ], + "material": "MI_DevRed", + "folder": "LVL_SuburbanV01/Z1_家/Structure", + "note": "", + "trigger_radius": 0.0, + "interact_type": "", + "rarity": "", + "source_ref": "" + }, { "name": "LVL_Z1_STR_WestWall_01", "status": "ok", @@ -2479,6 +2541,37 @@ "rarity": "", "source_ref": "" }, + { + "name": "LVL_Z1_STR_EastWall_00", + "status": "ok", + "actor_name": "LVL_Z1_STR_EastWall_00", + "asset_key": "Wall_200x300", + "asset_type": "static_mesh", + "category": "STR", + "zone_id": "Z1", + "location": [ + 980.0, + -100.0, + 0.0 + ], + "rotation": [ + 0.0, + 90.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ], + "material": "MI_DevRed", + "folder": "LVL_SuburbanV01/Z1_家/Structure", + "note": "", + "trigger_radius": 0.0, + "interact_type": "", + "rarity": "", + "source_ref": "" + }, { "name": "LVL_Z1_STR_EastWall_01", "status": "ok", @@ -2634,42 +2727,11 @@ "rarity": "", "source_ref": "" }, - { - "name": "LVL_Z1_STR_GateDoor", - "status": "ok", - "actor_name": "LVL_Z1_STR_GateDoor", - "asset_key": "RotativeDoor_01", - "asset_type": "static_mesh", - "category": "STR", - "zone_id": "Z1", - "location": [ - 500.0, - 780.0, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0 - ], - "scale": [ - 1.0, - 1.0, - 1.0 - ], - "material": "MI_DevGreen", - "folder": "LVL_SuburbanV01/Z1_家/Structure", - "note": "", - "trigger_radius": 0.0, - "interact_type": "", - "rarity": "", - "source_ref": "" - }, { "name": "LVL_Z1_STR_HouseSouthWall", "status": "ok", "actor_name": "LVL_Z1_STR_HouseSouthWall", - "asset_key": "WallWindow_400x300", + "asset_key": "Wall_400x300", "asset_type": "static_mesh", "category": "STR", "zone_id": "Z1", @@ -2705,7 +2767,7 @@ "category": "STR", "zone_id": "Z1", "location": [ - 600.0, + 700.0, 30.0, 0.0 ], @@ -2758,37 +2820,6 @@ "rarity": "", "source_ref": "" }, - { - "name": "LVL_Z1_STR_HouseWestTop", - "status": "ok", - "actor_name": "LVL_Z1_STR_HouseWestTop", - "asset_key": "Wall_400x100", - "asset_type": "static_mesh", - "category": "STR", - "zone_id": "Z1", - "location": [ - 200.0, - 220.0, - 300.0 - ], - "rotation": [ - 0.0, - 90.0, - 0.0 - ], - "scale": [ - 1.0, - 1.0, - 1.0 - ], - "material": "MI_DevWhite", - "folder": "LVL_SuburbanV01/Z1_家/Structure", - "note": "", - "trigger_radius": 0.0, - "interact_type": "", - "rarity": "", - "source_ref": "" - }, { "name": "LVL_Z1_STR_HouseEastWall", "status": "ok", @@ -2820,37 +2851,6 @@ "rarity": "", "source_ref": "" }, - { - "name": "LVL_Z1_STR_HouseEastTop", - "status": "ok", - "actor_name": "LVL_Z1_STR_HouseEastTop", - "asset_key": "Wall_400x100", - "asset_type": "static_mesh", - "category": "STR", - "zone_id": "Z1", - "location": [ - 780.0, - 220.0, - 300.0 - ], - "rotation": [ - 0.0, - 90.0, - 0.0 - ], - "scale": [ - 1.0, - 1.0, - 1.0 - ], - "material": "MI_DevWhite", - "folder": "LVL_SuburbanV01/Z1_家/Structure", - "note": "", - "trigger_radius": 0.0, - "interact_type": "", - "rarity": "", - "source_ref": "" - }, { "name": "LVL_Z1_STR_HouseNorthWall", "status": "ok", @@ -2860,7 +2860,7 @@ "category": "STR", "zone_id": "Z1", "location": [ - 400.0, + 300.0, 410.0, 0.0 ], @@ -2891,7 +2891,7 @@ "category": "STR", "zone_id": "Z1", "location": [ - 600.0, + 590.0, 410.0, 0.0 ], @@ -2985,7 +2985,7 @@ "zone_id": "Z1", "location": [ 500.0, - 400.0, + 300.0, 0.0 ], "rotation": [ @@ -2995,7 +2995,7 @@ ], "scale": [ 1.0, - 0.8, + 1.0, 1.0 ], "material": "MI_DevGray", @@ -3041,14 +3041,14 @@ "name": "LVL_Z1_PROP_ClothesPole_Beam", "status": "ok", "actor_name": "LVL_Z1_PROP_ClothesPole_Beam", - "asset_key": "Beam_300", + "asset_key": "Cube", "asset_type": "static_mesh", "category": "PROP", "zone_id": "Z1", "location": [ 500.0, 600.0, - 180.0 + 160.0 ], "rotation": [ 0.0, @@ -3056,13 +3056,13 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 2.4, + 0.05, + 0.05 ], "material": "MI_DevWhite", "folder": "LVL_SuburbanV01/Z1_家/Props", - "note": "横杆", + "note": "横杆(水平放置)", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -3089,11 +3089,11 @@ "scale": [ 0.05, 0.05, - 3.6 + 1.6 ], "material": "MI_DevGray", "folder": "LVL_SuburbanV01/Z1_家/Props", - "note": "支撑柱", + "note": "支撑柱 160cm", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -3120,11 +3120,11 @@ "scale": [ 0.05, 0.05, - 3.6 + 1.6 ], "material": "MI_DevGray", "folder": "LVL_SuburbanV01/Z1_家/Props", - "note": "支撑柱", + "note": "支撑柱 160cm", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -4906,7 +4906,7 @@ "category": "STR", "zone_id": "Z2", "location": [ - 1400.0, + 1300.0, 700.0, 260.0 ], @@ -4937,8 +4937,8 @@ "category": "PROP", "zone_id": "Z2", "location": [ - 1200.0, - 500.0, + 1100.0, + 360.0, 0.0 ], "rotation": [ @@ -4953,7 +4953,7 @@ ], "material": "MI_DevGlassWhite", "folder": "LVL_SuburbanV01/Z2_小卖部/Props", - "note": "玻璃柜台", + "note": "玻璃柜台,避开冰柜和门", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -5092,8 +5092,8 @@ "category": "PROP", "zone_id": "Z2", "location": [ - 1350.0, - 540.0, + 1200.0, + 350.0, 90.0 ], "rotation": [ @@ -5108,7 +5108,7 @@ ], "material": "MI_DevGray", "folder": "LVL_SuburbanV01/Z2_小卖部/Props", - "note": "柜台角落", + "note": "柜台东端上方", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -7086,9 +7086,9 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 0.7, + 0.7, + 0.5 ], "material": "", "folder": "LVL_SuburbanV01/Z3_主街道/Lighting", @@ -7117,9 +7117,9 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 0.7, + 0.7, + 0.5 ], "material": "", "folder": "LVL_SuburbanV01/Z3_主街道/Lighting", @@ -7148,9 +7148,9 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 0.7, + 0.7, + 0.5 ], "material": "", "folder": "LVL_SuburbanV01/Z3_主街道/Lighting", diff --git a/tools/level-builder/output/level_v01.json b/tools/level-builder/output/level_v01.json index 6c546d9..80277e0 100644 --- a/tools/level-builder/output/level_v01.json +++ b/tools/level-builder/output/level_v01.json @@ -2222,7 +2222,7 @@ "zone_id": "Z1", "location": [ 200.0, - 0.0, + -200.0, 0.0 ], "rotation": [ @@ -2251,7 +2251,7 @@ "zone_id": "Z1", "location": [ 600.0, - 0.0, + -200.0, 0.0 ], "rotation": [ @@ -2272,6 +2272,64 @@ "rarity": "", "source_ref": "" }, + { + "actor_name": "LVL_Z1_STR_SouthWall_03", + "asset_key": "Wall_200x300", + "asset_type": "static_mesh", + "category": "STR", + "zone_id": "Z1", + "location": [ + 900.0, + -200.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ], + "material": "MI_DevRed", + "folder": "LVL_SuburbanV01/Z1_家/Structure", + "note": "", + "trigger_radius": 0.0, + "interact_type": "", + "rarity": "", + "source_ref": "" + }, + { + "actor_name": "LVL_Z1_STR_WestWall_00", + "asset_key": "Wall_200x300", + "asset_type": "static_mesh", + "category": "STR", + "zone_id": "Z1", + "location": [ + 0.0, + -100.0, + 0.0 + ], + "rotation": [ + 0.0, + 90.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ], + "material": "MI_DevRed", + "folder": "LVL_SuburbanV01/Z1_家/Structure", + "note": "", + "trigger_radius": 0.0, + "interact_type": "", + "rarity": "", + "source_ref": "" + }, { "actor_name": "LVL_Z1_STR_WestWall_01", "asset_key": "Wall_400x300", @@ -2330,6 +2388,35 @@ "rarity": "", "source_ref": "" }, + { + "actor_name": "LVL_Z1_STR_EastWall_00", + "asset_key": "Wall_200x300", + "asset_type": "static_mesh", + "category": "STR", + "zone_id": "Z1", + "location": [ + 980.0, + -100.0, + 0.0 + ], + "rotation": [ + 0.0, + 90.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ], + "material": "MI_DevRed", + "folder": "LVL_SuburbanV01/Z1_家/Structure", + "note": "", + "trigger_radius": 0.0, + "interact_type": "", + "rarity": "", + "source_ref": "" + }, { "actor_name": "LVL_Z1_STR_EastWall_01", "asset_key": "Wall_400x300", @@ -2475,38 +2562,9 @@ "rarity": "", "source_ref": "" }, - { - "actor_name": "LVL_Z1_STR_GateDoor", - "asset_key": "RotativeDoor_01", - "asset_type": "static_mesh", - "category": "STR", - "zone_id": "Z1", - "location": [ - 500.0, - 780.0, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0 - ], - "scale": [ - 1.0, - 1.0, - 1.0 - ], - "material": "MI_DevGreen", - "folder": "LVL_SuburbanV01/Z1_家/Structure", - "note": "", - "trigger_radius": 0.0, - "interact_type": "", - "rarity": "", - "source_ref": "" - }, { "actor_name": "LVL_Z1_STR_HouseSouthWall", - "asset_key": "WallWindow_400x300", + "asset_key": "Wall_400x300", "asset_type": "static_mesh", "category": "STR", "zone_id": "Z1", @@ -2540,7 +2598,7 @@ "category": "STR", "zone_id": "Z1", "location": [ - 600.0, + 700.0, 30.0, 0.0 ], @@ -2591,35 +2649,6 @@ "rarity": "", "source_ref": "" }, - { - "actor_name": "LVL_Z1_STR_HouseWestTop", - "asset_key": "Wall_400x100", - "asset_type": "static_mesh", - "category": "STR", - "zone_id": "Z1", - "location": [ - 200.0, - 220.0, - 300.0 - ], - "rotation": [ - 0.0, - 90.0, - 0.0 - ], - "scale": [ - 1.0, - 1.0, - 1.0 - ], - "material": "MI_DevWhite", - "folder": "LVL_SuburbanV01/Z1_家/Structure", - "note": "", - "trigger_radius": 0.0, - "interact_type": "", - "rarity": "", - "source_ref": "" - }, { "actor_name": "LVL_Z1_STR_HouseEastWall", "asset_key": "Wall_400x300", @@ -2649,35 +2678,6 @@ "rarity": "", "source_ref": "" }, - { - "actor_name": "LVL_Z1_STR_HouseEastTop", - "asset_key": "Wall_400x100", - "asset_type": "static_mesh", - "category": "STR", - "zone_id": "Z1", - "location": [ - 780.0, - 220.0, - 300.0 - ], - "rotation": [ - 0.0, - 90.0, - 0.0 - ], - "scale": [ - 1.0, - 1.0, - 1.0 - ], - "material": "MI_DevWhite", - "folder": "LVL_SuburbanV01/Z1_家/Structure", - "note": "", - "trigger_radius": 0.0, - "interact_type": "", - "rarity": "", - "source_ref": "" - }, { "actor_name": "LVL_Z1_STR_HouseNorthWall", "asset_key": "WallDoor_200x300", @@ -2685,7 +2685,7 @@ "category": "STR", "zone_id": "Z1", "location": [ - 400.0, + 300.0, 410.0, 0.0 ], @@ -2714,7 +2714,7 @@ "category": "STR", "zone_id": "Z1", "location": [ - 600.0, + 590.0, 410.0, 0.0 ], @@ -2802,7 +2802,7 @@ "zone_id": "Z1", "location": [ 500.0, - 400.0, + 300.0, 0.0 ], "rotation": [ @@ -2812,7 +2812,7 @@ ], "scale": [ 1.0, - 0.8, + 1.0, 1.0 ], "material": "MI_DevGray", @@ -2854,14 +2854,14 @@ }, { "actor_name": "LVL_Z1_PROP_ClothesPole_Beam", - "asset_key": "Beam_300", + "asset_key": "Cube", "asset_type": "static_mesh", "category": "PROP", "zone_id": "Z1", "location": [ 500.0, 600.0, - 180.0 + 160.0 ], "rotation": [ 0.0, @@ -2869,13 +2869,13 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 2.4, + 0.05, + 0.05 ], "material": "MI_DevWhite", "folder": "LVL_SuburbanV01/Z1_家/Props", - "note": "横杆", + "note": "横杆(水平放置)", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -2900,11 +2900,11 @@ "scale": [ 0.05, 0.05, - 3.6 + 1.6 ], "material": "MI_DevGray", "folder": "LVL_SuburbanV01/Z1_家/Props", - "note": "支撑柱", + "note": "支撑柱 160cm", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -2929,11 +2929,11 @@ "scale": [ 0.05, 0.05, - 3.6 + 1.6 ], "material": "MI_DevGray", "folder": "LVL_SuburbanV01/Z1_家/Props", - "note": "支撑柱", + "note": "支撑柱 160cm", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -4599,7 +4599,7 @@ "category": "STR", "zone_id": "Z2", "location": [ - 1400.0, + 1300.0, 700.0, 260.0 ], @@ -4628,8 +4628,8 @@ "category": "PROP", "zone_id": "Z2", "location": [ - 1200.0, - 500.0, + 1100.0, + 360.0, 0.0 ], "rotation": [ @@ -4644,7 +4644,7 @@ ], "material": "MI_DevGlassWhite", "folder": "LVL_SuburbanV01/Z2_小卖部/Props", - "note": "玻璃柜台", + "note": "玻璃柜台,避开冰柜和门", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -4773,8 +4773,8 @@ "category": "PROP", "zone_id": "Z2", "location": [ - 1350.0, - 540.0, + 1200.0, + 350.0, 90.0 ], "rotation": [ @@ -4789,7 +4789,7 @@ ], "material": "MI_DevGray", "folder": "LVL_SuburbanV01/Z2_小卖部/Props", - "note": "柜台角落", + "note": "柜台东端上方", "trigger_radius": 0.0, "interact_type": "", "rarity": "", @@ -6639,9 +6639,9 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 0.7, + 0.7, + 0.5 ], "material": "", "folder": "LVL_SuburbanV01/Z3_主街道/Lighting", @@ -6668,9 +6668,9 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 0.7, + 0.7, + 0.5 ], "material": "", "folder": "LVL_SuburbanV01/Z3_主街道/Lighting", @@ -6697,9 +6697,9 @@ 0.0 ], "scale": [ - 1.0, - 1.0, - 1.0 + 0.7, + 0.7, + 0.5 ], "material": "", "folder": "LVL_SuburbanV01/Z3_主街道/Lighting", @@ -6934,7 +6934,7 @@ "Z1": 39, "Z7": 10 }, - "unique_assets": 38, + "unique_assets": 36, "asset_list": [ "Barrel", "BarrierWall_200", @@ -6957,7 +6957,6 @@ "GarageDoorOpen_01", "Monitor_01", "RoadLamp_01", - "RotativeDoor_01", "SimpleTable_01", "SimpleTable_02", "TrashCans_01", @@ -6966,7 +6965,6 @@ "WallDoorGarage_400x300", "WallDoor_200x300", "WallWindowSmall_200x300", - "WallWindow_400x300", "Wall_100x300", "Wall_200x300", "Wall_400x100", diff --git a/tools/level-builder/parsers/build_guide_parser.py b/tools/level-builder/parsers/build_guide_parser.py index fc74e35..64a887b 100644 --- a/tools/level-builder/parsers/build_guide_parser.py +++ b/tools/level-builder/parsers/build_guide_parser.py @@ -624,13 +624,23 @@ class BuildGuideParser: i += 1 def _parse_global_row(self, row: dict) -> Optional[ActorData]: - """解析全局物件行。""" + """解析全局物件行。支持可选的旋转和缩放列。""" name = clean_cell(row.get("Actor 名称", row.get("Actor名称", ""))) if not name: return None asset_key = clean_cell(row.get("资产", "")) location = parse_location(row.get("位置 (X,Y,Z)", row.get("位置", ""))) + + # 旋转(可选) + rot_col = (row.get("旋转 (Pitch,Yaw,Roll)") + or row.get("旋转 (P,Y,R)") + or row.get("旋转", "")) + rotation = parse_rotation(rot_col) if rot_col else (0.0, 0.0, 0.0) + + # 缩放(可选) + scale = parse_scale(row.get("缩放", "—")) + material = clean_cell(row.get("材质", "")) if material in ('—', '–', '-'): material = "" @@ -650,6 +660,8 @@ class BuildGuideParser: category=category, zone_id=zone_id, location=location, + rotation=rotation, + scale=scale, material=material, folder=self._get_folder(zone_id, category), )