Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.

Difference between revisions of "Engine:Unreal Engine 4"

From PCGamingWiki, the wiki about fixing PC games
m (Add a list of all cvars)
 
(96 intermediate revisions by 30 users not shown)
Line 10: Line 10:
 
}}
 
}}
 
'''Key points'''
 
'''Key points'''
{{ii}} Complete suite of game development tools and engine used by over 500 games, see [[#Games|Games]].
+
{{ii}} Complete suite of game development tools and engine used by over 1000 games, see [[#Games|Games]].
  
 
==Video==
 
==Video==
Line 20: Line 20:
 
{{ii}} If a game is {{term|Vert-}}, FOV can be increased to give a proper 1:1 {{term|Hor+}} ultrawide image. See [[Glossary:Ultra-widescreen|the ultra-widescreen glossary page]] for details.
 
{{ii}} If a game is {{term|Vert-}}, FOV can be increased to give a proper 1:1 {{term|Hor+}} ultrawide image. See [[Glossary:Ultra-widescreen|the ultra-widescreen glossary page]] for details.
 
{{ii}} If a game does not allow FOV to be adjusted, and an external mod to implement it does not exist for the specific game in question, then the game does not support a proper ultrawide experience.
 
{{ii}} If a game does not allow FOV to be adjusted, and an external mod to implement it does not exist for the specific game in question, then the game does not support a proper ultrawide experience.
{{ii}} For multi-monitor setups, the resolution may be so wide that the in-game FOV option may not go high enough to achieve a proper 1:1 {{term|Hor+}} image. See individual game entry pages for workarounds.
+
{{ii}} For multi-monitor or 32:9 setups, the resolution may be so wide that the in-game FOV option may not go high enough to achieve a proper 1:1 {{term|Hor+}} image. See individual game entry pages for workarounds.
  
 
===[[Glossary:Field of view (FOV)|Field of view (FOV)]]===
 
===[[Glossary:Field of view (FOV)|Field of view (FOV)]]===
 
{{ii}} The FOV variable name is set individually by each developer and differs from game to game, so unfortunately there is no universal solution for adjusting FOV in games where it is not available as an option.
 
{{ii}} The FOV variable name is set individually by each developer and differs from game to game, so unfortunately there is no universal solution for adjusting FOV in games where it is not available as an option.
{{ii}} If the developers of a particular game have implemented FOV as a variable, it can usually be adjusted in GameUserSettings.ini.
+
{{ii}} If the developers of a particular game have implemented FOV as a variable, it can usually be adjusted in {{File|GameUserSettings.ini}}.
 
{{ii}} For games in which customizable FOV is not supported, a wider FOV can be obtained by changing the FOV scaling from horizontal to vertical.
 
{{ii}} For games in which customizable FOV is not supported, a wider FOV can be obtained by changing the FOV scaling from horizontal to vertical.
  
 
{{Fixbox|description=Change FOV scaling|fix=
 
{{Fixbox|description=Change FOV scaling|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
<pre>[/script/engine.localplayer]
+
<pre>[/Script/Engine.LocalPlayer]
 
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV</pre>
 
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV</pre>
 
{{ii}} In earlier versions of the engine, making the change causes all horizontal FOV values to be vertical, potentially resulting in a severe FOV increase. Making the change in later versions of the engine forces the game to maintain its native vertical FOV.
 
{{ii}} In earlier versions of the engine, making the change causes all horizontal FOV values to be vertical, potentially resulting in a severe FOV increase. Making the change in later versions of the engine forces the game to maintain its native vertical FOV.
Line 36: Line 36:
 
===[[Glossary:Borderless fullscreen windowed|Borderless fullscreen windowed]]===
 
===[[Glossary:Borderless fullscreen windowed|Borderless fullscreen windowed]]===
 
{{Fixbox|description=Borderless Fullscreen|fix=
 
{{Fixbox|description=Borderless Fullscreen|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
 
r.FullScreenMode=1
 
r.FullScreenMode=1
 +
</pre>}}
 +
 +
===Exclusive fullscreen===
 +
{{Fixbox|description=Exclusive Fullscreen|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.FullScreenMode=0
 
</pre>}}
 
</pre>}}
  
 
===[[Glossary:Anti-aliasing (AA)|Anti-aliasing (AA)]]===
 
===[[Glossary:Anti-aliasing (AA)|Anti-aliasing (AA)]]===
{{Fixbox|description=Configure anti-aliasing quality|ref=<ref>{{Refurl|url=https://docs.unrealengine.com/en-US/TestingAndOptimization/PerformanceAndProfiling/Scalability/ScalabilityReference/index.html|title=Scalability Reference|date=2021-02-02|snippet=Adjusting the Anti-Aliasing quality level using the r.PostProcessAAQuality console command will adjust the quality of whichever Anti-Aliasing method you are using (FXAA or Temporal AA). For either Anti-Aliasing method, a value of 0 used with r.PostProcessAAQuality will disable the effect. For FXAA, the effect of values 2, 4, and 6, can be seen in the above image; the smoothing of jagged edges becomes better and better. Values above 6 have no effect.}}</ref>|fix=
+
{{ii}} The engine supports both [[FXAA]] and [[TAA]], and in most games either one can be forced, or outright disabled.
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
 
 +
{{Fixbox|description=Enable [[TAA|Temporal AA (TAA)]]|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
r.PostProcessAAQuality=0
+
r.DefaultFeature.AntiAliasing=2
 +
r.PostProcessAAQuality=4
 
</pre>
 
</pre>
{{ii}} 0 disables anti-aliasing, while values from 1 to 6 affect the quality of the used method ([[FXAA]] or [[TAA]]).
+
 
 +
'''Notes'''
 +
{{mm}} Adjust the anti-aliasing quality level using the {{Code|r.PostProcessAAQuality}} console variable. For Temporal AA, there is a trade off between fill speed of the effect and quality, the higher the value you use. {{Code|2}} with Temporal AA is fast to settle but jitter caused by the effect will be more pronounced. {{Code|4}} will settle slower but will not jitter. A value of {{Code|0}} will disable the anti-aliasing.<ref name="aaref">{{Refurl|url=https://docs.unrealengine.com/4.27/en-US/TestingAndOptimization/PerformanceAndProfiling/Scalability/ScalabilityReference/|title=Scalability Reference|date=2023-05-07}}</ref>
 
}}
 
}}
  
{{Fixbox|description=Enable [[FXAA]] through a configuration file||fix=
+
{{Fixbox|description=Enable [[FXAA]]|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
 
r.DefaultFeature.AntiAliasing=1
 
r.DefaultFeature.AntiAliasing=1
 +
r.PostProcessAAQuality=4
 
</pre>
 
</pre>
 +
 
'''Notes'''
 
'''Notes'''
{{ii}} Enabling FXAA will disable TAA.
+
{{mm}} Adjust the anti-aliasing quality level using the {{Code|r.PostProcessAAQuality}} console variable. For FXAA, the effect of values {{Code|2}}, {{Code|4}}, and {{Code|6}} will see the smoothing of jagged edges become better and better. Values above 6 have no effect. A value of {{Code|0}} will disable the anti-aliasing.<ref name="aaref"/>
{{ii}} Setting the value to 0 will disable anti-aliasing.
 
 
}}
 
}}
  
 +
{{Fixbox|description=Disable anti-aliasing|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.DefaultFeature.AntiAliasing=0
 +
r.PostProcessAAQuality=0
 +
</pre>
 +
}}
 +
 +
===Sharpen===
 
{{Fixbox|description=Enable and adjust image sharpening|fix=
 
{{Fixbox|description=Enable and adjust image sharpening|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
Line 73: Line 97:
  
 
===[[Glossary:Anisotropic filtering (AF)|Anisotropic filtering (AF)]]===
 
===[[Glossary:Anisotropic filtering (AF)|Anisotropic filtering (AF)]]===
{{Fixbox|description=Custom anisotropic samples|ref=<ref>{{Refcheck|user=Fayaine|date=2021-09-22|comment=Generalized UE4 command for AF samples.}}</ref>|fix=
+
{{Fixbox|description=Set anisotropic filtering to the highest quality||fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
 
r.MaxAnisotropy=16
 
r.MaxAnisotropy=16
 
</pre>
 
</pre>
{{ii}} Anisotropic filtering quality can be adjusted by changing the value between 0 and 16.
 
 
}}
 
}}
  
 
===[[Glossary:Vertical sync (Vsync)|Vertical sync (Vsync)]]===
 
===[[Glossary:Vertical sync (Vsync)|Vertical sync (Vsync)]]===
{{Fixbox|description=Disable V-Sync|fix=
+
{{Fixbox|description=Disable Vsync|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
Line 92: Line 115:
 
===[[Glossary:Frame rate (FPS)|Frame rate (FPS)]]===
 
===[[Glossary:Frame rate (FPS)|Frame rate (FPS)]]===
 
{{Fixbox|description=Disable smooth frame rate|fix=
 
{{Fixbox|description=Disable smooth frame rate|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[/Script/Engine.Engine]
 
[/Script/Engine.Engine]
bSmoothFrameRate=0
+
bSmoothFrameRate=False
 
</pre>}}
 
</pre>}}
 
{{Fixbox|description=Disable FPS cap|fix=
 
{{Fixbox|description=Disable FPS cap|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[/Script/Engine.RendererSettings]
 
[/Script/Engine.RendererSettings]
 
t.MaxFPS=0
 
t.MaxFPS=0
 
</pre>}}
 
</pre>}}
 +
{{Fixbox|description=Set FPS limit|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|GameUserSettings.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[/Script/Engine.GameUserSettings]
 +
FrameRateLimit=60.000000
 +
</pre>}}
 +
 +
===[[High dynamic range (HDR)]]===
 +
''For a list of known games and their specifics, see [[List of Unreal Engine 4-5 games where HDR can be forced|Unreal Engine 4-5 games where HDR can be forced]].''
 +
 +
Unreal Engine 4 have native HDR output that can be forced in many newer games with mixed results. Earlier versions of the engine required running in [[Engine:Unreal Engine 4#Exclusive fullscreen|Exclusive Fullscreen (FSE)]] in order for this to work, while newer versions supports it for windowed modes as well, though some more recent versions have broken HDR in DirectX 12,{{cn}} requiring the use of <code>-dx11</code> launch argument to run games in DirectX 11.{{Note|name=dx11|Running a game in D3D11 may not be officially supported and may experience additional unexpected issues unrelated to HDR.}}
  
===Exclusive fullscreen===
+
{{Fixbox|description=Force the built-in HDR display output of the engine:|fix=
{{Fixbox|description=Exclusive Fullscreen|fix=
+
<ol>
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
<li> Refer to the [[List of Unreal Engine 4-5 games where HDR can be forced#Game compatibility|list of Unreal Engine 4-5 games where HDR can be forced]] for details about whether the built-in HDR display output is known to work with the game.</li>
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|GameUserSettings.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
r.FullScreenMode=0
+
r.AllowHDR=1
</pre>}}
+
r.HDR.EnableHDROutput=1
 +
r.HDR.Display.OutputDevice=5
 +
r.HDR.Display.ColorGamut=2
 +
</pre>
 +
 
 +
'''Optional changes:'''
 +
* If the display supports 2000 nits or higher, change <code>r.HDR.Display.OutputDevice</code> to <code>6</code> to use the 2000 nits output mode.
 +
* Add these lines to boost the UI brightness which may make it integrate better with HDR:
 +
<pre>
 +
r.HDR.UI.CompositeMode=1
 +
r.HDR.UI.Level=1.5
 +
</pre>
 +
</li>
 +
<li>If DirectX 11 must be forced for HDR output to work, launch the game using the <code>-dx11</code> [[Glossary:Command line arguments|command line argument]].{{Note|name=dx11}}</li>
 +
<li>The game should now launch with HDR display output enabled and working.</li>
 +
</ol>
 +
 
 +
'''Notes'''
 +
{{mm}} See the [https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/HDRDisplayOutput/#enablinghdroutput official engine documentation] for more details.
 +
}}
  
 
===Adaptive exposure===
 
===Adaptive exposure===
 
{{Fixbox|description=Disable Adaptive Exposure|fix=
 
{{Fixbox|description=Disable Adaptive Exposure|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
 
r.EyeAdaptationQuality=0
 
r.EyeAdaptationQuality=0
 +
</pre>}}
 +
 +
===Ambient occlusion===
 +
{{Fixbox|description=Disable Ambient Occlusion|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.AmbientOcclusionLevels=0
 +
</pre>}}
 +
 +
===Bloom===
 +
{{Fixbox|description=Disable Bloom|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.BloomQuality=0
 +
</pre>}}
 +
 +
===Screen Space Reflections===
 +
{{Fixbox|description=Disable SSR|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.SSR=0
 +
</pre>}}
 +
 +
===Fog===
 +
{{Fixbox|description=Disable Fog|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.Fog=0
 +
r.VolumetricFog=0
 
</pre>}}
 
</pre>}}
  
 
===Chromatic aberration===
 
===Chromatic aberration===
 
{{Fixbox|description=Disable Chromatic Aberration|fix=
 
{{Fixbox|description=Disable Chromatic Aberration|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
Line 130: Line 217:
 
===Depth of field===
 
===Depth of field===
 
{{Fixbox|description=Disable depth of field|fix=
 
{{Fixbox|description=Disable depth of field|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
Line 138: Line 225:
 
===Film grain===
 
===Film grain===
 
{{Fixbox|description=Disable film grain|fix=
 
{{Fixbox|description=Disable film grain|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
Line 146: Line 233:
 
===Lens flare===
 
===Lens flare===
 
{{Fixbox|description=Disable lens flare|fix=
 
{{Fixbox|description=Disable lens flare|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
Line 154: Line 241:
 
===Motion blur===
 
===Motion blur===
 
{{Fixbox|description=Disable motion blur|fix=
 
{{Fixbox|description=Disable motion blur|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
Line 160: Line 247:
 
</pre>}}
 
</pre>}}
  
===Temporal upsampling (TAAU)===
+
===Temporal Super Resolution===
{{ii}} Unreal Engine '''4.19''' added support for temporal upsampling.<ref>{{Refurl|url=https://www.unrealengine.com/en-US/blog/unreal-engine-4-19-released|title=Unreal Engine - Unreal Engine 4.19 Released!|date=2021-09-22}}</ref>
 
 
{{mm}} See the [https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/ScreenPercentage/#temporalanti-aliasingupsample official engine documentation] for more details.
 
{{mm}} See the [https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/ScreenPercentage/#temporalanti-aliasingupsample official engine documentation] for more details.
  
{{Fixbox|description=Enable temporal upsampling (TAAU)|fix=
+
{{Fixbox|description=Enable temporal AA upsampling (TAAU) GEN 4|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
{{ii}} Unreal Engine '''4.19''' added support for temporal AA upsampling GEN 4.<ref>{{Refurl|url=https://www.unrealengine.com/en-US/blog/unreal-engine-4-19-released|title=TAAU GEN 4|date=2022-07-05}}</ref>
 +
 
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.DefaultFeature.AntiAliasing=2
 +
r.PostProcessAAQuality=4
 +
r.TemporalAA.Upsampling=1
 +
r.TemporalAA.Algorithm=0
 +
r.ScreenPercentage=75
 +
</pre>
 +
}}
 +
 
 +
{{Fixbox|description=Enable temporal AA upsampling (TAAU) GEN 5|fix=
 +
{{ii}} Unreal Engine '''4.26''' added support for temporal AA upsampling GEN 5.<ref>{{Refurl|url=https://portal.productboard.com/epicgames/1-unreal-engine-public-roadmap/c/270-next-gen-temporal-aa-experimental|title=TAAU GEN 5|date=2022-07-05}}</ref>
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
 +
r.DefaultFeature.AntiAliasing=2
 +
r.PostProcessAAQuality=4
 
r.TemporalAA.Upsampling=1
 
r.TemporalAA.Upsampling=1
 +
r.TemporalAA.Algorithm=1
 +
r.ScreenPercentage=75
 
</pre>
 
</pre>
Use the in-game screen-percentage slider to control the input resolution, e.g. settings 50% when using 3840x2160 resolution will render internally at 1920x1080 and then upscale to 3840x2160 with temporal upsampling.  This function can't be used if a game doesn't have a screen-percentage slider.
 
 
}}
 
}}
  
 
===Vignette===
 
===Vignette===
{{Fixbox|description=Disable all tonemapping|ref=|fix=
+
{{Fixbox|description=Disable Vignette|ref=|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[SystemSettings]
 
[SystemSettings]
r.Tonemapper.Quality=0
+
r.Tonemapper.Quality=1
 
</pre>
 
</pre>
* 0 = Disable all types of tonemapping shaders.
+
* 0 = Use Legacy tonemapper.
* 1 = Film contrast.
+
* 1 = Use ACES tonemapper.<ref>{{Refurl|url=https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/PostProcessEffects/ColorGrading/|title=ACES Tonemapper|date=2022-08-16}}</ref>
* 2 = Film contrast and vignette.
+
* 2 = Use ACES tonemapper and vignette.
* 3 = Film contrast, vignette, and film shadow tint.
 
* 4 = Film contrast, vignette, film shadow tint, and grain.
 
* 5 = Film contrast, vignette, film shadow tint, grain, and "GrainJitter".
 
 
}}
 
}}
 +
 +
===[[Glossary:Ray tracing|Ray tracing]]===
  
 
==Input==
 
==Input==
 
===[[Glossary:Mouse acceleration#Mouse smoothing|Mouse smoothing]]===
 
===[[Glossary:Mouse acceleration#Mouse smoothing|Mouse smoothing]]===
 
{{Fixbox|description=Disable mouse smoothing|fix=
 
{{Fixbox|description=Disable mouse smoothing|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Input.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Input.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 
[/Script/Engine.InputSettings]
 
[/Script/Engine.InputSettings]
 
bEnableMouseSmoothing=False
 
bEnableMouseSmoothing=False
 
</pre>}}
 
</pre>}}
 +
===Controller analog stick options===
 +
{{Fixbox|description=Change sensitivity, deadzone size, inversion|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Input.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[/script/engine.inputsettings]
 +
AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +
AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +
AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +
AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
 +
</pre>
 +
where the currently used values are the default.}}
  
 
==Issues fixed==
 
==Issues fixed==
===Streaming stutter/slowdown===
+
===Stuttering===
{{ii}} By default UE4 is setup to stream in level assets while playing, which could cause stuttering during gameplay when those assets are loaded.
+
{{ii}} There are two main causes of stutters in Unreal Engine 4 games, shader compilation stutters as well as texture streaming related stutters.
{{++}} Fortunately this streaming can be controlled with a console variable, for people with plenty of RAM & VRAM it might be better to disable it and load in all assets when the level first loads instead.
+
 
{{--}} Changing it this way will cause some stutter/freezing when first loading into the level, but after finished loading it should hopefully let gameplay be more stable.
+
{{Fixbox|description=Shader compilation related stuttering|fix=
{{Fixbox|description=Disable UE4 asset streaming, and load all assets on map load|fix=
+
{{ii}} Stuttering as a result of shader compilation is a growing cause of minor and major stutters in Unreal Engine 4 games that has become more common in recent years. If a game does not perform any precompilation of the shaders (either during loading screens, in the background, or as a dedicated process when changing graphical elements), the engine will compile the shader on its first use. This process is supposed to be asynchronous in nature, but is seems to not always be the case as the compilation is capable of causing a stutter as the game halts to wait for it to finish.
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
{{mm}} The frequency of this varies between game and even in-game world/area/gameplay, but in general it can be assumed to occur ''once'' for every single shader of the game until all shaders has been compiled and cached in the shader cache of the display drivers. Note that a reinstall/update of the display driver also tend to resets the aformentioned shader cache.
 +
 
 +
Unfortunately there is no console variable (cvar) to tweak this behavior,{{cn|What about bAllowAsynchronousShaderCompiling ?}} however [[DXVK-async]] might be used to reduce or eliminate shader compilation stutters since it offloads these operations to a worker thread instead of performing them on the main rendering thread of the game. Note however that using DXVK-async may reduce the average frame rate by up to 20% depending on the game.
 +
}}
 +
 
 +
{{Fixbox|description=Forcibly enable compiling of shaders on load|fix=
 +
# Go to {{folder|{{p|localappdata}}\(game name)\Saved\Config\WindowsNoEditor\}} directory.
 +
# Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variables via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
r.Streaming.FullyLoadUsedTextures=1
+
[/script/engine.renderersettings]
r.Streaming.HLODStrategy=2
+
r.CreateShadersOnLoad=1
</pre>}}
+
niagara.CreateShadersOnLoad=1
 +
</pre>
 +
 
 +
{{++}} Resolves basically all the stuttering caused by compiling shaders at draw time.
 +
{{--}} Can significantly increase RAM usage.
 +
{{--}} Since it pre-compiles ''every'' variant of shader found on the level you loaded, it can take a lot of time to compile them, and increase your CPU usage. This effect varies by your CPU speed.
 +
{{ii}} On Linux, Proton/Wine users using DXVK can see the progress by using <code>DXVK_HUD=pipelines,compiler</code> environment variable.
 +
}}
 +
 
 +
{{Fixbox|description=Texture streaming related stuttering|fix=
 +
{{ii}} By default UE4 is setup to gradually stream in textures while playing, which could cause stuttering. Fortunately it can be controlled with a console variable. For people with a lot of RAM and VRAM it might be better to disable it and load in all textures right away.
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
r.TextureStreaming=0
 +
</pre>
 +
}}
 +
{{Fixbox|description=Disable Control Flow Guard|ref=|fix=
 +
{{ii}} Fixes stuttering issues in e.g. Squad, It Takes Two and Borderlands 3 (where <code>--NOTEXTURESTREAMING</code> launch option was still not good enough solution<ref>https://new.reddit.com/r/borderlands3/comments/odd9zb/comment/hqlkyh0/?utm_source=reddit&utm_medium=web2x&context=3</ref>)
 +
# Search for "Exploit Protection" and run it
 +
# Open '''Windows Security'''.
 +
# Navigate to the '''App & browser control''' and click on '''Exploit protection settings'''.
 +
# Click on the '''Program settings''' header, followed by '''Add program to customize'''.
 +
# Add the program by its executable filename or by browsing to it.
 +
# Scroll down to '''Control flow guard (CFG)'''.
 +
# Enable '''Override system settings''' and ensure the toggle is set to '''Off'''.
 +
# Click on '''Apply''' to save the changes.
 +
# Restart the system to allow the changes to take effect.
 +
# Some people will need to additionally change the game to DX11 setting afterwards to see the improvement<ref>https://www.reddit.com/r/borderlands3/comments/odd9zb/comment/hsqsdxf/?utm_source=share&utm_medium=web2x&context=3</ref>.
 +
}}
  
 
===Jittery temporal anti-aliasing===
 
===Jittery temporal anti-aliasing===
 
{{--}} At higher TAA sample counts edges may appear jittery, even when still with no camera movement.
 
{{--}} At higher TAA sample counts edges may appear jittery, even when still with no camera movement.
 
{{++}} Fortunately it seems there's a way to remove the jitter without compromising on TAA quality/sample count.
 
{{++}} Fortunately it seems there's a way to remove the jitter without compromising on TAA quality/sample count.
{{--}} This method supposedly could cause more ghosting in some games, though the author couldn't see this happen.
+
{{--}} This method may cause more ghosting to appear in some games.
  
 
{{Fixbox|description=Stop current frame from being considered in TAA|fix=
 
{{Fixbox|description=Stop current frame from being considered in TAA|fix=
Using [[#Permanent console variable (cvar) changes|the guide below]], change {{File|Engine.ini}} to include these lines:
+
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 
<pre>
 
<pre>
 +
[SystemSettings]
 
r.TemporalAACurrentFrameWeight=0
 
r.TemporalAACurrentFrameWeight=0
 
</pre>
 
</pre>
Line 242: Line 393:
  
 
{{Fixbox|description=Allow a game to use the native resolution in borderless window modes|ref=<ref>{{Refcheck|user=Aemony|date=2019-10-25|comment=Used same method now for both Code Vein and The Outer World.}}</ref>|fix=
 
{{Fixbox|description=Allow a game to use the native resolution in borderless window modes|ref=<ref>{{Refcheck|user=Aemony|date=2019-10-25|comment=Used same method now for both Code Vein and The Outer World.}}</ref>|fix=
# Locate the main game executable (''e.g. {{file|<internal-project-name>-Win64-Shipping.exe}}'') in a subfolder of the game.
+
# Locate the main game executable (e.g. {{file|<internal-project-name>-Win64-Shipping.exe}}) in a subfolder of the game.
#* This is usually located in <code>{{p|game}}\<internal-project-name>\Binaries\Win64\</code> ('''Win32''' if 32-bit).
+
#* This is usually located in {{folder|{{p|game}}\<internal-project-name>\Binaries\Win64\}} ({{folder|Win32}} if 32-bit).
 
# Right-click on the executable and select '''Properties'''.
 
# Right-click on the executable and select '''Properties'''.
 
# Navigate to the '''Compatibility''' tab and click on '''Change high DPI settings'''.
 
# Navigate to the '''Compatibility''' tab and click on '''Change high DPI settings'''.
 
# Enable the following options:
 
# Enable the following options:
#* '''[x]''' Use this setting to fix scaling problems for this program instead of the one in Settings
 
#* Use the DPI that's set for my main display when <code>I signed in to Windows</code>
 
 
#* '''[x]''' Override high DPI scaling behavior.
 
#* '''[x]''' Override high DPI scaling behavior.
#* Scaling performed by: <code>Application</code>
+
#* Scaling performed by: {{code|Application}}
 
# Click on '''OK''' followed by '''OK''' again.
 
# Click on '''OK''' followed by '''OK''' again.
 
# If performed correctly this should result in the borderless window mode of the game using the native resolution of the monitor as its internal render resolution.
 
# If performed correctly this should result in the borderless window mode of the game using the native resolution of the monitor as its internal render resolution.
Line 257: Line 406:
 
===SteamVR starts despite the game not using HMD devices===
 
===SteamVR starts despite the game not using HMD devices===
 
{{Fixbox|description=Start the game with {{code|-nohmd}} [[Glossary:Command line arguments|parameter]].|ref=<ref>{{Refcheck|user=Suicide machine|date=2021-07-30}}</ref><ref>{{Refurl|url=https://answers.unrealengine.com/questions/1021190/stopping-game-from-launching-in-vr.html?sort=oldest|title=Stopping game from launching in VR|date=2021-07-30}}</ref>}}
 
{{Fixbox|description=Start the game with {{code|-nohmd}} [[Glossary:Command line arguments|parameter]].|ref=<ref>{{Refcheck|user=Suicide machine|date=2021-07-30}}</ref><ref>{{Refurl|url=https://answers.unrealengine.com/questions/1021190/stopping-game-from-launching-in-vr.html?sort=oldest|title=Stopping game from launching in VR|date=2021-07-30}}</ref>}}
 +
 
==Other information==
 
==Other information==
 +
===GameThread timed out waiting for RenderThread - After Windows Standby===
 +
{{ii}} Games may crash after a longer standby period. This can be fixed by increasing the timeout value.
 +
{{Fixbox|description=Increase the timeout value|fix=
 +
Using [[#Permanent console variable (cvar) changes|the guide below]], modify {{File|Engine.ini}} to include the following lines or enforce the variable via [[#Unreal Engine 4/5 Scripting System|UE4SS]]:
 +
<pre>
 +
[SystemSettings]
 +
g.TimeoutForBlockOnRenderFence=9999999
 +
</pre>
 +
}}
 +
 +
===[https://github.com/UE4SS-RE/RE-UE4SS Unreal Engine 4/5 Scripting System]===
 +
{{ii}} UE4SS is a scripting system for UE4/UE5. Includes a console enabler script by default.
 +
{{ii}} While UE4SS has a high compatibility with most UE titles, only '''UE 4.12''' onwards are officially supported by it, and certain games may also have customized the engine enough for UE4SS to no longer be compatible. Titles not supported by UE4SS may have support added by the UE4SS community, searching the [https://github.com/UE4SS-RE/RE-UE4SS/issues GitHub Issues page] may help to find UE4SS configs for unsupported games.
 +
{{Fixbox|description=Installation|ref=<ref name=sandemcref>{{Refcheck|user=Sandemc|date=2024-03-11}}</ref>|fix=
 +
# Download the latest [https://github.com/UE4SS-RE/RE-UE4SS/releases UE4SS release].
 +
# Locate the main executable of the game (UE titles usually contain a launcher in the root folder and the main EXE in the {{folder|{{P|game}}\Win64\Binaries}} folder).
 +
# After locating the main executable, extract the full contents of the UE4SS archive there.
 +
# Try to launch the game, if no fatal errors appear, UE4SS has been successfully installed.
 +
 +
'''Notes'''
 +
{{ii}} If the game isn't supported it may show a fatal error or crash dump message, as mentioned above it may be worth searching the [https://github.com/UE4SS-RE/RE-UE4SS/issues GitHub Issues page] to see if others encountered the same issue, and whether they found a solution.
 +
{{ii}} The UE4SS wiki also has a [https://docs.ue4ss.com/dev/guides/fixing-compatibility-problems.html guide to fixing compatibility issues], and the [https://github.com/trumank/patternsleuth patternsleuth] tool may also help with locating the functions UE4SS requires.
 +
}}
  
 
===Enable developer console===
 
===Enable developer console===
Line 265: Line 438:
 
{{Fixbox|description=Extract and set up the Universal Unreal Engine 4 Unlocker|fix=
 
{{Fixbox|description=Extract and set up the Universal Unreal Engine 4 Unlocker|fix=
 
# Download and extract the [https://framedsc.github.io/GeneralGuides/universal_ue4_consoleunlocker.htm#downloading-the-unlocker Universal Unreal Engine 4 Unlocker].
 
# Download and extract the [https://framedsc.github.io/GeneralGuides/universal_ue4_consoleunlocker.htm#downloading-the-unlocker Universal Unreal Engine 4 Unlocker].
# Run <code>UuuClient.exe</code>.
+
# Run {{file|UuuClient.exe}}.
 
# Click 'Select' to select the process to inject the DLL into.  
 
# Click 'Select' to select the process to inject the DLL into.  
 
# Once the injection succeeds, press {{key|~}} in game to bring up the UE4 console (one press brings up mini-console, two presses will show the full thing).
 
# Once the injection succeeds, press {{key|~}} in game to bring up the UE4 console (one press brings up mini-console, two presses will show the full thing).
Line 271: Line 444:
  
 
'''Notes'''
 
'''Notes'''
{{ii}} <code>UuuClient.exe</code> needs to be run each time the game is started, as this fix is not permanent. Use the [https://community.pcgamingwiki.com/files/file/1443-universal-ue4-dev-console-launcher/ UE4 dev-console launcher] to automatically launch games with the console enabled.
+
{{ii}} {{file|UuuClient.exe}} needs to be run each time the game is started, as this fix is not permanent. Use the [https://community.pcgamingwiki.com/files/file/1443-universal-ue4-dev-console-launcher/ UE4 dev-console launcher] to automatically launch games with the console enabled.
{{ii}} If the console doesn't open when pressing {{key|~}}, try following the instructions in the console unlocker's <code>Readme.txt</code> file.
+
{{ii}} If the console doesn't open when pressing {{key|~}}, try following the instructions in the console unlocker's {{file|Readme.txt}} file.
 +
{{ii}} Some games may display an empty console with no text visible, this can be caused by the game not including fonts required by the dev console, which might be fixed by copying {{File|Roboto-Regular.ttf}} from another game (or from [https://fonts.google.com/specimen/Roboto Google font pack]) into the {{folder|{{P|game}}\Engine\Content\Slate\Fonts\}} directory.
 +
}}
 +
 
 +
{{Fixbox|description=Enable console with a [[#Unreal Engine 4/5 Scripting System|UE4SS]] script|ref=<ref name=sandemcref/>|fix=
 +
# Install [[#Unreal Engine 4/5 Scripting System|UE4SS]].
 +
# The console is now available when pressing {{key|F10}} (can be configured by editing {{folder|Mods\ConsoleEnablerMod\Scripts\{{file|main.lua}}}}).
 
}}
 
}}
  
 
===Permanent console variable (cvar) changes===
 
===Permanent console variable (cvar) changes===
 +
{{mm}} Global list of all console variables available [https://digilander.libero.it/ZioYuri78/ here].
 +
 
{{ii}} Like most engines that use console variables, Unreal Engine 4 has a config file that the variables' values are read from at startup.
 
{{ii}} Like most engines that use console variables, Unreal Engine 4 has a config file that the variables' values are read from at startup.
{{--}} Unlike in most engines, the method it uses may not be obvious. Editing files such as Scalability.ini could result in the entered values ignored depending on the graphics settings.
+
{{--}} Unlike in most engines, the method it uses may not be obvious. Editing files such as {{file|Scalability.ini}} could result in entered values being ignored depending on the graphics settings.
{{++}} Entering cvars into the Engine.ini file instead should ensure the value changes will take place.
+
{{Fixbox|description=Add cvar name/values to {{file|Engine.ini}}|fix=
{{Fixbox|description=Add cvar name/values to the Engine.ini file|fix=
+
{{file|Engine.ini}} will usually accept cvar name/value pairs inside it, but only if entered into a {{code|[SystemSettings]}} section.
The Engine.ini file will usually accept cvar name/value pairs inside it, but only if entered into a <code>[SystemSettings]</code> section.
+
# Open the {{file|Engine.ini}} file inside the games config folder in a text editor.
# Open the <code>Engine.ini</code> file inside the games config folder in a text editor.
+
# If the file does not have a {{code|[SystemSettings]}} section, add one to the bottom.
# If the file does not have a <code>[SystemSettings]</code> section, add one to the bottom.
+
# Inside that section, add any preferred cvar name/value pairs, with the name/value separated with an '=' character, eg: {{code|1=r.MaxAnisotropy=16}}. Comments can also be added to the file by starting them with a ';' character.
# Inside that section, add any preferred cvar name/value pairs, with the name/value separated with an '=' character, eg: <code>r.MaxAnisotropy=16</code>. Comments can also be added to the file by starting them with a ';' character.
 
 
# Save the file.
 
# Save the file.
  
 
'''Notes'''
 
'''Notes'''
{{ii}} Values set with this method should usually override any value set elsewhere, however, some games might store values inside savegames, which may override them when the save gets loaded - the only workaround for these kind of games is to set the value after loading the save [[#Enable developer console|through the developer console]] and expect that the modified value may be written into the save.
+
{{ii}} Values set with this method should usually override any value set elsewhere, however, some games might store values inside savegames or set them per-scene, which may override them when the save gets loaded or a scene gets switched - the only workaround for these kind of games is to set the value [[#Enable developer console|through the developer console]] after loading the save and expect that the modified value may be written into the save.
{{ii}} The game may rewrite this file when exiting, usually removing any empty lines and lines containing only comments - any custom cvars should still be saved.
+
{{ii}} The game may rewrite this file when exiting, usually removing any empty lines and lines containing only comments - any custom cvars should still be saved, though the file can be set as "read-only" if this rewrite isn't desired.
 
{{ii}} Changes to the games config files should be made while it is not running. As previously mentioned, the game may overwrite the file when exiting.
 
{{ii}} Changes to the games config files should be made while it is not running. As previously mentioned, the game may overwrite the file when exiting.
{{ii}} Unreal Engine 4 uses a hierarchical configuration scheme (on top of the multiple configuration categories previously mentioned), meaning that there can be multiple versions of (e.g.) Engine.ini found in different places, some of which may be prefixed with 'Default', 'Base', or 'Windows'. In general, it is best to edit the config file in the user configuration directory, as this should take priority over all others and work even if the game ships with encrypted config files. The file is usually located in <code>{{P|localappdata}}\<Game>\Saved\Config\</code>.
+
{{ii}} Unreal Engine 4 uses a hierarchical configuration scheme (on top of the multiple configuration categories previously mentioned), meaning that there can be multiple versions of (e.g.) {{file|Engine.ini}} found in different places, some of which may be prefixed with 'Default', 'Base', or 'Windows'. In general, it is best to edit the config file in the user configuration directory, as this should take priority over all others and work even if the game ships with encrypted config files. The file is usually located in {{folder|{{P|localappdata}}\<Game>\Saved\Config\}}.
 +
}}
 +
{{Fixbox|description=Force console variables via a UE4SS script|ref=<ref name=sandemcref/>|fix=
 +
{{ii}} If the alternative methods to set cvars don't work due to the game overriding them after loading a savefile or setting them per-scene, you can try forcing them in runtime using [[#Unreal Engine 4/5 Scripting System|UE4SS]].
 +
# Install [[#Unreal Engine 4/5 Scripting System|UE4SS]].
 +
# Create a new folder in {{File|Mods|folder}} with your mod's name.
 +
# Inside that folder, create a {{File|Scripts|folder}} folder.
 +
# Inside {{File|Scripts|folder}}, create a new file called {{File|main.lua}}.
 +
# Use the [https://community.pcgamingwiki.com/files/file/2921-sample-mainlua-for-forcing-ue4-cvars-in-runtime/ sample file] for reference on configuration. In the <code>Init()</code> function put values that only need to be initalized once. In the <code>Loop()</code> function put values that need to be initialized actively in the runtime.
 +
# Once you're done editing the script to your needs, save the file.
 +
# Edit {{File|mods.txt}} with the name of your mod folder at the bottom, i.e. <code>ForceRT : 1</code>.
 +
# Save the file.
 
}}
 
}}
  
 
===[https://www.epicgames.com/store/browse?sortBy=relevance&sortDir=DESC&category=Editor&count=40&start=0 Modding tools]===
 
===[https://www.epicgames.com/store/browse?sortBy=relevance&sortDir=DESC&category=Editor&count=40&start=0 Modding tools]===
 
{{++}} Customized versions of the Unreal Editor for creating custom maps and mods for select UE4 games can be found on the [[Epic Games Store]].
 
{{++}} Customized versions of the Unreal Editor for creating custom maps and mods for select UE4 games can be found on the [[Epic Games Store]].
{{--}} The Unreal Engine EULA states that any engine tools must only be distributed through authorized services such as the Epic Games Store, Unreal Marketplace or private GitHub repositories that can only be accessed with an Epic-linked GitHub account. They cannot be distributed through Steam, GOG.com or other storefronts.<ref>{{Refurl|url=https://www.unrealengine.com/eula/publishing|title=Unreal Engine - End User License Agreement For Publishing|date=2021-08-05|snippet=Any public Distribution (i.e., intended for Engine Licensees generally) which includes Engine Tools (including as modified by you under the License) must take place either through the Marketplace (e.g., for distributing a Product’s modding tool or editor to end users) or through a fork of Epic’s GitHub UnrealEngine Network (e.g., for distributing source code).}}</ref>
 
  
{{Infobox engine/ask}}
+
==Games==
 +
{{mm}} [[List of games that use Unreal Engine 4]]
  
 
{{References}}
 
{{References}}

Latest revision as of 07:57, 11 March 2024

Unreal Engine 4
Unreal Engine logo.svg
Developers
Website
First release date
Predecessor
Successor

Key points

Complete suite of game development tools and engine used by over 1000 games, see Games.

Video

Multi-monitor

See Ultra-widescreen.

Ultra-widescreen

Unreal Engine games are Vert- by default, unless the developer specifically implements proper Hor+ ultrawide support. See each individual game's entry page for specifics.
If a game is Vert-, FOV can be increased to give a proper 1:1 Hor+ ultrawide image. See the ultra-widescreen glossary page for details.
If a game does not allow FOV to be adjusted, and an external mod to implement it does not exist for the specific game in question, then the game does not support a proper ultrawide experience.
For multi-monitor or 32:9 setups, the resolution may be so wide that the in-game FOV option may not go high enough to achieve a proper 1:1 Hor+ image. See individual game entry pages for workarounds.

Field of view (FOV)

The FOV variable name is set individually by each developer and differs from game to game, so unfortunately there is no universal solution for adjusting FOV in games where it is not available as an option.
If the developers of a particular game have implemented FOV as a variable, it can usually be adjusted in GameUserSettings.ini.
For games in which customizable FOV is not supported, a wider FOV can be obtained by changing the FOV scaling from horizontal to vertical.
Change FOV scaling

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[/Script/Engine.LocalPlayer]
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV
In earlier versions of the engine, making the change causes all horizontal FOV values to be vertical, potentially resulting in a severe FOV increase. Making the change in later versions of the engine forces the game to maintain its native vertical FOV.

Borderless fullscreen windowed

Borderless Fullscreen

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.FullScreenMode=1

Exclusive fullscreen

Exclusive Fullscreen

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.FullScreenMode=0

Anti-aliasing (AA)

The engine supports both FXAA and TAA, and in most games either one can be forced, or outright disabled.
Enable Temporal AA (TAA)

Using the guide below, modify Engine.ini to include the following lines or enforce the variables via UE4SS:

[SystemSettings]
r.DefaultFeature.AntiAliasing=2
r.PostProcessAAQuality=4

Notes

Adjust the anti-aliasing quality level using the r.PostProcessAAQuality console variable. For Temporal AA, there is a trade off between fill speed of the effect and quality, the higher the value you use. 2 with Temporal AA is fast to settle but jitter caused by the effect will be more pronounced. 4 will settle slower but will not jitter. A value of 0 will disable the anti-aliasing.[1]
Enable FXAA

Using the guide below, modify Engine.ini to include the following lines or enforce the variables via UE4SS:

[SystemSettings]
r.DefaultFeature.AntiAliasing=1
r.PostProcessAAQuality=4

Notes

Adjust the anti-aliasing quality level using the r.PostProcessAAQuality console variable. For FXAA, the effect of values 2, 4, and 6 will see the smoothing of jagged edges become better and better. Values above 6 have no effect. A value of 0 will disable the anti-aliasing.[1]
Disable anti-aliasing

Using the guide below, modify Engine.ini to include the following lines or enforce the variables via UE4SS:

[SystemSettings]
r.DefaultFeature.AntiAliasing=0
r.PostProcessAAQuality=0

Sharpen

Enable and adjust image sharpening

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.Tonemapper.Sharpen=1
This will sharpen the image and can help to offset the blur caused by FXAA and TAA. A value between 0.5 to 1.0 is recommended. 10.0 is the maximum. It has no performance impact.

Anisotropic filtering (AF)

Set anisotropic filtering to the highest quality

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.MaxAnisotropy=16

Vertical sync (Vsync)

Disable Vsync

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.VSync=0

Frame rate (FPS)

Disable smooth frame rate

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[/Script/Engine.Engine]
bSmoothFrameRate=False
Disable FPS cap

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[/Script/Engine.RendererSettings]
t.MaxFPS=0
Set FPS limit

Using the guide below, modify GameUserSettings.ini to include the following lines or enforce the variable via UE4SS:

[/Script/Engine.GameUserSettings]
FrameRateLimit=60.000000

High dynamic range (HDR)

For a list of known games and their specifics, see Unreal Engine 4-5 games where HDR can be forced.

Unreal Engine 4 have native HDR output that can be forced in many newer games with mixed results. Earlier versions of the engine required running in Exclusive Fullscreen (FSE) in order for this to work, while newer versions supports it for windowed modes as well, though some more recent versions have broken HDR in DirectX 12,[citation needed] requiring the use of -dx11 launch argument to run games in DirectX 11.[Note 1]

Force the built-in HDR display output of the engine:
  1. Refer to the list of Unreal Engine 4-5 games where HDR can be forced for details about whether the built-in HDR display output is known to work with the game.
  2. Using the guide below, modify GameUserSettings.ini to include the following lines or enforce the variables via UE4SS:
    [SystemSettings]
    r.AllowHDR=1
    r.HDR.EnableHDROutput=1
    r.HDR.Display.OutputDevice=5
    r.HDR.Display.ColorGamut=2
    

    Optional changes:

    • If the display supports 2000 nits or higher, change r.HDR.Display.OutputDevice to 6 to use the 2000 nits output mode.
    • Add these lines to boost the UI brightness which may make it integrate better with HDR:
    r.HDR.UI.CompositeMode=1
    r.HDR.UI.Level=1.5
    
  3. If DirectX 11 must be forced for HDR output to work, launch the game using the -dx11 command line argument.[Note 1]
  4. The game should now launch with HDR display output enabled and working.

Notes

See the official engine documentation for more details.

Adaptive exposure

Disable Adaptive Exposure

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.EyeAdaptationQuality=0

Ambient occlusion

Disable Ambient Occlusion

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.AmbientOcclusionLevels=0

Bloom

Disable Bloom

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.BloomQuality=0

Screen Space Reflections

Disable SSR

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.SSR=0

Fog

Disable Fog

Using the guide below, modify Engine.ini to include the following lines or enforce the variables via UE4SS:

[SystemSettings]
r.Fog=0
r.VolumetricFog=0

Chromatic aberration

Disable Chromatic Aberration

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.SceneColorFringeQuality=0

Depth of field

Disable depth of field

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.DepthOfFieldQuality=0

Film grain

Disable film grain

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.Tonemapper.GrainQuantization=0

Lens flare

Disable lens flare

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.LensFlareQuality=0

Motion blur

Disable motion blur

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.MotionBlurQuality=0

Temporal Super Resolution

See the official engine documentation for more details.
Enable temporal AA upsampling (TAAU) GEN 4
Unreal Engine 4.19 added support for temporal AA upsampling GEN 4.[2]

Using the guide below, modify Engine.ini to include the following lines or enforce the variables via UE4SS:

[SystemSettings]
r.DefaultFeature.AntiAliasing=2
r.PostProcessAAQuality=4
r.TemporalAA.Upsampling=1
r.TemporalAA.Algorithm=0
r.ScreenPercentage=75
Enable temporal AA upsampling (TAAU) GEN 5
Unreal Engine 4.26 added support for temporal AA upsampling GEN 5.[3]

Using the guide below, modify Engine.ini to include the following lines or enforce the variables via UE4SS:

[SystemSettings]
r.DefaultFeature.AntiAliasing=2
r.PostProcessAAQuality=4
r.TemporalAA.Upsampling=1
r.TemporalAA.Algorithm=1
r.ScreenPercentage=75

Vignette

Disable Vignette

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.Tonemapper.Quality=1
  • 0 = Use Legacy tonemapper.
  • 1 = Use ACES tonemapper.[4]
  • 2 = Use ACES tonemapper and vignette.

Ray tracing

Input

Mouse smoothing

Disable mouse smoothing

Using the guide below, modify Input.ini to include the following lines or enforce the variable via UE4SS:

[/Script/Engine.InputSettings]
bEnableMouseSmoothing=False

Controller analog stick options

Change sensitivity, deadzone size, inversion

Using the guide below, modify Input.ini to include the following lines or enforce the variables via UE4SS:

[/script/engine.inputsettings]
AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))

where the currently used values are the default.

Issues fixed

Stuttering

There are two main causes of stutters in Unreal Engine 4 games, shader compilation stutters as well as texture streaming related stutters.
Shader compilation related stuttering
Stuttering as a result of shader compilation is a growing cause of minor and major stutters in Unreal Engine 4 games that has become more common in recent years. If a game does not perform any precompilation of the shaders (either during loading screens, in the background, or as a dedicated process when changing graphical elements), the engine will compile the shader on its first use. This process is supposed to be asynchronous in nature, but is seems to not always be the case as the compilation is capable of causing a stutter as the game halts to wait for it to finish.
The frequency of this varies between game and even in-game world/area/gameplay, but in general it can be assumed to occur once for every single shader of the game until all shaders has been compiled and cached in the shader cache of the display drivers. Note that a reinstall/update of the display driver also tend to resets the aformentioned shader cache.

Unfortunately there is no console variable (cvar) to tweak this behavior,[citation needed] however DXVK-async might be used to reduce or eliminate shader compilation stutters since it offloads these operations to a worker thread instead of performing them on the main rendering thread of the game. Note however that using DXVK-async may reduce the average frame rate by up to 20% depending on the game.

Forcibly enable compiling of shaders on load
  1. Go to %LOCALAPPDATA%\(game name)\Saved\Config\WindowsNoEditor\ directory.
  2. Using the guide below, modify Engine.ini to include the following lines or enforce the variables via UE4SS:
[/script/engine.renderersettings]
r.CreateShadersOnLoad=1
niagara.CreateShadersOnLoad=1
Resolves basically all the stuttering caused by compiling shaders at draw time.
Can significantly increase RAM usage.
Since it pre-compiles every variant of shader found on the level you loaded, it can take a lot of time to compile them, and increase your CPU usage. This effect varies by your CPU speed.
On Linux, Proton/Wine users using DXVK can see the progress by using DXVK_HUD=pipelines,compiler environment variable.
Texture streaming related stuttering
By default UE4 is setup to gradually stream in textures while playing, which could cause stuttering. Fortunately it can be controlled with a console variable. For people with a lot of RAM and VRAM it might be better to disable it and load in all textures right away.

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.TextureStreaming=0
Disable Control Flow Guard
Fixes stuttering issues in e.g. Squad, It Takes Two and Borderlands 3 (where --NOTEXTURESTREAMING launch option was still not good enough solution[5])
  1. Search for "Exploit Protection" and run it
  2. Open Windows Security.
  3. Navigate to the App & browser control and click on Exploit protection settings.
  4. Click on the Program settings header, followed by Add program to customize.
  5. Add the program by its executable filename or by browsing to it.
  6. Scroll down to Control flow guard (CFG).
  7. Enable Override system settings and ensure the toggle is set to Off.
  8. Click on Apply to save the changes.
  9. Restart the system to allow the changes to take effect.
  10. Some people will need to additionally change the game to DX11 setting afterwards to see the improvement[6].

Jittery temporal anti-aliasing

At higher TAA sample counts edges may appear jittery, even when still with no camera movement.
Fortunately it seems there's a way to remove the jitter without compromising on TAA quality/sample count.
This method may cause more ghosting to appear in some games.
Stop current frame from being considered in TAA

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
r.TemporalAACurrentFrameWeight=0

Note that as mentioned above this may cause more ghosting artifacts to appear, likely depends on which UE4 version the game uses as different UE4 versions use slightly different TAA implementations. Using a value range of =0.2 through =.45 will remove ghosting and jitter. Value range is dependent on the game. Start at .2 then increase as needed.

Entire game besides the HUD and menu elements are white on Linux

This bug may occur when using a Vulkan beta driver from Nvidia.
Disable Use Collapsed Arrays option for the game

Run the game with this Launch Parameter:

__GL_GlslUseCollapsedArrays=0

On Steam that would be:

__GL_GlslUseCollapsedArrays=0 %command%

Native resolution is not available in borderless window modes

Newer versions of Unreal Engine 4 handles DPI automatically and prevents the use of native resolutions when a borderless window mode is being used. The render resolution will instead be the lower "DPI-aware" resolution.
For example, on a 3840x2160 monitor with 150% DPI scaling set, 2560x1440 will be used instead, as 3840 / 1.5 (150%) = 2560 and 2160 / 1.5 (150%) = 1440.
Allow a game to use the native resolution in borderless window modes[7]
  1. Locate the main game executable (e.g. <internal-project-name>-Win64-Shipping.exe) in a subfolder of the game.
    • This is usually located in <path-to-game>\<internal-project-name>\Binaries\Win64\ (Win32 if 32-bit).
  2. Right-click on the executable and select Properties.
  3. Navigate to the Compatibility tab and click on Change high DPI settings.
  4. Enable the following options:
    • [x] Override high DPI scaling behavior.
    • Scaling performed by: Application
  5. Click on OK followed by OK again.
  6. If performed correctly this should result in the borderless window mode of the game using the native resolution of the monitor as its internal render resolution.

SteamVR starts despite the game not using HMD devices

Start the game with -nohmd parameter.[8][9]

Other information

GameThread timed out waiting for RenderThread - After Windows Standby

Games may crash after a longer standby period. This can be fixed by increasing the timeout value.
Increase the timeout value

Using the guide below, modify Engine.ini to include the following lines or enforce the variable via UE4SS:

[SystemSettings]
g.TimeoutForBlockOnRenderFence=9999999

Unreal Engine 4/5 Scripting System

UE4SS is a scripting system for UE4/UE5. Includes a console enabler script by default.
While UE4SS has a high compatibility with most UE titles, only UE 4.12 onwards are officially supported by it, and certain games may also have customized the engine enough for UE4SS to no longer be compatible. Titles not supported by UE4SS may have support added by the UE4SS community, searching the GitHub Issues page may help to find UE4SS configs for unsupported games.
Installation[10]
  1. Download the latest UE4SS release.
  2. Locate the main executable of the game (UE titles usually contain a launcher in the root folder and the main EXE in the <path-to-game>\Win64\Binaries folder).
  3. After locating the main executable, extract the full contents of the UE4SS archive there.
  4. Try to launch the game, if no fatal errors appear, UE4SS has been successfully installed.

Notes

If the game isn't supported it may show a fatal error or crash dump message, as mentioned above it may be worth searching the GitHub Issues page to see if others encountered the same issue, and whether they found a solution.
The UE4SS wiki also has a guide to fixing compatibility issues, and the patternsleuth tool may also help with locating the functions UE4SS requires.

Enable developer console

The developer console allows real-time adjustments through various Unreal Engine 4 console variables, along with being able to run debug commands like ToggleDebugCamera that enables a flycam mode. Most games ship with the console disabled, although often retains code related to it that allows for its reactivation through third-party DLL injection.
Independent of custom game code - potential for reliability.
Extract and set up the Universal Unreal Engine 4 Unlocker
  1. Download and extract the Universal Unreal Engine 4 Unlocker.
  2. Run UuuClient.exe.
  3. Click 'Select' to select the process to inject the DLL into.
  4. Once the injection succeeds, press ~ in game to bring up the UE4 console (one press brings up mini-console, two presses will show the full thing).
  5. Type in desired command, or see this list of default UE4 cvars.[Note 2]

Notes

UuuClient.exe needs to be run each time the game is started, as this fix is not permanent. Use the UE4 dev-console launcher to automatically launch games with the console enabled.
If the console doesn't open when pressing ~, try following the instructions in the console unlocker's Readme.txt file.
Some games may display an empty console with no text visible, this can be caused by the game not including fonts required by the dev console, which might be fixed by copying Roboto-Regular.ttf from another game (or from Google font pack) into the <path-to-game>\Engine\Content\Slate\Fonts\ directory.
Enable console with a UE4SS script[10]
  1. Install UE4SS.
  2. The console is now available when pressing F10 (can be configured by editing Mods\ConsoleEnablerMod\Scripts\main.lua).

Permanent console variable (cvar) changes

Global list of all console variables available here.
Like most engines that use console variables, Unreal Engine 4 has a config file that the variables' values are read from at startup.
Unlike in most engines, the method it uses may not be obvious. Editing files such as Scalability.ini could result in entered values being ignored depending on the graphics settings.
Add cvar name/values to Engine.ini

Engine.ini will usually accept cvar name/value pairs inside it, but only if entered into a [SystemSettings] section.

  1. Open the Engine.ini file inside the games config folder in a text editor.
  2. If the file does not have a [SystemSettings] section, add one to the bottom.
  3. Inside that section, add any preferred cvar name/value pairs, with the name/value separated with an '=' character, eg: r.MaxAnisotropy=16. Comments can also be added to the file by starting them with a ';' character.
  4. Save the file.

Notes

Values set with this method should usually override any value set elsewhere, however, some games might store values inside savegames or set them per-scene, which may override them when the save gets loaded or a scene gets switched - the only workaround for these kind of games is to set the value through the developer console after loading the save and expect that the modified value may be written into the save.
The game may rewrite this file when exiting, usually removing any empty lines and lines containing only comments - any custom cvars should still be saved, though the file can be set as "read-only" if this rewrite isn't desired.
Changes to the games config files should be made while it is not running. As previously mentioned, the game may overwrite the file when exiting.
Unreal Engine 4 uses a hierarchical configuration scheme (on top of the multiple configuration categories previously mentioned), meaning that there can be multiple versions of (e.g.) Engine.ini found in different places, some of which may be prefixed with 'Default', 'Base', or 'Windows'. In general, it is best to edit the config file in the user configuration directory, as this should take priority over all others and work even if the game ships with encrypted config files. The file is usually located in %LOCALAPPDATA%\<Game>\Saved\Config\.
Force console variables via a UE4SS script[10]
If the alternative methods to set cvars don't work due to the game overriding them after loading a savefile or setting them per-scene, you can try forcing them in runtime using UE4SS.
  1. Install UE4SS.
  2. Create a new folder in Mods with your mod's name.
  3. Inside that folder, create a Scripts folder.
  4. Inside Scripts, create a new file called main.lua.
  5. Use the sample file for reference on configuration. In the Init() function put values that only need to be initalized once. In the Loop() function put values that need to be initialized actively in the runtime.
  6. Once you're done editing the script to your needs, save the file.
  7. Edit mods.txt with the name of your mod folder at the bottom, i.e. ForceRT : 1.
  8. Save the file.

Modding tools

Customized versions of the Unreal Editor for creating custom maps and mods for select UE4 games can be found on the Epic Games Store.

Games

List of games that use Unreal Engine 4


Notes

  1. 1.0 1.1 Running a game in D3D11 may not be officially supported and may experience additional unexpected issues unrelated to HDR.
  2. This list is for UE4 in general, most games will likely have custom ones not listed here.

References

  1. 1.0 1.1 Scalability Reference - last accessed on 2023-05-07
  2. TAAU GEN 4 - last accessed on 2022-07-05
  3. TAAU GEN 5 - last accessed on 2022-07-05
  4. ACES Tonemapper - last accessed on 2022-08-16
  5. https://new.reddit.com/r/borderlands3/comments/odd9zb/comment/hqlkyh0/?utm_source=reddit&utm_medium=web2x&context=3
  6. https://www.reddit.com/r/borderlands3/comments/odd9zb/comment/hsqsdxf/?utm_source=share&utm_medium=web2x&context=3
  7. Verified by User:Aemony on 2019-10-25
    Used same method now for both Code Vein and The Outer World.
  8. Verified by User:Suicide machine on 2021-07-30
  9. Stopping game from launching in VR - last accessed on 2021-07-30
  10. 10.0 10.1 10.2 Verified by User:Sandemc on 2024-03-11