snobel on 25/10/2014 at 19:00
With the 1.1.3 and later versions of the Sneaky Upgrade, Thief 3 has improved mod support inspired by NewDark. This was added in order to provide more flexible versions of the existing mods (Minimalist Project and John P's textures), where you won't have to rerun the installers to change the configuration.
It's not likely that it will ever see much use beyond that but still, it should be documented somewhere how to use it. The Minimalist Project can be used as a reference - it's using most of the features described below.
There are two main parts to the mod support, which has been patched into the game:
* Look for resource files in folders outside of the game installation, in a well-defined search order
* Let external resource files, when found, override resources found in the block files (without patching those files)
To implement the last item, when a resource is about to be read in from a block file, the patch code looks for an external override file of the same name. If one is found, the block file resource is hidden by overwriting its name in memory, causing the game to load the external file. (This is very similar to how patching block files was done previously, except it happens in memory, not in the files.)
The first item is basically a generalization of how FM loading worked before. As in NewDark there are two options, ModPaths and UberModPaths, where mods can be listed. The FM becomes a special mod between the two sets in the search order, which is as follows:
* UberModPaths entries, left to right
* FM, if any
* ModPaths entries, left to right
* Original game
So the difference is that UberModPaths resources will override FM resources (external or block file), while ModPaths resources will not.
By default, external resource files in the FM and original game are ignored. This is to avoid picking up any garbage files that may have been left there. Options are provided to change this behaviour.
Just like the FMs, mods must follow the (somewhat clumsy) folder structure of the original game. The ModPaths and UberModPaths entries are absolute or relative paths separated by semicolons. Relative paths are relative to the path given by the InstallPath option, this is by default C:\ProgramData\Thief 3 Sneaky Upgrade\Installed Mods on Vista and up.
Not all resource types can be overridden. Those that are known to work are:
* Textures (.dds)
* Fonts (.dds, .cel. See below)
* Static meshes (.tim)
* Skeletal meshes (.pro, .ski)
* Skeletal animations (.pan, .sai. See below)
* Triggerscripts (.tsd)
* Shaders (.pso, nvo)
* Untagged sound schemas (.sch. See below)
Those known not to work are:
* Tagged sound schemas
In most cases resource files must be placed in the relevant DynamicallyLoaded folder. An exception is shaders, which are loaded from System\Shaders. Font textures must have an accompanying .cel file in PCTextures/Fonts.
A texture which is a replacement for one of the original fonts can use a different height (the second number in the .cel file) and a larger texture than the original if the difference in scale (new height divided by old height) is provided at the end of the .cel file separated by some white space and an asterisk. E.g for a replacement Papyrus_21 font of height 69 instead of 46 the contents of the .cel file would end in something like "27, 24 *1.5".
For skeletal animation overrides the .sai file must be present but apparently need only contain the [global] section. (Or it may even be empty? At least that works for the GarrAT animations, which were extracted from the original .ibt file.)
To override sounds, provide a suitable schema file and sound files. To just disable the sounds for an original schema, provide an empty replacement schema file.