Unreal Engine Asset Toolkit

This article is a work-in-progress. Please contact us on the Discord if you run into any issues here.

Community member Archengius has created a set of two plugins useful for dumping content from a compiled Unreal Engine game and importing it into the Unreal Engine Editor.

Since most Satisfactory game files can’t be distributed with the Starter Project for download size and copyright reasons, the project instead contains empty "placeholder" assets. While this allows you to compile your mods and reference base-game content for use in them, previewing content (especially widgets) in the editor is inconvenient.

You can use the Asset Toolkit to generate a copy of the starter project, complete with icons, meshes, some materials, and more, making working with base-game content much more convenient.

If you decide to generate a complete copy of the project, make sure that your Content folder is not publicly available on Github or similar.

If you only have a plugin-level repo, this is not a problem, but if you have a project-level repo as well, you should watch out for this.

Because the assets are already tracked (shipped with the starter project), simply adding them to your .gitignore will not ensure they are excluded. Consider marking them assume-unchanged via git update-index --assume-unchanged Content/* See here and here for more info.

Installation

The Asset Toolkit consists of two plugins, a dumper, to be installed in the game, and an asset generator, to be installed in the editor. Both are contained in the Asset Toolkit repository. Download a zip of the repository and extract somewhere, or clone it if desired.

Installing the Asset Generator

Take the AssetGenerator folder out of the files you downloaded and move it to your modding project’s Plugins folder.

This plugin is only for use from the editor

Installing the Asset Dumper

Take the AssetDumper folder out of the files you downloaded and move it to your modding project’s Plugins folder.

This plugin will be built as a mod to install in the game.

Compiling

After putting both plugins in your project’s Plugins folder, re-Generate Visual Studio project files and build for Development Editor and Shipping.

Building the Asset Dumper

To install the Asset Dumper in your copy of the game, build it with Alpakit like you would any other mod. Be sure you have "Copy Mods to Game" enabled and the "Game Path" set correctly.

Dumping and Importing Assets

Dumping Game Assets

If you have already used the Asset Dumper and Generator in the past, you should probably download an updated version via the above directions. If you don’t, you could get ambiguous errors while dumping and generating.

A user interface exists for using the dumper, but there are some crashing problems with it, so these directions will cover using the command line version instead.

To dump assets, navigate to your game install directory, and then in Powershell, run Engine\Binaries\Win64\FactoryGame-Win64-Shipping.exe -EpicPortal -NoSteamClient -nullrhi -DumpAllGameAssets -RootAssetPath=/Game -ExcludePackagePaths=/Game/WwiseAudio -ExcludePackageNames=/Game/Geometry/Meshes/1M_Cube_Chamfer -PackagesPerTick=32 -ExitOnFinish -log

Excluding the -log argument could result in a shorter runtime, but will make troubleshooting more difficult if something goes wrong.

The Powershell command should immediately complete, leaving you with the option to run another command. Shortly after, you should see the Satisfactory splash screen and a console log window which will provide info regarding the dumping process (since -log was used).

Once you see the console log window, you can safely close the Powershell window.

The game window itself will never open since the -nullrhi argument was used. After the game’s loading process, you should see a sequence of LogAssetDumper messages. This will take a bit; go pet a lizard doggo to pass the time.

You can expect a full dump to take up about 3 GB. You can delete it later after you have imported the assets.

Once it completes, the console window and game should close, and you should have an AssetDump folder inside the FactoryGame folder of your game install directory.

Asset dumping is also used to create the stater project stubs when the game updates. Check out the CI scripts, or contact us on the discord for more info.

Importing Dumped Assets to the Editor

You can expect a Content folder with all assets imported to take up about 2 GB. For comparison, a Content folder with placeholders takes up 366 MB.

Both an in-editor UI and commandlet are available for the Asset Generator, but at the time of writing, the in-editor UI is unstable as it has various issues related to Materials. As such, the commandlet should be used instead.

Below is a modified version of a Powershell script originally written by adamsogm for using the Asset Generator commandlet. You will need to modify the first few lines of the script to point to your Unreal Engine install, project path, and chosen dump directory.

Create a new Powershell script file (ex. generate_assets.ps1) in a location of your choice, then copy-paste the below script and save after editing the path lines.

To run the script, right click on the file and select "Run with Powershell" to begin the import. Alternatively, you can launch it from a running powershell window to read the output after it has finished (or crashed).

# Change the below path lines to match the actual locations of these files and folders for your system
# Using apostrophes so \ doesn't need to be escaped here
$UE4CmdPath = 'C:\Program Files\Unreal Engine - CSS\Engine\Binaries\Win64\UE4Editor-Cmd.exe'
$UProjectPath = 'D:\GitSecondary\SF_ModProject\FactoryGame.uproject'
$AssetDumpDirectory = 'D:\Programs\EpicGamesGames\SatisfactoryExperimental\FactoryGame\AssetDump'

# The below should not need to be modified

# Define temporary file names and a function to clean up temporary files from the process
$ForceGenerateFile = 'ForceGeneratePackageNames.txt'
$SkipSaveFile = 'SkipSavePackages.txt'
$BlacklistFile = 'BlacklistPackageNames.txt'

$TempFiles = $ForceGenerateFile, $SkipSaveFile, $BlacklistFile
function CleanupTempFiles {
	foreach ($FileName in $TempFiles) {
		if (Test-Path $FileName) {
			Remove-Item $FileName
			Write-Output "Cleaned up $FileName"
		}
	}
}


# Clean up the temp files, in case the script was exited or crashed earlier for some reason
CleanupTempFiles

# Force generated package names from https://github.com/mircearoata/satisfactory-modding-actions/blob/master/ForceGeneratePackages.txt
Write-Output "/Game/FactoryGame/Buildable/-Shared/Widgets/Widget_Output_Slot" >> $ForceGenerateFile

# Skip save package names from https://github.com/mircearoata/satisfactory-modding-actions/blob/master/SkipSavePackages.txt
Write-Output "/Game/FactoryGame/Interface/UI/BPI_ShoppingList" >> $SkipSaveFile
Write-Output "/Game/FactoryGame/Unlocks/BPI_UnlockableInterface" >> $SkipSaveFile
Write-Output "/Game/FactoryGame/Interface/UI/InGame/Graph/BPW_Graph" >> $SkipSaveFile
Write-Output "/Game/FactoryGame/-Shared/Blueprint/BP_OnlineHelpers" >> $SkipSaveFile
Write-Output "/Game/FactoryGame/AvailabilityDependencies/BPI_AvailabilityDependencyInterface" >> $SkipSaveFile

# Skip a few assets that cause annoying problems in the editor (ex. missing animation data spam errors)
# TODO not certain this functionality is working?
Write-Output "/Game/FactoryGame/Character/Player/Animation/FirstPerson/" >> $BlacklistFile
Write-Output "/Game/FactoryGame/Character/Player/Animation/ThirdPerson/" >> $BlacklistFile

# Run the generator commandlet
& $UE4CmdPath $UProjectPath -run=AssetGenerator -DumpDirectory="$AssetDumpDirectory" -ForceGeneratePackageNames="$(Get-Location)\\$ForceGenerateFile" -SkipSavePackages="$(Get-Location)\\$SkipSaveFile" -BlacklistPackageNames="$(Get-Location)\\$BlacklistFile" -stdout -unattended -NoLogTimes

# Clean up the temp files on exit
CleanupTempFiles

This will take a considerable amount of time. Experts advise locating and petting a lizard doggo while you wait.

After you’re done, your project’s content folder should be around 2 GB.

Bring in AngryBeaver’s Recreated Assets

Community member AngryBeaver has recreated a number of texturing assets that make working with models in the editor a lot more pleasant. They are not exactly like the 'real' ones used in game, but they are very close.

Once the Asset Generator has completed, you can manually copy in the assets from AngryBeaver’s repository, replacing the ones created by the Asset Generator.

You can find the list of assets to copy in here, and the repository they are stored in here.

You could either clone or download a zip of AngryBeaver’s repo, but you won’t need the downloaded repo any more once you have copied the files in.

Additional Documentation

If you’d like to learn more about the Asset Toolkit, you can continue reading below.

Asset Generator Commandlet Documentation

Here is an explanation of what the various commandlet options do, written by Archengius:

Commandlet name is AssetGenerator

-DumpDirectory= is the path to the root directory of the dump, as specified in the asset dumper

-ForceGeneratePackageNames= is optional file contaning a newline-separated list of packages to be generated first, you want /Game/FactoryGame/Buildable/-Shared/Widgets/Widget_Output_Slot there to avoid the weird bug with editor crashing while generating the full project from ground up

-BlacklistPackageNames= is optional, semantics are the same as for ForceGeneratePackageNames, except that it also supports wildcard paths if they end with /, not really needed by default

-AssetClassWhitelist= is optional comma-delimited list of whitelisted asset classes to generate, should be left empty for full project generation

-PublicProject is optional and nulls out non-distributable assets in the generated project, if not specified it will generate a full project containing models and textures as they are in the game

-NoRefresh is optional and prevents the generator from touching existing assets if specified

Using the UI to Dump/Generate

There are currently numerous crashing issues when using the UI of the Asset Toolkit plugins as opposed to the command line interface. Unless you have a specific reason for using the UI, you should probably use the command line directions above to dump and generate assets instead.

Dumping

In order to extract the assets to be imported to the editor, launch your copy of Satisfactory and open the in-game developer console, which is opened when you press the grave/tilde key (` or ~), or when you press F2. Type dumper.OpenAssetDumper and press enter. It should bring up a UI like the one shown below:

image

You can leave the Output Folder Path at the default to export to <game install directory>\FactoryGame\AssetDump, or use the …​ button to select a specific path.

Next, select the asset paths you would like to dump, usually Game/FactoryGame/, and optionally restrict what is exported with the Asset Type Filter dropdown.

Once you’re ready, press "Begin Asset Dumping". This will take some time; go pet a lizard doggo while you wait.

Generating

To open the in-editor interface, navigate to Window → Developer Tools → Asset Generator. Check all the asset types and asset paths, and uncheck "Public Project", otherwise you will generate placeholder assets again.

image