OldUnreal / UnrealTournamentPatches

Other
1.03k stars 30 forks source link

Collision of Mover18 in MH-Forever-Fix-2.unr broken #1652

Open SeriousBarbie opened 1 month ago

SeriousBarbie commented 1 month ago

Mover18 does not work with UT OldUnreal-UTPatch469e-Windows-test745 on local play; with UT v436 it works. Download map on DU (I can also upload the map somewhere.) MH-Forever-Fix-2-Mover18

--- Mover Mover18 ---
  bTriggerOnceOnly=True
  KeyPos(1)=(X=-16.000000)
  BasePos=(X=1808.000000,Y=464.000000,Z=-1216.000000)
  SavedPos=(X=-12345.000000,Y=-12345.000000,Z=-12345.000000)
  SavedRot=(Pitch=123,Yaw=456,Roll=789)
  MainScale=(SheerAxis=SHEER_ZX)
  PostScale=(SheerAxis=SHEER_ZX)
  Level=LevelInfo'MyLevel.LevelInfo0'
  Tag="Mover"
  Event="stoned"
  Region=(Zone=WaterZone'MyLevel.WaterZone5',iLeaf=2612,ZoneNumber=20)
  Location=(X=1808.000000,Y=464.000000,Z=-1216.000000)
  OldLocation=(X=1808.000000,Y=464.000000,Z=-1216.000000)
  bSelected=True
 Begin Brush Name=Model1524
    Begin PolyList
       Begin Polygon Texture=Dark1 Link=0
          Origin   +00023.999996,+00015.999977,+00007.999993
          Normal   +00000.000000,+00000.000000,+00001.000000
          TextureU +00000.000000,-00001.000000,+00000.000000
          TextureV +00001.000000,+00000.000000,-00000.000000
          Vertex   +00023.999996,+00015.999977,+00007.999993
          Vertex   -00024.000000,+00015.999975,+00007.999993
          Vertex   -00023.999996,-00015.999977,+00007.999993
          Vertex   +00024.000000,-00015.999975,+00007.999993
       End Polygon
       Begin Polygon Texture=Dark1 Link=1
          Origin   +00024.000000,-00015.999975,+00007.999993
          Normal   +00000.000000,-00001.000000,+00000.000000
          TextureU +00000.000000,+00000.000000,-00001.000000
          TextureV +00001.000000,+00000.000000,+00000.000000
          Vertex   +00024.000000,-00015.999975,+00007.999993
          Vertex   -00023.999996,-00015.999977,+00007.999993
          Vertex   -00023.999996,-00015.999977,-00007.999993
          Vertex   +00024.000000,-00015.999975,-00007.999993
       End Polygon
       Begin Polygon Texture=Dark1 Link=2
          Origin   +00024.000000,-00015.999975,-00007.999993
          Normal   +00000.000000,+00000.000000,-00001.000000
          TextureU -00000.000000,+00001.000000,+00000.000000
          TextureV +00001.000000,+00000.000000,+00000.000000
          Vertex   +00024.000000,-00015.999975,-00007.999993
          Vertex   -00023.999996,-00015.999977,-00007.999993
          Vertex   -00024.000000,+00015.999975,-00007.999993
          Vertex   +00023.999996,+00015.999977,-00007.999993
       End Polygon
       Begin Polygon Texture=Dark1 Link=3
          Origin   +00023.999996,+00015.999977,-00007.999993
          Normal   -00000.000000,+00001.000000,+00000.000000
          TextureU +00000.000000,-00000.000000,+00001.000000
          TextureV +00001.000000,+00000.000000,+00000.000000
          Vertex   +00023.999996,+00015.999977,-00007.999993
          Vertex   -00024.000000,+00015.999975,-00007.999993
          Vertex   -00024.000000,+00015.999975,+00007.999993
          Vertex   +00023.999996,+00015.999977,+00007.999993
       End Polygon
       Begin Polygon Texture=Dark1 Link=4
          Origin   -00023.999996,-00015.999977,+00007.999993
          Normal   -00001.000000,-00000.000000,+00000.000000
          TextureU +00000.000000,-00000.000000,-00001.000000
          TextureV +00000.000000,-00001.000000,+00000.000000
          Vertex   -00023.999996,-00015.999977,+00007.999993
          Vertex   -00024.000000,+00015.999975,+00007.999993
          Vertex   -00024.000000,+00015.999975,-00007.999993
          Vertex   -00023.999996,-00015.999977,-00007.999993
       End Polygon
       Begin Polygon Texture=DSWITCH4 Link=5
          Origin   +00023.999996,+00015.999977,+00007.999993
          Normal   +00001.000000,+00000.000000,+00000.000000
          TextureU +00000.000000,+00000.000000,-00001.000000
          TextureV -00000.000000,+00001.000000,+00000.000000
          Vertex   +00023.999996,+00015.999977,+00007.999993
          Vertex   +00024.000000,-00015.999975,+00007.999993
          Vertex   +00024.000000,-00015.999975,-00007.999993
          Vertex   +00023.999996,+00015.999977,-00007.999993
       End Polygon
    End PolyList
 End Brush
  Brush=Model'MyLevel.Model1524'
  PrePivot=(X=24.000067,Y=0.000001,Z=8.000007)
  CollisionRadius=10.000000
  CollisionHeight=10.000000
  Name="Mover18"
