S.T.A.L.K.E.R. 2: Heart of Chornobyl

S.T.A.L.K.E.R. 2: Heart of Chornobyl

516 ratings
Optimize performance by configuring Unreal Engine 5.1
By TheDonDope and 1 collaborators
How to optimize performance by configuring Unreal Engine 5.1

If you're experiencing low FPS or performance issues, you can improve the game's performance by configuring the Unreal Engine 5.1 that S.T.A.L.K.E.R.2 uses through configuration files. This guide will show you how to remove most stutters, improving performance and stability, decreasing input latency and improving overall picture quality by disabling film grain / chromatic aberration.
19
23
16
2
4
4
4
6
3
2
   
Award
Favorite
Favorited
Unfavorite
Acknowledgements
This guide is an adaptation of the performance guide by Rusty for another Unreal Engine 5 Game: The Forever Winter. You can find the guide for it here: https://gtm.you1.cn/sharedfiles/filedetails/?id=3337534083

Furthermore it is based on the Mod Ultimate Engine Tweaks[www.nexusmods.com] on Nexusmods[www.nexusmods.com]. Feel free to follow along the mod instructions if you find reading all this too cumbersome ;)
Translated Versions
For a Russian version of the guide, please head over to https://gtm.you1.cn/sharedfiles/filedetails/?id=3371761181

Thanks Sqnder for your help and translation! :)
Changelog
v1.2.0 (2024-11-24)

Features

  • Add Nexusmod information about Ultimate Engine Tweaks to Acknowledgments
  • Add Changelog
  • Add separate section for Steam Configuration
  • Add separate section for Gamepass Configuration
  • Add FAQ

Bugfixes

  • Deprecate outdated v1.1.0 information

v1.1.0 (2024-11-22)

Features

  • Consolidate complete configuration into single Engine.ini

Bugfixes

  • Deprecate outdated v1.0.0 information

v1.0.0 (2024-11-20)

Features

  • Adapt initial guide from Rusty's The Forever Winter Performance Optimization guide
Config File Locations (Steam vs. Gamepass)
The locations of the configuration files differ between the Steam and Game Pass version.

- Steam:

%localappdata%\Stalker2\Saved\Config\Windows

- Game Pass:

%localappdata%\Stalker2\Saved\Config\WinGDK
v1.2.0 (2024-11-24) - Steam Configuration
If you own S.T.A.L.K.E.R. 2 through Steam, do the following

Step-by-step instructions

1. Navigate to the config file directory:

%localappdata%\Stalker2\Saved\Config\Windows

2. Open the file GameUserSettings.ini and add the following lines at the end (Change the lines with comments according to your system spec, especially r.Streaming.PoolSize)

