Давно хотел написать пост на эту тему.
Теоретически, чтобы игра подхватывала модели и текстуры из реплейсеров и заменяла их оригиналы из BSA-архивов, должно было быть достаточно лишь более поздней даты\времени изменения. Т.е., принцип схож с тем, что используется в выставлении порядка загрузки esp: например, если у Oblivion - Meshes.bsa стоит дата изменения 16.01.2006, а у модели meshes/armor/largehadroncollider.nif - 17.02.2007, то движком игры использоваться будет именно вторая. Казалось бы, все хорошо, пользователям не приходится делать кучу непонятных им операций, а модостроителям вставлять мегабайтные гайды внутри Readme. Но вот в Bethesda систему автоматической инвалидации дотестировали не до конца, и, в итоге, оказалось, что игра не подхватывает измененные текстуры (моделей это не касается). И в патчах это так и не исправили.
Конечно, можно просто распаковать архивы игры, но это увеличит место, занимаемое игрой на жестком диске, не слишком хорошо скажется на фрагментации и займет некоторое время, а последствия от установки ретекстуров будут необратимыми. Как вариант, можно изменить путь к текстуре в nif-файле (файле модели), но это увеличит конфликтность (скажем, с оптимизаторами моделей, вроде Operation Optimization), да и усложнит процесс создания реплейсеров.
Первым решением проблемы была инвалидация архивов (archive invalidation) с прописыванием измененных текстур в файле ArchiveInvalidation.txt (далее - AI.txt). Вроде бы все довольны: инвалидация делается в один клик в специально созданной программе, не требуется ни особых разъяснений, ни каких-либо лишних телодвижений от модмейкера. Но и в этой системе обнаружился один очень серьезный недостаток. Предположим, мы создали ретекстур для текстуры бороды Шеогората, лежащей в BSA-архиве Oblivion - Textures - Compressed.bsa по пути textures/madness/sheogorath/beard.dds. Мы можем добавить в AI.txt строку, содержащую лишь название файла: beard.dds. Но в этом случае мы заменим
все текстуры, имеющие в своем пути или названии сочетание символов "beard.dds". То есть все бороды в игре превратятся в ретекстурированную бороду Шеогората (и статуи бород, если они имеют название вроде statueof
beard.dds). Вы спросите: но мы же можем написать имя файла вместе с путем к нему: textures/madness/sheogorath/beard.dds?
В этом случае игра возьмет названия всех файлов, находящихся в Oblivion/Data/textures/madness/sheogorath/ и заменит текстурами оттуда все другие текстуры, содержащие названия файлов из этой папки. То есть, если в этой папке не только текстура бороды, но и текстура ног (foot.dds) или глаз (eye.dds), то этими foot.dds и eye.dds заменятся все остальные текстуры в игре, имеющие названия или пути, содержащие "foot.dds" и "eye.dds".
Плохо ведь?
Вскоре было найдено другое решение - archive alteration. Суть его состоит в том, что BSA-архив изменяется таким способом, что игра не видит те текстуры, которые были заменены. Игра не найдет бороду Шеогората в Textures.bsa и будет искать ее в других BSA\папках в Oblivion\Data. Но и у этого метода есть недостатки: архивы изменяются, что, например, может помешать установить официальные патчи (хотя изменения можно откатить при помощи кнопки "Remove BSA Edits" в OBMM), возможны повреждения архивов при перебоях с электроснабжением или сбоях ОС. Самым же главным недостатком является необходимость каждый раз повторять процедуру при установке новых реплейсеров.
Самым новым решением проблемы инвалидации является перенаправление (BSA-Redirection). Оно абсолютно лишено каких-либо недостатков. Механизм работы этого метода крайне прост: в строке SArchiveList в ini-файле на первое место подставляется "неправильный" архив, который игра принимает за BSA с текстурами, где, естественно, никаких текстур не находит, затем ищет их в других BSA (в том числе и в Oblivion - Textures - Compressed.bsa) и папках в Oblivion\Data, после чего выбирает из них текстуры с наиболее поздними датами изменения.
Сделать BSA-Redirection тоже крайне просто: либо использовать для этого OBMM\Wrye Bash, либо сделать это вручную, скачав архив-обманку
отсюда, разместив его в Oblivion\Data и занеся его в строку SArchiveList самым первым.
Единственное, о чем не стоит забывать - инсталляторы, прописывающие архивы своих модов в ini перед всеми остальными архивами. Например, Fran's Leveled Items-Creatures Mod. В этом случае придется корректировать ini еще раз.