stijn-volckaert / udemo

Demo Manager for Unreal Tournament
7 stars 2 forks source link

Severe FPS drops during demo playback #132

Closed BerserkerBG closed 1 year ago

BerserkerBG commented 1 year ago

I have a demo file that has really bad FPS drops using Time Based playback, I believe it could be caused by the 2 loop movers in the map. During live gameplay none of the fps drops were there. Live gameplay is very smooth with high fps, but demoplay is terrible.

During demo playback fps drops to 60-30 fps or sometimes even 5 fps in some places. Interesting observation is when I use slomo 0.3 the fps drops are gone and the demo play is nice and smooth (fps is normal too) - but if I go back to slomo 1, the fps drops are back. Seekto also seems to struggle a lot on this demo, its a very short demo (one minute). If you try seekto on this demo, you will notice how slow it is and it will most likely freeze your UT for a long time. I really believe this issue to be caused by the 2 loop movers in the map, this is the first time it has happened to me. I tested 469c and 469d demo playback and I get the same results.

Here is the demo with the needed files: DemoFPSdrops.zip

Another thing to note, if you try to use "slomo 2" with this demo, you will get a slideshow with constant UT freezing. This could be also issue with Time Based playback. If I play back demo as "Frame Based" or "Fast as possible", the FPS is much better. Time Based playback FPS is very bad.

SeriousBuggie commented 1 year ago

HUD make heavy flood in the log. One playback make my log at 467 MB. 2691497 lines in it.

Number before lines is count times appear in the log:

  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:0073) Accessed None 'C'
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:0082) Accessed None 'C'
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:008A) Attempt to assign variable through None
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:00A7) Accessed None 'C'
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:00B6) Accessed None 'C'
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:00DB) Accessed None 'C'
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:00E3) Attempt to assign variable through None
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:0124) Accessed None 'C'
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:0134) Accessed None 'C'
  2064 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:0191) Accessed None 'C'
 58824 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderObjectives:0011) Accessed None 'C'
 58824 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderObjectives:002A) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:00D8) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:00E0) Attempt to assign variable through None
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:00F4) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:02ED) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:031F) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:03C9) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:03F1) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:03F9) Attempt to assign variable through None
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:040A) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:0412) Attempt to assign variable through None
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderStringF:0422) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:017B) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:01AD) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:01DF) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:0211) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:022B) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:0253) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:025B) Attempt to assign variable through None
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:026C) Accessed None 'C'
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:0274) Attempt to assign variable through None
 88236 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.RenderTextureF:0295) Accessed None 'C'
233232 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:01F4) Accessed None 'C'
233232 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:0204) Accessed None 'C'
233232 ScriptWarning: BTME_HUDConfigurationSimple CTF-BT-Heartcollector.BTME_HUDConfigurationSimple1 (Function BTME_v4.BTME_HUDConfigurationBase.CalcAmmoHUDOffset:0256) Accessed None 'C'
SeriousBuggie commented 1 year ago

Bad written code of BTME_v4. It use remote call, with transfer Canvas over net. OFC Canvas, if ever exists on server, never exists on client. So it turn to None. Always. And it make flood in the log. Since it come on each packet, on each frame - more faster playback make more huge flood in the log. It is simple bad written mod.

Possible it work on real server, since HUD spawn only on clients. But for demo, client act like server and replication rules start work here.

This can't be fixed. Mod must be fixed itself.

What can be done, for make impact less - improve performance of logging subsystem, but in general this not really matter. 467 MB for 58 seconds of playback it just insane amount, which always make lag.