Extracting Game Files

Having access to the model and texture files used by Coffee Stain can be a valuable resource for creating content for your own mods. This page contains instructions on how to view and extract various game assets.

As a reminder, redistributing these assets should not be done without permission, as they are copyrighted content of Coffee Stain Studios.

If you’re just looking to re-use the exact same icon, mesh etc. as something in the base game for your mod, you should check out the Reusing Game Files page instead.

FModel

FModel is a tool that can be used to view and extract game assets. Documentation for FModel is available on its Github Wiki. This section will cover how to configure FModel to read Satisfactory files.

Add Undetected Game

The first time you open FModel you will be presented with a Directory Selector. If you have already opened FModel in the past, you’ll be opened to another window, so you can bring the selector up again via Directory > Selector.

Under the "Add Undetected Game" heading, click the two-arrows icon, enter Satisfactory as the "Name", and enter your game install directory as the "Directory" (for example, C:\EpicGamesGames\SatisfactoryExperimental). Next, press the blue Plus button (NOT the OK button!) to add the game to the Detected Game dropdown, which should automatically select it. After confirming that the game is selected, press the OK button.

The program should launch and display FactoryGame-Windows.pak in the Archives tab list, along with the paks of any other mods you may have installed. If it opens another game instead, return to the directory selector and review the above steps.

Specify Custom Version and Mapping

Unreal Engine 5 introduced changes in how assets are stored in pak files. You will need to provide FModel with extra information so that it can read the data correctly. Coffee Stain Studios kindly ships this extra information with the game files for us.

First, navigate to your game install directory in a File Explorer window to locate the /CommunityResources/FactoryGame.usmap and /CommunityResources/CustomVersions.json files.

We need to open the CustomVersions file and copy its contents into a setting in FModel. However, the file is stored in a text encoding (UTF-16 LE) that can confuse some text editing programs.

If you are using Windows 10, Windows Notepad can successfully load the CustomVersions.json file and you can copy its contents to your clipboard normally. If you are using Windows 11, you will need to use another text editor such as Notepad++. Windows 11’s Notepad incorrectly loads the file with UTF-8 encoding and FModel will tell you that you broke the .json if you copy the contents over.

To start loading this additional information, open FModel and navigate to Settings > General. In the "UE Versions" dropdown, select GAME_UE5_2 (536870944), then press the Custom Versions button in the "Version Configuration" row which opens a new text editing window.

Delete the text contents of the popup window and replace it with the copied contents of the CustomVersions.json file from your Community Resources folder. (for example, C:\EpicGamesGames\SatisfactoryExperimental\CommunityResources\CustomVersions.json), then press OK to save your changes.

If the file’s contents look like the below image, you will need to use a different text editor to open and copy it as described above. Note the egregious extra spacing and the error message from FModel.

Broken JSON

Back on the Settings screen, check the box for "Local Mapping File" and then enter the full path to your FactoryGame.usmap file (for example, C:\EpicGamesGames\SatisfactoryExperimental\CommunityResources\FactoryGame.usmap).

Press OK to close the settings prompt, which will open another prompt asking you to restart FModel - press OK.

FModel Export Configuration

Specify Model Export Settings

After specifying FModel’s Custom Version and Mapping for Satisfactory you will want change model export settings so it’s easier to work with exported results. To do so, return to the Settings menu and select Models on the left side.

From here there are several fields to modify in order to properly export models for use with modeling software such as Blender:

  • Model Export Directory - This can be the same or different from the output directory you chose in the previous steps.

  • Mesh Format - Similarly to UModel, you will want to select glTF 2.0 as your format

  • Level of Detail Format - Allows you to select how many LODs (Level of Distance meshes) of the model to export.

  • Texture Format - Set to PNG so textures will be exported to a lossless format that supports transparency.

FModel Model Export Settings

Any other changes made are at user discretion, and dependent on level of knowledge.

Searching for Files

In order to perform a pak-wide search, navigate to Packages > Search or press the keybind (Ctrl+Shift+F). You can also search within a specific package by navigating to it in the Folders tab then using the search bar built into the Packages tab.

UModel

UModel is another tool that can be used to view and extract game assets.

However, at the time of writing, it does not currently have support for Unreal Engine 5 (Update 8 and beyond). As such, FModel should be used instead. The following instructions are left here for reference when working with past versions.

Outdated directions for using UModel:

The tool UModel can be used to view game pak file content, and offers options for exporting meshes, skeletons, textures, etc. for use in other programs. Tutorials for using UModel are plentiful online, and a quick search can help you export for the modeling software of your choice.

Make sure to select Unreal Engine version 4.26 when opening Satisfactory pak files.

If you don’t see 4.26 as an option, you are running an older version of UModel and you should download it again from the link above.

You can find a brief tutorial on how to track down an asset for export on the Reusing Game Files page.

Once you have found the asset you want to export, open it in UModel’s UE Viewer and use ToolsExport Current Object and you will be presented with some options for export. We suggest exporting as Static Meshes as glTF 2.0 so that software such as Blender can open them easily.

