Got Stuttering On Pc With Gsync Or Vsync Monitor? - Microsoft Have Released A Patch

Discussion in 'TSW General Discussion' started by paul.pavlinovich, Feb 28, 2021.

  1. hyperlord

    hyperlord Well-Known Member

    Joined:
    May 20, 2019
    Messages:
    1,245
    Likes Received:
    1,270
    This is a good idea! It would be nice to have references to compare the settings on different PCs better and ultimately get more understanding of which vars have which impact on what aspects. Anyway, geloxo provided so much insight already :)

    Nice would be a "test suite" of different scenes happen and you don't need to sit through the entire service could be helpful, too.
     
  2. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Today I found that LGVM route does not like the modifications at all, specially with DX12. Not sure if this is caused by the terrain or by the amount of trees but it behaves worse with lower frame update times... :( Maybe this one has more objects per tile compared to other routes. In that case it may be needed to increase either the frame update times, the granularity/static objects per tile or even both, or maybe we just skip DX12 itself...

    This investigation is not going to be easy at all hahahaha :D

    Cheers
     
    Last edited: Mar 19, 2021
  3. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Update: found the problem with LGVM. Too many actors or static objects creation results in the hitching, so we need to reduce the values to be more balanced between them. Actors are also the trains and skeletal meshes, so that´s why before we could see lag when AI trains were spawned in the tiles too. I left the variables as follows:

    s.UnregisterComponentsTimeLimit=1
    s.LevelStreamingComponentsUnregistrationGranularity=1
    s.LevelStreamingActorsUpdateTimeLimit=5
    s.PriorityLevelStreamingActorsUpdateExtraTime=5
    s.LevelStreamingComponentsRegistrationGranularity=5
    r.Streaming.NumStaticComponentsProcessedPerFrame=20​

    This indeed behaves much better in other routes like Munich and removes the problem in LGVM. These are the current settings which so far are providing the best results to me on all routes and most situations still using DX12 mode (I added an extra variable to set the same purge time also when low memory is available --> 5 minutes scheduled cleaning too):

    [SystemSettings]
    r.MotionBlurQuality=0
    r.TextureStreaming=0
    r.FinishCurrentFrame=1 <<-- Only required in DX12 mode (prevents headlights flickering)
    s.ForceGCAfterLevelStreamedOut=0
    s.ContinuouslyIncrementalGCWhileLevelsPendingPurge=0
    gc.TimeBetweenPurgingPendingKillObjects=300
    gc.LowMemory.TimeBetweenPurgingPendingKillObjects=300
    s.UnregisterComponentsTimeLimit=1
    s.LevelStreamingComponentsUnregistrationGranularity=1
    s.LevelStreamingActorsUpdateTimeLimit=5
    s.PriorityLevelStreamingActorsUpdateExtraTime=5
    s.LevelStreamingComponentsRegistrationGranularity=5
    r.Streaming.NumStaticComponentsProcessedPerFrame=20​

    For the scenery quality I still use the same as before. They are not mandatory at all, so you can use your own settings or just skip them:

    r.StaticMeshLODDistanceScale=0.4
    r.ViewDistanceScale=5
    r.LandscapeLOD0DistributionScale=4 <<-- More efficient at short/medium distances and performance friendly
    foliage.LODDistanceScale=5
    grass.densityScale=1.5
    ts2.passenger.DensityScale=2​

    Note: r.LandscapeLODDistributionScale has a higher hit on performance and it´s not optimal for routes with many terrain gradient changes (like LGVM) as it makes distant terrain very detailed. It´s better to use r.LandscapeLOD0DistributionScale as it still solves the issue of terrain covering tunnels entries and the impact on performance is much lower cause it only changes terrain LOD0.

    I hope this helps ;)

    Cheers
     
    Last edited: Mar 21, 2021
    • Like Like x 2
  4. davidh0501

    davidh0501 Well-Known Member

    Joined:
    Apr 29, 2020
    Messages:
    1,134
    Likes Received:
    1,638
    Hi Geloxo,
    Earlier this evening I ran FGW and was increasingly annoyed by the constant stuttering.
    So I copy pasted your additions to my engine ini.
    And reran the scenario.
    The result was very smooth indeed under dx12.
    Colour me surprised.

    Normally I adjust one parameter at a time and test.
    Since I have spent three days trying to get TSW running smoothly after three win10 reinstalls.
    I could not be bothered anymore. Just did it and hoped for the best.
    Anyway they worked for my 2060rtx.
    Whether it works due to deep knowledge or religious incantation I have no idea.
    I'm just grateful.
     
    • Like Like x 2
  5. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Thanks to you for testing it and confirming the results. Hopefully we can also help DTG with this feedback so that they can also check if the settings are useful for vanilla game as well, so all users get an improved gameplay.

    Cheers
     
  6. paul.pavlinovich

    paul.pavlinovich Well-Known Member

    Joined:
    Aug 21, 2020
    Messages:
    1,684
    Likes Received:
    1,994
    I wonder if my engine.ini settings are making any difference to DX12 working or not in Livery Editor?
    [SystemSettings]
    r.ViewDistanceScale=8
    r.StaticMeshLODDistanceScale=0.70
    foliage.LODDistanceScale=5
    r.ShadowQuality=5
    r.Shadow.DistanceScale=2.0
    r.DefaultFeature.MotionBlur=0
    r.TextureStreaming=0
    r.Streaming.FullyLoadUsedTextures=1
    r.Streaming.HLODStrategy=2
    r.BloomQuality=1
    r.TemporalAASamples=64
    r.SkeletalMeshLODBias=-2
    r.Color.Mid=0.4
    r.HighQualityLightMaps=1
    r.PostProcessAAQuality=6
    r.MaxAnisotropy=16
    r.Tonemapper.Quality=4
    r.Tonemapper.GrainQuantization=1
    r.SceneColorFringe.Max=0
    r.SceneColorFringeQuality=0
    r.LandscapeLODDistributionScale=3
    I put these together from various posts on the forum - I have no idea what most of them do except that I now have a better looking game with decent FPS.
     
    • Like Like x 1
  7. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Read the note I put couple of posts before about r.LandscapeLODDistributionScale. That one has a big impact on performance. If you use the LOD0 version of that variable results are similar and performance is better.

    Cheers
     
  8. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Ok... I think we have a winning set here. After extensive testing on the routes this is the best I could get out of game and it works pretty well on all routes (at least on my system). You may need to fine tune those values for your system but I think they are a good starting point for most systems. In some routes like HRR it virtually removed all stuttering, including the one when approaching Essen, which is a pretty heavy tile. In others due to extremely heavy density on tiles with yards and big stations it´s impossible to get anything better and there will be still some hitching, specially when several AI trains are inside the tile.

    I removed some parameters that didn´t provide any clear improvements and left the config as follows:

    [SystemSettings]
    r.MotionBlurQuality=0
    r.TextureStreaming=0
    r.FinishCurrentFrame=1 <<-- Only required in DX12 mode (prevents headlights flickering)
    s.ForceGCAfterLevelStreamedOut=0
    s.ContinuouslyIncrementalGCWhileLevelsPendingPurge=0
    gc.TimeBetweenPurgingPendingKillObjects=300
    gc.LowMemory.TimeBetweenPurgingPendingKillObjects=300
    s.UnregisterComponentsTimeLimit=1 <<-- Same as default value, so it can be removed from config
    s.LevelStreamingComponentsUnregistrationGranularity=1
    s.LevelStreamingActorsUpdateTimeLimit=5 <<-- Could be increased to 10 if you have too much hitching
    s.PriorityLevelStreamingActorsUpdateExtraTime=5 <<-- Could be increased to 10 if you have too much hitching
    s.LevelStreamingComponentsRegistrationGranularity=5 <<-- Could be increased to 10 if you still have some stuttering
    r.Streaming.NumStaticComponentsProcessedPerFrame=30 <<-- Could be increased if you have stuttering but may produce hitching even on regular tiles

    The best results I was able to get on my case (lowest stuttering and hitching) were using the following values, but they may be too extreme for the rest of systems:

    s.LevelStreamingActorsUpdateTimeLimit=5
    s.PriorityLevelStreamingActorsUpdateExtraTime=5
    s.LevelStreamingComponentsRegistrationGranularity=5
    r.Streaming.NumStaticComponentsProcessedPerFrame=15​

    For the scenery quality I still use the same as before. They are not mandatory at all, so you can use your own settings or just skip them:

    r.StaticMeshLODDistanceScale=0.4
    r.ViewDistanceScale=5
    r.LandscapeLOD0DistributionScale=4 <<-- More efficient at short/medium distances and performance friendly
    foliage.LODDistanceScale=5
    ts2.passenger.DensityScale=2

    Note: r.LandscapeLODDistributionScale has a higher hit on performance and it´s not optimal for routes with many terrain gradient changes (like LGVM) as it makes distant terrain very detailed. It´s better to use r.LandscapeLOD0DistributionScale as it still solves the issue of terrain covering tunnels entries and the impact on performance is much lower cause it only changes terrain LOD0.
    Final conclussions

    1) Garbage collector definitely has a huge impact, specially when it´s triggered at the same time of a new level creation. I would recommend to disable it and just use the scheduled cleaning of objects every 5-10 minutes as memory usage is not increasing too much.

    2) The lower the TimeLimit per frame for object creation and the lower the amount of objects to process per frame the less stuttering, but they shall not go below 1ms per frame or 1 object per frame or the process won´t be completed in time and eventually you will have partial or incomplete scenery rendering. TimeLimit can be increased while objects amount is still small to reduce hitching but it may generate stuttering if increased too much.

    3) When static mesh generation (r.Streaming.NumStaticComponentsProcessedPerFrame) is too high we generate hitching when new tiles are loaded. If it´s too low the process won´t complete in time and that will also generate hitching as all pending tasks will be forced to finish anyway when tile is loaded. The default value of 50 is clearly not the best. I found 20-30 to be much better values for most situations.

    4) If tile generation includes an AI train generation at the same time then hitching will be produced, no matter what settings you use. However if tile has been already created and AI train is spawned shortly afterwards then you should have no hitching. Try to test several services or even use an empty scenario (without any AI) created with scenario designer to determine if the problem is related to that tile or just caused by AI traffic. If the tile is the guilty one then it may be some room for parameters tweaking provided that it´s not a heavy one, as those are pretty hard to improve. If it was the AI traffic this is a general issue affecting all routes so you may only be able to solve it by reducing graphical quality.

    Cheers
     
    Last edited: Mar 30, 2021
    • Like Like x 5
    • Helpful Helpful x 3
  9. hyperlord

    hyperlord Well-Known Member

    Joined:
    May 20, 2019
    Messages:
    1,245
    Likes Received:
    1,270
    Woah geloxo you keep releasing better inis faster than I can test ;-) We should start thinking about using an SVN hehe

    Before I now apply your latest tweaks I want to report back what "changing to 30" and using LOD0 already did for my system: constant +5 FPS and absolutely now hangs, small(est) stuttering when riding into big yards (Hagen) I played until late into the night and was too tired to report back (actually I got caried away reading Clinchfield stuff because reasons).

    What you found out about the tuning of the GC is IMHO pure gold. I really hope some DTG staff sees the potential of all that and passes it to the engine team (that in my wildest dreams is already working on a new "advanced graphic-settings UI for PC users that will surprise everyone and would be a welcome christmas gift") to be merged with their findings.

    Now I changed the values for
    r.Streaming.NumStaticComponentsProcessedPerFrame
    s.LevelStreamingComponentsRegistrationGranularity
    s.LevelStreamingComponentsUnregistrationGranularity
    s.LevelStreamingActorsUpdateTimeLimit
    s.PriorityLevelStreamingActorsUpdateExtraTime

    since those where the once you posted new values for just now. I'll report back again but I think the result will not worsen (all changed values were lowered)
     
    • Like Like x 1
  10. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    The value of 30 is also a good one. If it behaves better for you then nice. Indeed is less agressive than 20 and there´s no magic combination that will work well for everybody. I have updated the previous post to keep 30 as proposed value for the static components. I think is better for everybody.

    Cheers
     
  11. paul.pavlinovich

    paul.pavlinovich Well-Known Member

    Joined:
    Aug 21, 2020
    Messages:
    1,684
    Likes Received:
    1,994
    Definitely different results for different systems... I tried
    s.ContinuouslyIncrementalGCWhileLevelsPendingPurge=0
    s.LevelStreamingComponentsUnregistrationGranularity=1
    s.ForceGCAfterLevelStreamedOut=0
    gc.TimeBetweenPurgingPendingKillObjects=300
    gc.LowMemory.TimeBetweenPurgingPendingKillObjects=300
    r.FinishCurrentFrame=1
    s.LevelStreamingActorsUpdateTimeLimit=5
    s.PriorityLevelStreamingActorsUpdateExtraTime=5
    s.LevelStreamingComponentsRegistrationGranularity=10
    r.Streaming.NumStaticComponentsProcessedPerFrame=20

    I dropped from 90fps without these settings to 20ffps when coming out of Koln accelerating to 150km/h (about as fast as you can go without derailing) with it increasing to 30fps about the time you see the first AI train then settling to 40fps after you go through the underpass. I didn't notice any decrease in stutter and did notice an increase in flickering of some of the OHLE.

    I've pulled the settings out again for now and will come back to them later when I have more time to play.

    For reference 10th gen i5 10700 and RTX3070
     
  12. JetWash

    JetWash Well-Known Member

    Joined:
    Mar 6, 2021
    Messages:
    2,367
    Likes Received:
    8,769
    90fps?! Bleedin heck!

    What resolution is that? That 3070 must be some bit if kit if that’s 4K.

    ps I found those settings mullered my game too. From a mostly smooth capped 60fps to a jittering 30-40. All these edits are so system dependent, it would be really neat if DTG would just take the shackles off the PC version and give us the ability to configure our own setup in-game.
     
    Last edited: Mar 25, 2021
  13. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
    Wow, I just tested this on HMA and it worked really well! I usually have pretty horrible stuttering when driving at high speeds (especially in DX12) but this has reduced my stuttering to almost nothing. I have not had any memory issues yet, but I am not very worried about garbage collection since I have 32GB of RAM. Thank you so much for sharing your findings, geloxo.

    Cheers
     
  14. paul.pavlinovich

    paul.pavlinovich Well-Known Member

    Joined:
    Aug 21, 2020
    Messages:
    1,684
    Likes Received:
    1,994
    a
    2k :)
     
  15. solicitr

    solicitr Well-Known Member

    Joined:
    Jun 20, 2020
    Messages:
    11,734
    Likes Received:
    17,949
    Sadly, this absolutely murdered my framerate- as in 15-20fps. Prob a good tweak for higher-horsepower systems than mine.
     
  16. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    The performance problem is caused by r.FinishCurrentFrame=1. But this is only really needed if you use DX12 and want to prevent the headlights flickering issue. The parameter affects performance very much as it won´t allow the usage of buffered frames. It´s benefit is the latency reduction when running at higher fps.

    Just remove it and go with DX11 instead as the other tweaks are still valid. I got the best results under DX11 when running at 60Hz as the game turns really choppy when it´s not able to maintain a stable FPS value and in my case 60 FPS is an achievable value most of the time. But if you intent to reach stable FPS with the rendering going from 40 to 90 and back to 50 fps you won´t get a real steady video output. It will look like a steady one when the fps are high as the image frequency is very high but the reality is that it stutters like hell whenever the FPS are changing. That´s why is very important to produce a stable fps output taking away all those things like garbage collector, as that helps to maintain your fps in a constant range most of the time. You can see those effects if you record a video or monitor your FPS value with an external software for instance.

    Cheers
     
    Last edited: Mar 26, 2021
    • Helpful Helpful x 1
  17. solicitr

    solicitr Well-Known Member

    Joined:
    Jun 20, 2020
    Messages:
    11,734
    Likes Received:
    17,949
    Oh, yeah. I always limit fps.
     
  18. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    This are the results in action. That service is one of the services I have used for testing, as it puts rendering to its knees due to high speed and very frequent tile loading. I just recorded it with DX11 mode and without the r.FinishCurrentFrame=1 parameter. I run it at 1080p 60fps and 200% scaling.

    You can see some hitching when the duplex passes by and when some heavy tiles are loaded but on top right of screen you will notice how fps just drop by 2 or 3 only. The steady 60 is the key for the best results. Anything going up and down your nominal refresh rate or not even reaching it will eventually produce the terrible effects we all know. Enjoy it :)



    Cheers
     
    Last edited: Mar 27, 2021
    • Like Like x 1
  19. solicitr

    solicitr Well-Known Member

    Joined:
    Jun 20, 2020
    Messages:
    11,734
    Likes Received:
    17,949
    Geloxo, what gear do you have under the hood? I can't hope to reach 60 (or even 45) with those settings
     
  20. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    I have an i9-9900K, Nvidia RTX 2080Ti, 32Gb RAM and 860 EVO SSD disks. No overclock and no magic behind it, except the tweaks and my brand new standalone video capture card (although Youtube ruined the original video). Game is capable of performing very well. They just need to seriously take some time to tune it properly. I will try to upload more videos as soon as I get used to the new capture card.

    Cheers
     
  21. solicitr

    solicitr Well-Known Member

    Joined:
    Jun 20, 2020
    Messages:
    11,734
    Likes Received:
    17,949
    That's a bit like "I have a Lamborghini Huracan Performante, no hotrodding and no retune behind it."
     
    • Like Like x 3
  22. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Hahahaha. Yes. But target was to try to get the best out of this nightmare. I mean... out of this lovely game. Isn´t it? Then test was successfully passed with the Lambo :D

    Cheers
     
    • Like Like x 1
  23. paul.pavlinovich

    paul.pavlinovich Well-Known Member

    Joined:
    Aug 21, 2020
    Messages:
    1,684
    Likes Received:
    1,994
    My monitor is g-sync it doesn't seem so it doesn't seem to care that much about the changing frame rate. I've tried with limiting the fps and without - seems the same to me.
     
    • Like Like x 1
  24. Cotax

    Cotax Well-Known Member

    Joined:
    Mar 25, 2021
    Messages:
    150
    Likes Received:
    329
    i7 4770k, 16 GB, 1070 8GB GTX, EVO 840 SSD here on 1080p with 144hz GYSNC monitor.

    I will try to experiment with the solutions provided, but would be very happy for basics (i find all the settings above overwhelming, and will probably pull my hair when figuring out what is what)

    DX 12 = Yes or No?
    r.TextureStreaming=0 - why?
    Are there any specifics "perfomance hitters" with little to no effect in graphics, like r.FinishCurrentFrame=1 ?

    I am searching for best perfomance/quality ratio, above 60fps ofcourse. Currently i have DX12 enabled, motion blur OFF and settings to medium (inside the game). I am hitting 40-120 fps, not very steady.. Mostly around 80fps. Would like to stabilize this thing and maybe improve quality with it.
     
  25. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
    I think for your hardware, the DX12 setting may not be necessary. I think that your 4770K should keep up fine with your GTX 1070 in pretty much all areas. In busy yards, there might be some difference but I am not sure that the difference would be great enough to have to deal with all the side effects of enabling DX12.

    In most areas like the mainline, you will probably find better performance in DX11 since you should be GPU-bottlenecked. If you enable DX12, you would be offloading some work to the already-maxed GPU and might get lower framerates. I would say, try a few different areas (mainline, yard, busy terminus) in both modes and see if there is a significant difference. If the difference is minimal, I would recommend sticking to DX11 since it has a more stable framerate without needing to dive into Engine.ini tweaks.

    Disabling texture streaming means that assets are fully loaded with each tile instead of continually loaded as you drive along. This means that while you may have less frequent stutters between tiles, you will likely have quite significant freezes upon each new tile load. The reason to use this command is that when DX12 mode is enabled, there is some texture loading artefacting whereby they will spontaneously show in really low resolution for a split second, and disabling texture streaming fixes that. Keeping it enabled will make for more consistent framerates though the tile-load stuttering can still be reduced with other Engine.ini commands if it were disabled.

    Generally, if you are using DX11, you should keep texture streaming on. If you are using DX12, you should turn it off.

    r.FinishCurrentFrame=1 will likely murder your framerate if you don't have crazy hardware. It solves the issue of headlight flicker in DX12 (noticing how fiddly DX12 is to deal with?) but it tanks the framerate to do so. I would not recommend it if at all possible. I can just barely touch 60 FPS with it enabled on my RTX 3080. Another one is r.ViewDistanceScale. This one does improve distant scenery but only to a point. In my opinion it has little effect above a setting of 2 or 3, so setting it higher will start to hurt performance with little visual benefit.

    With your hardware, you should be able to set everything to Ultra and still have a little headroom. I would start there for visual improvements and look into Engine.ini tweaks after.

    Just to recap: you will most likely be fine with DX11 and texture streaming enabled. This is a good thing, because in order to use DX12 properly, you need a lot of additional tweaks and workarounds, and it seems to get buggier and glitchier with every update.

    Cheers
     
    • Like Like x 2
    • Helpful Helpful x 1
  26. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Cotax, you don´t need DX12 at all. Indeed I recorded the video with DX11 only and you see the good results. DX12 is more effective at higher FPS, as the heavy scenery bottlenecks affect both DX11 and DX12 and reduce the FPS on both anyway. The important thing to remember is that in case you go DX12 you need r.FinishCurrentFrame=1 and if you go with DX11 you don´t need that setting (it´s set to 0 in default config).

    As Callum explained r.ViewDistanceScale is not increasing the overall scenery too much (the max draw distance is capped in engine) but it still increases the track sleepers and rails detail distance, so you can use values of 5 to 10 to get better drawing. It affects performance in yards, so be carefull and test the best values for you.

    Cheers
     
    • Like Like x 1
  27. Cotax

    Cotax Well-Known Member

    Joined:
    Mar 25, 2021
    Messages:
    150
    Likes Received:
    329
    Thank you both for quick, very detailed and high quality answers! What a community!

    I always thought (read on steam forums) that DX12 makes better use of GPU and mostly gives FPS boost. Guess i was wrong! So, what's the main reason to use DX12 instead DX11? Better image quality? But is it really that noticable?

    Can't wait to come home and experiment - will report! Just one more question - first i set the settings inside the game -> then i set the .ini? Does inside settings override .ini?
     
    • Like Like x 1
  28. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    It´s true that DX12 gives better performance but in order to reduce stuttering what you need is stable FPS, not high fps. If you use 60Hz for your monitor (even if it´s a 144Hz one) game will target to 60fps. If you use 120Hz it will be much harder for game to achieve 120fps all the time. So the closer you can stay to a fps value matching your monitor refresh rate in most parts of the route the less overall stuttering you will have. For that purpose the above engine.ini settings are the ones helping you.

    If you are not using G-sync monitors you can also try the following trick to render at lower fps targets on high refresh rates monitors:

    Anti-stuttering Trick: Force Game To Render At A Fixed Fps Target | Dovetail Games Forums

    Cheers
     
    Last edited: Mar 29, 2021
    • Like Like x 2
  29. Cotax

    Cotax Well-Known Member

    Joined:
    Mar 25, 2021
    Messages:
    150
    Likes Received:
    329
    So i've tried some variants.

    Set everything to ultra (expect foliage to medium, ultra is just too much "bushy" for me).
    Antialiasing = FXAA (TAA looks blurry, i don't like it)
    Scaling = 120% (What exactly is this.. ? What do you recommend?)

    First - DX 11 is just bad for me. I get 20-30fps less and far more stuttery (without touching config). So i went back to DX 12.

    Then i set this inside config:

    [SystemSettings]
    r.TextureStreaming=0
    r.Tonemapper.Quality=0
    r.DefaultFeature.MotionBlur=0
    r.MotionBlurQuality=0
    s.ForceGCAfterLevelStreamedOut=0
    s.ContinuouslyIncrementalGCWhileLevelsPendingPurge=0
    gc.TimeBetweenPurgingPendingKillObjects=300
    gc.LowMemory.TimeBetweenPurgingPendingKillObjects=300
    s.UnregisterComponentsTimeLimit=1
    s.LevelStreamingComponentsUnregistrationGranularity=1
    r.StaticMeshLODDistanceScale=0.4
    r.ViewDistanceScale=5
    r.LandscapeLOD0DistributionScale=4
    foliage.LODDistanceScale=5
    grass.densityScale=1.5
    ts2.passenger.DensityScale=2

    To tell you the truth, i have no idea for 80% of those parameters what they mean, but i get stable 60-90fps and very nice picture. The only thing that kills it, is if i zoom the smoke coming from diesel locomovite (then FPS falls to 30).

    I am very happy for now, but i have to test it more (only ran 3 different routes). Would you add or remove any parameter?

    Thanks!
     
    • Like Like x 1
  30. fanta1682002

    fanta1682002 Well-Known Member

    Joined:
    Dec 22, 2019
    Messages:
    1,175
    Likes Received:
    561
    my pc i7 6900k GTX 1080TI SLI PLAY TSW2 DX11 Antialiasing = TAA Scaling = 150%
    r.ViewDistanceScale=5
    r.StaticMeshLODDistanceScale=0
    foliage.LODDistanceScale=7
    r.SkeletalMeshLODBias=-5
    r.EyeAdaptationQuality=0
    r.MaterialQualityLevel=0
    r.Color.Mid=0.4
    r.BloomQuality=1
    r.DefaultFeature.MotionBlur=0
    r.HighQualityLightMaps=1
    r.PostProcessAAQuality=6
    r.MaxAnisotropy=16
    r.LandscapeLOD0DistributionScale=3
    r.TemporalAASamples=64
    r.Tonemapper.Quality=4
    r.Tonemapper.GrainQuantization=1
    r.SceneColorFringe.Max=0
    r.SceneColorFringeQuality=0
    r.Shadow.DistanceScale=2.0
    r.ShadowQuality=5
    r.TextureStreaming=1
    grass.densityScale=1.5
    r.Streaming.NumStaticComponentsProcessedPerFrame=30
    s.ForceGCAfterLevelStreamedOut=0
    s.ContinuouslyIncrementalGCWhileLevelsPendingPurge=0
    gc.TimeBetweenPurgingPendingKillObjects=300
    gc.LowMemory.TimeBetweenPurgingPendingKillObjects=300
    s.UnregisterComponentsTimeLimit=1
    s.LevelStreamingComponentsUnregistrationGranularity=1
    s.LevelStreamingActorsUpdateTimeLimit=10
    s.PriorityLevelStreamingActorsUpdateExtraTime=10
    s.LevelStreamingComponentsRegistrationGranularity=10
     
    Last edited: Mar 29, 2021
    • Like Like x 1
  31. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
    It does, but in your case, I think your GPU is already being fully utilised so there will not be much benefit. At least, when I was using a GTX 1070 the game was utilising it pretty fully in DX11.
    The best scenario to use DX12 is when you are being heavily CPU bottlenecked, where the GPU is being underutilised and starving for draw calls. You have a pretty fast and capable gaming CPU so you should be pretty okay. I, on the other hand, use a lower-clocked server/workstation processor (E5-2697 v3) that would otherwise be a huge bottleneck to my RTX 3080 in DX11. But enabling DX12 dramatically increases the average framerates—often by double—because a lot of processing is offloaded from my lower-clocked CPU to my RTX 3080, allowing it to be fully utilised. For me, this is worth it enough to deal with all of DX12's quirks and taming the beast with .ini tweaks.

    Cheers
     
    • Like Like x 1
  32. hyperlord

    hyperlord Well-Known Member

    Joined:
    May 20, 2019
    Messages:
    1,245
    Likes Received:
    1,270
    THIS is utterly important, can't stress this out enough!

    One of the last things I was able to upgrade in my rig was RAM (16 GB -> 24 GB). Yesterday I changed my remaining modules with bigger (2GB replaced with 4 GB) ones and I'm now using DDR3 triple channel (please stop loughing, thanks). I tried some playing around with resolution / DSR and so on and I'm now settled with WQHD@130% running @ 30-35 FPS (stable). The visual fidelety (ini tweaks, no "jumpy overhead lines, fences, tracks) and performance is now perfectly balanced for me and I'm enjoying TSW more than EVER.

    i7 965 @ 3,2 GHz
    24 GB RAM (DDR3)
    SSD connected via SATA2
    RTX 2060 Super
    2560x1440 130% scaled
    VSync on via NVIDA, off ingame
    VSync fast via NVIDIA
    Max FPS ingame: 45
    GSync active

    [SystemSettings]
    r.MotionBlurQuality=0
    r.MaxAnisotropy=16
    r.ViewDistanceScale=3
    r.LandscapeLODBias=-2
    r.LandscapeLOD0DistributionScale=5
    r.StaticMeshLODDistanceScale=0.5
    r.SkeletalMeshLODBias=-5
    r.MipMapLODBias=-3
    r.HighQualityLightMaps=1
    r.CreateShadersOnLoad=1
    r.TextureStreaming=0
    r.Streaming.FullyLoadUsedTextures=1
    r.Streaming.HLODStrategy=2
    r.Streaming.UseFixedPoolSize=1
    r.Streaming.PoolSize=0
    r.Streaming.NumStaticComponentsProcessedPerFrame=30
    s.LevelStreamingComponentsRegistrationGranularity=10
    s.LevelStreamingComponentsUnregistrationGranularity=1
    s.LevelStreamingActorsUpdateTimeLimit=5
    r.ShadowQuality=5
    r.Shadow.DistanceScale=2.0
    r.Shadow.FilterMethod=1
    r.Shadow.MaxResolution=4096
    r.DefaultFeature.MotionBlur=0
    r.AmbientOcclusionLevels=4
    r.DepthOfFieldQuality=0
    r.TemporalAASharpness=1.0
    r.TemporalAASamples=64
    r.TemporalAAFilterSize=1.0
    r.TemporalAAPauseCorrect=1
    r.PostProcessAAQuality=6
    r.EyeAdaptationQuality=3
    r.ToneMapper.Sharpen=1
    r.MaterialQualityLevel=1
    r.SSR.Quality=2
    grass.densityScale=1.5
    r.BloomQuality=3
    foliage.ForceLOD=0
    foliage.DitheredLOD=8
    foliage.DensityScale=2.0
    foliage.LODDistanceScale=5
    s.ForceGCAfterLevelStreamedOut=0
    s.ContinuouslyIncrementalGCWhileLevelsPendingPurge=0
    gc.TimeBetweenPurgingPendingKillObjects=300
    gc.LowMemory.TimeBetweenPurgingPendingKillObjects=300
    s.PriorityLevelStreamingActorsUpdateExtraTime=5
     
    Last edited: Mar 30, 2021
  33. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
    Somewhat of a tangent, but if you're looking for a decent in-socket CPU upgrade, you might be able to snag something like a Xeon W3680 for cheap from eBay or AliExpress. I had one overclocked to 4.0GHz no problem, on all 6 cores. ;) It also supports slightly faster DDR3: 1333MHz.

    upload_2021-3-30_1-31-29.png

    The X58 platform is legendary!

    Cheers
     
    • Like Like x 2
  34. maxipolo12

    maxipolo12 Well-Known Member

    Joined:
    Apr 24, 2020
    Messages:
    662
    Likes Received:
    955
    So guys what are the best settings so far ? Everyone posts their settings but I´m a bit lost :D
     
  35. hyperlord

    hyperlord Well-Known Member

    Joined:
    May 20, 2019
    Messages:
    1,245
    Likes Received:
    1,270
    • Like Like x 1
  36. Shaun123

    Shaun123 Well-Known Member

    Joined:
    Jan 22, 2018
    Messages:
    488
    Likes Received:
    1,304
    Last night I tried every combination of the following settings using LGV Marseille-Avignon which is a good route to test these things on.

    I tried every combination of - DX11/VSync On/Off, GSync On/Off and DX12 VSync On/Off, GSync On/Off.

    DX12 VSync On, GSync, FPS locked at 60 was my best combination, very small, infrequent stutters.

    What else helped, I noticed, in my Windows settings, I had variable refresh rate ticked, so I unticked that, and noticed an improvement. As my monitors refresh rate is 144hz it should have synced with the FPS the refresh rate was bouncing round between 57-62hz, via the monitor settings tab.

    Now I run 144hz monitor 2560x1440 locked at 60FPS (I can run at 144FPS, in some routes) but we want stable frames.

    My setup is

    i7 9700k 8 core
    RTX 2080 Super
    32GB Ram
    2TB HDD
    480 GB SSD

    TSW2 is installed on my SSD.

    I take it my setup isn’t what is limiting me at times is it?
     
    Last edited: Mar 30, 2021
    • Like Like x 1
  37. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
  38. hyperlord

    hyperlord Well-Known Member

    Joined:
    May 20, 2019
    Messages:
    1,245
    Likes Received:
    1,270
    Got an MSI Eclipse SLI, after quickly checking the specs it seemed to me it could handle it :D
     
  39. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
    Okay, well if for some reason that one does not work, the i7-980X is essentially the same silicon, just without ECC memory support (which you don't need to worry about). Sadly the i7 is more expensive.

    Cheers
     
  40. fanta1682002

    fanta1682002 Well-Known Member

    Joined:
    Dec 22, 2019
    Messages:
    1,175
    Likes Received:
    561
    my asus X99-DELUXE ll motherboards cpu i7 6900k GTX1080TI SLI RAM 32GB
     
  41. maxipolo12

    maxipolo12 Well-Known Member

    Joined:
    Apr 24, 2020
    Messages:
    662
    Likes Received:
    955
    We have all configs which can run Cyberpunk in pretty ok conditions but we all struggle with TSW :D
     
    • Like Like x 1
  42. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Guys I have noticed that grass.densityScale has a severe impact on performance on Rivet´s routes. Maybe because they use a quite dense grass layout indeed compared to the rest of routes. So going with any value higher than default value (grass.densityScale=1) can drop up to 10 fps in some areas. I would not recommend using this setting therefore.

    Cheers
     
    • Like Like x 2
    • Helpful Helpful x 1
  43. Shaun123

    Shaun123 Well-Known Member

    Joined:
    Jan 22, 2018
    Messages:
    488
    Likes Received:
    1,304
    Me again! (sorry!)

    Another thing I’ve found in combination with the advice on this thread, in looking deeper into VSync/GSync & FPS.

    Now, I’m very much a novice compared to geloxo but playing around, I’ve now found if you limit the FPS in game (I do anyway to 60), go into Nvidia Control Panel and limit the FPS in both the global and add TSW2 to the program settings to 60 it makes an enormous difference.

    Stutters, hangs, are now virtually non-existent, with the exception of the odd tile loading stutter, which I guess we may never completely eliminate, in the 6 months I’ve had my new PC, TSW2 is running the smoothest, and visually the best it’s ever been thanks for the advice on this thread, and some experimenting myself.

    I’ve tested it on both SEHS and LGV so far, the difference is very noticeable, and pleasing!
     
    • Like Like x 1
  44. davidh0501

    davidh0501 Well-Known Member

    Joined:
    Apr 29, 2020
    Messages:
    1,134
    Likes Received:
    1,638
    I’d be curious to know what percentage of cpu power is devoted to the Simugraph engine.
    And how does it impact graphic performance.
     
    • Like Like x 1
  45. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
    I am curious as to how the physics is multithreaded (I am assuming, of course, that the physics are multithreaded at all) such as different trains being computed on different threads, similar to how Beam.NG handles multiple vehicles. One thing is for sure, ultra-long freight trains (like that 300-car coal train mod for SPG) have a severe impact on performance, so it seems that the complex physics of the player's train are at least somewhat bound to a single thread.

    Cheers
     
  46. hyperlord

    hyperlord Well-Known Member

    Joined:
    May 20, 2019
    Messages:
    1,245
    Likes Received:
    1,270
    Just came back here to shout out a big thank you to Callum B. , your tip with the CPU was incredible. The CPU performs like a real beast, I never had thought my PC is still capable of such a boost. I used the first time the overclocking features from my motherboard and "softly" run it at 3,8 GHz. My GPU got a little overclocking, too - Memory +200 MHz.
    Then I got wild because something came to my mind I wasn't aware of for years (because I remember Intel Optane costs like 1000€ and for miy PCIeGen2 this is overkill): I bought an Icy-Box PCIe M.2 SSD Expansion Card (with heatsink) and an Crucial M2 SSD, moved TSW to this storage exclusively. So my storage isn't a bottleneck anymore, too.

    I don't have to add TSW2 performs so awesome I can't belive it. I'll rock my rig until it burns, never thought a platform could last 15 years :D

    Before:
    Volume P_before.JPG

    After:
    Capture3.JPG
     
    • Like Like x 4
  47. Cotax

    Cotax Well-Known Member

    Joined:
    Mar 25, 2021
    Messages:
    150
    Likes Received:
    329
    Very nice! :)

    I've have found that game is very demanding. For i7 4770k (clocked @ 4.1ghz) and 1070 GTX it's actually CPU bottlenecked. The GPU sometimes waits for CPU, it's very evident (trains passing, long trains, junctions..). I can fell how CPU is staying behind. Also, SSD is a must! M2 even better.

    Must upgrade! But i am waiting for next generation CPU's and Mobos for DDR5 support. 2021 is NOT a good year for buying a new PC. (prices, stock, ddr5 around the corner).
     
    • Like Like x 2
  48. geloxo

    geloxo Well-Known Member

    Joined:
    Nov 21, 2018
    Messages:
    956
    Likes Received:
    1,694
    Let it burn then till you reach 1000fps at Hagen! Hahaha :D Nice to see that you guys get better performance. Remember that shadows and viedistance are quite demanding. Don't go too extreme with those settings.

    Cheers
     
    • Like Like x 2
  49. Callum B.

    Callum B. Well-Known Member

    Joined:
    Aug 9, 2018
    Messages:
    1,638
    Likes Received:
    2,844
    Awesome! Glad to hear it's working properly. :)

    Cheers
     
  50. Cotax

    Cotax Well-Known Member

    Joined:
    Mar 25, 2021
    Messages:
    150
    Likes Received:
    329
    Sometimes when i change camera (from external to internal and other way around) i get "dust" on windscreen. I can wipe it off with a wiper lol. Any idea what is this glitch? DX12 setting. If i violently change from internal to external camera very fast, it dissapears.

    upload_2021-4-12_22-10-18.png

    upload_2021-4-12_22-10-36.png
     
    • Like Like x 1

Share This Page