Esp и esm файлы чем отличаются
Серия TES всегда имела одно большое отличие от других игр, у игроков не только была полная свобода действий, но с третьей части игры разработчики дали возможность изменять мир как им угодно благодаря сопутствующей утилите под название Construction Set. И именно с третьей части Древние Свитки стали знамениты не только свои фанатским сообществом, но и сообщество модмейкеров. И сегодня речь пойдет как раз об основной составляющей игр, на примере Skyrim, о фанатских модификация игры, а точнее о том как же все таки необходимо их устанавливать. Предупрежу сразу, я распишу только азы и пройдусь достаточно поверхностно по этой теме, поскольку для каждой модификации есть свои тонкости, а иногда две модификации зависят друг от друга и устанавливать их надо совершенно по особенному (пример Dual Sneath Redux). Прежде всего этот пост предназначен конечно же для людей только знакомящихся с таким явлением как модификации, поехали.
В первую очередь стоит сказать что все модификации абсолютно разные, и я сейчас не про их виды, такие как квестовые или глобальные плагины, сейчас я говорю об их типах. Условно, для вашего удобства, поделим их на три типа: плагины, косметические, смешанные.
Благодаря особой системе построения мира и движка, а так же файловой системе игры любые изменения в игру можно вносить с помощью утилиты Construction Set и сохранять их отдельно в специальный файл не затрагивающий основную игру. Эти файлы имеют расширения .esp и .esm и не начнут работать пока вы не подключите их в лаунчере. Различия между ними в том, что если esp ссылается на мастерфайл оригинальной игры (Skyrim.esm), то esm не только ссылается на оригинал, но и от него зависят плагины обращающиеся к нему, это необходимо для создания более разветвленной системы в модификации, а так же модульной установки. Замечу, что с четвертой части серии с помощью специальных программ можно создавать псевдо esm файлы, то есть обычный esp, но от которого зависят другие плагины. По сути данные плагины являются модулями которые вы подключаете и привносят изменения ссылаясь на ресурсы именно оригинала.
Ретекстуры и реплейсеры которые заменяют простые модели или текстуры, при этом отсутствует файлы esp или esm, что означает что геймплей не будет затронут, а только визуальная составляющая. Большинство людей сейчас скажет:"Минутку, большинство реплейсеров тел имеют esp файлы, а в Morrowind они были у всех." Верно, но это правило для обычных реплейсеров и ретекстуров установленных или интегрированных через специальные программы, тогда как во времена выхода Morrowind их еще не было, но прогресс не стоит на месте и для всех трех частей они существуют.
Это категория включает почти все плагины которые вы найдете на текущий момент, поскольку они обычно вносят абсолютно новый контент: новые текстуры и модели, механики и визуальные эффекты, изменения геймплея или же правка скриптов, и подключаются через esp и esm. И для большинства из них требуется специальные программы для установки, о них ниже.
Поскольку большинство модов на текущей момент, особенно глобальные или вносящие небольшие изменения в геймплей, затрагивает огромное количество информации и данных оригинальной игры, для их запуска требуются как минимум четыре программы.
Skyrim Script Extender (SKSE)
Расширитель скриптовой составляющей игры, на котором базируются почти все современные модификации.
Специальная программа, которая позволяет настраивать порядок загрузки плагинов, и интегрировать реплейсеры и ретекстуры без конфликтов. Существует несколько таких программ, например Skyrim Mod Organizer, Nexus Mod Manadger, LOOT.
Позволяет создавать специальные патчи которые устраняют конфликты между модификациями, особенно теми которые затрагивают одни и те же директории игрового мира.
Аналогичная программа TES 5 Edit, так же создает патчи устраняющие конфликты.
Сопутствующие патчеры основанные на SkyProc.
Для некоторых модов необходимо создавать сопутствующие патчи, особенно это касается глобальных модификаций, утилита обычна идет вместе с модом, а для ее запуска требуются библиотеки Java.
Итак вы выбрали плагины которые вы хотите установить, советую выбрать их окончательно, ибо скорее всего при добавлении потом новых будут конфликты и проблемы, и поверьте потеря снаряжения не такая страшная беда. Так же не забудьте скачать неофициальный патч для Skyrim, это очень нужный плагин. Вам необходимо установить все четыре программы. Потом с помощью мод менеджера (если в архиве есть специальные fomod файлы) или путем копирования в корневую папку игры файлов, устанавливаете нужные модификации, им же расставляете порядок загрузки руководствуясь документациями. Создаете патчи через TES 5 Edit, WryerBash. Тут стоит упомянуть, что в документациях к модификация, а особенно глобальным рекомендуется сначала сгенерировать с помощью TES 5 Edit "merged" патч, без уровневых списков, а с помощью Wrye Bash уже привести эти списки к общему знаменателю "bashed" патчем.
Да примерно так это и выглядит. Запутанно? Возможно, но к сожалению для каждой модификации существуют свои тонкости раскрытые в их документациях. Я оставлю здесь ссылку на гайд по установке PerMa как пример, а так же ссылки на SKSE и Nexus (там можно скачать все программы).
Плагин - это база данных всех данных игрового мира, включая данные объектов, диалоги, настройки игрового процесса, размещение объектов, настройки ИИ, ландшафт, ячейки и т. д. Существует несколько типов файлов, связанных с файлами данных. Мастера, Облегченные Мастера и Плагины. В основном идентичны по формату, но имеют некоторые важные отличия.
ESM и ESP - это базы данных имеющие записи с идентификаторами xxYYYYYY, где
xx - номер плагина в порядке загрузки в 16-ричной системе исчисления, в диапазоне от 00 до FF. Таким образом получается что максимально возможное количество подключенных файлов ESP + ESM - 256 шт, в десятичной системе исчисления от 0 до 255. Слот 00 это всегда либо fallout4.esm либо skyrim.esm, и всё что идёт за ними идёт строго по порядку, т.е. фиксируем, что максимально возможное количество подключенных файлов ESP + ESM - 256 шт. Забегая немножко вперёд - использование ESL плагинов отнимает 254 слот - FE, сокращая количество до 254 плагинов. А слот 255, т.е. FF навсегда зарезервирован под временные референсы игрового мира - т.е. игра использует его для того что бы хранить временно размещённые в мире игры объекты. Итого имеем следующее утверждение: пользователю доступно 255 слотов ESP-ESM от 0 до 254 в десятичных числах или в шестнадцатиричных - от 00 до FE.
YYYYYY - это номер каждой записи в плагине. Далее мои домыслы, т.к. информации об этом не видел: Если логика верна, то диапазон этих записей должен быть от 000000 до FFFFFF, то есть максимально возможное количество записей на один плагин - до 16777216. Однако, записи в Fallout4.esm начинаются с 000001, так же как и попытка создать нулевую запись всегда заканчивается безуспешно, предположу что 000000 - это всегда запись заголовка плагина.
Если посчитать максимально возможное количество записей в игре - то 255 х 16 777 216 = 4 278 190 080
Выглядит это вот так
Обратите внимание - все НОВЫЕ записи(красные стрелки) плагина DLCCoast.esm - имеют xx - 03, и свои собственные уникальные YYYYYY.
Однако в плагине так же присутствует запись 001536F2, где xx = 00 соответствует идентефикатору 00 плагина Fallout4.esm. Это значит что плагин DLCCoast.esm не добавляет новую запись в игру, но исправляет уже созданную плагином Fallout4.esm. Если несколько разных плагинов редактируют одну и ту же запись, то игровой движок будет работать ТОЛЬКО с той записью, которая загрузится последней.
Существует ещё одно правило для ESP и ESM: плагины ESM всегда загружаются ДО плагинов ESP. Вне зависимости от того как вы их разместили.
1. Можно загрузить не более 331 плагина имеющего до 2048 (КАЖДЫЙ) записей ALCH - как я понимаю это объекты типа ЗЕЛЬЕ(POTION). Не знаю почему это ограничение, но их объединяет то, что они не имеют постоянно закрепленного референса в игровом мире. Как я понимаю речь не о самих объектах категории ALCH - а о их размещении непосредственно в мире игры, т.е. того случая когда под них резервируется временный референс.
2. Можно загрузить более 970 плагинов, каждый из которых содержит одну запись CELL и 2047 записей REFR(референс в игровом мире - иными словами предмет лежащий непосредственно в игровом мире, а не в сундуках и инвентарях)
3. Обновление файлов ESL имеет больше ограничений, чем обновление файлов ESP, но их немного. Из-за ограничения в 2048 идентификаторов форм (я так понимаю речь о предметах размещенных в мире с референсными значениями, но не уверен) важно соблюдать осторожность при удалении форм, чтобы не использовать идентификаторы форм удалённых предметов повторно. Игровой движок может неадекватно воспринять ситуацию когда, например, удалена форма оружия с определенным идентификатором, а после с таким же идентификатором загружена форма брони.
Личное мнение: Полагаю что бы гарантированно безопасно отключить ESL плагин во время прохождения - нужно отключить плагин, и поставить на его место в порядке пустой плагин ESL, после чего загрузить сохраненную игру и пересохраниться - это действие должно удалить все идентефикаторы отключаемого плагина из текущего прохождения. Всё равно, если отключить пустой плагин даже после этой операции - есть возможность некорректного смещения по идентификаторам ZZZ при совпадении YYY в нескольких разных модах. По этому, получается, что перемещение в порядке загрузки ESL плагина создающего НОВЫЕ записи в процессе прохождения игры - всегда рискованная процедура. Иногда вы сможете заметить разницу, иногда это будет не заметно, но существуют так же случаи, когда это никак не повлияет.
Приведу пример: допустим у нас есть лайт плагины с идентификаторами
A - FE000 и B - FE001.
1) В плагине A есть броня с идентификатором 001, т.е. полная запись брони для игры выглядит так: FE000001.
2) В плагине В - есть пистолет с идентификатором 001, т.е. FE001001
3) Удаляя плагин А - FE000 - мы смещаем плагин B - и теперь он будет иметь идентификатор FE000, а предмет FE000001 - станет бронёй.
Разработчик утверждает что из-за того что для игры это всё один слот - FE, могут возникнуть проблемы из-за такого смещения, игровой движок может некорректно обрабатывать такую подмену информации.
4) В то же время, если мы подставим ПУСТОЙ ESL плагин вместо FE000, то смещения FE001 не произойдёт. Т.о. предмет FE000001 - пропадёт из игры, как и его запись, а предмет FE001001 - останется в игре под тем же идентификатором, т.к. смещения адресов не произойдёт.
Лайт плагины - также известные как «ESP с флагом ESL» или «ESPFE», это комбинация ESL и ESP. Это файл с расширением .esp, но с флагом заголовка ESL.
Как и легкие мастера, легкие плагины имеют максимальное количество записей не более 4096 форм, между 0x000 и 0xFFF, и во время выполнения объединяются в слот 0xFE.
Легкие плагины загружаются вместе с обычными плагинами. Это означает, что они могут как переопределять другие плагины, так и требовать плагины в качестве мастеров без негативного влияния на порядок загрузки.
Что это значит - фактически это ESL плагин, загружающий все НОВЫЕ записи так же как ESL в 254 слоте, НО игровой движок может различать НОВЫЕ записи от исправления существующих.
Т.о. имеем следующее:
1. ESP плагины грузятся в строгом порядке со своими идентификаторами т.е. 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11 . FF
2. При этом ESL плагины имея 254 слот FE - загружаются вне этого порядка, и вероятно каким-то образом занимают всегда место в загрузке между плагинами ESM и ESP.
3. Вместе с тем ESPFE обходят эти ограничения в тех случаях когда не создают НОВЫХ записей, а редактируют уже существующие.
4. Если ESPFE и создаёт новые записи и редактирует записи других модов - существующие, то новые записи будут загружены в 254 слот FE, который загружается между ESM и ESP, а отредактированные существующие записи будут загружены в соответствии с текущим порядком загрузки.
В этом ESP-ESL плагине зелёная стрелка - это новая форма, создаваемая плагином, а красные стрелки это изменение уже существующих форм. Новая форма будет создана в слоте FE, изменение существующих форм будет принято согласно листу загрузки плагинов. Плагин будет занимать пространство в 254 слоте - ESL. Это оптимальный вариант для создания патчей между модами.
Что такое Compact FormID?
Это процедура переделывания формата записей плагина из формата для ESM-ESP xxYYYYYY в формат для ESL-ESPFE - xxzzzYYY. При этой процедуре необратимо изменяются ID записей. Эта процедура может быть опасна, в случае если плагин является мастером для других плагинов.
В каких случаях нельзя переделывать из ESP в ESL или ESPFE?
1. В плагине более 2047 записей о размещенных непосредственно в игровом мире предметах (ALCH или REFR).
прим. - теоретически это ограничение можно обойти размещая записи с помощью скриптов - но это достаточно трудозатратно - и самое главное: надо ли?
2. В плагине более новых 4096 записей.
3. В плагине содержащие данные о цветах (сигнатура CLFM) - лично у меня возникала проблема, что в игре они отсутствуют, несмотря на то, что эдит не ругается при сохранении.
4. В плагине содержаться изменения сцен СУЩЕСТВУЮЩИХ(не новых) диалогов - лично у меня возникала проблема, что в этих случаях диалоги происходят молча, без возможности их пропустить.
5. Плагин является очевидным мастерплагином для других плагинов.
6. Плагин является неочевидным мастерплагином для других плагинов, иными словами не имеет очевидных ссылок, но имеет взаимосвязи построенные с помощью скриптов Papyrus. Формат представления ссылок на ESL-ESPFE файлы отличается от формата представления ссылок на ESM-ESP.
Вероятно что есть ещё какие-то случаи ограничений, о которых мне пока не известно.
Действительно ли можно подключить 4096 плагинов ESL? И да и нет.
Есть некоторые ограничения, к которым всё равно невероятно сложно подобраться. Вполне себе можно подключить условных 1000-1500 модов что бы они работали нормально, с точки зрения их обработки игровым движком. Что касается содержимого модов и их общей внутриигровой работоспособности - такое будет невероятно сложно сделать, но возможно и зависит исключительно от навыков и понимания делающего.
Плагин - это база данных всех данных игрового мира, включая данные объектов, диалоги, настройки игрового процесса, размещение объектов, настройки ИИ, ландшафт, ячейки и т. д. Существует несколько типов файлов, связанных с файлами данных. Мастера, Облегченные Мастера и Плагины. В основном идентичны по формату, но имеют некоторые важные отличия.
ESM и ESP - это базы данных имеющие записи с идентификаторами xxYYYYYY, где
xx - номер плагина в порядке загрузки в 16-ричной системе исчисления, в диапазоне от 00 до FF. Таким образом получается что максимально возможное количество подключенных файлов ESP + ESM - 256 шт, в десятичной системе исчисления от 0 до 255. Слот 00 это всегда либо fallout4.esm либо skyrim.esm, и всё что идёт за ними идёт строго по порядку, т.е. фиксируем, что максимально возможное количество подключенных файлов ESP + ESM - 256 шт. Забегая немножко вперёд - использование ESL плагинов отнимает 254 слот - FE, сокращая количество до 254 плагинов. А слот 255, т.е. FF навсегда зарезервирован под временные референсы игрового мира - т.е. игра использует его для того что бы хранить временно размещённые в мире игры объекты. Итого имеем следующее утверждение: пользователю доступно 255 слотов ESP-ESM от 0 до 254 в десятичных числах или в шестнадцатиричных - от 00 до FE.
YYYYYY - это номер каждой записи в плагине. Далее мои домыслы, т.к. информации об этом не видел: Если логика верна, то диапазон этих записей должен быть от 000000 до FFFFFF, то есть максимально возможное количество записей на один плагин - до 16777216. Однако, записи в Fallout4.esm начинаются с 000001, так же как и попытка создать нулевую запись всегда заканчивается безуспешно, предположу что 000000 - это всегда запись заголовка плагина.
Если посчитать максимально возможное количество записей в игре - то 255 х 16 777 216 = 4 278 190 080
Выглядит это вот так
Обратите внимание - все НОВЫЕ записи(красные стрелки) плагина DLCCoast.esm - имеют xx - 03, и свои собственные уникальные YYYYYY.
Однако в плагине так же присутствует запись 001536F2, где xx = 00 соответствует идентефикатору 00 плагина Fallout4.esm. Это значит что плагин DLCCoast.esm не добавляет новую запись в игру, но исправляет уже созданную плагином Fallout4.esm. Если несколько разных плагинов редактируют одну и ту же запись, то игровой движок будет работать ТОЛЬКО с той записью, которая загрузится последней.
Существует ещё одно правило для ESP и ESM: плагины ESM всегда загружаются ДО плагинов ESP. Вне зависимости от того как вы их разместили.
1. Можно загрузить не более 331 плагина имеющего до 2048 (КАЖДЫЙ) записей ALCH - как я понимаю это объекты типа ЗЕЛЬЕ(POTION). Не знаю почему это ограничение, но их объединяет то, что они не имеют постоянно закрепленного референса в игровом мире. Как я понимаю речь не о самих объектах категории ALCH - а о их размещении непосредственно в мире игры, т.е. того случая когда под них резервируется временный референс.
2. Можно загрузить более 970 плагинов, каждый из которых содержит одну запись CELL и 2047 записей REFR(референс в игровом мире - иными словами предмет лежащий непосредственно в игровом мире, а не в сундуках и инвентарях)
3. Обновление файлов ESL имеет больше ограничений, чем обновление файлов ESP, но их немного. Из-за ограничения в 2048 идентификаторов форм (я так понимаю речь о предметах размещенных в мире с референсными значениями, но не уверен) важно соблюдать осторожность при удалении форм, чтобы не использовать идентификаторы форм удалённых предметов повторно. Игровой движок может неадекватно воспринять ситуацию когда, например, удалена форма оружия с определенным идентификатором, а после с таким же идентификатором загружена форма брони.
Личное мнение: Полагаю что бы гарантированно безопасно отключить ESL плагин во время прохождения - нужно отключить плагин, и поставить на его место в порядке пустой плагин ESL, после чего загрузить сохраненную игру и пересохраниться - это действие должно удалить все идентефикаторы отключаемого плагина из текущего прохождения. Всё равно, если отключить пустой плагин даже после этой операции - есть возможность некорректного смещения по идентификаторам ZZZ при совпадении YYY в нескольких разных модах. По этому, получается, что перемещение в порядке загрузки ESL плагина создающего НОВЫЕ записи в процессе прохождения игры - всегда рискованная процедура. Иногда вы сможете заметить разницу, иногда это будет не заметно, но существуют так же случаи, когда это никак не повлияет.
Приведу пример: допустим у нас есть лайт плагины с идентификаторами
A - FE000 и B - FE001.
1) В плагине A есть броня с идентификатором 001, т.е. полная запись брони для игры выглядит так: FE000001.
2) В плагине В - есть пистолет с идентификатором 001, т.е. FE001001
3) Удаляя плагин А - FE000 - мы смещаем плагин B - и теперь он будет иметь идентификатор FE000, а предмет FE000001 - станет бронёй.
Разработчик утверждает что из-за того что для игры это всё один слот - FE, могут возникнуть проблемы из-за такого смещения, игровой движок может некорректно обрабатывать такую подмену информации.
4) В то же время, если мы подставим ПУСТОЙ ESL плагин вместо FE000, то смещения FE001 не произойдёт. Т.о. предмет FE000001 - пропадёт из игры, как и его запись, а предмет FE001001 - останется в игре под тем же идентификатором, т.к. смещения адресов не произойдёт.
Лайт плагины - также известные как «ESP с флагом ESL» или «ESPFE», это комбинация ESL и ESP. Это файл с расширением .esp, но с флагом заголовка ESL.
Как и легкие мастера, легкие плагины имеют максимальное количество записей не более 4096 форм, между 0x000 и 0xFFF, и во время выполнения объединяются в слот 0xFE.
Легкие плагины загружаются вместе с обычными плагинами. Это означает, что они могут как переопределять другие плагины, так и требовать плагины в качестве мастеров без негативного влияния на порядок загрузки.
Что это значит - фактически это ESL плагин, загружающий все НОВЫЕ записи так же как ESL в 254 слоте, НО игровой движок может различать НОВЫЕ записи от исправления существующих.
Т.о. имеем следующее:
1. ESP плагины грузятся в строгом порядке со своими идентификаторами т.е. 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11 . FF
2. При этом ESL плагины имея 254 слот FE - загружаются вне этого порядка, и вероятно каким-то образом занимают всегда место в загрузке между плагинами ESM и ESP.
3. Вместе с тем ESPFE обходят эти ограничения в тех случаях когда не создают НОВЫХ записей, а редактируют уже существующие.
4. Если ESPFE и создаёт новые записи и редактирует записи других модов - существующие, то новые записи будут загружены в 254 слот FE, который загружается между ESM и ESP, а отредактированные существующие записи будут загружены в соответствии с текущим порядком загрузки.
В этом ESP-ESL плагине зелёная стрелка - это новая форма, создаваемая плагином, а красные стрелки это изменение уже существующих форм. Новая форма будет создана в слоте FE, изменение существующих форм будет принято согласно листу загрузки плагинов. Плагин будет занимать пространство в 254 слоте - ESL. Это оптимальный вариант для создания патчей между модами.
Надеюсь помог разобраться в вопросе, а не запутаться еще больше)))
Что такое Compact FormID?
Это процедура переделывания формата записей плагина из формата для ESM-ESP xxYYYYYY в формат для ESL-ESPFE - xxzzzYYY. При этой процедуре необратимо изменяются ID записей. Эта процедура может быть опасна, в случае если плагин является мастером для других плагинов.
В каких случаях нельзя переделывать из ESP в ESL или ESPFE?
1. В плагине более 2047 записей о размещенных непосредственно в игровом мире предметах (ALCH или REFR).
прим. - теоретически это ограничение можно обойти размещая записи с помощью скриптов - но это достаточно трудозатратно - и самое главное: надо ли?
2. В плагине более новых 4096 записей.
3. В плагине содержащие данные о цветах (сигнатура CLFM) - лично у меня возникала проблема, что в игре они отсутствуют, несмотря на то, что эдит не ругается при сохранении.
4. В плагине содержаться изменения сцен СУЩЕСТВУЮЩИХ(не новых) диалогов - лично у меня возникала проблема, что в этих случаях диалоги происходят молча, без возможности их пропустить.
5. Плагин является очевидным мастерплагином для других плагинов.
6. Плагин является неочевидным мастерплагином для других плагинов, иными словами не имеет очевидных ссылок, но имеет взаимосвязи построенные с помощью скриптов Papyrus. Формат представления ссылок на ESL-ESPFE файлы отличается от формата представления ссылок на ESM-ESP.
Вероятно что есть ещё какие-то случаи ограничений, о которых мне пока не известно.
Действительно ли можно подключить 4096 плагинов ESL? И да и нет.
Есть некоторые ограничения, к которым всё равно невероятно сложно подобраться. Вполне себе можно подключить условных 1000-1500 модов что бы они работали нормально, с точки зрения их обработки игровым движком. Что касается содержимого модов и их общей внутриигровой работоспособности - такое будет невероятно сложно сделать, но возможно и зависит исключительно от навыков и понимания делающего.
Тема посвящена сравнительно новому формату файлов плагинов Bethesda - ESL.
До определённого времени в игре The Elder Scrolls V: Skyrim Special Edition, как и в его предшественнике The Elder Scrolls V: Skyrim Legendary Edition существовало только два формата файлов плагинов Bethesda - это esm (elder scrolls master file), мастер-файл, и esp (elder scrolls plugin file), плагин-файл.
Начиная с патча 1.5.3 в Skyrim Special Edition была добавлена поддержка нового формата файлов плагинов, известных как esl (elder scrolls light plugin file).
Плагин-файл esl - это новый, облегчённый формат обычного плагин-файла, который впервые появился в ходе обновлений игры Fallout 4.
Внимание игроков и модмейкеров он привлёк тем, что позволяет обойти предел в 255 загружаемых плагинов.
Немного теории
Что-же такое предел 255, и откуда он взялся?
Как известно, все элементы, к которым происходит обращение в игре, имеют свои уникальные идентификаторы, называемые Form ID или просто ID.
ID представляет собой октет шестнадцатиричных цифр. Формат ID имеет следующий вид: ХХ00000. Здесь два левых разряда (ХХ) отведены для определения номера плагина в порядке загрузки в игру. Каждый разряд представлен шестнадцатиричной цифрой. Тогда, максимальное количество загружаемых плагинов определяется следующим образом:
С учётом того, что плагин с номером 00 это сам Skyrim.esm, то получаем максимальное количество загружаемых плагинов модов:
Оставшиеся шесть разрядов октета отводятся уже под адресуемый элемент. Это его жёсткий идентификатор, который является уникальным для каждого элемента в пределах плагина. Таким образом, в пределах одного мода (плагина) может быть проадресовано 16 6 = 16777216 элементов.
Полный адрес элемента в игре состоит из номера плагина в порядке загрузки (ХХ), и шести разрядов октета идентификатора. Следовательно, изменяться в ID могут только два левых разряда, значение которых зависит от места плагина в плагин-листе, при загрузке игры.
Как-же плагин esl позволяет обойти предел 255?
Тут есть одна хитрость, которая заключается в особом формате Form ID в плагинах esl. Такой Form ID называется компактным (Compact Form ID). Особенности такого формата заключаются в том, что два левых разряда октета ID здесь имеют жёсткий номер - FE. Это значит, что все ID элементов в плагинах esl начинаются с FE. Например, FE001А45.
В таком формате ID есть и другая хитрость. Порядок загрузки плагина в игре определяется следующими после FE тремя разрядами октета. А именно, как пример:
FE000А45 - первый esl в списке загрузки;
FE001А45 - второй esl;
FE002А45 - третий, и т. д.
Таким образом, максимальное количество загружаемых esl-файлов может быть 4096. Но на самом деле, загрузка такого количества файлов сопряжена с рядом трудностей, и, скорей всего, будет невозможна. Например, если плагины содержат 2048 записей типа ALCH, то таких плагинов можно загрузить не более 331, а если плагины содержат одну запись типа CELL и 2047 записей REFR, то уже можно будет загрузить 970 таких плагинов. Также накладываются ограничения дескриптора файла и длины ссылки.
Для непосредственной идентификации самих элементов в пределах плагина esl, отводятся оставшиеся три разряда. Это значит, что в плагинах esl может быть проадресовано 4096. Но это в теории. На практике этот диапазон ограничен от 800 до FFF, что позволяет адресовать лишь 2048 форм. (Для Fallout 4 начиная с версии 1.10.162 стало возможно использование 4096 в диапазоне от 000 до FFF - уточнение от wim95).
Специфические особенности esl-файлов
Формат esl-плагина разрабатывался прежде всего для Клуба творчества (Creation Club), а вовсе не для преодоления предела 255. В связи с этим, плагины esl имеют ряд специфических, и не всегда приятных, особенностей:
- они не могут напрямую редактироваться в Creation Kit (имеют атрибут "только для чтения");
- плагины, выпущенные Creation Club, помечаются как мастер-файлы и всегда загружаются сразу после официальных мастер-файлов Bethesda в порядке, указанном в файле .ccc игры. Эти esl-файлы не могут быть деактивированы (уточнение от wim95);
- плагины, выпущенные независимыми модмейкерами помечаются так же, как обычные файлы esp, но они загружаются с мастер-файлами в порядке, указанном в plugins.txt. Такие esl-файлы необходимо активировать перед загрузкой игры;
- конвертировать обычные esp-плагины в esl в текущей игре не допускается, так как это может сломать сохранение;
- скрипты модов, содержащие функции прямого обращения к ID, например GetFormFromFile(), должны быть перекомпилированы, после преобразования мода в esl;
- для модов, преобразованных в esl-плагины скорей всего могут потребоваться патчи. Существующие патчеры не полностью поддерживают плагины esl, особенно те, в которых содержаться записи типа CELL, FACT, PACK, PERK, RACE, SCEN, WRLD. Верификацию таких плагинов придётся выполнять вручную в xEdit;
- esl-файлы, выпущенные независимыми модмейкерами не могут, а скорее - не должны, использовать в качестве мастер-файлов обычные esp-плагины. Дело в том, что из-за особенностей игрового движка Skyrim Special Edition v1.5.3, любые зависимости от esp-плагина как мастер-файла, не будут загружаться ДО загрузки дочернего esl-файла.
⚠ Важно!
Чтобы избежать путаницы в дальнейшем, нужно чётко различать два понятия:
- файл имеющий флаг ESL и расширение .esl - называется esl-мастером, или лайт-мастером;
- файл имеющий флаг ESL и расширение .esp - называется esl-плагином, или лайт-плагином, или ESPFE.
В чём между ними разница будет пояснено в следующем примере преобразования esp-плагина в esl.
Преобразование esp-плагина в esl
Преобразовать esp-плагин в esl можно тремя способами - с помощью xEdit, в Creation Kit или с помощью Vortex.
Как преобразовывать esp-плагины в esl в Creation Kit описано здесь.
С помощью Vortex esp-плагины преобразовываются в лайт-плагины через вкладку "Plugins".
Ниже приведен порядок преобразования с помощью xEdit.
В качестве подопытного используем мод Лук Ренос от TarkArk (надеюсь, он на меня не обидится).
Итак, запускаем SSEEdit.exe, в окне отключаем все ненужные моды (правая кнопка мыши (ПКМ) --> Select None), выделяем наш плагин и открываем:
В загрузившемся окне видим привычный ID предмета, и незаполненную строчку Record Flags:
Итак, вам нужно конвертировать простой ESP-плагин в его вариант, помеченный как ESM. Казалось бы, что может быть проще установки флага? Однако, и здесь вас ждёт одна проблема.
Что вам потребуется:
+ xEdit (мной используется версия 4+).
+ [Опционально] Пояснение, почему это может вам понадобиться (англ).
Если кратко, то при загрузке больше 2^20 объектов (1.048.576), которые "определены" во всех активных простых ESP-плагинах, вас ждёт так называемая "вечная загрузка". Для обхода этого некоторые авторы крупных проектов создают ESM-версии своих модов.
Часть I - в чём проблема?
Все алиасы'ы (Alias) квестов в плагине ссылаются в итоге на конкретные объекты в мире игры. Разница между ESP и ESM в том, что в последнем эти объекты должны быть постоянными (Persistent), иначе алиас при старте квеста заполнится. ничем. И что-нибудь обязательно пойдёт не так. Ваша цель - проверить все алиасы всех квестов, чтобы объекты, на которые они указывают, имели флаг Persistent. Только после этого можно конвертировать плагин и начинать игру.
1) Открываем плагин в xEdit, переходим во вкладку Quest, смотрим в нужную нам запись (слева) и находим раздел с алиасами (справа).
Часть II - тип алиаса "Unique Actor".
1) Смотрим данные алиаса и видим, что это "Unique Actor", в данном случае - Тамина Эленил.
2) Зажимаем CTRL и переходим к NPC, переходим сразу во вкладку "Referenced By" и находим размещённого в мире персонажа - ACHR.
3) Переходим к нему и видим, что персонаж имеет флаг Persistent, а значит будет "работать" нормально и трогать его не нужно.
4) Смотрим второй алиас (Шаглак) и проделываем с ним то же самое.
5) На этот раз есть "попадание" - на персонаже не стоит никаких флагов.
6) Кликаем ПКМ по пустому полю "Record Flags" и выбираем "Edit". Нас интересует флаг Persistent.
7) Если мы всё сделали верно (ошибиться довольно сложно), то запись "Placed NPC" переместится из секции Temporary в Persistent.
Часть III - тип алиаса "Forced Reference".
1) Смотрим данные алиаса и видим, что это "Forced Reference", в данном случае - некий невидимый (технический) сундук.
2) Зажимаем CTRL и переходим сразу к объекту в мире игры - в данном случае типа REFR. Проверяем у него наличие флага "Persistent", если его нет - добавляем.
Часть IV - собственно, конвертация.
1) Когда мы проверим все алиасы во всех квестах, мы наконец сможем поставить плагину долгожданный флаг.
2) Нам нет нужды использовать Wrye Bash, чтобы сделать ESP-плагин псевдо-мастер-файлом. Достаточно перейти на вкладку "File Header" плагина и обратить внимание на поле "Record Flags".
3) Добавляем туда флаг "ESM", после чего закрываем xEdit и сохраняем плагин.
На этом всё. Надеюсь, данная статья будет полезна для вас. Выражаю огромную благодарность Zilav за разъяснения и Dimonoider за саму основу гайда.
Читайте также: