Unreal Engine

From Satisfactory Wiki
Jump to navigation Jump to search
This article may need cleanup to meet quality standards.
Please help improve this if you can. The Discussion page may contain suggestions.
Reason: "Wording and casing"

Satisfactory is developed in Unreal Engine, which comprises a series of 3D computer graphics game engines developed by Epic Games.

Development started with version 4.16–4.18 in the Closed Alpha.[1] The game stayed on Unreal Engine 4 up until Patch 0.8.0.0, when it was ported to Unreal Engine 5.

Unreal Engine features

Nanite

The word Nanite is derived from the prefix "Nano" meaning one-billionth, referring to the fact that Unreal Engine Version 5 can handle polygons in the billions[2] versus polygons in the millions using Unreal Engine 4.xx.

The formal name for Nanite is Nanite Virtualized Geometry[Doc 1] which comes with the following benefits:

  • Multiple orders of magnitude increase in geometry complexity, higher triangle and objects counts than has been possible before in real-time
  • Frame budgets are no longer constrained by polycounts, draw calls, and mesh memory usage
  • Now possible to directly import film-quality source arts, such as ZBrush sculpts and photogrammetry scans
  • Use high-poly detailing rather than baking detail into normal map textures
  • Level of Detail (LOD) is automatically handled and no longer requires manual setup for individual mesh's LODs
  • Loss of quality is rare or non-existent, especially with LOD transitions

Usage

Nanite in Satisfactory is currently mainly used on Rocks, Cliffs items (see Examples below).[3]

While possible in Unreal Engine 5, Nanite won't mostly be used on foliage, but IS USED in Satisfactory on "Static Foliage" like the Titan Trees in the Titan Forest Biome (see Examples below).[4]

Nanite on "factory elements" is currently NOT being used but may be added later.

Examples

The first 4 images are "paired" and can be toggled back and forth to see the changes.

Global Illumination (Lumen)

The word Lumen is derived from the word "Illuminate" meaning make (something) visible or bright by shining light on it; light up.

The formal name for Lumen is Lumen Global Illumination and Reflections[Doc 2] which comes with the following benefits:

  • Ability to render in a lower resolution and upscale to a higher display resolution in order to increase performance (FPS).
  • Ability to push render computations to supported GPU's freeing up the CPU for other things.

Usage

Lumen in Satisfactory is not officially supported, and by default is turned off[5], but can be optionally turned on by the Player in Settings.

Lumen in Satisfactory currently uses the Software Raytracing Method and as such will run on your CPU (not the GPU)[6] which is why it is turned off by default.

Currently there are no plans to spend much time making the game optimized to work with Lumen. The game will run better without Lumen than with Lumen turned on.

The use of Lumen away from factories, out in the world, often doesn't result in significant differences between having it turned off or turned on as compared to the use of Lumen near or within factories where the difference between Lumen being off versus being on is significant (see Examples below).

In Patch 0.8.0.0 through Patch 0.8.1.0 the use of Lumen within factories appeared very dark depending on available lighting. As of Patch 0.8.1.1 Lumen was improved resulting in more illuminated and natural factory interiors (see Examples below).

Examples

The following example images are "paired" and can be toggled back and forth to see the changes.

1. Outside away from factories example uses of Lumen in Satisfactory:

2. Near or within factories example uses of Lumen in Satisfactory:

Virtual Shadow Maps (VSM)

Virtual Shadow Maps (VSM) as of Unreal Engine 5.3 are now considered production ready. Despite that, there are no plans to included it in the game. Perhaps in the future it will be.[7][8]

World Partitioning System (WPS)

In Unreal Engine 4.xx Satisfactory game used a World Grid System (WGS), comprised of 7 by 6 "tiles". There was a known "lag issue" with the WGS that occurs when the Pioneer approached the boundary of a "map tile" due to the Game having to load in the "all assets" of the next "map tile".[9]

Starting in Unreal Engine 5, the Satisfactory game began using the World Partitioning System (WPS)[Doc 3][10] which is a vast improvement over the old Level Streaming System used prior and eliminated the need to tie Actors[Doc 4] (individual "objects") to an individual tile.

Usage

