Before you try to start with any tutorials on modding you should read this.


Unpacking the game with UXM

Before you can even use tools to modify content you need to unpack every FromSoftware game (except Dark Souls Remastered because it's already unpacked).

- download "UXM Selective Unpacker" from the tools page
- open it and click browse and navigate to your game and select the .exe file
- click "Unpack" and wait…
- after it finished there is no need to use the "Patch" button. ModEngine can load all modded files first and then use the packed game files. If you would click "Patch" it would use your unpacked game files instead when launching the game. This is only needed for games that are not supported by ModEngine. This can be reverted by using the "Restore" button.


Using modified files

No matter which tools you use to modify content it will only take effect if you:
- are using ModEngine or ModEngine2 (you can download it from the tools page) and put all modified files into its mod folder
- selected "patch" in UXM and then overwrite your game files directly or copy over your project directory (e.g. from "DSMapStudio") to the game directory

It is recommended to use ModEngine but older titles like DS1 are not supported. You can only use the second option.


Block the .exe in the firewall

ModEngine automatically forces the game to be offline.
So if your game is not supported (or you want to be extra safe which you should) you need to block outgoing traffic in the firewall (this is for Windows 10+ only, I expect linux users to be able to do this on their own):

1. click the windows button and simply type "cmd" and click on the "open as administrator" option on the right.
2. Copy this and paste it (with a right click) into the open cmd window:

netsh advfirewall firewall add rule name="BlockDSRemastered" dir=out program="C:\Program Files (x86)\Steam\steamapps\common\DARK SOULS REMASTERED\DarkSoulsRemastered.exe" profile=any action=block

You can now edit the path to fit but this is the default path for Dark Souls Remastered.

3. Press "Enter" and it should say "OK" if everything is correct.

You can't play online anymore at this point. The game will be force to offline mode.

If you want to remove the rule and play normally again then instead enter this in the cmd:

netsh advfirewall firewall delete rule name="BlockDSRemastered" dir=out

Backup your save files

If you have existing save files then you need to make a backup of them.
Never, ever, go online with a save that was used with a mod.
After you have played the game with a mod you need to delete or rename your current save files and restore your old save files.

Here are the default save game folders:
DS1: C:\Users\<username>\Documents\NBGI\DarkSouls
DSR: C:\Users\<username>\Documents\NBGI\DARK SOULS REMASTERED
DS2: C:\Users\<username>\AppData\Roaming\DarkSoulsII
DS3: C:\Users\<username>\AppData\Roaming\DarkSoulsIII
ER: C:\Users\<username>\AppData\Roaming\EldenRing

If you can't see the folder "AppData" you need to select "View" in Windows Explorer and enable showing hidden items.


Backup your game

You should keep a backup of your game so if you mess up an original file you can simply copy it over from your backup.


WitchyBND usage

Sometimes you will read that you need to "unpack" or "repack" files. This is referring to the tool "WitchyBND" which unpacks the default archive files of FromSoftware games to a new folder. You can then enter the folder and edit specific files. After editing it you need to repack the folder so it gets converted to a file.

How to do that:
- download "WitchyBND" from the tools page
- You now have the option either drag-and-drop a file onto "Witchy.exe" or run the exe directly to register it which will add "Witchy" to the right-click menu if you click onto files or folders
- To test this simply go into the "chr" folder of one of the games and unpack "c0000.anibnd" or "c0000.anibnd.dcx" (in Dark Souls 1 PTDE there was no ".dcx" which is the compressed format of the files)

Adding files:
- If you not just edit but add files to the unpacked folders then you also need to edit the "_witchy-ffxbnd.xml" in the folder before you repack it
- You need to look for the entries of a specific file type that already existed e.g. from the unpacked "c0000.anibnd.(dcx)" you can find ".tae" in its "_witchy-ffxbnd.xml"
- Then duplicate the last entry of the same file extensions
- Then edit the ID to be the next consecutive number
- Then edit the path so it points to your new file
- Then repack the folder


Game parts:

AI

All enemies and NPCs have an AI. The .luabnd files are in the "script" folder.


Characters

Characters are all entities (enemies and NPCs) with an AI. The player is c0000.
The character files are in the "Chr" folder and contain the .flver model, animations and textures (need to be unpacked as well).

The players animation file "c0000.anibnd.dcx" can be opened with "DSAnimStudio" and contains all animations from tae 00 (or 000 in later titles)."TAE" stands for time action event and is an animation + events happening at a specific point during the animation for X amount of time. This can be one frame or several seconds.
Additional files contain taes for other ranges e.g. "c0000_a1x.anibnd.dcx" contains the taes for 10.
Other files e.g. "c2040.anibnd.dcx" contain the animations for enemies.


Models and Textures

Body, weapon and armor files are in the "parts" folder.
All files have a prefix and indicate the type of model:

fc: bald head (DS1), naked body (DS3+)
fg: face
hr: hair
hd: head armor
bd: body armor
lg: leg armor
am: arm armor
wp: weapon

All body files have "f" (female) or "m" (male) in the name to indicate the body type or "a" for all.
The suffix "_l" stands for the low poly and texture version (used for far distances).
The ID is used to select the model from the folder (referenced in the params of the games with the field "equipModelId").

In DS1 the player model gets assembled with armor parts (include body parts) + configured face + bald head. This means equipping an armor piece will always replace the body part. Masks are used to avoid clipping between armor parts.
The suffix "_m" of armor parts indicates the hollowed version.

In DS3+ the player model gets assembled with armor parts + configured face + naked body parts.
Masks on armor parts are used to make the body part disappear if needed.


HUD / Icons / Menu

The HUD elements and icons are in the "menu" folder.


Language / Text

The language files are in the "msg" folder. Text can be most easily edited with Dark Souls Map Studio's Text Editor


Scripts / emevd

If someone uses those words they are referring to the files in the "event" folder which holds the common event script that is active the whole time and map scripts that are only running when the player is inside the specific map.
The player always has the ID 10000 which is used in the scripts.
Events are typically edited with DarkScript 3 (or esdlang tool for Dark Souls 2).


SFX / VFX / FFX / FXR

Those are visual effects like magic, bonfires, sword sparks, walking on certain areas effects like mud etc.
The sounds that are heard at the same time belong to them.
The files are packed within the "sfx" folder.
SFX is the term for visual effects in FromSoftware games.
VFX is normally used for visual effects but in FromSoftware games it refers to the SpEffectVfxParam category.
FFX is the file extension for unpacked SFX files in DS1 and 2.
FXR is the file extension for unpacked SFX files in DS3, Sekiro, ER, and AC6.


Sound

Anything from sound effects (SE) to voice lines to background music (BGM).
These files are typically found in the "sound" folder. Dark Souls Sound Inserter (DSSI), FMOD Designer, and RewWise (for Elden Ring) are used to modify sound in the majority of cases.


Talk

Talk scripts are used by NPCs or some objects (using invisible NPCs). They start working when the player enters a 5m radius around them and are map based only. They are in the "script/talk" folder.
They can either be edited with "ESDStudio" in python syntax or in "Soulstruct" for Dark Souls 1 in a class-like format (this makes them unable to edit with ESDStudio after saving).