[Core.System] r.XGEShaderCompile=1 r.XGEShaderCompile.Mode=3 r.IoDispatcher.CacheSize=16384 r.IoDispatcher.AsyncBatchReadSizeKB=16384 [SystemSettings] t.MaxFPS=120 ; Only if your max refresh rate is 120hz, otherwise change it accordingly r.VSync=0 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D11.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D12.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.Streaming.PoolSize=12288 ; Only for 16GB VRAM. If you have 24GB use 18432, for 12GB use 9216, for 11GB use 8192, for 10GB use 7168, for 8GB use 6144, for 6GB use 5120, for 4GB use 4096 r.OneFrameThreadLag=0 ; This will noticeably reduce input latency, but if you experience drastically lower FPS after using this, delete this line r.MaxAnisotropy=16 r.Tonemapper.GrainQuantization=0 r.FilmGrain=0 r.NT.Lens.ChromaticAberration.Intensity=0 r.SceneColorFringeQuality=0 niagara.CreateShadersOnLoad=1 r.TemporalAACurrentFrameWeight=0.15 r.TemporalAASamples=8 r.TemporalAASharpness=0.9 r.Tonemapper.Sharpen=0.8 r.RHICmdBypass=0 r.GPUCrashDebugging=0 r.AllowMultiThreadedShaderCreation=1 r.Streaming.HLODStrategy=0 r.Streaming.LimitPoolSizeToVRAM=1 r.Streaming.MipBias=-0.5 r.RenderTargetPoolMin=800 r.GTSyncType=1 r.EarlyZPass=2 r.AllowOcclusionQueries=1 r.GBufferFormats=3 r.AsyncCompute=1 r.UseAsyncShaderPrecompilation=1 r.Streaming.DefragDynamicBounds=1 r.Streaming.UseAllMips=1 r.LumenScene.Lighting.AsyncCompute=1 r.Lumen.DiffuseIndirect.AsyncCompute=1 r.Lumen.Reflections.AsyncCompute=1 r.Streaming.MinMipForSplitRequest=0 r.ThreadedShaderCompilation=1 r.ParallelTranslucency=1 r.Streaming.MaxTempMemoryAllowed=1024 r.Streaming.Boost=1.2 r.TextureStreaming.TexturePoolSizeReduction=0 r.ForceCPUAccessToGPUSkinVerts=1 r.CustomDepth=3 r.IoDispatcher.MaxParallelIoRequests=64 r.DynamicRes.OperationMode=0 D3D12.MaximumFrameLatency=3 D3D12.AsyncDeferredDeletion=1 D3D12.AFRUseFramePacing=1 D3D11.MaximumFrameLatency=3 D3D11.AsyncDeferredDeletion=1 D3D11.AFRUseFramePacing=1 FX.AllowAsyncTick=1 FX.BatchAsync=1 FX.BatchAsyncBatchSize=8 FX.EarlyScheduleAsync=1 AllowAsyncRenderThreadUpdates=1 AudioThread.EnableBatchProcessing=1 AudioThread.BatchAsyncBatchSize=128 [ShaderCompiler] bAllowAsynchronousShaderCompiling=True bAllowCompilingThroughWorkerThreads=True NumUnusedShaderCompilingThreads=2 bAsyncShaderCompileWorkerThreads=True bEnableOptimizedShaderCompilation=True MaxShaderJobBatchSize=100 MaxShaderJobs=1000 [/script/engine.engine] bAllowMultiThreadedShaderCompile=True [DevOptions.Shaders] bAllowShaderCompilingWorker=True bOptimizeForLocalShaderBuilds=True WorkerThreadPriority=0 bUseBackgroundCompiling=True [TextureStreaming] r.TextureStreaming=1 r.Streaming.FullyLoadUsedTextures=1 r.Streaming.FullyLoadUsedTextures_Always=1 r.Streaming.DefragDynamicBounds=1 r.Streaming.FramesForFullUpdate=1 [Engine.InputSettings] RawMouseInputEnabled=1 bEnableMouseSmoothing=False bViewAccelerationEnabled=False [Engine.RendererSettings] r.AsyncCreateLightPrimitiveInteractions=1 r.RDG.AsyncCompute=1 r.AsyncPipelineCompile=1 r.AmbientOcclusion.AsyncComputeBudget=1 r.EnableAsyncComputeVolumetricFog=1 r.Streaming.UseAsyncRequestsForDDC=1 [RenderingThread] bAllowThreadedRendering=True bAllowAsyncRenderThreadUpdates=True r.JobThreadPriority=1 r.RenderThread.Priority=1 r.GameThread.Priority=1 [/script/engine.streamingsettings] s.AsyncLoadingThreadEnabled=1 s.AsyncLoadingUseFullTimeLimit=1 s.MinBulkDataSizeForAsyncLoading=0 s.PriorityAsyncLoadingExtraTime=15.0 s.AsyncLoadingTimeLimit=10 s.AsyncLoadingUseTimeLimit=1 s.LevelStreamingActorsUpdateTimeLimit=10.0 [/script/engine.garbagecollectionsettings] gc.MultithreadedDestructionEnabled=1 gc.MinimalAsyncGarbageCollectionTime=0.3 gc.TimeBetweenPurgingPendingKillObjects=60 gc.MaxObjectsNotConsideredByGC=1 [/script/akaudio.aksettings] bEnableMultiCoreRendering=True [CrashReportClient] bAgreeToCrashUpload=False bImplicitSend=False [Core.Log] LogPluginManager=off LogOnlineIdentity=off LogOnlineSession=off LogMemory=off LogPakFile=off LogTemp=off LogLinker=off LogOnline=off LogOnlineGame=off LogAnalytics=off LogConfig=off LogInteractiveProcess=off LogInput=off LogOnlineEntitlement=off LogOnlineEvents=off LogOnlineFriend=off LogOnlinePresence=off LogOnlineTitleFile=off LogOnlineUser=off LogRenderer=off LogNetwork=off LogPhysics=off Global=off +Suppress=Scriptwarning +Suppress=Error +Suppress=Scriptlog +Suppress=Warning

