From eb199ccce6222461b71349cfc93c1c997abd07a9 Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Sat, 7 Nov 2026 21:09:15 +0100 Subject: [PATCH] qa wip: collide site meshes, spawn cap above grade (still investigating fall-through) - ue_import_site.py: auto_generate_collision=True so FBX static meshes get real collision geometry (they imported with none -> complex-as-simple had nothing to use, player fell through). - ue_build_demo_map.py: PlayerStart cap raised to Z300 so the capsule feet start above the ~Z99-138 terrain surface there (an embedded spawn point is rejected -> 'NO PLAYERSTART with positive rating' -> origin fallback). - Re-imported site meshes + rebuilt DemoMap with the above. KNOWN-UNRESOLVED: packaged plain launch still spawns the capsule around Z-123 and falls; downward trace finds no geometry. Map assets are all present in the pak and referenced; runtime collision behavior needs a visual/interactive check (headless commandlet traces are unreliable). Investigate on this branch; do not merge to main. --- .../Content/Hollywood/Site/Crossing_Markings.uasset | 2 +- Game/GigLine/Content/Hollywood/Site/Kerb_North.uasset | 2 +- Game/GigLine/Content/Hollywood/Site/Kerb_South.uasset | 2 +- .../Content/Hollywood/Site/Road_Hollywood.uasset | 2 +- .../Content/Hollywood/Site/Sidewalk_North.uasset | 2 +- .../Content/Hollywood/Site/Sidewalk_South.uasset | 2 +- .../GigLine/Content/Hollywood/Site/Terrain_DEM.uasset | 2 +- Tools/ue_build_demo_map.py | 11 +++++++---- Tools/ue_import_site.py | 6 ++++++ 9 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Game/GigLine/Content/Hollywood/Site/Crossing_Markings.uasset b/Game/GigLine/Content/Hollywood/Site/Crossing_Markings.uasset index 4c3e2c1..78b30f8 100644 --- a/Game/GigLine/Content/Hollywood/Site/Crossing_Markings.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Crossing_Markings.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70c729bb152a8bbd7cfe2f457e0d3fa1b1bac455d696bb27d23644aecff7cecd +oid sha256:fbe6957a64e5066e8cb39d6cc0dfac32e8b8467f1ce96f79efbfc4f0164caffc size 75501 diff --git a/Game/GigLine/Content/Hollywood/Site/Kerb_North.uasset b/Game/GigLine/Content/Hollywood/Site/Kerb_North.uasset index 88cb645..21d946d 100644 --- a/Game/GigLine/Content/Hollywood/Site/Kerb_North.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Kerb_North.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7893216176a7977d4784234bf10e6b49a219ab31dd61497f8db7958c5a04b7ce +oid sha256:0a0290a913eb20cf7a4cb0babf9c85873fa27a8702bd668e2f5ba7183fe1ba32 size 83550 diff --git a/Game/GigLine/Content/Hollywood/Site/Kerb_South.uasset b/Game/GigLine/Content/Hollywood/Site/Kerb_South.uasset index 7f5ec1b..78fe5ab 100644 --- a/Game/GigLine/Content/Hollywood/Site/Kerb_South.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Kerb_South.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd5493759b160992ebec5073e59d67a6ea8ceeb1fbb35b0624223668934cebc3 +oid sha256:f8a457f7846e3be2baec0e7c67a1483b631a000b62ea84fab512d17e1d5dcf9b size 83797 diff --git a/Game/GigLine/Content/Hollywood/Site/Road_Hollywood.uasset b/Game/GigLine/Content/Hollywood/Site/Road_Hollywood.uasset index 908fab3..d1752f5 100644 --- a/Game/GigLine/Content/Hollywood/Site/Road_Hollywood.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Road_Hollywood.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b2c133f3dc163f937cc7f73de9ee35a31659451e43171abdaa1b1fc5b357e1a +oid sha256:2d1b18b0fd9a8cf03bdd4167adc7c522ba317534e5cb218e61dc35d800b93846 size 309810 diff --git a/Game/GigLine/Content/Hollywood/Site/Sidewalk_North.uasset b/Game/GigLine/Content/Hollywood/Site/Sidewalk_North.uasset index 1416015..22407dd 100644 --- a/Game/GigLine/Content/Hollywood/Site/Sidewalk_North.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Sidewalk_North.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3fa880ce24eff71415cf8039b9e2347181087c2fa42ac217b022a55e1cc68a8 +oid sha256:8b2ae64e3b75e91a020f8064a6dc3ecd338c1c221e22913207e520d41bbed1d7 size 150676 diff --git a/Game/GigLine/Content/Hollywood/Site/Sidewalk_South.uasset b/Game/GigLine/Content/Hollywood/Site/Sidewalk_South.uasset index 9b7eae9..bfcd3dc 100644 --- a/Game/GigLine/Content/Hollywood/Site/Sidewalk_South.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Sidewalk_South.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf71bb2cd8feebb44a102f9a4f44179a5d26d7fb125cf5fbec31d5084acbd9c4 +oid sha256:a0d59d5e94bf4d80f26f4642dfccd3e81f95de31c21200f75889483be055b660 size 164347 diff --git a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset index 7d7ac7d..4d876fc 100644 --- a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset +++ b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa5407698175d4ca2a8e0ee7e3bdde23654337445260c9b314a62667d8edcdc1 +oid sha256:c69a8740d12b055236a1e178fee029affb2c15a76e76a57456545469319828ee size 335528 diff --git a/Tools/ue_build_demo_map.py b/Tools/ue_build_demo_map.py index 0bda350..2c897b8 100644 --- a/Tools/ue_build_demo_map.py +++ b/Tools/ue_build_demo_map.py @@ -372,11 +372,14 @@ def build(): # sidewalk is at Y -1912..-1053 and the SOUTH sidewalk at Y +718..+1447. # The hero facade is on the SOUTH side at Y +1307. Stand on the north # sidewalk and face south (+Y, yaw 90) across the road at it. - # Z 200 is clear air so the capsule settles onto the pavement instead of - # spawning embedded or below grade (the fall-through QA finding). - spawn(unreal.PlayerStart, unreal.Vector(-13336.0, -1700.0, 200.0), "Demo_PlayerStart", + # Z: the terrain here is ~Z 99-138. The capsule half-height is 87.5 cm, so + # feet must start ABOVE the surface or the point is embedded and UE rejects + # the PlayerStart ("NO PLAYERSTART with positive rating"), dropping the pawn + # at the world origin to fall through. Cap feet ~80 cm above grade: centre + # ~138+80+87 = 305, so Z 300 lets it drop cleanly and gravity settles it. + spawn(unreal.PlayerStart, unreal.Vector(-13336.0, -1700.0, 300.0), "Demo_PlayerStart", unreal.Rotator(pitch=0.0, yaw=90.0, roll=0.0)) - log("staged: Demo_PlayerStart on the north sidewalk facing south (+Y)") + log("staged: Demo_PlayerStart on the north sidewalk (cap above grade), facing south (+Y)") # A lockable LFS .umap checks out read-only, which makes save_map silently # return False — chmod u+w first or the staged actors never persist. diff --git a/Tools/ue_import_site.py b/Tools/ue_import_site.py index bf50a86..48f1f94 100644 --- a/Tools/ue_import_site.py +++ b/Tools/ue_import_site.py @@ -50,6 +50,12 @@ def import_fbx(path, name, collision="complex"): smd.convert_scene_unit = False smd.force_front_x_axis = False smd.normal_import_method = unreal.FBXNormalImportMethod.FBXNIM_IMPORT_NORMALS + # Generate collision at import. A default FBX static-mesh import creates NO + # collision primitives, so CTF_USE_COMPLEX_AS_SIMPLE later has nothing to use + # and the player falls through the walkable surfaces (observed at runtime: + # ground trace under the spawn hits nothing). auto_generate_collision bakes + # collision geometry into the mesh so the walkable plane actually blocks. + smd.auto_generate_collision = True task.options = ui unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks([task])