The WPS removed the previous need to divide large levels into sublevels by storing the world in a single persistent level separated into grid cells, and provides the game with an automatic streaming system to load and unload those cells based on distance from a streaming source.

Since Actors (individual "objects") are not tied to a specific "map tile", but instead tied to a "grid coordinate / location", CSS now has the ability to break up the Map into smaller chunks thereby reducing Game Lag at "world map chuck borders" and ability to find the most efficient "tile / chunk size".[11]

There may be a game setting added in the future which will enable Players to reduce the size of "Map Chunks" as a way to improve game performance even further.

Temporal Super Resolution (TSR)

Temporal Super Resolution (TSR)[Doc 5] will enable lower resolutions appear crisp at higher resolutions with no loss in quality[12] which is similar to Nvidia DLSS and AMD FSR.

Using TSR provides the ability to rendered frames approach the quality of native 4K with input resolutions as low as 1080p.

Players using TSR will be able to offload rendering to their GPU versus using the CPU to do the rendering calculations.

Fast Approximate Anti-Aliasing (FXAA)

Fast Approximate Anti-Aliasing (FXAA)[Doc 6] is a spatial-only anti-aliasing technique that is a post-processing effect that uses a high contrast filter to find edges and smooth them by blending (dithering) between the pixel edges. As the name suggests for this technique, it is fast to render and well-suited for low-end devices and desktops.

FXAA will be an option for Players to use if they can't effectively use TSR.[13]

Nvidia DLSS, Intel ExSS, AMD FSR

Satisfactory game Patch 0.8.1.0 added additional upscaling support[14] for Nvidia Deep Learning Super Sampling (DLSS) Technology[Doc 7] (Version 1, 2, and 3), and Intel® Arc™ Xe Super Sampling (XeSS)[Doc 8].

AMD FidelityFX™ Super Resolution (FSR)[Doc 9] was added in Patch 0.8.2.4 as planned.[15]

Players using Nvidia DLSS, Intel ExSS, AMD FSR will be able to offload rendering to their GPU versus using the CPU to do the rendering calculations.

Chaos Physics System

In Unreal Engine 5 the Satisfactory moved to the Chaos Physics System[Doc 10] which was a quantum improvement over the PhysX System used in Unreal Engine 4.xx.

While the Chaos Physics System is used for all physic simulations in the game, the main area it is being used is in the Vehicle Physics System which was completely overhauled.[Chaos 1]

Usage

Motor Vehicles now act / perform different than they did in Unreal Engine 4.xx.

The use of UE 5 Chaos Physics has eliminated the Vehicle Bouncing Issue on Foundations but there may be some slight issue on ramps that will be fixed at some point.[Chaos 2]

Motor Vehicles top speed and handling have changed.[Chaos 3]

  • Tractor (aka "Suger Cube") is a bit faster.
  • Trucks feel more "heavy" and less "bouncy".
  • Explorer feels more "zippy".
  • Factory Cart is less prone to flipping over but still by design only works well on Foundations.

The use of the Vehicle Hand Break Space now shows real "force" when braking in Vehicles.[Chaos 4]

Vehicle Air Control was removed since this ability was not used a lot.[Chaos 5] Those whom want it back should posted that on the Satisfactory Q&A Website.

Trains did not see any physic changes as the result of the Upgrade to Unreal Engine 5.[Chaos 6]

Enhanced Input System (EIS)

With Unreal Engine 5 the Satisfactory game began using the Enhanced Input System (EIS).[Doc 11]

The Enhanced Input System improved how keybinding works depending on what is happening in the game, and eliminate current "input bugs" like constant up flying when using the Hover Pack.[16]

Game audio

With Unreal Engine 5 there is the ability to use MetaSounds[Doc 12] high-performance audio system. Satisfactory game won't use it. Game will continue to use Wwise for all sound / audio related production.[17]

In Unreal Engine 5 the Motor Vehicles in Satisfactory have new sounds. When Vehicles are being driven, their sounds will be more natural based upon what is happening. When not driving a Vehicle, the sounds the Pioneer hears are simpler for optimization purposes.[Chaos 7]

Unreal Engine UObject Limit

The Unreal Engine UObject Limit is a limit of UObjects[Doc 13] which can be loaded in the game.