3. Save the file, close it and restart the game
v1.2.0 (2024-11-24) - Gamepass Configuration
If you own S.T.A.L.K.E.R. 2 through Gamepass, do the following

Step-by-step instructions

1. Navigate to the config file directory:

%localappdata%\Stalker2\Saved\Config\WinGDK

2. Create a new file named Engine.ini and add the following lines. (Change the lines with comments according to your system spec, especially r.Streaming.PoolSize)

[Core.System] r.XGEShaderCompile=1 r.XGEShaderCompile.Mode=3 r.IoDispatcher.CacheSize=16384 r.IoDispatcher.AsyncBatchReadSizeKB=16384 [SystemSettings] t.MaxFPS=120 ; Only if your max refresh rate is 120hz, otherwise change it accordingly r.VSync=0 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D11.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D12.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.Streaming.PoolSize=12288 ; Only for 16GB VRAM. If you have 24GB use 18432, for 12GB use 9216, for 11GB use 8192, for 10GB use 7168, for 8GB use 6144, for 6GB use 5120, for 4GB use 4096 r.OneFrameThreadLag=0 ; This will noticeably reduce input latency, but if you experience drastically lower FPS after using this, delete this line r.MaxAnisotropy=16 r.Tonemapper.GrainQuantization=0 r.FilmGrain=0 r.NT.Lens.ChromaticAberration.Intensity=0 r.SceneColorFringeQuality=0 niagara.CreateShadersOnLoad=1 r.TemporalAACurrentFrameWeight=0.15 r.TemporalAASamples=8 r.TemporalAASharpness=0.9 r.Tonemapper.Sharpen=0.8 r.RHICmdBypass=0 r.GPUCrashDebugging=0 r.AllowMultiThreadedShaderCreation=1 r.Streaming.HLODStrategy=0 r.Streaming.LimitPoolSizeToVRAM=1 r.Streaming.MipBias=-0.5 r.RenderTargetPoolMin=800 r.GTSyncType=1 r.EarlyZPass=2 r.AllowOcclusionQueries=1 r.GBufferFormats=3 r.AsyncCompute=1 r.UseAsyncShaderPrecompilation=1 r.Streaming.DefragDynamicBounds=1 r.Streaming.UseAllMips=1 r.LumenScene.Lighting.AsyncCompute=1 r.Lumen.DiffuseIndirect.AsyncCompute=1 r.Lumen.Reflections.AsyncCompute=1 r.Streaming.MinMipForSplitRequest=0 r.ThreadedShaderCompilation=1 r.ParallelTranslucency=1 r.Streaming.MaxTempMemoryAllowed=1024 r.Streaming.Boost=1.2 r.TextureStreaming.TexturePoolSizeReduction=0 r.ForceCPUAccessToGPUSkinVerts=1 r.CustomDepth=3 r.IoDispatcher.MaxParallelIoRequests=64 r.DynamicRes.OperationMode=0 D3D12.MaximumFrameLatency=3 D3D12.AsyncDeferredDeletion=1 D3D12.AFRUseFramePacing=1 D3D11.MaximumFrameLatency=3 D3D11.AsyncDeferredDeletion=1 D3D11.AFRUseFramePacing=1 FX.AllowAsyncTick=1 FX.BatchAsync=1 FX.BatchAsyncBatchSize=8 FX.EarlyScheduleAsync=1 AllowAsyncRenderThreadUpdates=1 AudioThread.EnableBatchProcessing=1 AudioThread.BatchAsyncBatchSize=128 [ShaderCompiler] bAllowAsynchronousShaderCompiling=True bAllowCompilingThroughWorkerThreads=True NumUnusedShaderCompilingThreads=2 bAsyncShaderCompileWorkerThreads=True bEnableOptimizedShaderCompilation=True MaxShaderJobBatchSize=100 MaxShaderJobs=1000 [/script/engine.engine] bAllowMultiThreadedShaderCompile=True [DevOptions.Shaders] bAllowShaderCompilingWorker=True bOptimizeForLocalShaderBuilds=True WorkerThreadPriority=0 bUseBackgroundCompiling=True [TextureStreaming] r.TextureStreaming=1 r.Streaming.FullyLoadUsedTextures=1 r.Streaming.FullyLoadUsedTextures_Always=1 r.Streaming.DefragDynamicBounds=1 r.Streaming.FramesForFullUpdate=1 [Engine.InputSettings] RawMouseInputEnabled=1 bEnableMouseSmoothing=False bViewAccelerationEnabled=False [Engine.RendererSettings] r.AsyncCreateLightPrimitiveInteractions=1 r.RDG.AsyncCompute=1 r.AsyncPipelineCompile=1 r.AmbientOcclusion.AsyncComputeBudget=1 r.EnableAsyncComputeVolumetricFog=1 r.Streaming.UseAsyncRequestsForDDC=1 [RenderingThread] bAllowThreadedRendering=True bAllowAsyncRenderThreadUpdates=True r.JobThreadPriority=1 r.RenderThread.Priority=1 r.GameThread.Priority=1 [/script/engine.streamingsettings] s.AsyncLoadingThreadEnabled=1 s.AsyncLoadingUseFullTimeLimit=1 s.MinBulkDataSizeForAsyncLoading=0 s.PriorityAsyncLoadingExtraTime=15.0 s.AsyncLoadingTimeLimit=10 s.AsyncLoadingUseTimeLimit=1 s.LevelStreamingActorsUpdateTimeLimit=10.0 [/script/engine.garbagecollectionsettings] gc.MultithreadedDestructionEnabled=1 gc.MinimalAsyncGarbageCollectionTime=0.3 gc.TimeBetweenPurgingPendingKillObjects=60 gc.MaxObjectsNotConsideredByGC=1 [/script/akaudio.aksettings] bEnableMultiCoreRendering=True [CrashReportClient] bAgreeToCrashUpload=False bImplicitSend=False [Core.Log] LogPluginManager=off LogOnlineIdentity=off LogOnlineSession=off LogMemory=off LogPakFile=off LogTemp=off LogLinker=off LogOnline=off LogOnlineGame=off LogAnalytics=off LogConfig=off LogInteractiveProcess=off LogInput=off LogOnlineEntitlement=off LogOnlineEvents=off LogOnlineFriend=off LogOnlinePresence=off LogOnlineTitleFile=off LogOnlineUser=off LogRenderer=off LogNetwork=off LogPhysics=off Global=off +Suppress=Scriptwarning +Suppress=Error +Suppress=Scriptlog +Suppress=Warning

3. Save the file, close it and restart the game
v1.1.0 (2024-11-22) - Standalone Engine.ini (outdated, read v1.2.0)
Consolidating optimizations into single Engine.ini

After more tests on the initial configurations and testing various optimization mods on Nexusmods[www.nexusmods.com], here is a an consolidated version which only uses a standalone Engine.ini without touching the GameUserSettings.ini.

File locations for both Steam and Game Pass Versions

Reading through the comments and requests here are the file locations for both game versions:

- Steam:

%localappdata%\Stalker2\Saved\Config\Windows

- Game Pass:

%localappdata%\Stalker2\Saved\Config\WinGDK

Step-by-step instructions

1. Locate the configuration files by copy-pasting the path above into Windows Explorer

2. If not present, create a file named Engine.ini

3. Insert the following contents and change lines with comments according to your system specs: Read below the big code block for which lines to change if you haven't spotted them already!

[SystemSettings] t.MaxFPS=120 ; Only if your max refresh rate is 120hz, otherwise change it accordingly r.VSync=0 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D11.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D12.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.Streaming.PoolSize=12288 ; Only for 16GB VRAM. If you have 24GB use 18432, for 12GB use 9216, for 8GB use 6144, for 6GB use 4608, for 4GB use 3072 r.MaxAnisotropy=16 r.Tonemapper.GrainQuantization=0 r.FilmGrain=0 r.NT.Lens.ChromaticAberration.Intensity=0 r.SceneColorFringeQuality=0 niagara.CreateShadersOnLoad=1 r.TemporalAACurrentFrameWeight=0.15 r.TemporalAASamples=8 r.TemporalAASharpness=0.9 r.Tonemapper.Sharpen=0.8 r.RHICmdBypass=0 r.GPUCrashDebugging=0 r.AllowMultiThreadedShaderCreation=1 r.TextureStreaming.MinTextureResidentMipCount=7 r.Streaming.HLODStrategy=2 r.Streaming.LimitPoolSizeToVRAM=1 r.Streaming.MipBias=0 r.RenderTargetPoolMin=400 r.GTSyncType=1 r.EarlyZPass=2 r.AllowOcclusionQueries=1 r.GBufferFormats=3 r.AsyncCompute=1 r.UseAsyncShaderPrecompilation=1 r.Streaming.DefragDynamicBounds=1 r.Streaming.UseAllMips=1 D3D12.MaximumFrameLatency=3 D3D12.AsyncDeferredDeletion=1 D3D12.AFRUseFramePacing=1 D3D11.MaximumFrameLatency=3 D3D11.AsyncDeferredDeletion=1 D3D11.AFRUseFramePacing=1 FX.AllowAsyncTick=1 FX.BatchAsync=1 FX.BatchAsyncBatchSize=8 FX.EarlyScheduleAsync=1 AllowAsyncRenderThreadUpdates=1 AudioThread.EnableBatchProcessing=1 AudioThread.BatchAsyncBatchSize=9999999 [ShaderCompiler] bAllowAsynchronousShaderCompiling=True bAllowCompilingThroughWorkerThreads=True NumUnusedShaderCompilingThreads=1 bAsyncShaderCompileWorkerThreads=True bEnableOptimizedShaderCompilation=True MaxShaderJobBatchSize=50 MaxShaderJobs=500 [/script/engine.engine] bAllowMultiThreadedShaderCompile=True [DevOptions.Shaders] bAllowShaderCompilingWorker=True bOptimizeForLocalShaderBuilds=True WorkerThreadPriority=0 bUseBackgroundCompiling=True [TextureStreaming] r.TextureStreaming=1 r.Streaming.FullyLoadUsedTextures=1 r.Streaming.FullyLoadUsedTextures_Always=1 r.Streaming.DefragDynamicBounds=1 r.Streaming.FramesForFullUpdate=1 [Core.System] r.XGEShaderCompile=1 r.XGEShaderCompile.Mode=3 r.IoDispatcher.CacheSize=4096 r.IoDispatcher.AsyncBatchReadSizeKB=4096 +Suppress=Scriptwarning +Suppress=Error +Suppress=Scriptlog +Suppress=Warning [Engine.InputSettings] RawMouseInputEnabled=1 bEnableMouseSmoothing=False bViewAccelerationEnabled=False [Engine.RendererSettings] r.AsyncCreateLightPrimitiveInteractions=1 r.RDG.AsyncCompute=1 r.AsyncPipelineCompile=1 r.AmbientOcclusion.AsyncComputeBudget=1 r.EnableAsyncComputeVolumetricFog=1 r.Streaming.UseAsyncRequestsForDDC=1 [RenderingThread] bAllowThreadedRendering=True bAllowAsyncRenderThreadUpdates=True [/script/engine.streamingsettings] s.AsyncLoadingThreadEnabled=True s.AsyncLoadingThreadEnabled=1 s.AsyncLoadingUseFullTimeLimit=1 s.MinBulkDataSizeForAsyncLoading=0 s.PriorityAsyncLoadingExtraTime=0 s.AsyncLoadingTimeLimit=4 [/script/engine.garbagecollectionsettings] gc.MultithreadedDestructionEnabled=1 [Engine.ErrorHandling] bPromptForRemoteDebugging=False bPromptForRemoteDebugOnEnsure=False [/script/akaudio.aksettings] bEnableMultiCoreRendering=True [CrashReportClient] bAgreeToCrashUpload=False bImplicitSend=False [Core.Log] LogPluginManager=off LogOnlineIdentity=off LogOnlineSession=off LogMemory=off LogPakFile=off LogTemp=off LogLinker=off LogOnline=off LogOnlineGame=off LogAnalytics=off LogConfig=off LogInteractiveProcess=off LogInput=off LogOnlineEntitlement=off LogOnlineEvents=off LogOnlineFriend=off LogOnlinePresence=off LogOnlineTitleFile=off LogOnlineUser=off Global=off [Engine.GarbageCollectionSettings] gc.MinimalAsyncGarbageCollectionTime=0.3

4. Lines to change:

t.MaxFPS=120 ; Only if your max refresh rate is 120hz, otherwise change it accordingly r.VSync=0 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D11.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.D3D12.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it r.Streaming.PoolSize=12288 ; Only for 16GB VRAM. If you have 24GB use 18432, for 12GB use 9216, for 8GB use 6144, for 6GB use 4608, for 4GB use 3072

Feel free to leave feedback in the comments!

Good hunting Stalkers!
v1.0.0 (2024-11-20) - Modify GameUserSettings.ini (Outdated, read v1.2.0)
Step-by-Step Instructions

1. Locate the GameUserSettings.ini file:

The configuration file is located at the following path:

%localappdata%\Stalker2\Saved\Config\Windows

You can copy and paste this path into the File Explorer address bar.
Once there, find the file named GameUserSettings.ini and open it with Notepad or any text editor.

2. Modify Graphics Settings for Better Performance:

Adjust the following values in the GameUserSettings.ini file to reduce the load on your system and increase FPS.

[ScalabilityGroups] sg.ResolutionQuality=33.2999992 ; Lower resolution scale (between 0-100) for better fps sg.ViewDistanceQuality=0 ; Decrease the view distance to reduce rendering load sg.AntiAliasingQuality=0 ; Disable anti-aliasing for higher FPS sg.ShadowQuality=0 ; Disable shadows for a performance boost sg.GlobalIlluminationQuality=0 ; Disable global illumination to save GPU power sg.ReflectionQuality=0 ; Disable reflections for better FPS sg.PostProcessQuality=0 ; Lower post-processing effects sg.TextureQuality=0 ; Use lower texture quality for smoother performance sg.EffectsQuality=0 ; Disable effects like particles and explosions sg.FoliageQuality=0 ; Reduce foliage detail for better performance sg.ShadingQuality=0 ; Disable complex shading effects sg.HairQuality=0 ; Disable complex hair effects sg.ObjectDetailQuality=0 ; Use reduced object details sg.VolumetricFogQuality=0 ; Disable volumetric fog sg.VolumetricCloudsQuality=0 ; Disable volumetric clouds sg.SkyQuality=0 ; Reduce sky quality sg.MaterialQuality=0 ; Reduce material quality sg.MotionBlurQuality=0 ; Disable motion blur sg.DOFQuality=0 ; Disable depth of field effects

