Table of Contents

go to index

Manual Installation of Mods

The word “Manual” installation may sound scary, but actually to install mods in OpenMW is fairly straightforward once one knows the kinds of mods it may stumble upon.

Introduction

To install mods requires to edit a configuration file (i.e., ~/.config/openmw/openmw.cfg), so you may want to keep different versions ready to use via a version control program or making backup copies.

The file openmw.cfg file is a sequence of assignments like key=value, key can be repeated. Initially the keys will be in alphabetical order, but I suggest to sort like:

fallback=...
fallback=...

fallback-archive=...
fallback-archive=...

resources=...

data=...
data=...

content=...
content=...

groundcover=...
groundcover=...

If you have other key values, (e.g., encoding=) just put them in the top of the file.

The mods can be categorized in:

esp-file mods

Example: Patch for Purists (PfP for short)

This is, by far, the most common kind of mods. They are easy to recognize for they do have .esp / .esm / .owaddon files inside the archive.

To install a esp-file mod you need to unpack it somewhere and edit the file ~/.config/openmw/openmw.cfg and add at least two lines.

As example, let's unpack the PfP in the directory mods/PfP:

$ pwd
/home/username/games/tes_morrowind/mods/PfP
$ ls -1
BookArt
Docs
Icons
Meshes
'Patch for Purists - Book Typos.ESP'
'Patch for Purists - Semi-Purist Fixes.ESP'
'Patch for Purists.esm'
Textures

So the .esX files are: Patch for Purists - Book Typos.ESP, Patch for Purists - Semi-Purist Fixes.ESP, and Patch for Purists.esm.

We then edit the openmw.cfg we have to add the following lines:

data="/home/username/games/tes_morrowind/mods/PfP"
content=Patch for Purists.esm
content=Patch for Purists - Book Typos.ESP
content=Patch for Purists - Semi-Purist Fixes.ESP

In what order?

In general what is after in the list overrides what is before so if two mods change the same texture, the second will be shown in-game.

The order of the esp files hardly matters, but .esm files should be before esp files. To have a rule of thumb, if a mod is big it should be on top, if it specific it should be on the bottom.

.bsa files are archives, if the mod has bsa files in addition to the data= line you will need to add a fallback-archive= line to have the game read its contents.

Groundcover mods

Example: Ozzy's Grass

Groundcover mods have their own .esp files, but they must be loaded differently because the game needs to distinguish between groundcover objects and normal ones. In other words, groundcover mods work as esp-file mods, but instead of content= rows you have to add groundcover= rows.

Let us install Ozzy's grass, first we unpack in the mods/Ozzy_Grass directory.

$ pwd
/home/username/games/tes_morrowind/mods/Ozzy_Grass
$ ls
'Data Files'  'Original readmes'   ReadMe.htm   files
$ ls -1 Data\ Files
"Ozzy's Grass - Ascadian Isles.esp"
"Ozzy's Grass - Bitter Coast.esp"
"Ozzy's Grass - Grazelands.esp"
"Ozzy's Grass - Solstheim.esp"
"Ozzy's Grass - West Gash.esp"
"Ozzy's Grass.bsa"

The esp files are Ozzy's Grass - Ascadian Isles.esp, Ozzy's Grass - Bitter Coast.esp, Ozzy's Grass - Grazelands.esp, Ozzy's Grass - Solstheim.esp, and Ozzy's Grass - West Gash.esp. There is also bsa archive: Ozzy's Grass.bsa.

So we need to add the following rows, note how the data= row points where the other files are.

fallback-archive=Ozzy's Grass.bsa

data="/home/username/games/tes_morrowind/mods/Ozzy_Grass/Data Files"

groundcover=Ozzy's Grass - Ascadian Isles.esp
groundcover=Ozzy's Grass - Bitter Coast.esp
groundcover=Ozzy's Grass - Grazelands.esp
groundcover=Ozzy's Grass - Solstheim.esp
groundcover=Ozzy's Grass - West Gash.esp
ground cover settings

To work ground cover mods need to be enabled in the settings.cfg file. Here is an example setting set, the row enabled is the only necessary. To reduce density of rendering distance may help performance.