The default limit set in the Unreal Engine is 2,162,688 UObjects. The UObject limit is imposed from Unreal Engine's memory management implementation[18] and refers to data objects, not in-game objects.

This default limit was not changed in Unreal Engine Version 5[19], however in Update 7, Satisfactory began using "Abstract Incidences" that reduced the number of UObjects used per "Object". For example, in the Update 6 or earlier a Foundation would have 3 UObjects, in Update 7 and beyond a Foundation only has 1 UObject.[20]

For Satisfactory game development, the UObject limit has been increased in the editor but not for built games used by Players.[21]

UObject Game Crash

When creating a huge factory (in a sense of 2000+ hours spent on a single save), it is possible that the game will begin crashing with the following crash:

Assertion failed: Index >= 0 && Index < MaxElements Fatal error: [File:C:\BuildAgent2\work\b731a33f2a691e17\UE4\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectArray.cpp] [Line: 534] Maximum number of UObjects (2162688) exceeded when trying to add 1 object(s), make sure you update MaxObjectsInGame/MaxObjectsInEditor/MaxObjectsInProgram in project settings.

Keep in mind that this crash only occurs to a miniscule percentage of players, and should not be worried about unless one knowingly creates a map-wide factory. Raising the UObject limit leads to potential instability and it would therefore be counterproductive to change the limit, unless the game begins crashing with the aforementioned crash.

UObject Limit Increase

NOTE: Changing the UObject Limit is NOT supported by Coffee Stain Studios.[22]

The UObject Limit can be increased by appending the following at the bottom of the Engine.ini file, found at %LOCALAPPDATA%\FactoryGame\Saved\Config\Windows\Engine.ini:

 [/Script/Engine.GarbageCollectionSettings]
 gc.MaxObjectsInEditor=100000000
 gc.MaxObjectsInGame=100000000

Please note that it is imperative that you back up your save files regularly if you chose to do this as it can lead to save file corruption and various other issues in the game.[23]

If you experience the UObject crash after making the above changes to 'Engine.ini', the Epic Games platform may be overriding your project settings with its own, accessible (by default) in C:\Program Files (x86)\Epic Games\UE_5.1\Engine\Config\BaseEngine.ini.

Find (Ctrl+F) the GarbageCollectionSettings within BaseEngine.ini and increase the entity limit as above.

Engine usage history

Version Introduced Date Remarks
4.16–4.18[Doc 14] Pre-Closed Alpha 17 July 2017 Possibly used[24]
4.20[Doc 15] Patch 2018-10-17 17 October 2018 Upgraded
4.25[Doc 16] Patch 0.3.8.0 19 January 2021 Upgraded
4.25–4.26[Doc 17] Patch 0.3.8.7 11 February 2021 Cherry picked Instance mesh optimization from Unreal Engine 4.26 upgrade to use in game.
4.26[Doc 17] Patch 0.4.3.0 21 September 2021 Upgraded
4.26.2[Doc 17] Patch 0.5.1.11 22 February 2022 Upgraded
5.1.1 Patch 0.8.0.0 13 June 2023 Upgraded[25]
5.2.1 Patch 0.8.2.0 16 October 2023 Upgraded[26]
5.3.0 Version 1.0 10 September 2024 Upgraded. Also used in Closed Beta[27].

Trivia

  • The World Partitioning System (WPS) was one of the main reasons that Satisfactory was upgraded to Unreal Engine 5.[28]
  • Virtual Shadow Maps (VSM) was developed by Snutt's professor and invented while he was in University studying Computer Graphics.[29]

Current issues

  • There are some known issues with Unreal Engine 5.
    • There is major performance loss when running out of VRAM
    • TSR can cause visual issues with conveyor belts, you can try using the following console command to alleviate the issues, but this will reduce AntiAliasing quality
      • r.TSR.ShadingRejection.Flickering 0
    • Random Physic bugs might be seen that will be addressed at some point[Chaos 8]

See also

Gallery

The following images are paired together and can be toggled back and forth to see differences.