3. Disable RTX Ray Tracing and Lumen Technology:

Ray Tracing and Lumen lighting are very performance-intensive. Disabling them will greatly improve FPS if they are enabled in the game.

Add the following lines to your configuration to disable them:

[SystemSettings] r.RayTracing=False r.RayTracing.Shadows=False r.RayTracing.Reflections=False r.RayTracing.AmbientOcclusion=False r.RayTracing.GlobalIllumination=False r.RayTracing.Lighting=False r.RayTracing.Translucency=False r.RayTracing.SkyLight=False r.Lumen.Reflections=False r.Lumen.Reflections.HardwareRayTracing=False r.Lumen.Reflections.ScreenTraces=False r.Lumen.GlobalIllumination=False r.Lumen.ScreenProbeGather=False r.BloomQuality=0 r.LensFlareQuality=0 r.LensFlareQuality=0 r.PostProcessAAQuality=0 r.PostProcessAAQuality=0 r.DepthOfFieldQuality=0 r.DefaultFeature.AntiAliasing=0 r.MaxAnisotropy=16

4. Disable Frame Rate Smoothing:

By default, Unreal Engine might smooth the frame rate to prevent sharp fluctuations. Disabling this can improve FPS stability.

Add the following line to the [Script/Engine.Engine] section of your GameUserSettings.ini:

[/script/engine.engine] bSmoothFrameRate=False

5. Optional: Adjust Resolution and Frame Rate Limit:

Lowering your in-game resolution (e.g., from 2560x1440 to 1920x1080) can significantly improve FPS.
Limiting the frame rate to a specific value can also help stabilize performance.

Adjust these settings in the [/script/engine.gameusersettings] section:

