Ho sempre riscontrato un problema fastidioso con tutte le versioni di TSW ma sull'ultima era peggiorato ulteriormente: nonostante il frame rate fosse sempre alto avevo delle continue micropause ogni tot secondi che interrompevano continuamente lo scorrimento dello scenario, a volte si bloccava anche per qualche secondo nonostante il gioco fosse installato su un SSD prestante; con i treni AV il problema era ancor più fastidioso perché rovinava completamente la sensazione di andare veloci. Vista la situazione ho deciso di documentarmi un po' e credo di esserne finalmente venuto a capo. Inizio col dire che TSW 4 ha la possibilità di girare in directx 12, quindi chi è in possesso di una scheda video compatibile con queste librerie ha già un vantaggio; gli sviluppatori per il momento non hanno inserito un'opzione apposita ma i giochi sviluppati con UE possono essere avviati con un parametro: nel nostro caso è sufficiente inserire
-DX12 tra le opzioni di avvio del gioco su steam. Le directx 12 permettono di attivare alcune opzioni che aiutano molto ad aumentare la fluidità ma, per poterle inserire, è necessario modificare con un editor di testo il file
engine.ini presente nella cartella utente di windows: c:\Utenti\Nomeutente\Documents\my games\TrainSimWorld4\Saved\Config\WindowsNoEditor\Engine.ini
Purtroppo non esiste un'impostazione generale che possa andare bene per tutti, ovviamente ognuno deve impostare le opzioni in base alle caratteristiche del proprio pc, soprattutto riguardo il quantitativo di memoria della scheda video dedicata; nello specifico:
r.Streaming.PoolSize=7168
r.Streaming.MaxTempMemoryAllowed=5120
r.Shadow.WholeSceneShadowCacheMb=5120Io ho una scheda video con 8 Gb di ram ed ho deciso di assegnarne 7 per la gestione del PoolSize e 5 per le altre 2 (basta moltiplicare il quantitativo di Gb per 1024, es. 7x1024=7168)
Ho lavorato parecchio sulle opzioni che ho trovato sui forum, in particolare su queste 2 discussioni:
-
https://forums.dovetailgames.com/threads/please-optimize-tsw4-engine-ini.73687/-
https://www.trainsimcommunity.com/mods/c3-train-sim-world/c105-ini-tweaks/i3889-tsw4-to-d4-lighting-overhaul (ho scaricato il file "3 High V2.1.ini" a fondo pagina)
Come risultato finale ho ottenuto anche un miglioramento grafico, è spiegato tutto sul secondo link. Ora giocare a 200 Km/h ed oltre è una vera goduria, niente più interruzioni tranne qualche accettabilissimo istante per il caricamento di qualche oggetto. Come opzioni grafiche sul gioco ho impostato il preset alto (non ultra) con l'opzione del cielo su molto alto.
Indico di seguito la sezione
[SystemSettings] che ho inserito sul file engine.ini se volete utilizzarlo vi ribadisco di impostare correttamente i 3 parametri che ho indicato in precedenza relativamente al quantitativo di ram video; ovviamente fatevi una copia prima di procedere:
[SystemSettings]
r.Streaming.FramesForFullUpdate=2
r.Streaming.Boost=2
r.Streaming.PoolSize=7168
r.Streaming.MaxTempMemoryAllowed=5120
r.Shadow.WholeSceneShadowCacheMb=5120
r.RenderTargetPoolMin=1200
r.GTSyncType=1
r.OneFrameThreadLag=1
g.TimeToBlockOnRenderFence=0
D3D12.MaximumFrameLatency=1
r.RHICmdBalanceParallelLists=1
r.CreateShadersOnLoad=1
fx.ForceCompileOnLoad=1
niagara.CreateShadersOnLoad=1
r.ForceAllCoresForShaderCompiling=1
D3D12.PSO.DiskCache=1
D3D12.PSO.DriverOptimizedDiskCache=1
r.ShaderPipelineCache.Enabled=1
r.ShaderPipelineCache.BatchTime=1
r.ShaderPipelineCache.PrecompileBatchTime=1
r.ShaderPipelineCache.BackgroundBatchTime=1
r.ShaderPipelineCache.BatchSize=1
r.ShaderPipelineCache.PrecompileBatchSize=1
r.ShaderPipelineCache.BackgroundBatchSize=1
gc.TimeBetweenPurgingPendingKillObjects=200
gc.NumRetriesBeforeForcingGC=1
gc.MinDesiredObjectsPerSubTask=50
s.ForceGCAfterLevelStreamedOut=0
s.ContinuouslyIncrementalGCWhileLevelsPendingPurge=0
s.AsyncLoadingTimeLimit=2
s.PriorityAsyncLoadingExtraTime=0
s.UnregisterComponentsTimeLimit=2
s.LevelStreamingActorsUpdateTimeLimit=2
s.PriorityLevelStreamingActorsUpdateExtraTime=0
s.LevelStreamingComponentsUnregistrationGranularity=10
s.LevelStreamingComponentsRegistrationGranularity=30
r.Streaming.NumStaticComponentsProcessedPerFrame=200
r.ViewDistanceScale=3
r.SkeletalMeshLODBias=-2
r.StaticMeshLODDistanceScale=0.5
foliage.LODDistanceScale=3
grass.densityScale=1
r.Shadow.MaxResolution=2048
r.Shadow.MaxCSMResolution=2048
r.Shadow.SpotLightTransitionScale=2048
r.Shadow.DistanceScale=2
r.Shadow.TransitionScale=2
r.Shadow.CSM.TransitionScale=2
r.Shadow.CSMShadowDistanceFadeoutMultiplier=0.25
r.Shadow.RadiusThreshold=0.03
r.Shadow.FilterMethod=0
r.Shadow.CSM.MaxCascades=5
r.DFDistanceScale=10
ts2.dbg.JourneyChapterLockOverride=1
ts2.save.CheckpointsEnabled=1
TimeOfDaySystem.AutoExposure.SpeedUp=10
TimeOfDaySystem.AutoExposure.SpeedDown=5
TimeOfDaySystem.VolumetricCloud.RayMarchedShadows=1
TimeOfDaySystem.AutoExposure.ExposureBias=-0.5
TimeOfDaySystem.SkyLightPollutionLuminance=1.0
TimeOfDaySystem.BloomIntensity=0.17
TimeOfDaySystem.SunIntensity=75000
TimeOfDaySystem.CloudShadowVolumetricResolutionScale=4
TimeOfDaySystem.Clouds.HighAltitude.CloudDensityMult=0.3
TimeOfDaySystem.VolumetricCloud.GroundContribution=1
TimeOfDaySystem.VolumetricCloud.LayerHeightScale=1.8
TimeOfDaySystem.StarIntensity=50
TimeofDaySystem.LegacyEmissiveAdjustments.EmissiveMultNonLamp=550
r.LightMaxDrawDistanceScale=50.0
r.MinScreenRadiusForLights=0.00
r.AllowLandscapeShadows=1
r.DistanceFieldShadowing=1
r.DFFullResolution=1
r.AmbientOcclusionLevels=3
r.VolumetricFog.DepthDistributionScale=32.000000
r.VolumetricFog.GridDivisor=120
r.VolumetricFog.GridPixelSize=8
r.VolumetricFog.GridSizeZ=96
r.VolumetricFog.HistoryMissSupersampleCount=1
r.VolumetricFog.HistoryWeight=0.900000
r.VolumetricFog.InjectShadowedLightsSeparately=1
r.VolumetricFog.InverseSquaredLightDistanceBiasScale=1.000000
r.VolumetricFog.Jitter=1
r.VolumetricFog.LightFunctionSupersampleScale=2.000000
r.VolumetricFog.TemporalReprojection=1
r.VolumetricFog.VoxelizationShowOnlyPassIndex=-1
r.VolumetricFog.VoxelizationSlicesPerGSPass=8
r.VolumetricLightmap.VisualizationMinScreenFraction=0.001000
r.VolumetricLightmap.VisualizationRadiusScale=0.010000