History

  • Patch 0.8.3.1: Potential fix to a crash related to ItemRegrow subsystem
  • Patch 0.8.2.9: Some improvements to Pipe SFX causing hitches/stuttering in factories with a lot of Refineries/Blenders built
  • Patch 0.8.2.6
    • Applied a series of patches to the rendered recommended by AMD that should improve FSR Performance
    • Tweaked scalability for better eye adaptation on lower quality
  • Patch 0.8.2.4
    • Added AMD FidelityFX™ Super Resolution (FSR) 2
      • It can now be selected under Options > Video > Upscaling Method
  • Patch 0.8.2.0
    • Unreal Engine Upgraded to 5.2.1
    • Parallelized post processing blending.
    • Chaos memory optimizations
    • Texture memory optimizations
    • Mesh memory optimizations
    • Enabled virtual textures for HLODs
    • Updated HLODs to use virtual textures.
    • Enabled PSO caching
    • Removed legacy assets
    • Fixed an Audio issue leading to performance hitches in factories with Blenders and Refineries, including audio optimizations for the Refinery
    • Replaced some audio files for the Tractor and Truck
    • Tweaks and adjustments for Tractor and Truck audio
  • Patch 0.8.1.3
    • Updated XeSS to 1.2
    • Changed so screen percentage presets for XeSS match DLSS and TSR presets
    • Unlocked Screen Percentage for XeSS
    • Moved the Screen Percentage setting to be under Upscaling Preset
    • Fixed Screen Percentage setting not saving properly
  • Patch 0.8.1.1: Undocumented Change - Improvements to use of Lumen Global Illumination
  • Patch 0.8.1.0
    • Added Nvidia DLSS as a selectable Upscaling method
    • Added Intel XeSS as a selectable Upscaling method
    • Added Upscaling method settings
      • You can select between TSR, DLSS or XeSS under this drop down when your hardware supports it
    • Fixed Lumen for buildable lights. Fixed apply customization data to also apply extra data.
      • You will need to reload your save if Lumen was not enabled in order for this to work
    • Added Lumen boost to materials
    • Enabled Skip draw when shader isn't done compiling, this should help reduce rendering hitches
    • Disabled overlap caching to reduce consistent chaos performance loss.
    • General Chaos memory optimizations
    • Optimized physic scene handling for foliage, should reduce hitches.
  • Patch 0.8.0.3
    • Some ambience tweaks to Red Jungle sound effects
    • Some ambience tweaks to Spire Coast sound effects
    • Changed the audio for the waterfalls in Dune Desert Canyon
    • General tweaks to waterfall sound effects
  • Patch 0.8.0.2
    • Resolved issues where signs ticked when not needed, This should improve GPU bandwidth and improve CPU performance in saves with a big quantity of Signs built
    • Cleaned up major log spam that affected loading
  • Patch 0.8.0.1
    • Removed "Cinematic" Global Illumination preset due to the fact that VRAM does not get flushed correctly, which would lead to severe performance loss until the game is restarted.
    • Renamed TSR "Insanity" Preset to "No downscaling" and added Tooltips clarifying their purpose
      • Performance (Performance over quality, Some rendering artifacts)
      • Balanced (Performance and quality focused)
      • Quality (Quality Focused)
      • No Downscaling (Only Anti aliasing, not recommended!)
  • Patch 0.8.0.0
    • Upgraded Unreal Engine to Version 5
      • Introduced World Partitioning System (WPS) for streaming parts of the world in and out
      • Introduced physics simulation system called Chaos and reworked vehicles to use this instead of previous physics simulation system
      • Introduced Enhanced Input system and implemented contextual key bindings in the options, allowing for much more granularity and control over your control scheme across different contexts like the build mode, driving vehicles, using equipment, etc.
      • Introduced Anti-aliasing (TSR & FXAA)
        • Setup content to work with TSR (Temporal Super Resolution) which is Epic’s implementation of upscaling technology combined with anti-aliasing. Added several presets: Performance, Balanced, Quality & Insanity.
        • Added a lightweight anti-aliasing method known as FXAA (Fast approximate anti-aliasing) which would allow for better performance on lower end machines or for people that don’t like the effect that the previous default anti-aliasing technique had.
      • Introduced Nanite, a new way of rendering complex meshes allowing for high visual quality. Due to complications we only decided to convert a part of our content to Nanite. Rocks, Cliffs and Conveyor items will be using Nanite for the time being.
      • Introduced Lumen, a Global Illumination system that improves lighting and reflections. This new rendering feature will make the world and factory more grounded which can result in more intense & realistic scenes.
        • Lumen disabled by default even on the ultra-preset due to its high demand on the hardware. There are several scalability options to make Lumen perform well on most hardware.
        • When using Lumen, it is recommend running with TSR enabled on the “Performance” preset and Lumen on Medium or High due to the minimum quality difference. Next to that if you want the high-quality bounce light but not the reflections you can disable the Lumen Reflections in the video settings.
    • Converted to World Partitioning (Work in progress)
    • Deprecated World composition implementation
    • Added streaming scalability for foliage streaming cells
      • Foliage cells can now be loaded from different ranges
        • Near, Default, Far, Cinematic
    • Added TSR
      • Added TSR Presets:
        • Performance (60% Screen percentage)
        • Balanced (75% Screen percentage)
        • Quality (90% Screen percentage)
        • Insanity (100% Screen percentage)
    • Added Lumen
    • Added Lumen Scalability
    • Added Lumen Reflections Scalability
    • Improved DirectX12 Stability
    • Improved Vulkan Stability
    • Deprecated/Soft Removed DirectX 11
      • Note you can still run on DirectX 11 but without Nanite or Lumen. We cannot promise the same quality as on DirectX 12 or Vulkan.
  • Patch 0.7.0.0 through Patch 0.7.1.1: Undocumented Change - At some point in Update 7 game began using "Abstract Incidences" that reduced the number of UObjects used per "Object" like a Constructor.[20][21]
  • Patch 0.6.1.2
  • Patch 0.6.0.14
    • New Alpha Hog and Spitter Sounds
    • Improved the lighting in Grass Fields during the night, also increased blend distance to improve differences in fog heights
  • Patch 0.6.0.10
    • Reworks to ambient audio in Spire Coast
    • New Gas and Pulse Nobelisk equip sounds
    • Added Nobelisk equip effects for gas and shockwave
    • Remade all the Rain SFX and added new assets for distant thunder
    • Fixed issue where not all foundation materials were affected by rain
  • Patch 0.6.0.0
    • Added dynamic clouds and rainy weather
    • Updated night sky visuals
    • Updated lighting and fog in:
      • Spire Coast Biome
      • Swamp Biome
      • Northern Forest Biome
      • Dune Desert Biome
      • Grass Fields Biome
    • Added new music in Swamp Biome
    • Tweaked Western Dune Forest ambient sounds
    • Reworked Chainsaw audio
    • Reworked Rifle audio
    • Added sound effect when collecting Power Slugs
    • Overhauled the Foliage System
    • Implemented Sublevel Saving
    • Parallelized fluid system
  • Patch 0.5.1.11
    • Upgraded to Unreal Engine 4.26.2
    • Fixed a crash when exiting the game when using Vulkan as a renderer
  • Patch 0.5.1.2
    • Made it so when a game running on DX12 detects an incompatible Intel graphics card it will set the renderer to DX11 instead, this is to solve crashes on Start-up or Loading due to DX12 incompatibility.
    • If you are on an Intel GPU and you’re running the game completely fine in DX12, you can still force it by adding the following launch options:
      • -d3d12
      • -DX12
  • Patch 0.5.0.10: Made DX12 the default graphics renderer. When not supported the game should still default to DX11. Options Menu might show DX12 as selected even though DX11 is the one active in these cases. (Known Bug)
  • Patch 0.5.0.9: Potential fix for a Multiplayer / Dedicated servers crash related to Unreal Engine tireconfig deletion
  • Patch 0.5.0.6
    • Adjusted sky light
    • Adjusted clouds
    • Adjusted post processing
  • Patch 0.5.0.4: Potential fix for a Crash related to Instance Bucket
  • Patch 0.5.0.3: Fixed Epic Online Services (EOS) related crash when loading or starting a new game
  • Patch 0.5.0.2: Rolled back latest Epic Online Services (EOS) plugin to the previous version, this should solve all sorts of messages people are seeing when starting up the game, shouldn’t create any new issues
  • Patch 0.5.0.0
    • Added 8 music tracks to the Factory playlist (only plays around factory buildings)
      • 5 new intermission tracks (around 2 minutes each)
      • 3 new full-length tracks (7-8 minutes each)
    • DX12 now available again as experimental renderer in the options menu
    • Vulkan now available again as experimental renderer in the options menu
    • Updates to a lot of LODs
    • All walls and foundations are now more optimized
    • Conveyor renderer optimizations
    • Factory tick optimizations
  • Patch 0.4.3.0
    • Upgraded to Unreal Engine 4.26
    • DX12 now available as renderer in the options menu
    • Vulkan now available as renderer in the options menu
  • Patch 0.3.8.7: Cherry picked Instance mesh optimization from unreal engine 4.26 upgrade
  • Patch 0.3.8.0: Updated to Unreal Engine version 4.25
  • Patch 2018-10-17: Updated to the latest Unreal Version (not specified but presumed Version 4.20) which has set us back some in performance. However, in the coming weeks we will get back some of our custom features as well as additional features now possible with latest Unreal version.
  • Patch 2018-10-11: Made Available (Version 4.16 through 4.19)

