
Ранее мы разбирали что такое ESM/ESP/ESL плагины. Продолжим разбираться в вопросе - как ещё эти плагины влияют на игру. Речь, конечно же, пойдёт о модах для игр от Bethesda Softworks, я изучал вопрос по игре Fallout 4, но думаю что это абсолютно так же или очень похожим образом работает для Skyrim LE/SE/AE, а так же для более ранних игр. Кстати, сообщения под статьёй "автор ты не прав, я тысячу раз так делал", "ничего не понял, чушь какая-то" и т.д. ... приветствуются. Но лучше всё таки что-то предметное, что можно обсудить или чем можно дополнить статью. Сделаю небольшую оговорку: это всё моя точка зрения основанная на личном опыте, и я не обладаю полным объёмом знаний что бы что-то категорично и безапелляционно утверждать.
upd. 03/11/2023 : вышла статья на нексусе, где в общем-то обсуждается этот же нюанс, только в контексте Starfield.
Те из Вас, кто регулярно модомесит, особенно те кто имеет отношение к созданию модов или активно их редактирует, наверняка встречались со странными ситуациями-багами, которые видны в одном прохождении и не встречаются если начать игру заново. Например, для Fallout 4 довольно часто встречающаяся история NPC-актёр, не имеющий никакого отношения к насекомым, но почему-то называющийся Рад-Таракан. И сколько бы Вы не искали по уровневым спискам, Вы не найдёте почему у этого NPC такое имя : этого по-просту не может быть.
Мне так же попадались гули без голов, целая локация гулей, передвигающаяся без анимаций и по-пластунски. Некоторые квесты, в которых не "проталкивается" сцена, хотя по всем признакам она сделана без ошибок. Баги могут абсолютно любые - рандомные и совершенно непонятные. В том числе и вылеты.
Главная отличительная особенность таких багов - если начать новую игру и тут же отправиться искать этот баг или попытаться смоделировать его - этого не случиться. Бага просто не будет.
Забегая немножко вперёд - скажу о бинарном поиске багов (это метод при котором для поиска багов последовательно, в циклическом порядке, отключается половина модов и проверяется наличие ошибки после этой операции). Этот способ очень любят советовать как "лучший способ для поиска багов". Но учитывая то знание, которое мы сегодня здесь получим - можно будет смело утверждать что всё не так однозначно - ведь отсутствие конкретного бага после отключения каких-то модификаций это отнюдь не всегда результат отключения проблемного мода, но вполне может быть спровоцировано смещением адресов. Ведь у Вас наверняка были случаи при бинарном поиске когда Вы отключаете какой-то мод, который вроде бы никак не должен влиять на баг - и... это по необъяснимым причинам помогло. На самом же деле такая помощь - сродни пробив одну покрышку на дороге пробить и все остальные, что бы выровнять автомобиль : да, автомобиль будет стоять ровно, но вот будет ли он ехать - большой вопрос. Смещая адреса мы ВСЕГДА привносим больше вреда чем пользы. Но обо всём по порядку.
Ох, сколько же я потратил времени в тщетных попытках разобраться в чём же дело. Не скажу что я разобрался в вопросе от А до Я, но кое-что понять мне всё же удалось, и я очень хочу этим поделиться. Но что бы понять в чём собственно дело - нам потребуется разбираться в том как же работает игра с плагинами. Легко не будет и Вам очень понадобится то, что мы выяснили в статье о ESM/ESP/ESL плагинах.
Upd 03/11/2023 : Дополню ещё вот какую штуку. Фактически все редакторы (Creation Kit, xEdit, zEdit и что бы то ни было ещё) являются лишь фасадом доступным пользователю, пультом управления от телевизора, а не самим телевизором. Надо понимать что то, что Вы видите в редакторе, и то что в итоге получит игра, а самое главное каким образом пойдёт получение информации и дальнейшая работа с ней - это вовсе не всегда будет происходить так, как Вы себе это представляете. Весь функционал который Вы видите в редакторе обеспечивается функциями написанными в коде игрового движка. Вы меняете одну запись на другую и считаете что на этом всё закончено - но для игры это не так, игра лишь в определённый момент (момент установки мода) получает информацию что некие данные надо воспринимать иначе. Что будет происходить если эти данные уже были каким-то образом использованы в существующей игре - на самом деле тайна, покрытая мраком. И зависит это от особенностей написания и работы функций обеспечивающий функционал игрового движка. От этих функций зависит потеряются или нет те или иные данные при смене индексов адресатов в момент выполнения этих функций. Некоторые функции написаны таким образом что периодически обновляют информацию об адресате - и иногда могут найти адресат, даже в случае смещения, или, на худой конец, корректно прекратить выполнение функции с потерявшимся адресатом, но, к сожалению так будет далеко не всегда. Гарантировать же наиболее корректное использование модификаци в игре может либо новая игра. Даже запуск новой модификации в новом, самом последнем в порядке загрузки, слоте может вызвать проблемы, но спешу успокоить - в этом случае шанс получить проблемы на самом деле очень очень мал.
На практике это выглядит так:
Вы начинаете игру с такой конфигурацией, все плагины прописываются с такими адресами.
А потом вы решаете что Вам нужен новый мод и он занимает это место:
Вам вроде бы кажется что ничего не изменилось - а для игры поменялось очень многое. Все "квартиранты" ниже подключенного мода сместились по адресу +1.
Кроме BakaFramework.esm - потому что как видно по его адресу (FE000) - он прописан на последнем этаже в гостинице. Это ESMFE плагин, это в общем-то тоже самое что ESPFE плагин. Как я описывал в самой первой картинке - у гостиницы свой учёт постояльцев.
Так же как, если допустим мой новый плагин будет ESMFE - он сместит адреса всех постояльцев гостиницы ниже себя на 1 пункт, но при этом не окажет никакого влияния на плагины из пространства ESM/ESP
В общем-то если Вы не искушены в установке модов - то этой информации думаю достаточно для того что бы понимать что категорически нельзя изменять порядок, добавлять новые плагины и отключать существующие во время прохождения.
Для тех, кто всё таки хочет это делать - я опишу каким образом это всё таки можно попробовать сделать.
1. Важно понимать что есть плагины изменяющие существующие в игре формы, добавляющие новые формы в игру и смешанные плагины.
Плагин который только изменяет существующие формы в программе xEdit выглядит примерно так:
Все формы с адресами - окрашены в цвета, и несмотря на то, что сам плагин имеет адрес из "гостиницы" : FE220 - все формы в нём начинаются с других адресов.
Этому плагину всё равно где находится в порядке - его можно спокойно перемещать, НО несмотря на то что "в его номере никто не живёт" - номер он всё равно занимает, по этому его перемещение влияет на смещение остальных плагинов.
2. Новые формы в плагине выглядят так:
Цветные строки вверху - формы созданные в других плагинах и лишь изменённые в плагине More_Clothes_Textures.esp, но вот те, что идут ниже - это новые формы. Обратите внимание - More_Clothes_Textures.esp "заселён" в квартиру [AB], и все его "прописанные жители" начинаются с AB:
AB000833, AB000841, AB000846 и т.д. - вот именно адреса всех этих "жителей" или правильнее - форм сместятся при перемещении плагина.
Плагины содержащие новые формы категорически нельзя перемещать в процессе прохождения.
Это важно понимать, потому что допустим сортировщика M8r Complex Sorter.esp - не содержит новых форм, и может быть сколько угодно раз перемещён в самый низ.
Что же делать если нужно отключить плагин?
Нужно делать это так что бы не сместились формы - то есть занять квартиру этого плагина каким-то новым, или пустым.
Вот к примеру я захотел отключить WorkshopFramework.esm во время прохождения. Что бы адреса не сместились - я на его место поставлю пустой плагин из того же адресного пространства.
Как можно видеть - плагин отключён, однако смещений адресов не произошло.
ВАЖНО: это не отменяет других багов, которые могут быть вызваны отключением плагинов. Например отключение плагина вовсе не всегда отключает запущенные им скрипты. Но адресное пространство нарушено не будет.
Что же делать если нужно подключить новый плагин?
1. Можно совершенно спокойно устанавливать плагины в самый низ списка, они зарегистрируются в "свободной квартире/номере" и никак не повлияют на адреса предыдущих. При этом можно иметь в виду что плагин автопатчера M8r Complex Sorter.esp не содержит новых форм, следовательно его спокойно можно перемещать в самый низ.
2. Как вариант - можно произвести замену какого-то из не нужных плагинов на новый. Или слить новый плагин с каким-то из существующих.
Важно понимать что всё написанное относится лишь к адресной системе - Вам по прежнему нельзя игнорировать рекомендации по установке от авторов плагинов - для некоторых важно расположение(например они не смогут занять место в конце списка.
Так же важно что отключая плагины Вы, например, не отключаете их скрипты, прописанные в сейве - некоторые из них отключатся сами, некоторые же могут постоянно вызывать ошибки не обнаруживая форм к которым привязаны. Это могут быть как критические, так и не заметные ошибки.
Надеюсь Вам стало немножко яснее как всё устроено!
Для тех, кто хочет активно подискутировать на эту и другие темы в голосе, приглашаю в дискорд канал. По выходным я часто провожу голосовые стримы.
https://www.nexusmods.com/starfield/news/14888
Едит: Единственная проблема может возникнуть, когда, какой-то овощ, заюзал
Вместо:
Но это, полный говнокод. На уровне юзания SetAV вместо ModAV.
имею в Скае 560 модов (вес игры 200гб) (на ЛЕ с 13 года новую игру не начинал, 27894 сохранение по номеру) и 300 (120 гб) в фоле, и постоянно все двигаю :D. Подвигать иногла полезно, чтобы посмотреть, а что будет, если...
Отсюда надо начинать Category:Tutorials - Creation Kit , чтобы не рассказывать про порядок загрузки как пляски шаманов...
И при установке новых плагинов их нельзя ставить "вниз", их надо ставить на свое место, место определяется мастер файлами, рекомендациями автора и проверкой на конфликты в Едит и не всегда конфликты должны исправляться.
Я не знаю даже с чем сравнить Ваше видение... Ну например написали Вы письмо на ремонт подъезда, прошёл месяц и приехала бригада от ЖЭКа и починила подъезд. Вот Вы и видите этот процесс как "Написал письмо->Отдал в ЖЭК->Получил ремонт". А то что в течение месяца эта писюлька побывала в трёх разных организациях, дважды её чуть не потеряли, и даже разок кто-то ей подтёрся, и вообще чудо, что она дошла до исполнителя (а могла бы и не дойти, если бы например кто-то сдвинул адресата в тот момент когда письмо в пути) - этого Вы не видите. А раз Вы не увидели - значит и нет этого, значит и всё так: Написал->Отдал->Получил. Для полного понимания аналогии вот такой пример мировоззрений из той же серии :
- вода течёт из крана потому что я его открыл;
- солнце светит потому что день;
- холодно потому что зима
и так далее.
Таким же образом Вы и на редактор смотрите - не понимая что за всеми Вашими заменами-подменами в редакторе стоят функции прописанные глубоко в коде, которые обеспечивают работоспособность этого достаточно удобного фасада, созданного разработчиком. К сожалению удобность и упрощённый внешний вид вовсе не значит что внутри всё работает так как Вы того хотите и представляете себе.
Есть просто банальный пример : свойства на уже запущенных скриптах - не обновляются если их менять после запуска скрипта в игре. А скрипты это тоже часть фасада. Можно сказать штукатурка под самым верхним слоем краски, работа которой так же обеспечивается глубоко в коде. Хотя это было бы очень удобно, и любуясь фасадом можно смело предполагать что Вы же свойства на фасаде (в редакторе) поменяли - значит всё должно работать.
P.S. Не помню как в Скайрим, а в ф4 никакого "грубого нарушения порядка мастерфайлов" в принципе не может быть - игра при запуске автоматически выставит плагины в соответствии с мастерфайлами, даже если в листе они перепутаны. Но это так,в качестве ликбеза. Не имеет отношения к предмету обсуждения.
Что же делать если нужно подключить новый плагин?
1. Можно совершенно спокойно устанавливать плагины в самый низ списка, они зарегистрируются в "свободной квартире/номере" и никак не повлияют на адреса предыдущих. При этом можно иметь в виду что плагин автопатчера M8r Complex Sorter.esp не содержит новых форм, следовательно его спокойно можно перемещать в самый низ.
Есть сомнения, что всё это работает именно так как сказал автор материала. Иначе любой дополнительный esm ломал бы все моды, установленные ниже., чего не наблюдается.
Какой-то квест залипнет на диалоге и не будет продвигаться. Будешь изучать как он сделан - ни одной ошибки не найдёшь. Или вот таракан появится. Очевидных взаимосвязей нет. Общность только одна, начинаешь новую игру - и спокойно проходишь этот квест, с тем же набором модов. И "таракана" нигде нет.
А может вообще не начнёшь этот квест - и париться не будешь, будешь считать что всё впорядке. Имею в виду что вполне такое может быть что пройдёт без проблем.
Сколько сам собирал сборок на Скайрим, сколько устанавливал чужих. Ежели устанавливаю все моды сразу, до начала "Новой игры", то забаговываются два, ну очень нужных, квеста "Тёмное братсво" (двери не разговаривают) и "Зов Боэтии" (наверное из-за того что пещера с доспехом завалена камнями).
А если действую по довольно широко распространённому совету "Подключать моды только после побега из Хелгена", что противоречит совету данному в статье
, то все квесты идут как и задумано Беседкой. И да, в последнем случае бывали рандомные краши из игры, возможно из-за ситуации описанной в статье. Но ситуация в целом меня устраивала, до выхода модов "Predators - Lost Tribes" и "Skygerfall".
И вот собственно вопрос: "Существует-ли возможность при подключении всех модов до "Новой игры", избежать пропадания квестов? И, ежели такой фикс или мод существуют, где их найти?"
Что касается подключения во время игры, об этом есть в самом конце статьи :
Ну или как вариант запустить изначально игру с пустышками(плагинами которые не содержат форм) на месте индексов где должны быть эти Ваши плагины, которые нужно подключить в определённый момент игры. И в нужный момент отключить пустышки и на их месте включить Ваши плагины.
Резкие высказывания о процессах, которые Вы полностью не понимаете - это очень смело. Я пытался разобраться в этом - и всё равно не могу гарантированно утверждать что всё в точности так, как я это представляю.
А так смело критиковать как Вы - это сродни тому, что утверждать что никаких сусликов не существует - ну потому что Вы их никогда не видели. А может даже и видели, но когда увидели - решили что это хорьки. Никогда об этом не узнаем. Надеюсь я понятно выразился, а Вы в следующий раз подумаете перед тем как что-то категорично утверждать, ещё и в оскорбительной манере.
Это вещи не простые, они не лежат на поверхности. Это глубоко в коде игрового движка, и вероятно проявляется при совпадении каких-то условий, и в каких-то конкретных случаях. По этому часто бывает сложно увязать все эти вещи воедино - большинство списывает это на "баги игрового движка". Это очень удобно списать всё на бабайку в чулане, криворукого Тодда Говарда.
Иногда некоторые вещи гораздо сложнее, чем Вы себе представляете. Всегда допускайте то, что существует что-то такое - чего-то Вы можете не знать и не понимать в силу ограниченности собственных знаний. Поверьте, если бы у меня не было причин считать что написанное - имеет основания, даже с какими-то оговорками (в силу того что, как я уже написал - весь процесс от А до Я мне не доступен) : я бы просто промолчал.
Было время когда ядерных физиков считали чудаками. Просто потому что они не могли объяснить что такое радиация, почему она невидима и воздействует на расстоянии. Вот мне не хватает знаний что бы объяснить в полном объёме, тем не менее самого явления это никак не отменяет. Что там было в Обле - я не знаю, но там совершенно другая версия движка. Даже у движков Ф4 и Скайрима есть существенные отличия, хотя они очень близки. А речь идёт об ошибках возникающих при обработке внутренних функций игрового кода, здесь сложно сказать почему так - ну вот просто не взяв и не изучив детально десятки тысяч строк с комментариями(где их взять?). Я даже допускаю что в Скайриме этого может не быть или быть не настолько ярко выраженно как в Ф4. Ну просто у меня нет времени изучать подробно Скайрим. Предполагая что в СЕ это может быть я прежде всего опираюсь на то, что внутренний код движка СЕ, и вероятно АЕ - максимально близок к Ф4.
Это всё настолько сложно объяснить человеку далёкому от понимания как это работает. Особенно когда сам всего не понимаешь. Какая-то из функций - подхватывает какую-то из форм в определённый момент. Но не меняет её, а хранит её ID, ждёт момента когда эта форма понадобится игре. В этот момент игрок сохраняется, и меняет моды в порядке. Форма в памяти сохранена по ID, но по этому ID уже другая форма. И для ошибки достаточно что просто программист не подумал и не написал проверки формы перед дальнейшим использованием. И таких функций в игровом движке может быть сотня-другая тысяч. И написаны они разными людьми. В том числе и в разное время (да-да это эже модернизированный движок морровинда). И верить в то, что никто из них нигде не ошибся, не забыл что-то или банально недодумал - это очень наивно.
Но для обывателя это всё просто тёмный лес. Проще сказать что бактерий нет, потому что я их не вижу. Радиации тоже не существует. Вот как то так. Смотрю Вам много вроде лет, странно что к своим годам Вы до сих пор не поняли что не можете знать всего, и вот эти категоричные высказывания ещё и в оскорбительной манере, вместо того что бы задуматься "а точно ли всё так как мне это видится" - это Вас не с лучшей стороны характеризует. Понимаю когда школьники так себя ведут - гормоны, естественная ограниченность мировоззрения в силу небольшого жизненного опыта. Но не когда такое задвигают дяди за 40.
К слову о статье, не похоже чтобы эта схема расстановки порядка модов работала. Это ведь просто ваши домыслы.
(УСЛОВИЕ: наличие опыта работы с SSEDIT + желателен опыт в Notepad++)ЗЫ: Да,есть возможность просто скормить всё Wryebash`у, но какие условия сборки Ская у каждого ?
- в моём случае кормёжка "баша" (не путать с баш_орг) приведёт к лютому пи...цу и все мои правки и русификация для 200+ модов коту под яйца.
Дано: Вовочка захотел воткнуть мод "Curse of the Dragon Priests (CODP)" , в существующую сборку, с кучей иных модов, в том числе - "Sneak Tools"...
Вопрос: сколько гемороя, выскочит у Вовочки, если он, не воспользуется хотя бы малым опытом работы в SSEDIT ?
Ответ: DOHUA technology.
Решение:
https://coub.com/view/3agwbp
Установленные моды никоим образом не изменяются(все изменения располагаются в отдельной папке.
Это лично моё мнение.
Что я лично, собственно и делаю - это клеймо.
И маленькая вишенка всему этому - LOOT, эта дрянь помогает от части, и как только ситуация (в основном, вылеты) вынуждает запустить этого монстра и дать ему доступ расставить порядок модов по своему, всё, звезда "сейву",смело шагаем в мир знакомых локаций "Новая игра" =)
О самом смысле поста - да,есть такое у Ская "смещение индекса" (как хотите его обзывайте), я заядлый любитель лепить фейсы, мейкап "наше всё" и он так же чувствителен к вышеописанному спонсору всей темы и как только,к примеру, снесём с сборки один "мейкап" или "глаза \ линзы" и накатим другие, сейв загрузится,проблем нет и если бы движок Ская, умел говорить, это звучало бы, наверное, что-то вроде такого
"О! Чувак,новые текстурки глаз\ линз для гг, ок, но у меня по списку были другие, а вон те татухи, теперь на порядок сместились,я тебе эти татухи на хер уберу, без обид братан,но по старому адресу,я их уже не вижу,с адресом текстур проблем нет, я их вычисляю
по айпи\серии паспортав заложенном Esp \ esl, по этому ща мы тебе забацаем чумовую новую тётю Гагу.Бро, ты только не трогай всё что касается спавна всей живности и еще что прибито к скриптам, иначе мрак будет. "(левел-листы всего мракобесия ,я вот не знаю когда обновляется или только с новой игры или может быть при определённых моментах типа "загрузки новой ячейки \ чанков" (бялд,как я не переношу слово "чанк", я хз почему), или может спустя время лока обновляется повторно за одно и левел листы с неписями и всем зверьём ?! ). Так много вопросов и там мало ответов =)
Вердикт для себя : апдейт модов стоит делать - запомнив его гос.номер \айпи\айди\ (зови его как хочешь) в порядке загрузки, если же это нонсенс для сборки Ская, тут уж или хирургия или морг - новая игра (для меня чаще морг,доктор сказал в морг значит...)
данный коммент на щах опыта и только, никакого продвижения в массы собственных пониманий как устроен этот мир)
Касательно экспериментов в эдиторе - полное непонимание того, что там происходит и откуда берутся циферки. Плагины не содержат никаких адресов или оффсетов, только пути к ресурсам относительно папки Data, наименование этих ресурсов и их параметры. Всё! Этажи и квартиры (индексы, если писать грамотно) строит уже редактор "на лету", руководствуясь заголовком esp - файла, в котором записаны мастер - плагины и неймами объектов. А загрузчик даже этого не делает, проверяет только заголовки и формирует оффсеты, если бы он строил индексы, несчастные геймеры дожидались бы загрузки любимого скайрима сутками.
Так что не удивительно, что у вас люди в рад-тараканов превращаются. Разберетесь в редакторе - разберетесь и с багами.
Предлагаю перейти в конструктивное русло, и если Вам есть что добавить о предмете статьи - то добавляйте.
Как видится мне - плагины всё же прописываются (индексируются) в момент начала новой игры, формы, вероятно то же индексируются. Возможно это происходит не в момент начала игры, а в тот момент когда форма вызывается впервые. То есть вряд ли индексирование (или определение формы) происходит каждый раз когда форма из плагина потребуется игре. Возможно как раз в этом моменте и кроется "красная зона" - формы прописались, в игре начали формироваться связи, затрагивающие эти формы, а что произойдёт если потом эти адреса изменятся? Точно игра (движок) обновит все связанные формы в уже построенных взаимосвязях? Откуда у Вас эта уверенность? Я наглядно много раз убеждался что это не так. Вот прям 100% автоматически не обновляются инициализированные проперти скриптов. И фактически скрипты с проперти закреплёнными на смещённые плагины - это будут нерабочие или лишь частично рабочие скрипты.
То, что игра хранит индексированные адреса легко проверить в Fallrim Tools например - каждый плагин прописан в сейве со своим индексом. Если индексы меняются - в сейвах они так же меняются, следовательно какое-то сравнение и переиндексация проводится и во время загрузки игры, иначе зачем хранить эти данные в сейвах, если это не важно и не сравнивается? Можно было бы предположить что это нужно для запуска форм из новых модов, но нет - даже если добавить новые формы в уже подключенный мод, игра прекрасно будет с ними работать, а новые формы помеченные как формы которые должны сработать при запуске игры - сработают.
Возможно при загрузке игры сравниваются названия плагинов просто как стринги, и если есть изменения - идёт в каком-то виде переиндексация(именно что в каком-то виде) или просто обновление индексов, но вообще, это всё не моё поле, это размышления пальцем в небо, предположения.
Могу лишь только утверждать что далеко не каждый мод работает корректно после таких операций (изменение индекса плагина).
Ну это совершенно не так. Плагины содержат формы, с конкретными адресами (идентификаторами), в том числе и ссылки на ресурсы, но это малая часть того что они содержат.
Или Вы считаете что речь о каких-то конкретных адресах в памяти? Так это вообще другая степь. Здесь речь о "песочнице" внутри движка игры.
Если же смотреть на формы - то это прямая аналогия классов, т.е. объектов содержащих набор свойств, а идентификаторы в 16-ричной системе счисления - это лишь одно из свойств формы, так же как и упомянутые пути к ресурсам. Есть так же идентификаторы в виде стрингов (т.н. EditorID). Как с этим всем работает игровой код - да одному Богу известно. Полная картина есть только у программистов с доступом к исходникам, мододелы в лучшем случае какие-то лоскуты от целой картины видят.
Аналогия с ООП вполне очевидна. Как с этим работает код вполне известно, если приложить немного усилий и логики.
В чём? Как я уже написал выше - реиндексируются индексы форм. Но как это работает в функциях игрового движка? Откуда уверенность что все выстроенные взаимосвязи обновляются с учётом новых индексов? Всё очень зависит от того как написаны функции. И вот практика показывает - что нет, далеко не всё обновляет прописанные адреса. Это не увидеть ткнув мышью в консоли. Для того что бы это увидеть нужно дебажить заглючившие моды. Моих знаний хватает только для того что бы дебажить это в скриптах - и тут я абсолютно уверен в том что теряются проперти. Потому что это я своими глазами видел. В случае с Рад-Тараканом например - это происходит в функциях в коде движка. Тут я не могу провести дебаг. Но примерно понимаю почему происходит рад-таракан: вместо индекса в массиве сдвинутой формы возвращается скорее всего ноль, под индексом которого в массиве находится Рад-Таракан.
А я думаю, что это вы, ничего не понимая, выдаете собственные домыслы за прописную истину и призываете остальных следовать за вашим мракобесием. У вас нет никаких доказательств, что все работает так, как написано выше. Сначала были индексы, теперь в ход пошли какие то "неочевидные связи". Если они для вас неочевидны, проблемы извините, ваши.
Выше вы писали про смещения адресов, которые вызывают баги (собственную статью то помните?). Я вам указал, что игра корректирует эти смещения. Если нет уверенности, что и взаимосвязи корректируются, исследуйте вопрос, напишите развернутую статью с конкретным примером. А вы пишите только домыслы, но выдаете за истину.
Да, я-то прекрасно помню. Я их называю адреса, можно называть их индексами, да хоть номерами формы. Вообще всё равно. А Вы начинаете наводить тень на плетень мешая в одну кучу эти адреса-индексы-номера с адресами переменных, которые хранятся в ОЗУ.
Да, уверенности нет как это работает от начала и до конца. Есть только практика человека который с этим постоянно работает. А уверенность и полное понимание вообще вряд ли у кого-то есть, кроме тех кто имеет доступ к исходникам и имеет возможность в них копаться. Да и с исходниками понадобится тонна времени что бы в этом разбираться, если сам это не писал.
При всём уважении к труду программистов бетесды, которые правда сделали очень устойчивый к модам движок.
В любом случае, я конечно могу быть не прав. Но пока - у меня это работает именно так, как я описал. От Вас я тоже не увидел каких-то аргументов, кроме бесконечной веры в программистов бетесды, и двух очевидных скринов, свидетельствующих о том, что если плагин переместить - то индекс у него изменится. Если вдруг я увижу какие-то подтверждения того, что в чём то я безусловно ошибаюсь - я обязательно обновлю статью. Более того, правильно относится к этой статье как к точке зрения, а не абсолютной истине, о чём я даже пометку сделаю.
Исследований глубоких я конечно не проводил, код игры не разбирал, а все баги с которыми я встречался - долгоиграющие(проявляются вовсе не сразу), всё что я утверждаю - это результат практических упражнений с моддингом игры и выводов из этого. Могу только сказать что эти баги, которые я списываю на смещение адресов - НИКОГДА не получается спровоцировать на новой игре. То есть вот он у тебя перед глазами, ты его видишь "на сейве", тут же, не выходя из игры, запускаешь новую игру - и его нет. Вот ты спавнишь безголовых гулей "на сейве", запускаешь новую игру - и те же гули все с головами. И т.д.
Проблемы при обновлениях могут возникнуть только если менялись уже существующие адреса, или проперти скриптов. Авторы модов обычно об этом предупреждают и оставляют рекомендации по обновлению. Чаще всего это как раз - новая игра.
И да, и нет. Об этом написано - можно либо оставлять резервные пустые плагины перед началом игры и заменять их на новые моды, либо сливать новые моды с существующими, либо добавлять их в конце списка, если это возможно. Но это требует каких-то минимальных навыков и понимания чуть больше среднестатистического пользователя.
Один человек - это не тестер. Зная как люди играют - ну не поговорил с Вами квестовый непись - Вы пошли дальше и забыли. А может и не знали вообще что он должен был поговорить. Тестировать что-то можно лишь на большой аудитории, хотя бы человек 50. У меня есть эта аудитория. Люди фокусируют внимание на разных вещах, ну встретился кому-то безголовый гуль - да и фиг с ним, спишем на "кривую беседку" или "мод с багами", остальное то вроде работает. Вы если по-вспоминаете нормально - то наверняка вспомните кучу мелких багов на которые просто не обращали внимания. Многие готовы с этим мириться, понимая что всё равно не разберутся в причинах. А многие и играют то как - понатыкал сотню-другую модов, поиграл до первого серьёзного бага, чертыхнулся на "кривую бетесду" и пошёл играть в другие игры.
Но основное правило:
1. Новая игра всегда. И к новой игре надо быть готовому всегда.
Надо добавить:
2. Надо меньше модов.
За последние два года вышла серия модов сравнимых с DLC. Надеятся что они не пересекутся с вашими мелкими добавлениями может только наивный. Имхо в этом случае я вижу - миниальный пакет без изысков и один из таких крупных модов.
Тот же Sim Settlements 2 выкатил во второй части такую квестовую составляющую, что я вновь готовлюсь к перустановке с минимумом только необходимых модов.
А теперь вот вышел еще The FensSheriff's Department - Bleachers 2. Пришел в основном из-за него. И...думаю как пришел так и уйду. Sim 2 закончу 2 часть тогда и думать буду.
Оно может и так, всех тонкостей не знаю, но по своему скромному опыту скажу, что конкретно в Skyrim я такого не замечал. Хотя в течение одного прохождения многократно менял порядок модов в лаунчере, и, более того, однажды сносил старую Windows, и пришлось все эти моды устанавливать по новой. Были лишь конфликты между теми же реплейсерами (Bijin, Pandorable), но это легко лечилось перестановкой конфликтных модов. При удалении каких-то серьезных модов, кстати, использовал упомянутый здесь Fallrim Tools. Был даже один момент, когда простое удаление одного мода вызывало краш сохранения, но сейвы спасла именно эта прога. После очистки сохранение все-таки загрузилось.
Вообще - чем ближе к началу списка располагается мод - тем меньше шансов его повредить, думаю причины очевидны. Но бывает и такое - например вдруг понадобилось установить какой ни будь ESM мод во время прохождения - это гарантированно похерит сколь бы то ни было крупную сборку (ну на 100-200-300-2000 модов). При чём понятно это будет не сразу, так как херятся зачастую какие-то не очевидные сходу вещи. Понятно что что-то не так станет через час, а то и 2-3 часа игры, зависит от ваших активностей. Выползшие косяки - будет достаточно сложно увязать с установленным 3 часа назад ESM - ведь он вообще никак к этим косякам формально не относится, и вообще всего лишь цвет воды в стакане изменяет. Вы начнете свои попытки найти "косяк", и если это Ваша сборка - Вы будете считать что где-то прое@ались и тщетно искать где (ну потому что косяк вовсе не в установленных модах, а в сбитых адресах, которые не дают им нормально работать), а потом начав новую игру и не обнаружив бага - ну решите что "кривая беседка". Если это чья-то сборка - то Вы решите что это просто сборка кривая, ну не мог же в самом деле один Ваш ESM испоганить сборку...
Ну вот как-то так всё обычно у модомесов происходит. Я ведь это не с кандачка придумываю - я очень долго мучался с такими проблемами - сам считая что так не бывает. А считаешь так - просто от банального незнания и непонимания как оно устроено. Представьте, каково было в средневековье поверить что Земля на самом деле круглая. У нас, конечно, ситуация не столь глобальная, но в целом - похожая.
Верить мне или нет - дело Ваше, обоснование своё я привёл.
p.s. Вот ещё момент, я это не могу утверждать наверняка, но мне кажется что более ранние игры беседки более устойчивы к смещению адресов за счёт того, что скрипты в них встроены в плагин, а не являются внешними прикреплениями к форме. Вообще, из моих наблюдений - сбиваются наиболее очевидно моды содержащие скрипты имеющие проперти из мастерфайлов: сбился мастерфайл, собьётся и скрипт. Наиболее устойчивы же моды так сказать замкнутые лишь на себе и на мастерфайлах мэйна и DLC. Опять же, думаю по понятным причинам.
В Мод Органайзере можно блокировать смещение модов, но почему-то лично у меня это не очень хорошо работает. Возможно просто я не разобрался.
FNIS - это же приложение для встраивания анимаций в скайрим, или я что-то путаю?
Wrye Bash - не думаю что он следит за порядком адресов в текущем прохождении. Было бы очень удивительно. Для этого ему как-то надо собирать статистику подключенных модов. Ну допустим он это из сейва делает. Но я ни разу не видел каких-то таких настроек в нём
В теории восстановить сбитый порядок можно вручную, по сейву с помощью утилиты Fallrim Tools, но это гладко лишь на бумаге - когда условно 30 модов подключено. А выставлять 500 и более модов по порядку из не очень удобного Fallrim Tools (ну он просто не предназначен для этого)... ну такое себе...
Лучше следить за порядком с учётом всего выше описанного, держать его сохранённым в бекапах. И не мучать игру новыми модами, если уже начали её проходить. Это самый верный способ. А если всё же появился какой-то мод, который очень хочется добавить - то добавьте и начните новую игру. Остальные способы - для довольно продвинутых модомесов.
FNIS - по сути верно вами сказано (считывает папку анимаций актёров и опционально зверья, скармливает всё это добро движку,для списка загрузки модов ни как не создан).
LOOT - как уже писал страшная хрень,если сборку составляли с зарождения блоками (сначала всё косметическое для гг > графоний > свет,вода,реплейсеры ландшафта > а потом самый смак сыплешь геймплей и прочее,хотя порядок можно изменить,но именно блочность лучше сохранять,а сам loot лучше не беспокоить.
WryeBash именно это и делает - читает сейв и выдаёт тебе список,сравнивает с текущим и помечает что куда свалило\съехало и прочее,на этом его помощь заканчивается (вроде бы, заканчивается).
Тут то ручёнками и перемещаешь всё как было,но вселенную не нае...шь простой перестановкой "как было" - 60% модов с нексуса конфликтуют друг с другом, по этому перезапись одного другим с помощью порядка загрузки, в целях "как было" и при этом появлении нового мода в этом порядке приведёт к другому вылету даже на щах
"у меня новая игра,на хер пошли,чтоб никаких вылетов!!"
По этому,при внесении нового мода в сборку (скрипты и что то "серьёзное",к примеру изменённая ваниль.-лока на кастомную) исходить нужно в первую очередь из правила совместимости, а не "я сделал как было и профит".
О правилах расстановки и изучение этой функции - к сожалению, на такие подвиги, у меня лично, времени нет.