SeriousBuggie commented 1 month ago

Here map with small edits: MH-Forever-Fix-2_test.zip

Button located in water, below player start.

SeriousBuggie commented 1 month ago

I can confirm bug with 469e - mover can't be pushed. However on 469d it act weird. Like there no collision at all and you collide with something far before actual mover. Way outside mover bounding box. That sound as broken mover.

And if you rebuild movers on 469e, then mover act as should.

SeriousBuggie commented 1 month ago

Also if you goes on 469d from right side to left, from wall, mover not collide either. It collide only if you goes forward to it, or from left to right near wall.

SeriousBarbie commented 1 month ago

If this is a singular issue I would not mess around with broken maps; I'd just rebuild and then publish it. But what about the holy backward compatibility then? :-P

SeriousBuggie commented 1 month ago

We will talk with team internally about that. However sometimes need draw line. Which bug considered as need maintain, and which no.

SeriousBuggie commented 1 month ago

Here how collision happen on 469d:

https://github.com/user-attachments/assets/20a8ef07-2d12-4bdc-909b-204522066491

From right side not collide. From left, front and bottom collide with brush when far away from it.

SeriousBuggie commented 1 month ago

Mover bugged. It created from default cube 256x256x256, and later vertex edit to smaller size - 48x32x16.

So mover use two bounding box. Outer is 48x32x16 and internal one 256x256x256. Normally they must match.

Collision hash implementation can't handle this properly. So on this mover collide only few planes from inner box (big one). That be left one and front one. And even they collide partially.

If all planes collide properly on big box, button will be able push from top via ground.

that how really look collision model of this mover: img img img img

Detail of implementation of collision hash make collide only few planes of it. So this is broken map, which need be fixed.

SeriousBuggie commented 1 month ago

Pushed fix, which you can test on test build 769. Can be turned off by set [Engine.GameEngine] FixUpMoversBoundingBox to False.

However this fix discover true nature of this movers - big huge cube 256x256x256. We can't reproduce bugged behavior of FCollisionHash, which can be:

In exact this case there only few walls which collide with player, and this walls can change during mover movement.

SeriousBarbie commented 1 month ago

I'll fix that map.

SeriousBuggie commented 1 week ago

Improve fix for broken movers. Now fix support 3 values for Engine.GameEngine.FixUpMoversBoundingBox (set in ini as number):

0 - None 1 - Full 2 - pre-469e (default)

However if you disable octree via set Engine.GameEngine.UseOctreeCollisionHash to False, then 2 (pre-469e) will act as 0 (none).

Add warning on save map with broken movers.

scr_1731264410

SeriousBuggie commented 1 week ago

With latest fix collision size of bugged button in fix mode (pre-469e), goes be enough moderate. Even not collide from top. It visible, but you can't touch it.

scr_1731291804 scr_1731291815