Adding mods¶
DDMM treats an archive, a folder, and a direct link as equally first-class ways to add a mod. All of them end up as an entry in your mod Library. Before you've added anything, the mod list itself says so: "No mods yet — Works with AyakaMods, Nexus Mods, ModWorkshop, GameBanana, GitHub and more."
Add (archive files)¶
Click Add (tip: "Add a mod to the library.") to open a file picker filtered to .zip, .7z, and .rar. You
can select one file or several at once — DDMM installs every archive you pick. With 10 or more files (picked or
dragged in), DDMM first shows the import checklist, so duplicates and mods you already have
are sorted out before anything is installed.
Moving a whole collection over (another mod manager's mods, or a folder with hundreds of downloaded archives)? Use Import instead.
Add Folder¶
Click Add Folder (tip: "Add a mod from a plain folder.") to pick a folder that already contains a mod's files
unpacked — no archive step needed. You can pick multiple folders at once. DDMM copies the folder's contents
(symlinks are not followed) into its own managed mods/ directory; your original folder is left untouched.
Pick one mod's folder at a time (or several single-mod folders at once), not a folder that holds your whole
collection. DDMM never copies a folder into itself, so it checks the folder you pick against its own mods/
folder (after following shortcuts/symlinks, .., and on Windows and macOS ignoring upper/lower case):
- DDMM's own
mods/folder, or a folder that contains it (for example DDMM's data folder in a portable install): refused with an explanation, and nothing is copied. Mods inmods/that have amanifest.jsonare already in your list. - A mod folder sitting directly in
mods/that isn't in your list yet (it has nomanifest.json, for example because you unpacked it there yourself): it's added where it is. Nothing is copied or moved; DDMM just writes amanifest.jsoninto it. - A folder deeper inside one of your mods (such as a mod's
Options/Redfolder): refused. Pick the mod's own folder instead.
If a copy fails partway (a file can't be read, the disk is full), DDMM removes the half-copied folder again.
Add URL¶
Click Add URL (tip: "Add a mod from a direct download link.") and paste a mod page or download link — its popup describes itself as: "Paste a mod page or download link from AyakaMods, Nexus Mods, ModWorkshop, GameBanana, GitHub, or any direct download link."
A direct link (serving the archive file itself over https://) downloads and installs immediately, with a
2 GiB size cap, and a check that what comes back is actually a zip/7z/rar archive (by file signature, not just the
URL's extension). A mod page on a site that requires being logged in (AyakaMods, Nexus Mods) skips the direct
download attempt entirely and goes straight to a browser handoff; a page on another site that turns out not to
serve an archive directly gets offered the same handoff instead of just failing. See
Mod sites for exactly how that's decided and how the handoff works.
If a direct download attempt fails outright and no handoff is offered/accepted, you see:
Adding mod from URL failed! — Use a direct download link, or download the file and add it manually.
Drag & drop¶
Drag one or more archive files or folders onto the DDMM window (a "Drop archives or folders to add" overlay appears while dragging) and drop them — DDMM installs each one, the same as picking them through Add / Add Folder.
What happens after¶
Every install goes through the same steps:
- A folder for the mod is created under
mods/, named after the archive's filename (without its extension) or the source folder's name. - If the archive/folder contains a
manifest.json, that becomes the mod's manifest (see Manifest reference for the formats DDMM understands). - If there's no
manifest.json, DDMM generates a minimal one automatically: a random ID, the archive/folder name as the mod's name, an empty description — and, for this auto-generated manifest only, DDMM also scans the mod's files to fill inOptionsif needed; see Archives without a manifest.json below. - The mod is added to your Library, from where you can drag or insert it into a profile. If DDMM couldn't find any Helldivers 2 patch files anywhere in it, you'll see a non-fatal warning: "no Helldivers 2 patch files found in this archive" — the mod is still added, it just won't do anything when deployed.
If a mod with the same ID (Guid) is already installed, adding it again fails with a "mod with GUID ... already
exists" error rather than silently overwriting it.
Archives without a manifest.json¶
For a mod installed with no manifest.json of its own (an auto-generated manifest — an author-supplied manifest
is never touched this way), DDMM scans the installed files to work out where its Helldivers 2 patch files
(<16 hex chars>.patch_N, plus .gpu_resources/.stream counterparts) actually live:
- Patch files directly at the mod's root — the common case — deploy as-is, no options.
- No patch files at the root, but one or more directories (up to 4 levels deep) directly contain some — each
such directory becomes an entry in a Legacy-style
Optionslist (the same single-choice dropdown described in Mod options & variants), naturally sorted (so "Option 2" sorts before "Option 10") and defaulting to the first one. This covers both a single wrapper folder (e.g. everything nested one level down under a folder named after the mod) and several variant folders (e.g.Red/,Blue/) the same way — pick the one you want from the dropdown before deploying. - No patch files found anywhere in the first 4 levels — the mod installs anyway, with the warning shown above, rather than silently doing nothing.
A directory that qualifies as an option isn't searched any further inside itself — whatever's in it is that option's whole file tree, not a place to look for more nested variants.
Batch adds and partial failures¶
When you add several archives, folders, or a mix of paths at once, each one is installed independently: one bad archive doesn't stop the rest from installing. You'll see a result popup listing which succeeded and which failed, with the error message for each failure.