[/script/engine.gameusersettings] bUseVSync=False ; Disable VSync for higher FPS bUseDynamicResolution=True ; Enable dynamic resolution to adapt to performance needs ResolutionSizeX=1920 ; Set resolution width to 1920 (Full HD) ResolutionSizeY=1080 ; Set resolution height to 1080 (Full HD) LastUserConfirmedResolutionSizeX=1920 ; Not sure yet why there are two settings for this LastUserConfirmedResolutionSizeY=1080 ; Not sure yet why there are two settings for this FrameRateLimit=120.000000 ; Limit frame rate to 120 FPS for smoother gameplay

6. Save the File:

After making these changes, save the GameUserSettings.ini file and close the editor.

7. Restart the Game:

Launch Stalker 2 and check your performance. You should notice better FPS and smoother gameplay, especially in demanding areas.

Summary of Changes:

Lowered graphics settings to reduce GPU load and improve performance.
Disabled RTX Ray Tracing and Lumen technology to avoid the performance hit from advanced lighting effects.
Disabled Frame Rate Smoothing to remove artificial FPS caps and fluctuations.
Lowered resolution and frame rate limit for stable, high-performance gameplay.

By following these steps, you should experience improved performance in Stalker 2. This guide will work for anyone playing the game on Steam, and the path to the configuration file is the same across systems.
v1.0.0 (2024-11-20) - Add Engine.ini (Outdated, read v1.2.0)
Step-by-Step Instructions

1. Create a new file named Engine.ini at the following path:

%localappdata%\Stalker2\Saved\Config\Windows

You can copy and paste this path into the File Explorer address bar.
Once there, create the file named Engine.ini and open it with Notepad or any text editor.

2. Add the following lines to the file:

[/script/engine.renderersettings] r.AntiAliasingMethod=0 ; Disable all Anti-Aliasing methods. Personally I don't recommend using this line as it makes very pixelated graphics. r.Upscale.Quality=0 ; Sharpen the resolution scaler and apply a “nearest neighbor” method for pixel reduction. r.Upscale.Softness=0 r.Tonemapper.Sharpen=0.5 ;Sharpen the game without third-party filters. Set it to your preference 0.5 to 2.5. r.TextureStreaming=0 r.DepthOfFieldQuality=0 r.BloomQuality=0 r.FilmGrain=0 r.SceneColorFringeQuality=0 r.DisableDistortion=1 r.Tonemapper.Quality=0 r.LensFlareQuality=0 r.Fog=0 ; Disables Fog effect r.VolumetricFog=0 ; Disables Volumetric Fog effect r.OneFrameThreadLag=0 ; disables frame delay from the processing thread (improves responsiveness) [/script/engine.inputsettings] bEnableMouseSmoothing=False ; disables mouse smoothing bViewAccelerationEnabled=False ; disables mouse acceleration bDisableMouseAcceleration=False ; ditto
FAQ
Frequently Asked Questions

What is the scope of these configurations? What does it affect / change?

  • Disable mouse acceleration for snappier mouse movement
  • Disable film grain and chromatic aberration for improved image clarity
  • Enable asynchronous shader compilation to speed up game booting time
  • Configure render streaming based on VRAM size to reduce stutters
  • Improve CPU, GPU, RAM, SSD utilization for better performance
  • Reduce input latency
  • It does NOT touch any graphics quality settings that you set through the ingame menus (aside from max FPS, VSync) - these you can still pick and choose for yourself!

Whats with all the different versions? How do i know what i need to do? THAT IS SO MUCH TEXT!!!

You have two main routes you can go:

A) Use the mod "Ultimate Engine Tweaks"[www.nexusmods.com] from Nexusmods (which you need to register an account for) directly and follow the directions there. They are equivalent to what is stated here in the guide.

B) Follow the instructions here in the guide. About which version to pick: Always pick the latest version (v1.2.0 as of 2024-11-22) and pick the section with the platform that you purchased the game on (Steam vs. Gamepass)

And as to why all the versions - I come from a software engineering background, so that's my mode of work, to version stuff, keep a changelog, document changes over time and keep older versions around.

All this stuff is just placebo and doesn't do anything! It doesn't work on my machine!