[Groundcover]
enabled = true
min chunk size = 0.5
density = 1.0
stomp mode = 2
stomp intensity = 2
rendering distance = 18432

esp-less mods

Example: Swiveller's Ashland and Molag Amur

Esp-less mods are installed very similarly to esp-file mods, but they have no content= or groundcover= rows.

The lack of esp files means the mod normally can only alter existing game assets, like textures, meshes, or sounds. But it cannot add anything. So, the main point to keep in mind is that order is usually more important in esp-less mods, while adding the data= rows you have to be careful: whatever is lower in the order will appear in game.

Let us install Swiveller's Ashland and Molag Amur textures, first we unpack in the mods/Swiv_barren directory.

$ pwd
/home/username/games/tes_morrowind/mods/Swiv_barren
$ ls
Swiveller_barren
$ ls -1 Swiveller_barren/
readme.txt
swiveller_readmes
textures

As we can see, there is no esX files. We just need to add the data= line. Here I kept the directory name as-is, but you may want to move Swiveller_barren to avoid the double.

data="/home/username/games/tes_morrowind/mods/Swiv_barren/Swiveller_barren"

If some other mod changes the Ashlands or the Molag Amur textures which one will appear in game depends on the order. Once again the rule of thumb is that the more general a mod is the higher it should go, the more specific the lower.

Post-process shaders mods are an exception that what we said. Since those, being specific to OpenMW, even without esp files are able to add new shaders to the game. In the game you can access the shader menu pressing F2. Example: Glassman's Shaders.

ini-edit mods

Example: Different Sky Colors for Morrowind

The Morrowind game has many interesting settings stored in the morrowind.ini file. For example, the color of fogs depending on the weather.

Few mods alter those values, you can recognize those mods because usually they include a .ini or textual file with the new settings; seldom the settings are described in the readme file. In any case, somewhere are the settings in the ini format.

The ini values in OpenMW appear in the openmw.cfg file as fallback= values. In the OpenMW the fallback= rows can be repeated, and if it is the case, the one lower in the file will be considered.

So, to install ini-edit mods we convert the ini file included in the mod in the format expected by OpenMW and copy the rows in the openmw.cfg file, ideally with a comment on top to remind there the new rows come from.

Let us say the ini settings are in a file called input.ini. To convert the ini values from the morrowind.exe format to the OpenMW format we can use the following command line:

$ openmw-iniimporter  -v  -i input.ini  -c ~/.config/openmw/openmw.cfg  -o /dev/stdout  |  grep '^fallback='  >  openmw_cfg_fallbacks.txt

The output file openmw_cfg_fallbacks.txt will contain the ini settings in the format expected by OpenMW. We can easily copy and paste from there.

Let us see an example. First we unpack Different Sky Colors for Morrowind in the mods/skies directory.

$ pwd
/home/username/games/tes_morrowind/mods/skies
$ ls
different_sky_colors_1.1
$ ls -1 different_sky_colors_1.1 
'INI settings - different_sky_colors - ASE compatibility.txt'
'INI settings - different_sky_colors.txt'
Tx_sky_ashstorm.dds
[...]
Tx_sky_stormy.dds
Tx_sky_thunder.dds
'different_sky_colors - sample.jpg'
'readme - different_sky_colors._1.1.txt'

The files are not sorted as the game needs. The dds files are textures, but are not in the textures directory. But for now we focus on the ini setting file, since we do not use ASE (Atmospheric Sound Effects), we check the file INI settings - different_sky_colors.txt.

$ <'different_sky_colors_1.1/INI settings - different_sky_colors.txt' head

[Weather Clear]
Sky Sunrise Color=166,118,149
Sky Day Color=135,094,204
Sky Sunset Color=067,057,131
Sky Night Color=009,010,011
Fog Sunrise Color=255,189,157
Fog Day Color=255,223,207
Fog Sunset Color=255,189,157
Fog Night Color=009,010,011

As we can see it contains the new values for the sky and fog colors in the ini format. Let us convert:

$ openmw-iniimporter  -v  -i 'different_sky_colors_1.1/INI settings - different_sky_colors.txt'  -c ~/.config/openmw/openmw.cfg  -o /dev/stdout  |  grep '^fallback='  >  openmw_cfg_fallbacks.txt
$ <openmw_cfg_fallbacks.txt head 
fallback=Weather_Thunderstorm_Thunder_Sound_ID_0,Thunder0
fallback=Weather_Thunderstorm_Thunder_Sound_ID_1,Thunder1
fallback=Weather_Thunderstorm_Thunder_Sound_ID_2,Thunder2
fallback=Weather_Thunderstorm_Thunder_Sound_ID_3,Thunder3
fallback=Weather_Thunderstorm_Thunder_Frequency,.4
fallback=Weather_Thunderstorm_Thunder_Threshold,0.6
fallback=Weather_Clear_Cloud_Texture,Tx_Sky_Clear.tga
fallback=Weather_Clear_Clouds_Maximum_Percent,1.0
fallback=Weather_Clear_Transition_Delta,.015
fallback=Weather_Clear_Sky_Sunrise_Color,166,118,149

The file openmw_cfg_fallbacks.txt contains the rows we have to add to the openmw.cfg file. Now we rename the directory so the textures are in the proper place.

$ mv  different_sky_colors_1.1  textures

So, we have to add the following rows to openmw.cfg, the fallback rows go under the existing ones. The data row goes with the other data rows, since really few mods change the skies the position probably won't matter.

# Different Sky Colors for Morrowind ini values
fallback=Weather_Thunderstorm_Thunder_Sound_ID_0,Thunder0
fallback=Weather_Thunderstorm_Thunder_Sound_ID_1,Thunder1
fallback=Weather_Thunderstorm_Thunder_Sound_ID_2,Thunder2
[...]

data="/home/username/games/tes_morrowind/mods/skies"

shaders

There are two kind of shaders, post-process shaders and core shaders. Post-process shaders have their own in-game menu for configuration, core shaders instead are fixed. Shaders, in general, are text files so configuration might be possible editing them.

Example, core shaders: Zesterer Shaders.

Example, post-process shaders: Glassman Shaders.

Post-process shaders

There is little to add for the installation of post-process shaders, they work as regular esp-less mods. Unpack the file, add the data= line the openmw.cfg file. Start the game and press F2 for the configuration.

Core shaders

To install core shaders is more complicated. Core shaders are part of the resource directory and OpenMW understands only one resource directory, so the installation require to copy the default directory, unpack the modded shaders in it and adapt the configuration.

Assuming the game starts properly you can easily find the resource directory starting the game, leaving and check the log file. The log file is called openmw.log and it is saved in the same directory you have your configuration files.

Open the log and look for a line like the following, it should fairly on top around line 10-20.

[00:01:02.003 I] Adding data directory /usr/share/games/openmw/resources/vfs

vfs is the first data directory and it is inside the resource directory we are looking for.

Once found, copy it in your mods directory.

$ pwd
/home/username/games/tes_morrowind/mods
$ cp -r /usr/share/games/openmw/resources .
$ ls
[...]
resources
[...]
$ ls resources
defaultfilters lua_api mygui openmw.png shaders version vfs

The core shaders you downloaded will also contain the shaders directory. Unpack so the shaders directory ends updating the contents. You may need to convert filenames to lowercase, by aware.

Finally in the configuration file openmw.cfg add the line

resources="/home/username/games/tes_morrowind/mods/resources"

Let us install Zesterer resource shaders. We download the pack from the website and we get the file openmw-shaders-main.zip. Now we unpack as explained:

$ pwd
/home/username/games/tes_morrowind/mods
$ mkdir zesterer
$ cp -r /usr/share/games/openmw/resources ./zesterer
$ mkdir tmp && cd tmp
$ unzip -LL ~/openmw-shaders-main.zip 
$ ls
openmw-shaders-main
$ ls openmw-shaders-main
readme.md  shaders
$ cp -r openmw-shaders-main/shaders /home/username/games/tes_morrowind/mods/zesterer
$ cd .. && rm -r tmp

We then edit the openmw.cfg file to add the line resources=

resources=/home/username/games/tes_morrowind/mods/zesterer

Unlike data= rows resources= rows do not merge the contents. So if you have different values, only the one in the bottom counts.

If you want to install more core shaders you will need to unpack all in the same resource directory.