Note that not all of the content you can extract in this manner is directly useful. For example, directly exporting an FGItemDescriptor is not really helpful.

Extracting Specific Models or Textures

If you’re looking to use parts of base game machines such as item and fluid ports, power connectors, or more, consider taking a look at AngryBeaver’s ModelingTools.

This section explains how to use FModel to extract specific static meshes, skeletal meshes, and textures. Make sure you have set up FModel using the directions above before continuing.

The FModel Documentation explains its various UI elements and how to navigate through the pak file.

To test your settings, select the FactoryGame pak in the Archives tab, which will take you to the Folders tab, then navigate to FactoryGame/Content/FactoryGame/Resource/Parts/AIlimiter/Textures and attempt to open the TX_AiLimiter_BC.uasset file.

This will take you to the Packages tab, and will open a two-pane display with text on the left and an image on the right.

To export a file, such as this texture, right click it in the Packages tab’s list and select the relevant option, in this case Save Texture. A message "[INF] Successfully saved TX_AiLimiter_BC.png" should appear in the log at the bottom of the window. This will export the file to your Output directory, which is configured in the Settings > General menu. You can control what file format assets will be exported in via the Settings > Models menu.

You can click on the text TX_AiLimiter_BC.png in the log to open your system file browser to the containing folder.

Opening a mesh asset, such as FactoryGame/Content/FactoryGame/Equipment/JetPack/Mesh/SK_Jetpack_01.uasset, will cause a 3D Viewer window to appear.

Extracting Sounds/Music

This section explains how to use FModel to extract sound files. Make sure you have set up FModel using the directions above before continuing.

Because Satisfactory uses the Wwise sound system, game sound files are stored in a manner different from many other Unreal Engine games.

FModel can be used to extract sound files to the WAV format via its Audio Player.

Unfortunately, Wwise sound files viewed in this manner are not logically organized and do not have "nice" names, meaning that finding the sound you want through this system involves digging around through hundreds of files. Furthermore, the sound files are stored in their unmixed forms, meaning that the sound is lacking additional audio effects that are applied real-time in-game.

Thankfully, another tool exists to help with this problem. wwiser is capable of viewing data in Wwise bnk files, allowing you to connect a Wwise sound event with a human-readable-name to the sound files it references.

Locating the Bnk File

Bnk files contain information about what sound files are used by the game when a sound event is triggered. We can extract this file and use it in wwiser to find the sound files we care about.

Wwise audio event names are human-readable and can be found in subfolders of the pak’s FactoryGame/Content/WwiseAudio/Event/ folder. Using FModel’s Package Search functionality is beneficial here.

Once you have found the bnk you want to extract (for example, FactoryGame/Content/WwiseAudio/Event/19/Play_EQ_JetPack_Activate.bnk) right click on it and select Export Raw Data (.uasset), which will export the bnk file despite the tooltip option claiming it will be a uasset.

You can click on the text (ex. Play_EQ_JetPack_Activate.bnk) in the log to open your system file browser to the containing folder.

Extracting sourceIDs with wwiser

You will need Python installed to utilize wwiser. Python 3.8.10 is known to work, and pyenv is the suggested method of install.

Download the latest copy of wwiser from its releases page. You’ll want both wwiser.pyz and wwnames.db3

Use a zip extracting program of your choice to extract the files from wwiser.pyz and place the wwnames.db3 file in the same directory as the extracted files.

To open the wwiser interface, run python .\wwiser.py in a terminal in that folder. Next, select Load banks…​ and select the bnk file you extracted earlier. After the file loads, select Generate TXTP which will create a folder in the same directory as the bnk file containing a txtp file which can be opened with a text editor. (ex. Play_EQ_JetPack_Activate {s} {m}.txtp)

If the bnk is linked to any sound files, their sourceID numbers will be displayed at the top of the file (ex. wem/633850317.wem has the sourceID number 633850317) along with additional audio information.

Take note of the sourceIDs of the sound file you want to extract, as you will likely need to review a few sounds to find the exact one you’re looking for.

Extracting Sound Files

Now that we have a sourceID, we can use FModel to extract the sound file. All game audio can be found in subfolders of the pak’s FactoryGame/Content/WwiseAudio/Media/ folder.

First, locate the sound file via its sourceID, which will be its package file name. Using FModel’s Package Search functionality is beneficial here.

To extract a sound file, first open its Package in the main window, which will cause an Audio Player window to appear. After optionally previewing the sound file in the player, right click on it in the playlist and select Save, prompting a system dialog to select a save location.

Generating a Complete Starter Project

The Starter Project provided on the SML releases page excludes game models, textures, etc. for copyright and download size reasons. In their place, the Starter Project includes empty "placeholder" assets that, at runtime, will be resolved into the correct assets if you were to reference them, or simply excludes the asset from the project (which is the case for many textures).

It is possible to create a personal version of the Starter Project that includes most of these base game files accessible from within the editor. This version of the project would include models, textures, and other resources instead of their placeholder versions, allowing you to view them in-editor.

Generating this special project file takes a significant amount of time and additional disk space. If you’d like to do this, check out the page on the Asset Toolkit.