Moolah PAYDAY 3 Modding Documentation

website·Indexed 31 days ago

https://moolah.dev

Comprehensive guides and technical documentation for modding PAYDAY 3. Covers the use of Unreal Engine 4.27, UE4SS, FModel, and the Asset Toolkit. Includes instructions for custom heists, mapping, texture and mesh replacements, custom music via Wwise, and packaging mods for the Moolah Mod Launcher using pd3mod.json.

Tokens
11.5K
Snippets
30
Records
81
Agent score
52%

What's inside Moolah

  1. Overview of PAYDAY 3 Modding Methods

    Modding for PAYDAY 3 can be achieved through two primary development paths: using the Unreal Editor with a modkit containing assets generated from the game, or using UE4SS, which provides a LUA toolkit and a runtime property inspector.
  2. Register a custom map using PD3HeistDataAsset

    To make a map visible to the MapLoader mod, you must create a PD3HeistDataAsset with the following requirements:

    • Location: Preferably stored in Content/Mods/Maps/{ModName}.
    • Naming Convention: Name the asset DA_Heist_{ModName}.
    • Level Path: Set this property to point to your created map file.
    • Metadata: Use this asset to define the map's in-game name and description.
  3. Organize mod content and folder structure

    Organize your mod files into specific directories to ensure compatibility with the Moolah Mod Launcher:

    • Pak files: Place in a folder named Paks. Pak filenames must end with _P.pak to ensure asset replacements are applied correctly.
    • UE4SS content: Place Lua scripts or DLLs in a folder named ue4ss.
    • Important: Do not include an enabled.txt file for UE4SS mods; the launcher manages this by updating the mods.txt file automatically.
    MyMod-v1.0.0
    ├── paks
    │   └── MyMod_P.pak
    ├── ue4ss
    │   ├── dlls
    │   │   └── main.dll
    │   └── scripts
    │       ├── main.lua
    │       └── util.lua
    ├── icon.png
    └── pd3mod.json
  4. Set up FModel for PAYDAY 3

    To configure FModel for PAYDAY 3, navigate to Directory > Selector and provide a name for the game and the path to the game's root directory. Because PAYDAY 3 uses AES encryption, you must also provide the AES key by navigating to Directory > AES and entering the key (which must be sourced independently).
  5. Cook game files for PAYDAY 3

    All files must be cooked before they can be packaged and tested. In the Unreal Editor, navigate to the File menu and select Cook Content for Windows. The cooked files will be output to {UE4ProjectDir}/Saved/Cooked/WindowsNoEditor/.
  6. Set up a custom map for PAYDAY 3

    To create a custom map, use the Unreal Engine editor. The recommended directory for storing map files is Content/Maps/{ModName}. To ensure the map loads correctly in PAYDAY 3, you must include a SBZPlayerStartGroup actor in the level and add at least one PlayerStart to that group.
  7. Create a Data Asset in the Content Browser

    To create a new data asset in the editor, right-click in the content browser, navigate to the Miscellaneous menu, and select Data Asset. From the class picker, search for and select the specific data asset type you wish to use (e.g., PD3HeistDataAsset), then provide a name for the asset.
  8. Package and export a .pd3mod file

    Once the mod directory is organized, follow these steps to create the final distributable package:

    1. Zip the contents of your mod directory (do not zip the parent folder itself).
    2. Ensure pd3mod.json is located at the root of the zip archive.
    3. Change the file extension of the resulting .zip file to .pd3mod.
  9. Manage mod dependencies in pd3mod.json

    Dependencies are defined as maps where keys are mod IDs and values are NPM-style semver ranges (e.g., 1.2.3, 1.x.x, *).

    • depends: Hard requirement. Game will not launch if missing/mismatched; launcher shows an error.
    • breaks: Hard conflict. Game will not launch if matched; launcher shows an error.
    • recommends: Soft requirement. Launcher shows a warning if missing/mismatched.
    • conflicts: Soft conflict. Launcher shows a warning if matched.
    • suggests: Metadata only; ignored by the launcher.
    {
      "depends": {
        "required-mod-id": "^1.0.0"
      },
      "conflicts": {
        "incompatible-mod-id": "*"
      }
    }
  10. Assign material instances to a model

    1. Create a material instance from the stubbed master material (e.g., MM_HelicopterInterior).
    2. Place the instance under /Content/Mods/[YourModName].
    3. Open the material instance and assign the packed texture parameters.
    4. Open the model asset and assign the material instance to the appropriate material slots.