Unreal’s “Bloat”

This week someone on Reddit introduced me to this blogpost about how to reduce the package size of small Unreal games. One of the steps involves disabling built-in plugins one by one, while continually checking if the packaged game still runs. The author identified the plugin with the largest package size, but didn’t say anything about the rest.

Since I’m currently working on a party game built entirely using UMG widgets, I figured I have the perfect testing ground to disable almost all of Unreal’s features, in order to test how much packaging size the plugins take up individually.

These are the results:

I was able to reduce the package size by almost 100 MB, which is a good one third of our entire game!

So it looks like the worst offenders are:

47.8MBOpenImageDenoiserThis plugin is only used to denoise the result of a path tracer in video productions, so there’s a 99% chance it has absolutely no value for your game.
14.2MBInterchange FrameworkInterchange is an asset importing pipeline feature introduced in 5.1. It aims to create a shared code base for any new file importers and exporters that are yet to come, but since it also supports importing/exporting files during runtime it is added to the package. You can still import meshes and textures just fine using the previous pipeline if you disable the plugin.
7.2MBNiagaraParticle effects are usually an important part of any 3D game, but since we only use UMG widgets we can just disable the entire thing.
6.2MBMetaSoundMetaSound is a runtime system for generating audio introduced in 5.0. It is not necessary for Sound Cues or the other UE4 audio features.
4.0MBControl RigThis is an older feature that supports procedural animation and IK. It’s very possible your game doesn’t need it.

Some other noteworthy takeaways:

  • Plugins from the Editor category do contribute a little bit towards the package size
  • Disabling any plugins that includes the words “Android”, “Apple”, “Mac”, “IOS”, “mobile”, or “Linux” does not change the package size in a significant way (as expected)

I generated these results by disabling plugins one-by-one, making a Win64 shipping build, and comparing the size of the build (the folder containing the .exe) with the previous build.

Before disabling the plugins the build for Yesterday’s News was 289 MB. Afterwards, it was 190 MB, of which our content folder (uncompressed) is 85 MB. I started with 160 plugins, and ended with only 10. So it turns out you can reduce Unreal’s package size overhead for small games.

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *