PD3-Modkit is a PAYDAY 3 modding project built around a custom UE5-PD3 Editor and Suzie!
The custom editor is designed to work with PAYDAY 3 cooked content directly from the user's installed game, while Suzie reconstructs PAYDAY 3 classes and reflection data from a locally generated Jmap.
The repository does not include PAYDAY 3 game data, the Jmap, or the Wwise third-party SDKs. These must be supplied locally by each user.
Before opening the project, you will need:
- PD3-Modkit
- UE5-PD3 Editor: https://github.com/NadzW/UnrealEngine-PD3Compatibility
- A local installation of PAYDAY 3
- A valid PAYDAY 3 AES key
- FModel: https://fmodel.app
- Jmap: https://github.com/trumank/jmap
- Wwise: https://www.audiokinetic.com/en/wwise/
The modkit is intended to be opened with the custom UE5-PD3 Editor, not a standard Epic Games Launcher build of Unreal Engine.
Install or build the custom UE5-PD3 Editor from:
https://github.com/NadzW/UnrealEngine-PD3Compatibility
Then associate the PD3-Modkit .uproject with it.
The custom editor contains the compatibility changes needed to:
- Mount PAYDAY 3 retail IoStore containers
- Load PAYDAY 3 cooked assets in the editor
- Display retail assets in the Content Browser
- Work with Suzie-generated PAYDAY 3 classes
- Open PAYDAY 3 cooked levels and assets that stock Unreal Editor cannot handle
When the project is opened for the first time, the custom editor will ask for:
- PAYDAY 3 Installation Directory
- AES Key
These values are stored in the project's editor user settings.
After entering valid values, restart the editor when prompted.
The game path should point to the PAYDAY 3 installation root, for example:
C:/Program Files (x86)/Steam/steamapps/common/PAYDAY3
The editor uses this path to locate:
PAYDAY3/Content/Paks
If either the game path or AES key is missing or invalid, PAYDAY 3 retail assets will not be available in the Content Browser.
PD3-Modkit includes a modified jmap_dumper.exe under:
Tools/jmap_dumper.exe
The project root also contains:
GenerateJmap.bat
Run GenerateJmap.bat to generate the Jmap automatically.
The script will:
- Launch PAYDAY 3 through Steam if it is not already running.
- Wait for the PAYDAY 3 Unreal Engine process.
- Get the game's process ID.
- Run:
.\Tools\jmap_dumper.exe --pid <PID> --engine-version 5.5 --case-preserving --all -vv PD3.jmap
- Move the completed Jmap to:
Content/DynamicClasses/PD3.jmap
If PAYDAY 3 is already running, the script uses the existing process instead of launching another copy.
If you are using a non-Steam version of the game, start PAYDAY 3 manually before running the batch file.
Suzie uses PD3.jmap to reconstruct PAYDAY 3 reflection data and generate the editor-side class definitions required by cooked assets.
The Jmap should match the version of PAYDAY 3 you are currently using.
Using an outdated Jmap after a game update may result in:
- Missing classes
- Incorrect properties
- Serialization mismatches
- Cooked assets failing to load correctly
The upstream Jmap project is available at:
https://github.com/trumank/jmap
Use FModel to extract the current PAYDAY 3:
Extract:
AssetRegistry.bin
Place it in the root of the modkit project:
PD3-Modkit/
├── AssetRegistry.bin
├── Content/
├── Config/
├── Plugins/
└── PD3-Modkit.uproject
The custom editor uses this registry to discover the PAYDAY 3 cooked assets mounted from the retail installation.
The AssetRegistry.bin and Jmap should come from the same game version.
The Wwise plugin is included with the project, but the required third-party SDK files are not.
Download/install Wwise from:
https://www.audiokinetic.com/en/wwise/
Install the required Wwise SDK components into:
PD3-Modkit/
└── Plugins/
└── Wwise/
The installed SDK must match what the included Wwise plugin expects.
If the required third-party files are missing, the Wwise modules may fail to compile or load.
Once setup is complete, the project should look roughly like this:
PD3-Modkit/
│
├── AssetRegistry.bin
├── PD3-Modkit.uproject
├── GenerateJmap.bat
│
├── Tools/
│ └── jmap_dumper.exe
│
├── Config/
│
├── Content/
│ └── DynamicClasses/
│ └── PD3.jmap
│
└── Plugins/
├── Suzie/
└── Wwise/
└── <installed Wwise third-party SDK files>
Open the .uproject using the custom UE5-PD3 Editor.
On startup:
- The editor mounts the configured PAYDAY 3 retail containers.
AssetRegistry.binprovides the retail asset metadata.- Suzie reads the current Jmap and reconstructs PAYDAY 3 class information.
- PAYDAY 3 assets become available in the Content Browser.
The original PAYDAY 3 installation remains separate from the modkit. Retail assets are loaded from the installed game and are not copied into the project as editable source assets.
After a PAYDAY 3 update, you normally only need to replace two files:
AssetRegistry.bin
Jmap
After a PAYDAY 3 update:
- Run:
GenerateJmap.bat
This replaces:
Content/DynamicClasses/PD3.jmap
with a fresh Jmap generated from the updated game.
- Extract the new
AssetRegistry.binusing FModel. - Replace:
PD3-Modkit/AssetRegistry.bin
- Launch the UE5-PD3 Editor again.
Suzie can then regenerate/update the PAYDAY 3 class data from the new Jmap and registry.
You do not need to manually replace the Suzie-generated headers individually.
The normal update process is:
PAYDAY 3 updates
↓
Run GenerateJmap.bat
+
Extract new AssetRegistry.bin
↓
Launch UE5-PD3
↓
Suzie updates generated class data
You should not normally need to replace these after every game update:
- UE5-PD3 Editor
- Suzie plugin
- Wwise SDK
- Modkit project files
- Suzie-generated headers individually
These only need updating if a PAYDAY 3 update introduces an engine-level or Suzie compatibility change.
Check that:
- The PAYDAY 3 install path is configured correctly
- The AES key is valid
AssetRegistry.binexists in the project root- The Jmap exists in
Content/DynamicClasses - The Jmap and
AssetRegistry.binmatch the same PAYDAY 3 version
Check that the required Wwise third-party SDK files are installed under:
Plugins/Wwise/
If Unreal reports that a plugin module cannot be found or loaded, for example:
Plugin 'Wwise' failed to load because module 'Wwise' could not be found.
and the plugin folder and DLLs are already present, the plugin may have stale build artifacts from a different editor build.
Close Unreal Editor, then delete the Binaries and Intermediate folders for the affected plugin or plugins. For example:
Plugins/Wwise/Binaries/
Plugins/Wwise/Intermediate/
Plugins/Suzie/Binaries/
Plugins/Suzie/Intermediate/
Plugins/CrimeForge/Binaries/
Plugins/CrimeForge/Intermediate/
Then open the PD3-Modkit solution (.sln) and build the project using the custom UE5-PD3 Editor configuration.
This regenerates the plugin binaries and module manifests against the current editor build. After the build completes, reopen the project.
You only need to remove the generated folders for the plugins that are failing to load.
Regenerate and replace both:
AssetRegistry.bin
Jmap
before assuming the editor or generated headers need to be updated.