If you only want to state your frustration that you haven't found The One Configuration To Rule Them All which magically fixes everything for you, go ahead. But if you want actual help with fixing issues, then at the minimum state more information about your information / system:

  • Which version of the configuration did you use (see version numbers on the side sections)?
  • Are you on Steam or Gamepass?
  • (For Gamepass only): Did you REALLY create a new file Engine.ini, or an Engine.ini.txt (by right click in Explorer -> New -> Text Document, without overriding the file extension) - Check your Windows Explorer settings and verify that file extensions are shown, and the file is listed as 'Configuration files' and not 'Text Document'
  • Did you set the appropriate value of r.Streaming.PoolSize according to the VRAM size of your GPU?
  • Did you check the other values in [SystemSettings] with comments (Comment is something with '; some text' at the end of the line) and set them accordingly?

How often will this guide get updated? Do i have to manually edit config files for the rest of my life?

A new guide version will get released for every update that the mod "Ultimate Engine Tweaks"[www.nexusmods.com] from Nexusmods gets. How frequently that will be, i cannot say (sorry my All Seeing Orb broke just a few days ago :/). However, when GSC starts rolling out patches i recommend reverting the changes and doing a fresh baseline test with a new game version first.

How do i revert all this? I want to get back to a clean slate!

For Steam:

  • Navigate to %localappdata%\Stalker2\Saved\Config\Windows
  • Open the GameUserSettings.ini
  • Remove all the lines at the bottom at the file starting with the block

    [Core.System] r.XGEShaderCompile=1 r.XGEShaderCompile.Mode=3 r.IoDispatcher.CacheSize=16384 r.IoDispatcher.AsyncBatchReadSizeKB=16384

    and below

For Gamepass:

  • Navigate to %localappdata%\Stalker2\Saved\Config\WinGDK
  • Delete the Engine.ini file
204 Comments
₪ Sesshōmaru 5 hours ago 
It worked for me ! i just copy paste. Game runs smoother and i got up to 10 FPS more. Though in towns it goes down but much smoother OVERALL...exploring wolrd 60-70 FPS..

AMD Ryzen 9 5950X 16-core
RTX 3080 Ti
64 GB RAM
Resolution 3440x1440
DLSS on Quality

i recommend until first patch for sure !

And thanks for sharing with community:steamthumbsup:
144 9 hours ago 
in the most recent v1.2.0, the part about r.Streaming.PoolSize. The recommended size for 4GB is 4096, when in previous versions its 3072. I wanted to ask why that is. (I know I am cooked anyway, found out too late that 3050 was not my best buy)
Nexxus 19 hours ago 
Cant say this did anything to help my performance at all, but it did help remove that "moving my cursor though soup" feeling the game has which I really did not care for.
Baron01 20 hours ago 
So, I have added the latest version into the GameUserSettings.ini, modified those lines that need to be tweaked.
How do I actually verify these changes in effect?

Another question: I have found a post about adding few commands to starting line for Steam version of the game, are those still valid even with these updates or should I remove them?
These are the commands: -xgeshadercompile -nothreadtimeout -NoVerifyGC
Mooncult 23 hours ago 
it's just me after installing all these tweaks and optimizations - the game still crashes with an Unreal Engine error, looks worse, but at least compiles shaders faster? (PC fully meets the recommended )
Spooky Dude 26 Nov @ 11:19am 
Make sure its your vram not your computers ram. I have 32gb ram but only 8gb vram. Vram is Dedicated video memory
TheDonDope  [author] 26 Nov @ 11:06am 
GSC has released an official News statement about Technical Issues Troubleshooting, what do you guys think about it? :D

https://gtm.you1.cn/storesteam/news/app/1643320/view/4455843903878204228?l=english
TheDonDope  [author] 26 Nov @ 11:04am 
@El1gy, if you look at the underlying mod page of the Ultimate Engine Tweaks mod you can find that through testing it was revealed, that in the Steam version the settings when put in the Engine.ini will not get applied ingame. They have to be put in the GameUserSettings.ini. This behaviour might change with future patches.
El1gy 26 Nov @ 10:11am 
Shouldn't it be the Engine.ini for steam as well, not GameUserSettings?
TheDonDope  [author] 26 Nov @ 3:30am 
@Follow the buzzards, you said it yourself the holo sights will ghost when using frame generation, so the only way to having functioning holos is to turn it off. Yes, you lose FPS, but only fake FPS that increases input lag & sluggishness. To compensate, try to adapt your DLSS/FSR settings down to balanced, performance or ultra performance. Yes your game may look even more shit like that, but aside from a hardware upgrade you gotta choose which inconvenience you want to live with.