OldUnreal/Unreal-testing

Rotation and velocity depends on FPS (last beta 2023-08-08)

Opened this issue · 3 comments

Reorn commented

IF (FPS > 500 && RotationRate < 250) actor not rotated.
(test map attached: the planet does not rotate if FPS > 500 and rotate if Vsync=On)
If FPS is uneven, rotation "shakes"
Test_Rotation.zip

Also, as far as I see, projectile speed depends on FPS.
On map 'End' (RNTP) speed of last camera (CS_Camera17) must be constant = 45
at high FPS it "shakes" from 4 to 60
if ( Vsync == On) camera speed is constant

ScriptLog: Speed= 48.242252
ScriptLog: Speed= 51.881096
ScriptLog: Speed= 45.642426
ScriptLog: Speed= 42.032040
ScriptLog: Speed= 39.839584
ScriptLog: Speed= 39.059734
ScriptLog: Speed= 41.355991
ScriptLog: Speed= 36.831867
ScriptLog: Speed= 30.844883
ScriptLog: Speed= 28.370056
ScriptLog: Speed= 26.578430
ScriptLog: Speed= 22.109991
ScriptLog: Speed= 16.735836
ScriptLog: Speed= 20.211311
ScriptLog: Speed= 24.952936
ScriptLog: Speed= 24.715748
ScriptLog: Speed= 17.516474
ScriptLog: Speed= 10.014550
ScriptLog: Speed= 15.199539
ScriptLog: Speed= 17.439861
ScriptLog: Speed= 26.719221
ScriptLog: Speed= 27.363445
ScriptLog: Speed= 26.133940
ScriptLog: Speed= 19.347788
ScriptLog: Speed= 11.975016
ScriptLog: Speed= 13.604231
ScriptLog: Speed= 10.748104
ScriptLog: Speed= 5.029188
ScriptLog: Speed= 5.345260
ScriptLog: Speed= 5.261774
ScriptLog: Speed= 9.025042
ScriptLog: Speed= 5.153069
ScriptLog: Speed= 4.956161
ScriptLog: Speed= 5.260707
ScriptLog: Speed= 5.274613
ScriptLog: Speed= 13.024978
ScriptLog: Speed= 24.555611
ScriptLog: Speed= 17.935978
ScriptLog: Speed= 23.394268
ScriptLog: Speed= 24.986080
ScriptLog: Speed= 27.993397
ScriptLog: Speed= 32.494419
ScriptLog: Speed= 32.925442
ScriptLog: Speed= 34.772850
ScriptLog: Speed= 31.166054
ScriptLog: Speed= 33.119926
ScriptLog: Speed= 32.335865
ScriptLog: Speed= 29.350044
ScriptLog: Speed= 28.308622
ScriptLog: Speed= 27.274519
ScriptLog: Speed= 24.418865
ScriptLog: Speed= 24.174532
ScriptLog: Speed= 15.277117
ScriptLog: Speed= 10.590139
ScriptLog: Speed= 17.357788
ScriptLog: Speed= 24.963045
ScriptLog: Speed= 28.562593
ScriptLog: Speed= 25.141605
ScriptLog: Speed= 26.149746
ScriptLog: Speed= 33.633427
ScriptLog: Speed= 41.453293
ScriptLog: Speed= 39.012852
ScriptLog: Speed= 35.990086
ScriptLog: Speed= 41.974991
ScriptLog: Speed= 46.152260
ScriptLog: Speed= 47.084057
ScriptLog: Speed= 41.767735
ScriptLog: Speed= 38.047539
ScriptLog: Speed= 42.572014
ScriptLog: Speed= 44.667320
ScriptLog: Speed= 43.641560
ScriptLog: Speed= 34.595081
ScriptLog: Speed= 36.615322
ScriptLog: Speed= 37.948547
ScriptLog: Speed= 38.483231
ScriptLog: Speed= 31.977991
ScriptLog: Speed= 31.835407
ScriptLog: Speed= 33.755653
ScriptLog: Speed= 32.445961
ScriptLog: Speed= 41.090004
ScriptLog: Speed= 38.921555
ScriptLog: Speed= 40.056435
ScriptLog: Speed= 41.638111
ScriptLog: Speed= 33.042042
ScriptLog: Speed= 30.372253

test map attached (look at the camera movement at the end of the game, after the ship explodes)
TestSpeed.zip

In current version the FPS are not exactly the same value, but are constant and do not show any visual noticeable differences from what I can see.

Last beta (2024-01-08)
The glitch with rotation partially fixed,
The glitch with speed has not disappeared.
But it aviable only with HIGH fps.

As far as I can see, the engine recalculates the Projectile velocity every tick, despite the fact that it MUST be a constant.
The MORE OFTEN it recalculates this, the MORE the error accumulates.

You can test map END.UNR with Vsync=off, and FrameRateLimit=600
The camera will move at a different speed each time and stop in different places each time.
(Camera has PHYS_Projectile)
Under certain conditions, the camera may fly out of the world.

In the attached log file, the camera speed (as vsize() of velocity) “shakes” from 19 to 260 uu, despite the fact that it should be constantly 45 uu

Ok, this is not a bug, this is a feature.
Anyone can fix this by limiting the framelimit to reasonable values.

TestSpeed
expected
Unreal.log

About glitch with rotation:
The minimum rotation angle in UnrealEngine is 360/65536 degree = 0.0055 degree

As example RotationRate = 0.0055 degrees per tick at 100 fps.
at 500 fps RotationRate мust be = 0.0011 degrees per tick
Therefore, the actor must turn 0.0055 degrees every 5 tick.

in Old beta (2023-03-29) actor turn 0.0000 degrees every tick (stood still and no rotating).
in New beta (2024-01-08) actor turn 0.0055 degrees every tick ( 5 times faster than necessary).
It's done better than before, but both results are incorrect

I don't know how to fix this or if it is possible to fix it.
Just reporting a bug