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


Warning for game developers: PCGamingWiki staff members will only ever reach out to you using the official press@pcgamingwiki.com mail address.
Be aware of scammers claiming to be representatives or affiliates of PCGamingWiki who promise a PCGW page for a game key.

Engine:Unreal Engine 4

From PCGamingWiki, the wiki about fixing PC games
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 has had native HDR output support since version 4.14 and it can be forced in many games that don't officially support it 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 out of the box,[citation needed] requiring the use of -dx11 launch argument to run games in DirectX 11[Note 1].
Depending on the version of the engine or the way it renders UI, the UI might use the wrong gamma and look washed out. Additionally, some color correction features of the SDR tonemapper are skipped in HDR, like parts of the filmic grading (which isn't necessary, nor generally wanted in HDR) and color correction LUTs.

Some games don't acknowledge user config changes, for these it's sometimes possible to force HDR by runtime memory editing.

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 Engine.ini or 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
    

    Recommended changes (optional):

    • 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 make the UI blend in closely as how it did in SDR, and boost its brightness (this also allows HDR to work properly in DX12 in some UE4 versions, otherwise the UI would draw with the wrong gamma) (note that depending on the UE4 version, the UI will be broken regardless of the settings in 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.
  5. If DirectX 12 is the preferred or only way to play, and colors look off with it, start the game and try to bring out the developers console (e.g. with Universal Unreal Engine 4 Unlocker).
    After that, write r.HDR.Display.OutputDevice 3 (or r.HDR.Display.OutputDevice 4 for 2000+ nits) on it. This is because in UE4 DirectX 11 only supports scRGB HDR swapchains, while DirectX 12 only supports HDR10 swapchains, but UE4 wrongfully selected scRGB HDR mode for DX12 as well.

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

See the 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