References

  1. YouTube - Pre-alpha Satisfactory Tutorial (August 2017)
  2. YouTube - We're upgrading to UNREAL ENGINE 5 - Nanite General Info
  3. YouTube - We're upgrading to UNREAL ENGINE 5 - Nanite Game Usage
  4. YouTube - World Changes with Hannah - Nanite Discussion
  5. YouTube - We're upgrading to UNREAL ENGINE 5 - Lumen Game Usage
  6. YouTube - March 28th, 2023 Livestream on Twitch - Lumen on / off
  7. YouTube - We're upgrading to UNREAL ENGINE 5 - Virtual Shadow Maps (VSM)
  8. YouTube - April 2nd, 2024 Livestream - Q&A: Since Virtual Shadow Maps are production-ready in 5.3, has your position changed?
  9. YouTube - We're upgrading to UNREAL ENGINE 5 - UE 4 World Grid System (WGS)
  10. YouTube - December 12th, 2023 Livestream - Q&A: World Partitioning System, how does that correspond to the Map?
  11. YouTube - We're upgrading to UNREAL ENGINE 5 - World Partitioning System (WPS) Usage
  12. YouTube - We're upgrading to UNREAL ENGINE 5 - Temporal Super Resolution (TSR)
  13. YouTube - We're upgrading to UNREAL ENGINE 5 - Fast Approximate Anti-Aliasing (FXAA)
  14. YouTube - August 22nd, 2023 Livestream on Twitch - DLSS and XESS
  15. YouTube - August 22nd, 2023 Livestream on Twitch - FSR
  16. YouTube - We're upgrading to UNREAL ENGINE 5 - Enhanced Input System (EIS)
  17. YouTube - We're upgrading to UNREAL ENGINE 5 - Audio Improvements
  18. YouTube - November 20th, 2020 Livestream on Twitch - Snutt & Jace Talk: Unreal Engine Object Limit - Limit Set By
  19. YouTube - We're upgrading to UNREAL ENGINE 5 - Q&A: Has The UObject Build Limit Increased in UE 5?
  20. 20.0 20.1 YouTube - We're upgrading to UNREAL ENGINE 5 - Use of Abstract Incidences
  21. 21.0 21.1 Reddit Post - General Questions - Reply Comment by CSS Community Manager Snutt Treptow
  22. YouTube - November 20th, 2020 Livestream on Twitch - Snutt & Jace Talk: Unreal Engine Object Limit - Increase Support
  23. YouTube - November 20th, 2020 Livestream on Twitch - Snutt & Jace Talk: Unreal Engine Object Limit - Increase Issues
  24. Pre-alpha Satisfactory Tutorial (August 2017) Screenshot
  25. YouTube - We're upgrading to UNREAL ENGINE 5 - Q&A: What Version Of UE 5 Is Game Using?
  26. YouTube - Where's Update 8? - Game Is Getting Upgrade to Unreal Engine 5.2
  27. YouTube - February 6, 2024 Livestream - Q&A: Will Mods work for closed beta?
  28. YouTube - March 28th, 2023 Livestream on Twitch - World Partitioning System
  29. YouTube - September 19th, 2023 Livestream on Twitch - Snutt Talk: Shadow Rendering Techniques

Unreal Engine Chaos Physics

Unreal Engine Documentation