A .MODULE file defines which folders and .SGA archives the mod's files will be loaded from. Mods are started from the command-line via the .MODULE's file name (ie. dow2.exe -dev -mod <filename>).
To create a module file, navigate to the DoW2 root directory. Inside, there is a file called “DOW2.module”. Copy this file, and rename it to your mod's name, replacing spaces with underscores (“_”). For example, a mod with the name “Dawn of Assault” would have a corresponding module named “Dawn_of_Assault.module”, and would be launched from the command line via “dow2.exe -dev -mod dawn_of_assault”.
Once you have copied the original DoW2.module file, open it with notepad, or any other text editing tool you desire (such as notepad++). Word and Wordpad probably aren't the best choices as they tend to leave superfluous data in the file.
Now the file is open, you will need to edit several lines to make DoW2 read from your mod's folders.
[global] in DOW2.module
Name = DOW2 UIName = $1081 Description = Dawn of War 2 ModVersion = 1.3 ModFolder = GameAssets
This is an example of the [global] section of the DOW2.module. It defines the mod's information, such as it's name, description, version and the folder it's files are located in. Edit this accordingly for your mod. In our Dawn of Assault mod example, it would look like so:
[global] in Dawn_of_Assault.module
Name = Dawn of Assault UIName = Dawn of Assault Description = Dawn of Assault Mod for Dawn of War 2 ModVersion = 0.1 ModFolder = Dawn_of_Assault
Ensure that the modfolder line is pointing to your mod's root folder.
Next, we need to tell DoW2 where to load our attributes from;
[attrib:common] in DOW2.module
folder.01 = GameAssets\Data archive.01 = GameAssets\Archives\GameAttrib.sga
folder.xx defines the path to folders that hold your mod's files. Generally there should only be one of these, in the following format; folder.01 = <mod_name>\Data. Each folder.xx line should have a unique number, starting from 01, finishing at 99. DoW2 will load folders in reverse order to the way they are defined, that is that it will load folder.03, then folder.02, overwriting any data in folder.03, then folder.01, overwriting any data in folder.03 and folder.02.
archive.01 defines the path to .SGA archives for your mod. There can be as many of these as you want, following this format; folder.01 = <mod_name>\Archives\<archive_name>.sga. Archive names should generally be descriptive of what they contain, see Relic's naming patterns for reference. These are loaded in the same way that folders are loaded, but folders will over-write files in .SGAs if the -dev tag is applied at startup.
In our example, we will load data from DoW2's data folder & gameattrib.sga, the data folder and an attributes SGA from our mod;
[attrib:common] in Dawn_of_Assault.module
folder.01 = Dawn_of_Assault\Data folder.02 = GameAssets\Data archive.01 = Dawn_of_Assault\Archives\DoA_Attrib.sga archive.02 = GameAssets\Archives\GameAttrib.sga
In this example, the normal DoW2 files will be loaded, then the Dawn of Assault's SGA packaged attrib files
[sound:common] in DOW2.module
folder.01 = GameAssets\Data\Sound archive.01 = GameAssets\Archives\GameSoundContainers_DELTA.sga archive.02 = GameAssets\Archives\GameSoundContainers.sga archive.03 = GameAssets\Archives\GameSound_DELTA.sga archive.04 = GameAssets\Archives\GameSound.sga
This section specifies where sound files and archives are located. Sounds can also be allocated via locale, like so:
[sound:[locale]] in DOW2.module
folder.01 = GameAssets\Locale\<locale>\Sound archive.01 = GameAssets\Locale\<locale>\<locale>_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\<locale>\<locale>_GameSpeechContainers.sga archive.03 = GameAssets\Locale\<locale>\<locale>_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\<locale>\<locale>_GameSpeech.sga archive.05 = GameAssets\Locale\<locale>\<locale>_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\<locale>\<locale>_EldarMPSpeech.sga archive.07 = GameAssets\Locale\<locale>\<locale>_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\<locale>\<locale>_OrkMPSpeech.sga archive.09 = GameAssets\Locale\<locale>\<locale>_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\<locale>\<locale>_SpaceMarineMPSpeech.sga
Where [locale] indicates the language in question.
Generally, for modding, you will not have to edit any sound entries. If you do include sounds, edit folder.01 in [sound:common] to reflect your mod's folder.
[movies:common] in DOW2.module
folder.01 = GameAssets\Data\Movies
Movies are often left outside .SGA archives, it is recommended you do the same. To add movies, you should edit the file so that the original DoW2's “gameassets” entry remains, otherwise you will have to copy the DoW2 movies into your own movie folder. This is only relevant for campaign modding. This also works for different locales, in the same way that the [sound:[locale]] entries do. For our Dawn of Assault example;
[movies:common] in Dawn_of_Assault.module
[movies:common] folder.01 = Dawn_of_Assault\Data\Movies folder.02 = GameAssets\Data\Movies [movies:french] folder.01 = Dawn_of_Assault\Locale\French\Movies folder.02 = GameAssets\Locale\French\Movies
This will allow the game to access all the movies in the DoW2 folder and your mod, for all locales except french, which can additionally access movies in Dawn of Assault and DoW2's french locale folder.
[data:common] in DOW2.module
folder.01 = GameAssets\Data archive.01 = GameAssets\Archives\1.3.2.sga archive.02 = GameAssets\Archives\GameArt_DELTA.sga archive.03 = GameAssets\Archives\GameArt.sga archive.04 = GameAssets\Archives\GameArtEnvironment_DELTA.sga archive.05 = GameAssets\Archives\GameArtEnvironment.sga archive.06 = GameAssets\Archives\GameArtEnvironmentTextures_DELTA.sga archive.07 = GameAssets\Archives\GameArtEnvironmentTextures.sga archive.08 = GameAssets\Archives\GameMaps_DELTA.sga archive.09 = GameAssets\Archives\GameMaps.sga archive.10 = GameAssets\Archives\GameDefault_DELTA.sga archive.11 = GameAssets\Archives\GameDefault.sga
This is the main important section. It allows for the loading of all other data in a mod. This works in the same way as all the other sections in respect to adding folders & archives.
In the end, you should have a file looking something like this:
dawn_of_assault.module
[global] Name = Dawn of Assault UIName = Dawn of Assault Description = Dawn of Assault Mod for Dawn of War 2 ModVersion = 0.1 ModFolder = Dawn_of_Assault [attrib:common] folder.01 = Dawn_of_Assault\Data folder.02 = GameAssets\Data archive.01 = Dawn_of_Assault\Archives\DoA_Attrib.sga archive.02 = GameAssets\Archives\GameAttrib.sga [sound:common] folder.01 = Dawn_of_Assault\Data\Sound folder.02 = GameAssets\Data\Sound archive.01 = Dawn_of_Assault\Archives\DoA_Sounds.sga archive.02 = GameAssets\Archives\GameSoundContainers_DELTA.sga archive.03 = GameAssets\Archives\GameSoundContainers.sga archive.04 = GameAssets\Archives\GameSound_DELTA.sga archive.05 = GameAssets\Archives\GameSound.sga [sound:english] folder.01 = GameAssets\Locale\English\Sound archive.01 = GameAssets\Locale\English\English_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\English\English_GameSpeechContainers.sga archive.03 = GameAssets\Locale\English\English_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\English\English_GameSpeech.sga archive.05 = GameAssets\Locale\English\English_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\English\English_EldarMPSpeech.sga archive.07 = GameAssets\Locale\English\English_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\English\English_OrkMPSpeech.sga archive.09 = GameAssets\Locale\English\English_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\English\English_SpaceMarineMPSpeech.sga [sound:french] folder.01 = GameAssets\Locale\French\Sound archive.01 = GameAssets\Locale\French\French_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\French\French_GameSpeechContainers.sga archive.03 = GameAssets\Locale\French\French_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\French\French_GameSpeech.sga archive.05 = GameAssets\Locale\French\French_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\French\French_EldarMPSpeech.sga archive.07 = GameAssets\Locale\French\French_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\French\French_OrkMPSpeech.sga archive.09 = GameAssets\Locale\French\French_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\French\French_SpaceMarineMPSpeech.sga [sound:german] folder.01 = GameAssets\Locale\German\Sound archive.01 = GameAssets\Locale\German\German_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\German\German_GameSpeechContainers.sga archive.03 = GameAssets\Locale\German\German_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\German\German_GameSpeech.sga archive.05 = GameAssets\Locale\German\German_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\German\German_EldarMPSpeech.sga archive.07 = GameAssets\Locale\German\German_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\German\German_OrkMPSpeech.sga archive.09 = GameAssets\Locale\German\German_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\German\German_SpaceMarineMPSpeech.sga [sound:russian] folder.01 = GameAssets\Locale\Russian\Sound archive.01 = GameAssets\Locale\Russian\Russian_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\Russian\Russian_GameSpeechContainers.sga archive.03 = GameAssets\Locale\Russian\Russian_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\Russian\Russian_GameSpeech.sga archive.05 = GameAssets\Locale\Russian\Russian_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\Russian\Russian_EldarMPSpeech.sga archive.07 = GameAssets\Locale\Russian\Russian_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\Russian\Russian_OrkMPSpeech.sga archive.09 = GameAssets\Locale\Russian\Russian_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\Russian\Russian_SpaceMarineMPSpeech.sga [sound:spanish] folder.01 = GameAssets\Locale\Spanish\Sound archive.01 = GameAssets\Locale\Spanish\Spanish_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\Spanish\Spanish_GameSpeechContainers.sga archive.03 = GameAssets\Locale\Spanish\Spanish_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\Spanish\Spanish_GameSpeech.sga archive.05 = GameAssets\Locale\Spanish\Spanish_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\Spanish\Spanish_EldarMPSpeech.sga archive.07 = GameAssets\Locale\Spanish\Spanish_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\Spanish\Spanish_OrkMPSpeech.sga archive.09 = GameAssets\Locale\Spanish\Spanish_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\Spanish\Spanish_SpaceMarineMPSpeech.sga [sound:italian] folder.01 = GameAssets\Locale\Italian\Sound archive.01 = GameAssets\Locale\Italian\English_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\Italian\English_GameSpeechContainers.sga archive.03 = GameAssets\Locale\Italian\English_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\Italian\English_GameSpeech.sga archive.05 = GameAssets\Locale\Italian\English_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\Italian\English_EldarMPSpeech.sga archive.07 = GameAssets\Locale\Italian\English_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\Italian\English_OrkMPSpeech.sga archive.09 = GameAssets\Locale\Italian\English_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\Italian\English_SpaceMarineMPSpeech.sga [sound:czech] folder.01 = GameAssets\Locale\Czech\Sound archive.01 = GameAssets\Locale\Czech\English_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\Czech\English_GameSpeechContainers.sga archive.03 = GameAssets\Locale\Czech\English_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\Czech\English_GameSpeech.sga archive.05 = GameAssets\Locale\Czech\English_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\Czech\English_EldarMPSpeech.sga archive.07 = GameAssets\Locale\Czech\English_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\Czech\English_OrkMPSpeech.sga archive.09 = GameAssets\Locale\Czech\English_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\Czech\English_SpaceMarineMPSpeech.sga [sound:tchinese] folder.01 = GameAssets\Locale\TChinese\Sound archive.01 = GameAssets\Locale\TChinese\English_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\TChinese\English_GameSpeechContainers.sga archive.03 = GameAssets\Locale\TChinese\English_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\TChinese\English_GameSpeech.sga archive.05 = GameAssets\Locale\TChinese\English_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\TChinese\English_EldarMPSpeech.sga archive.07 = GameAssets\Locale\TChinese\English_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\TChinese\English_OrkMPSpeech.sga archive.09 = GameAssets\Locale\TChinese\English_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\TChinese\English_SpaceMarineMPSpeech.sga [sound:polish] folder.01 = GameAssets\Locale\Polish\Sound archive.01 = GameAssets\Locale\Polish\English_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\Polish\English_GameSpeechContainers.sga archive.03 = GameAssets\Locale\Polish\English_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\Polish\English_GameSpeech.sga archive.05 = GameAssets\Locale\Polish\English_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\Polish\English_EldarMPSpeech.sga archive.07 = GameAssets\Locale\Polish\English_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\Polish\English_OrkMPSpeech.sga archive.09 = GameAssets\Locale\Polish\English_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\Polish\English_SpaceMarineMPSpeech.sga [sound:hungarian] folder.01 = GameAssets\Locale\Hungarian\Sound archive.01 = GameAssets\Locale\Hungarian\English_GameSpeechContainers_DELTA.sga archive.02 = GameAssets\Locale\Hungarian\English_GameSpeechContainers.sga archive.03 = GameAssets\Locale\Hungarian\English_GameSpeech_DELTA.sga archive.04 = GameAssets\Locale\Hungarian\English_GameSpeech.sga archive.05 = GameAssets\Locale\Hungarian\English_EldarMPSpeech_DELTA.sga archive.06 = GameAssets\Locale\Hungarian\English_EldarMPSpeech.sga archive.07 = GameAssets\Locale\Hungarian\English_OrkMPSpeech_DELTA.sga archive.08 = GameAssets\Locale\Hungarian\English_OrkMPSpeech.sga archive.09 = GameAssets\Locale\Hungarian\English_SpaceMarineMPSpeech_DELTA.sga archive.10 = GameAssets\Locale\Hungarian\English_SpaceMarineMPSpeech.sga [movies:common] folder.01 = GameAssets\Data\Movies [movies:english] folder.01 = GameAssets\Locale\English\Movies [movies:french] folder.01 = GameAssets\Locale\French\Movies [movies:german] folder.01 = GameAssets\Locale\German\Movies [movies:russian] folder.01 = GameAssets\Locale\Russian\Movies [movies:spanish] folder.01 = GameAssets\Locale\Spanish\Movies [movies:italian] folder.01 = GameAssets\Locale\Italian\Movies [movies:czech] folder.01 = GameAssets\Locale\Czech\Movies [movies:tchinese] folder.01 = GameAssets\Locale\TChinese\Movies [movies:polish] folder.01 = GameAssets\Locale\Polish\Movies [movies:hungarian] folder.01 = GameAssets\Locale\Hungarian\Movies [data:common] folder.01 = Dawn_of_Assault\Data archive.01 = GameAssets\Archives\1.3.2.sga archive.02 = GameAssets\Archives\GameArt_DELTA.sga archive.03 = GameAssets\Archives\GameArt.sga archive.04 = GameAssets\Archives\GameArtEnvironment_DELTA.sga archive.05 = GameAssets\Archives\GameArtEnvironment.sga archive.06 = GameAssets\Archives\GameArtEnvironmentTextures_DELTA.sga archive.07 = GameAssets\Archives\GameArtEnvironmentTextures.sga archive.08 = GameAssets\Archives\GameMaps_DELTA.sga archive.09 = GameAssets\Archives\GameMaps.sga archive.10 = GameAssets\Archives\GameDefault_DELTA.sga archive.11 = GameAssets\Archives\GameDefault.sga