Почему нельзя изменять порядок модов во время прохождения игры
07.02.2023 2802 Автор: nodtrial

Почему нельзя изменять порядок модов во время прохождения игры

Ранее мы разбирали что такое ESM/ESP/ESL плагины. Продолжим разбираться в вопросе - как ещё эти плагины влияют на игру. Речь, конечно же, пойдёт о модах для игр от Bethesda Softworks, я изучал вопрос по игре Fallout 4, но думаю что это абсолютно так же или очень похожим образом работает для Skyrim LE/SE/AE, а так же для более ранних игр. Кстати, сообщения под статьёй "автор ты не прав, я тысячу раз так делал", "ничего не понял, чушь какая-то" и т.д. ... приветствуются. Но лучше всё таки что-то предметное, что можно обсудить или чем можно дополнить статью. Сделаю небольшую оговорку: это всё моя точка зрения основанная на личном опыте, и я не обладаю полным объёмом знаний что бы что-то категорично и безапелляционно утверждать.

Те из Вас, кто регулярно модомесит, особенно те кто имеет отношение к созданию модов или активно их редактирует, наверняка встречались со странными ситуациями-багами, которые видны в одном прохождении и не встречаются если начать игру заново. Например, для Fallout 4 довольно часто встречающаяся история NPC-актёр, не имеющий никакого отношения к насекомым, но почему-то называющийся Рад-Таракан. И сколько бы Вы не искали по уровневым спискам, Вы не найдёте почему у этого NPC такое имя : этого по-просту не может быть.
Мне так же попадались гули без голов, целая локация гулей, передвигающаяся без анимаций и по-пластунски. Некоторые квесты, в которых не "проталкивается" сцена, хотя по всем признакам она сделана без ошибок. Баги могут абсолютно любые - рандомные и совершенно непонятные. В том числе и вылеты.

Главная отличительная особенность таких багов - если начать новую игру и тут же отправиться искать этот баг или попытаться смоделировать его - этого не случиться. Бага просто не будет.

Забегая немножко вперёд - скажу о бинарном поиске багов (это метод при котором для поиска багов последовательно, в циклическом порядке, отключается половина модов и проверяется наличие ошибки после этой операции). Этот способ очень любят советовать как "лучший способ для поиска багов". Но учитывая то знание, которое мы сегодня здесь получим - можно будет смело утверждать что всё не так однозначно - ведь отсутствие конкретного бага после отключения каких-то модификаций это отнюдь не всегда результат отключения проблемного мода, но вполне может быть спровоцировано смещением адресов. Ведь у Вас наверняка были случаи при бинарном поиске когда Вы отключаете какой-то мод, который вроде бы никак не должен влиять на баг - и... это по необъяснимым причинам помогло. На самом же деле такая помощь - сродни пробив одну покрышку на дороге пробить и все остальные, что бы выровнять автомобиль : да, автомобиль будет стоять ровно, но вот будет ли он ехать - большой вопрос. Смещая адреса мы ВСЕГДА привносим больше вреда чем пользы. Но обо всём по порядку.

Ох, сколько же я потратил времени в тщетных попытках разобраться в чём же дело. Не скажу что я разобрался в вопросе от А до Я, но кое-что понять мне всё же удалось, и я очень хочу этим поделиться. Но что бы понять в чём собственно дело - нам потребуется разбираться в том как же работает игра с плагинами. Легко не будет и Вам очень понадобится то, что мы выяснили в статье о ESM/ESP/ESL плагинах.




На практике это выглядит так:
Вы начинаете игру с такой конфигурацией, все плагины прописываются с такими адресами.



А потом вы решаете что Вам нужен новый мод и он занимает это место:




Вам вроде бы кажется что ничего не изменилось - а для игры поменялось очень многое. Все "квартиранты" ниже подключенного мода сместились по адресу +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. Как вариант - можно произвести замену какого-то из не нужных плагинов на новый. Или слить новый плагин с каким-то из существующих.
Важно понимать что всё написанное относится лишь к адресной системе - Вам по прежнему нельзя игнорировать рекомендации по установке от авторов плагинов - для некоторых важно расположение(например они не смогут занять место в конце списка.
Так же важно что отключая плагины Вы, например, не отключаете их скрипты, прописанные в сейве - некоторые из них отключатся сами, некоторые же могут постоянно вызывать ошибки не обнаруживая форм к которым привязаны. Это могут быть как критические, так и не заметные ошибки.

Надеюсь Вам стало немножко яснее как всё устроено!

Для тех, кто хочет активно подискутировать на эту и другие темы в голосе, приглашаю в дискорд канал. По выходным я часто провожу голосовые стримы.

Аватар Nyxy
Nyxy в 23:27:35, 12.03.2023
Нравится
Вопрос, возможно немножко не по теме.
Сколько сам собирал сборок на Скайрим, сколько устанавливал чужих. Ежели устанавливаю все моды сразу, до начала "Новой игры", то забаговываются два, ну очень нужных, квеста "Тёмное братсво" (двери не разговаривают) и "Зов Боэтии" (наверное из-за того что пещера с доспехом завалена камнями).
А если действую по довольно широко распространённому совету "Подключать моды только после побега из Хелгена", что противоречит совету данному в статье
Цитата
В общем-то если Вы не искушены в установке модов - то этой информации думаю достаточно для того что бы понимать что категорически нельзя изменять порядок, добавлять новые плагины и отключать существующие во время прохождения.

, то все квесты идут как и задумано Беседкой. И да, в последнем случае бывали рандомные краши из игры, возможно из-за ситуации описанной в статье. Но ситуация в целом меня устраивала, до выхода модов "Predators - Lost Tribes" и "Skygerfall".
И вот собственно вопрос: "Существует-ли возможность при подключении всех модов до "Новой игры", избежать пропадания квестов? И, ежели такой фикс или мод существуют, где их найти?"
Аватар nodtrial
nodtrial в 18:30:53, 13.03.2023
Нравится (1)
Так а я не знаю что вызывает эти проблемы. Чаще всего моды просто сделаны так, что не учитывают чего-то. Нужно просто их переделать правильно - и будут работать как надо.

Что касается подключения во время игры, об этом есть в самом конце статьи :

Ну или как вариант запустить изначально игру с пустышками(плагинами которые не содержат форм) на месте индексов где должны быть эти Ваши плагины, которые нужно подключить в определённый момент игры. И в нужный момент отключить пустышки и на их месте включить Ваши плагины.
Аватар Nyxy
Nyxy в 23:48:33, 13.03.2023
Нравится
Спасибо за совет с пустышками!!! В сборке которую собираю на данный момент обяательно попробую.
Аватар Fle
Fle в 01:10:30, 07.03.2023
Нравится (3)
Что за бред я сейчас прочитал? Меня уверяют, что установка мода сломает работу всех кто оказался ниже него? Сказки в другом разделе. Пишите полезные статьи, а не собственные домыслы.
Аватар nodtrial
nodtrial в 12:38:40, 23.03.2023
Нравится
Статья - результат очень длительного редактирования игры и наблюдения за её поведением с попыткой понять причины и следствия. Да, мне не видна картина процессов целиком (а никому не видна - без кода разработчиков с комментариями), но те части процесса, в которых мне удалось разобраться - позволяют мне сделать выводы, которые я привёл в статье.
Резкие высказывания о процессах, которые Вы полностью не понимаете - это очень смело.  Я пытался разобраться в этом - и всё равно не могу гарантированно утверждать что всё в точности так, как я это представляю.

А так смело критиковать как Вы - это сродни тому, что утверждать что никаких сусликов не существует - ну потому что Вы их никогда не видели. А может даже и видели, но когда увидели - решили что это хорьки. Никогда об этом не узнаем. Надеюсь я понятно выразился, а Вы в следующий раз подумаете перед тем как что-то категорично утверждать, ещё и в оскорбительной манере.

Это вещи не простые, они не лежат на поверхности. Это глубоко в коде игрового движка, и вероятно проявляется при совпадении каких-то условий, и в каких-то конкретных случаях. По этому часто бывает сложно увязать все эти вещи воедино - большинство списывает это на "баги игрового движка". Это очень удобно списать всё на бабайку в чулане, криворукого Тодда Говарда.

Иногда некоторые вещи гораздо сложнее, чем Вы себе представляете. Всегда допускайте то, что существует что-то такое - чего-то Вы можете не знать и не понимать в силу ограниченности собственных знаний. Поверьте, если бы у меня не было причин считать что написанное - имеет основания, даже с какими-то оговорками (в силу того что, как я уже написал - весь процесс от А до Я мне не доступен) : я бы просто промолчал.
Аватар novi4ek
novi4ek в 16:37:35, 28.02.2023
Нравится (1)
я то вроде знаю все траблы встречающиеся с модами в скайриме и фаллоут4 - но с удовольствием перечитал всё и даже коменты , тема норм
Аватар zer02
zer02 в 18:22:37, 28.02.2023
Нравится (1)
=) Да,текстовые баталии читать порой полезно,а выводы делать только для себя (имхо) - иначе, есть вероятность влезть в махач.
Аватар zer02
zer02 в 12:14:50, 14.02.2023
Нравится
Лайфхак про совместимость и установку модов на дорогое вам сохранение...
(УСЛОВИЕ: наличие опыта работы с SSEDIT + желателен опыт в Notepad++)ЗЫ: Да,есть возможность просто скормить всё Wryebash`у, но какие условия сборки Ская у каждого ? 
- в моём случае кормёжка "баша" (не путать с баш_орг) приведёт к лютому пи...цу и все мои правки и русификация для 200+ модов коту под яйца.

Дано:  Вовочка захотел воткнуть мод "Curse of the Dragon Priests (CODP)" , в существующую сборку, с кучей иных модов, в том числе - "Sneak Tools"...
Вопрос:  сколько гемороя, выскочит у Вовочки, если он, не воспользуется хотя бы малым опытом работы в SSEDIT ?
Ответ: DOHUA technology.
  • - русификация на маски потеряна
  • - про функции заявленные в моде-спонсоре этого коммента,Вовочка может забыть
  • - вероятны нежданчики-баги, если Вовочка, не воспользуется хотя бы банальным Wryebash`ем.


Решение:
  • - запуск SSEDIT
  • - ставим галки везде,дабы просмортеть конфликт патрашков по всем модам (может чего еще исправите и сразу внесёте компромисы в основные моды, исключив нужду в "патчах" между какими либо модами.
  • - находим в столбце FORM_ID (слева), нашего героя - Curse of the Dragon Priests
  • - разворачиваем \ открываем ветку мода ,находим подгруппу у мода "Armor"
  • - видим ужас и беспорядок в виде красного цвета (если что,красный цвет - это не круто),тыкаем на любую красную строку и переводим взгляд на правое окно..
  • - для верующих - перекрещиваемся,для не верущих - пьём валерьянку, кастуем голосом бафф резиста на моральный статус что-то вроде "pizdec_nahuy_bleat".
  • - активируя базовый опыт и понимание работы SSEDIT, приходим к выводу, что мод "Sneak Tools" никуяшеньки не имеет наворотов,которыми богат мод "Curse of the Dragon Priests (CODP)"
  • - исправляем это,путём смещения приоритета загрузки в менеджере модов + русифицируем как опция.





https://coub.com/view/3agwbp
Аватар Фионыч
Фионыч в 23:17:05, 12.02.2023
Нравится (1)
LOOT-первый враг юзера в Fallout 4 (не знаю,как в скае-никогда не играл).Лучшим инструментом для экспериментов с модами является МО2.В левом окне сами моды,в правом их плагины.Двигай вверх-вниз и настраивай.Обновления устанавливай ниже самого мода(в левом окне),отключай старый и проверяй новый в игре.Плагин остаётся на своём месте(в правом окне).Ордер можно(и нужно) сохранять и в левом и в правом окне.Если в игре траблы-можно всегда восстановить с нужного сохранения.
Установленные моды никоим образом не изменяются(все изменения располагаются в отдельной папке.
Это лично моё мнение.

Аватар nodtrial
nodtrial в 01:55:40, 13.02.2023
Нравится
LOOT это же просто инструмент. Для многих лут это по факту единственная возможность хоть какой-то порядок соблюдать. Есть свои плюсы и свои минусы. А отношение у каждого разное, исходя из опыта. По сути, если Вы способны открыть редактор хЭдит и понять хотя бы на базовом уровне что как работает, и делаете Вы исключительно для себя - никакой лут конечно Вам не нужен.
Аватар zer02
zer02 в 21:26:52, 10.02.2023
Нравится (1)
Цитата
можно вообще не выходить из Хелгена и, как максимум, добраться до Ривервуда

Что я лично, собственно и делаю - это клеймо.
И маленькая вишенка всему этому - LOOT, эта дрянь помогает от части, и как только ситуация (в основном, вылеты) вынуждает запустить этого монстра и дать ему доступ расставить порядок модов по своему, всё, звезда "сейву",смело шагаем в мир знакомых локаций "Новая игра" =)

О самом смысле поста - да,есть такое у Ская "смещение индекса" (как хотите его обзывайте), я заядлый любитель лепить фейсы, мейкап "наше всё" и он так же чувствителен к вышеописанному спонсору всей темы и как только,к примеру, снесём с сборки один "мейкап" или "глаза \ линзы" и накатим другие, сейв загрузится,проблем нет и если бы движок Ская, умел говорить, это звучало бы, наверное, что-то вроде такого

"О! Чувак,новые текстурки глаз\ линз для гг, ок, но у меня по списку были другие, а вон те татухи, теперь на порядок сместились,я тебе эти татухи на хер уберу, без обид братан,но по старому адресу,я их уже не вижу,с адресом текстур проблем нет, я их вычисляю по айпи\серии паспорта в заложенном Esp \ esl, по этому ща мы тебе забацаем чумовую новую тётю Гагу.Бро, ты только не трогай всё что касается спавна всей живности и еще что прибито к скриптам, иначе мрак будет. "

(левел-листы всего мракобесия ,я вот не знаю когда обновляется или только с новой игры или может быть при определённых моментах типа "загрузки новой ячейки \ чанков" (бялд,как я не переношу слово "чанк", я хз почему), или может спустя время лока обновляется повторно за одно и левел листы с неписями и всем зверьём ?! ). Так много вопросов и там мало ответов =)

Вердикт для себя :  апдейт модов стоит делать - запомнив его гос.номер \айпи\айди\  (зови его как хочешь)  в порядке загрузки, если же это нонсенс для сборки Ская, тут уж или хирургия или морг - новая игра (для меня чаще морг,доктор сказал в морг значит...)

данный коммент на щах опыта и только, никакого продвижения в массы собственных пониманий как устроен этот мир)
Аватар -=FenikS=-
-=FenikS=- в 09:29:32, 09.02.2023
Нравится (2)
Добрый день.

Цитата
В общем-то если Вы не искушены в установке модов - то этой информации думаю достаточно для того что бы понимать что категорически нельзя изменять порядок, добавлять новые плагины и отключать существующие во время прохождения.
 Прежде, чем учить других, автору стоило бы самому искушать матчасть, абсолютную и относительную адресацию в целом и построение адресных ссылок загрузчиком в частности. 
Касательно экспериментов в эдиторе - полное непонимание того, что там происходит и откуда берутся циферки.  Плагины не содержат никаких адресов или оффсетов, только пути к ресурсам относительно папки Data, наименование этих ресурсов и их параметры. Всё! Этажи и квартиры (индексы, если писать грамотно) строит уже редактор "на лету", руководствуясь заголовком esp - файла, в котором записаны мастер - плагины и неймами объектов. А загрузчик даже этого не делает, проверяет только заголовки и формирует оффсеты, если бы он строил индексы, несчастные геймеры дожидались бы загрузки любимого скайрима сутками.  
Так что не удивительно, что у вас люди в рад-тараканов превращаются. Разберетесь в редакторе - разберетесь и с багами.
Аватар nodtrial
nodtrial в 14:03:04, 09.02.2023
Нравится
Цитата
Добрый день.
Добрый день.

Цитата
Прежде, чем учить других, автору стоило бы самому искушать матчасть, абсолютную и относительную адресацию в целом и построение адресных ссылок загрузчиком в частности.
 Вы просто не разобрались в том, что написано, но решили в критическо-оскорбительной манере поумничать, почему-то выдавая за факт собственные мысли что Вы знаете о предмете обсуждения больше меня. Я-то как раз в редакторах Fallout 4 сотни часов провёл, и не в носу ковырял глядя на открытый редактор. В целом я не отрицаю, что даже близко не понимаю всей картины - ну а кто её всю понимает?
Предлагаю перейти в конструктивное русло, и если Вам есть что добавить о предмете статьи - то добавляйте.

Цитата
Этажи и квартиры (индексы, если писать грамотно) строит уже редактор "на лету", руководствуясь заголовком esp - файла, в котором записаны мастер - плагины и неймами объектов.
 Речь идёт не об индексации при запуске игры. И не о редакторе. Речь о песочнице которую создаёт игровой движок и в которой работает.


Цитата
А загрузчик даже этого не делает, проверяет только заголовки и формирует оффсеты, если бы он строил индексы, несчастные геймеры дожидались бы загрузки любимого скайрима сутками.
А зачем ему что-то строить? Все индексы прописаны в формах плагинов. Просто Вы почему-то считаете что функции игрового движка обращаются к формам строго в порядке - получить плагин по названию, получить индекс плагина, получить индекс формы из плагина, т.е пройти некий полный путь всякий раз когда игре понадобилась какая-то форма. Ну так судя по моей практике - это не всегда так.

Как видится мне - плагины всё же прописываются (индексируются) в момент начала новой игры, формы, вероятно то же индексируются. Возможно это происходит не в момент начала игры, а в тот момент когда форма вызывается впервые. То есть вряд ли индексирование (или определение формы) происходит каждый раз когда форма из плагина потребуется игре. Возможно как раз в этом моменте и кроется "красная зона" - формы прописались, в игре начали формироваться связи, затрагивающие эти формы, а что произойдёт если потом эти адреса изменятся? Точно игра (движок) обновит все связанные формы в уже построенных взаимосвязях? Откуда у Вас эта уверенность? Я наглядно много раз убеждался что это не так. Вот прям 100% автоматически не обновляются инициализированные проперти скриптов. И фактически скрипты с проперти закреплёнными на смещённые плагины - это будут нерабочие или лишь частично рабочие скрипты.

То, что игра хранит индексированные адреса легко проверить в Fallrim Tools например - каждый плагин прописан в сейве со своим индексом. Если индексы меняются - в сейвах они так же меняются, следовательно какое-то сравнение и переиндексация проводится и во время загрузки игры, иначе зачем хранить эти данные в сейвах, если это не важно и не сравнивается? Можно было бы предположить что это нужно для запуска форм из новых модов, но нет - даже если добавить новые формы в уже подключенный мод, игра прекрасно будет с ними работать, а новые формы помеченные как формы которые должны сработать при запуске игры - сработают.

Возможно при загрузке игры сравниваются названия плагинов просто как стринги, и если есть изменения - идёт в каком-то виде переиндексация(именно что в каком-то виде) или просто обновление индексов, но вообще, это всё не моё поле, это размышления пальцем в небо, предположения.

Могу лишь только утверждать что далеко не каждый мод работает корректно после таких операций (изменение индекса плагина).


Цитата
Плагины не содержат никаких адресов или оффсетов, только пути к ресурсам относительно папки Data


Ну это совершенно не так. Плагины содержат формы, с конкретными адресами (идентификаторами), в том числе и ссылки на ресурсы, но это малая часть того что они содержат.
Или Вы считаете что речь о каких-то конкретных адресах в памяти? Так это вообще другая степь. Здесь речь о "песочнице" внутри движка игры.
Если же смотреть на формы - то это прямая аналогия классов, т.е. объектов содержащих набор свойств, а идентификаторы в 16-ричной системе счисления - это лишь одно из свойств формы, так же как и упомянутые пути к ресурсам. Есть так же идентификаторы в виде стрингов (т.н. EditorID). Как с этим всем работает игровой код - да одному Богу известно. Полная картина есть только у программистов с доступом к исходникам, мододелы в лучшем случае какие-то лоскуты от целой картины видят.
Аватар -=FenikS=-
-=FenikS=- в 21:45:48, 09.02.2023
Нравится (1)
Цитата
Речь идёт не об индексации при запуске игры. И не о редакторе. Речь о песочнице которую создаёт игровой движок и в которой работает.
А что вы тогда пытаетесь показать скринами из xEdita? Разбирайте дампы памяти игры, раз уж речь про "песочницу".
Цитата
А зачем ему что-то строить? Все индексы прописаны в формах плагинов.
Где? Приведите пример.
Цитата
Возможно как раз в этом моменте и кроется "красная зона" - формы прописались, в игре начали формироваться связи, затрагивающие эти формы, а что произойдёт если потом эти адреса изменятся? Точно игра (движок) обновит все связанные формы в уже построенных взаимосвязях? Откуда у Вас эта уверенность?
Произойдет коррекция, я поменял порядок в загрузке для одной китайской подруги, вот для примера:



Как видно, айдишники исправились

Цитата
Если индексы меняются - в сейвах они так же меняются, следовательно какое-то сравнение и переиндексация проводится и во время загрузки игры, иначе зачем хранить эти данные в сейвах, если это не важно и не сравнивается?
Пишите что нельзя менять, а оказывается, они реиндексируются. Сами себе противоречите...

Цитата
Если же смотреть на формы - то это прямая аналогия классов, т.е. объектов содержащих набор свойств, а идентификаторы в 16-ричной системе счисления - это лишь одно из свойств формы, так же как и упомянутые пути к ресурсам. Есть так же идентификаторы в виде стрингов (т.н. EditorID). Как с этим всем работает игровой код - да одному Богу известно. Полная картина есть только у программистов с доступом к исходникам, мододелы в лучшем случае какие-то лоскуты от целой картины видят.

Аналогия с ООП вполне очевидна. Как с этим работает код вполне известно, если приложить немного усилий и логики.
Аватар nodtrial
nodtrial в 22:47:27, 09.02.2023
Нравится
Цитата
А что вы тогда пытаетесь показать скринами из xEdita? Разбирайте дампы памяти игры, раз уж речь про "песочницу".
При чём тут дампы памяти? Вы понимаете что адреса в памяти и индексы форм - это совершенно разные вещи?


Цитата
Где? Приведите пример.
Скринов эдита с прописанными индексами каждой формы Вам не достаточно?


Цитата
Как видно, айдишники исправились
Вы очень поверхностно размышляете. Вам показывает актуальный индекс формы, не более того. Я вам говорю про неочевидные взаимосвязи, которые выстраиваются между формами, их невозможно увидеть в редакторе. Вот просто пример - в редакторе Вы будете видеть что всё хорошо, а папирус будет выбрасывать NULL на проперти, который абсолютно верно выставлен в редакторе, и в новой игре будет работать прекрасно. Вы понимаете что деятельность игрового движка выходит далеко за то, что вы видите в редакторе?  smile  Вы уж конечно извините, но я думаю что Вы совершенно не понимаете о чём речь. Более того, не понимая чего-то Вы скорее готовы утверждать что это не Вы чего-то не знаете, а этого по-просту нет. Получается что это бесполезный разговор.

Цитата
Пишите что нельзя менять, а оказывается, они реиндексируются. Сами себе противоречите...

В чём? Как я уже написал выше - реиндексируются индексы форм. Но как это работает в функциях игрового движка? Откуда уверенность что все выстроенные взаимосвязи обновляются с учётом новых индексов? Всё очень зависит от того как написаны функции. И вот практика показывает - что нет, далеко не всё обновляет прописанные адреса. Это не увидеть ткнув мышью в консоли. Для того что бы это увидеть нужно дебажить заглючившие моды. Моих знаний хватает только для того что бы дебажить это в скриптах - и тут я абсолютно уверен в том что теряются проперти. Потому что это я своими глазами видел. В случае с Рад-Тараканом например - это происходит в функциях в коде движка. Тут я не могу провести дебаг. Но примерно понимаю почему происходит рад-таракан: вместо индекса в массиве сдвинутой формы возвращается скорее всего ноль, под индексом которого в массиве находится Рад-Таракан.


Цитата
Аналогия с ООП вполне очевидна. Как с этим работает код вполне известно, если приложить немного усилий и логики.
Да что Вам там очевидно. Речь о функциях глубоко в коде, которые обеспечивают взаимодействие форм. В игре, движок которой писали десятки-сотни человек, полтора  десятка лет - Вам всё очевидно. Больше сказок. Я вот пока вижу что Вам даже не очевидно понять о чём идёт речь. Хотя скорее здесь моя вина, плохо объясняю.
Аватар -=FenikS=-
-=FenikS=- в 23:47:38, 09.02.2023
Нравится (1)

Цитата
При чём тут дампы памяти? Вы понимаете что адреса в памяти и индексы форм - это совершенно разные вещи?
Вы прочитайте свой предыдущий ответ, что речь идет не об индексах, а о песочнице. У вас смешалось в кучу все.

Цитата
Скринов эдита с прописанными индексами каждой формы Вам не достаточно?
Нет, это же может быть результатом работы редактора, ведь так?

Цитата
Вы очень поверхностно размышляете. Вам показывает актуальный индекс формы, не более того. Я вам говорю про неочевидные взаимосвязи, которые выстраиваются между формами, их невозможно увидеть в редакторе. Вот просто пример - в редакторе Вы будете видеть что всё хорошо, а папирус будет выбрасывать NULL на проперти, который абсолютно верно выставлен в редакторе, и в новой игре будет работать прекрасно. Вы понимаете что деятельность игрового движка выходит далеко за то, что вы видите в редакторе?    Вы уж конечно извините, но я думаю что Вы совершенно не понимаете о чём речь. Более того, не понимая чего-то Вы скорее готовы утверждать что это не Вы чего-то не знаете, а этого по-просту нет. Получается что это бесполезный разговор.

А я думаю, что это вы, ничего не понимая, выдаете собственные домыслы за прописную истину и призываете остальных следовать за вашим мракобесием. У вас нет никаких доказательств, что все работает так, как написано выше. Сначала были индексы, теперь в ход пошли какие то "неочевидные связи". Если они для вас неочевидны, проблемы извините, ваши.

Цитата
В чём? Как я уже написал выше - реиндексируются индексы форм. Но как это работает в функциях игрового движка? Откуда уверенность что все выстроенные взаимосвязи обновляются с учётом новых индексов? Всё очень зависит от того как написаны функции. И вот практика показывает - что нет, далеко не всё обновляет прописанные адреса. Это не увидеть ткнув мышью в консоли. Для того что бы это увидеть нужно дебажить заглючившие моды. Моих знаний хватает только для того что бы дебажить это в скриптах - и тут я абсолютно уверен в том что теряются проперти. Потому что это я своими глазами видел. В случае с Рад-Тараканом например - это происходит в функциях в коде движка. Тут я не могу провести дебаг. Но примерно понимаю почему происходит рад-таракан: вместо индекса в массиве сдвинутой формы возвращается скорее всего ноль, под индексом которого в массиве находится Рад-Таракан.

Выше вы писали про смещения адресов, которые вызывают баги (собственную статью то помните?). Я вам указал, что игра корректирует эти смещения. Если нет уверенности, что и взаимосвязи корректируются, исследуйте вопрос, напишите развернутую статью с конкретным примером. А вы пишите только домыслы, но выдаете за истину.


Цитата
Да что Вам там очевидно. Речь о функциях глубоко в коде, которые обеспечивают взаимодействие форм. В игре, движок которой писали десятки-сотни человек, полтора  десятка лет - Вам всё очевидно. Больше сказок. Я вот пока вижу что Вам даже не очевидно понять о чём идёт речь. Хотя возможно здесь моя вина, плохо объясняю.
А что вам до их функций? Движок писали люди, закладывающие взаимодействие базовой игры и сторонних модов, такие элементарные вещи, как изменение порядка загрузки, там предусмотрены и реализованы, что видно на моем примере. Разумеется, там есть баги, без них никуда, но это не повод придумывать какие то неадекватные (к тому же, ничем не доказанные) способы  их обхода.
Аватар nodtrial
nodtrial в 00:27:06, 10.02.2023
Нравится
Цитата
Вы прочитайте свой предыдущий ответ, что речь идет не об индексах, а о песочнице. У вас смешалось в кучу все.
Ну и что не так? Я вижу что индексы - это свойства объектов, с которыми работает песочница. Адреса в памяти - совершенно "из другой оперы актёры".
Цитата
Нет, это же может быть результатом работы редактора, ведь так?
При чём тут вообще редактор? Вы поменяйте индексы у квестов в редакторе, и я посмотрю как оно будет у Вас прекрасно работать в игре, как оно автоматически всё подхватится и переиндексируется. А в редакторе всё будет просто замечательно.


Цитата
А я думаю, что это вы, ничего не понимая, выдаете собственные домыслы за прописную истину и призываете остальных следовать за вашим мракобесием. У вас нет никаких доказательств, что все работает так, как написано выше. Сначала были индексы, теперь в ход пошли какие то "неочевидные связи". Если они для вас неочевидны, проблемы извините, ваши.
Да у меня-то проблем как раз нет, с тех пор как я "вкурил" что их вызывает. Спорить не вижу смысла. Пусть у Вас и далее всё прекрасно будет.


Цитата
Выше вы писали про смещения адресов, которые вызывают баги (собственную статью то помните?). Я вам указал, что игра корректирует эти смещения. Если нет уверенности, что и взаимосвязи корректируются, исследуйте вопрос, напишите развернутую статью с конкретным примером. А вы пишите только домыслы, но выдаете за истину.

Да, я-то прекрасно помню. Я их называю адреса, можно называть их индексами, да хоть номерами формы. Вообще всё равно. А Вы начинаете наводить тень на плетень мешая в одну кучу эти адреса-индексы-номера с адресами переменных, которые хранятся в ОЗУ. 

Да, уверенности нет как это работает от начала и до конца. Есть только практика человека который с этим постоянно работает. А уверенность и полное понимание вообще вряд ли у кого-то есть, кроме тех кто имеет доступ к исходникам и имеет возможность в них копаться. Да и с исходниками понадобится тонна времени что бы в этом разбираться, если сам это не писал.

Цитата
А что вам до их функций? Движок писали люди, закладывающие взаимодействие базовой игры и сторонних модов, такие элементарные вещи, как изменение порядка загрузки, там предусмотрены и реализованы, что видно на моем примере.
Ага. Сейчас. Подумали. Как они подумали прекрасно видно на практике. Ключевое в этом высказывании "Движок писали люди". Те же люди, которые не подумали что взорвавшиеся мины пропадают после загрузки игры, если не выйти в главное меню. Или те же люди, которые не подумали что быстрый сейв в Скайриме LE периодически ломает игру. Но Вы верьте да, что эти люди уж точно всё продумали.

При всём уважении к труду программистов бетесды, которые правда сделали очень устойчивый к модам движок.

В любом случае, я конечно могу быть не прав. Но пока - у меня это работает именно так, как я описал. От Вас я тоже не увидел каких-то аргументов, кроме бесконечной веры в программистов бетесды, и двух очевидных скринов, свидетельствующих о том, что если плагин переместить - то индекс у него изменится. Если вдруг я увижу какие-то подтверждения того, что в чём то я безусловно ошибаюсь - я обязательно обновлю статью. Более того, правильно относится к этой статье как к точке зрения, а не абсолютной истине, о чём я даже пометку сделаю.

Исследований глубоких я конечно не проводил, код игры не разбирал, а все баги с которыми я встречался - долгоиграющие(проявляются вовсе не сразу), всё что я утверждаю - это результат практических упражнений с моддингом игры и выводов из этого. Могу только сказать что эти баги, которые я списываю на смещение адресов - НИКОГДА не получается спровоцировать на новой игре. То есть вот он у тебя перед глазами, ты его видишь "на сейве", тут же, не выходя из игры, запускаешь новую игру - и его нет. Вот ты спавнишь безголовых гулей "на сейве", запускаешь новую игру - и те же гули все с головами. И т.д.
Аватар roland1970
roland1970 в 00:24:23, 09.02.2023
Нравится
Вполне возможно автор сего трактата и прав, но... как всегда есть "но". В данном случае "но" говорит, что моды постоянно обновляются - выходят новые версии, кот. обычно при сортировки уже занимают другие места в списке загрузки, не говоря уже о новых интересных модах, которые появляются весьма часто. Ежели следовать логике автора и каждый раз начинать новую игру при установке нового мода или обновления старых, то на примере Скайрима, можно вообще не выходить из Хелгена и, как максимум, добраться до Ривервуда.  По своему многолетнему опыту общения с модами Скайрима могу написать абсолютно уверенно, что новые моды (ежели они изначально не багованные), установленные в середине игры, ничего не портят и ни каких багов не вызывают. Сильные баги вызывает замена одних модов на другие. Допустим у вас стоял мод на расширение Солитьюда от одного автора,  вы сносите старый мод и устанавливаете новый мод так же на расширение Солитьюда от другого автора. Вот тогда ждите багов, которые могут всплыть даже через N-ое количество времени. И, конечно, моды, где много скриптов. С ними, вообще, надо быть очень аккуратными и при установки, и при удалении. И кто точно вызывает баги - это огромные квестовые модификации при их удалении. Чтоб поиграть в что-нибудь, типа "Дозорного" или "Ригмор из Сиродила", я обычно делаю чистое сохранение, устанавливаю мод и прохожу полностью. Потом, после прохождения, полностью удаляю мод и все сохранения с ним связанные, а играть продолжаю с того чистого сохранения, которое сделал заранее, до установки квестового мода. А так, по возможности, стараюсь обойтись разнообразными ретекстурами и ремоделингами, те, которые без есп (есм), но, естественно, это не всегда получается. В данный момент в моём почти полностью замоденом Скайриме СЕ - 118 подключённых есп (есм) и на 15 Гб ретекстуров с ремоделингами.
Аватар nodtrial
nodtrial в 14:14:42, 09.02.2023
Нравится
Цитата
моды постоянно обновляются

Проблемы при обновлениях могут возникнуть только если менялись уже существующие адреса, или проперти скриптов. Авторы модов обычно об этом предупреждают и оставляют рекомендации по обновлению. Чаще всего это как раз - новая игра.


Цитата
каждый раз начинать новую игру при установке нового мода

И да, и нет. Об этом написано - можно либо оставлять резервные пустые плагины перед началом игры и заменять их на новые моды, либо сливать новые моды с существующими, либо добавлять их в конце списка, если это возможно. Но это требует каких-то минимальных навыков и понимания чуть больше среднестатистического пользователя.

Цитата
новые моды (ежели они изначально не багованные), установленные в середине игры, ничего не портят и ни каких багов не вызывают

Один человек - это не тестер. Зная как люди играют - ну не поговорил с Вами квестовый непись - Вы пошли дальше и забыли. А может и не знали вообще что он должен был поговорить. Тестировать что-то можно лишь на большой аудитории, хотя бы человек 50. У меня есть эта аудитория. Люди фокусируют внимание на разных вещах, ну встретился кому-то безголовый гуль - да и фиг с ним, спишем на "кривую беседку" или "мод с багами", остальное то вроде работает. Вы если по-вспоминаете нормально - то наверняка вспомните кучу мелких багов на которые просто не обращали внимания. Многие готовы с этим мириться, понимая что всё равно не разберутся в причинах. А многие и играют то как - понатыкал сотню-другую модов, поиграл до первого серьёзного бага, чертыхнулся на "кривую бетесду" и пошёл играть в другие игры.
Аватар -=FenikS=-
-=FenikS=- в 21:32:38, 09.02.2023
Нравится
не туда ответил
Аватар StValentineP
StValentineP в 10:49:02, 08.02.2023
Нравится
Цитата nodtrial;2 ()
LOOT категорически нельзя использовать после начала игры.
Внезапно.... biggrin смысл написанного ясен и после размышления становится интуитивно понятным. Даже понимаю для кого и с какой целю написана эта статья.
Но основное правило:
1. Новая игра всегда. И к новой игре надо быть готовому всегда.
Надо добавить:
2. Надо меньше модов.
За последние два года вышла серия модов сравнимых с DLC. Надеятся что они не пересекутся с вашими мелкими добавлениями может только наивный. Имхо в этом случае я вижу - миниальный пакет без изысков и один из таких крупных модов.
Тот же Sim Settlements 2 выкатил во второй части такую квестовую составляющую, что я вновь готовлюсь  к перустановке с минимумом только необходимых модов.
А теперь вот вышел еще The FensSheriff's Department - Bleachers 2. Пришел в основном из-за него. И...думаю как пришел так и уйду. Sim 2 закончу 2 часть тогда и думать буду.
Аватар nodtrial
nodtrial в 13:13:04, 08.02.2023
Нравится
Рад что получилось сделать выводы для себя из статьи.
Аватар Amon520
Amon520 в 19:11:45, 07.02.2023
Нравится (1)
>>наверняка встречались со странными ситуациями-багами, которые видны в одном прохождении и не встречаются если начать игру заново.

Оно может и так, всех тонкостей не знаю, но по своему скромному опыту скажу, что конкретно в Skyrim я такого не замечал. Хотя в течение одного прохождения многократно менял порядок модов в лаунчере, и, более того, однажды сносил старую Windows, и пришлось все эти моды устанавливать по новой. Были лишь конфликты между теми же реплейсерами (Bijin, Pandorable), но это легко лечилось перестановкой конфликтных модов. При удалении каких-то серьезных модов, кстати, использовал упомянутый здесь Fallrim Tools. Был даже один момент, когда простое удаление одного мода вызывало краш сохранения, но сейвы спасла именно эта прога. После очистки сохранение все-таки загрузилось.
Аватар nodtrial
nodtrial в 19:34:07, 07.02.2023
Нравится (2)
Большинство модов выдают достаточно мелкие баги. Многие (да чего уж - почти все) списывают это на "кривую беседку" или на "конфликт каких-то модов". Большинство влияет на квесты добавленные модами - а тут всё с лёгкой руки списывается на "кривой нерабочий мод". Ведь порядок ванильных модов смещается крайне редко - main файл и DLC обычно у всех в одном и том же порядке, в самом начале списка - следовательно и "сбить" их довольно непросто. Однако если есть в списке моды, которые глобально (ну или даже не глобально, но с добавлением новых объектов - это я не про вазу на столе, а про объекты-записи в эдиторе, например квесты со скриптами) меняют ванильные квесты - вот здесь начинается "красная зона".

Вообще - чем ближе к началу списка располагается мод - тем меньше шансов его повредить, думаю причины очевидны. Но бывает и такое - например вдруг понадобилось установить какой ни будь ESM мод во время прохождения - это гарантированно похерит сколь бы то ни было крупную сборку (ну на 100-200-300-2000 модов).  При чём понятно это будет не сразу, так как херятся зачастую какие-то не очевидные сходу вещи. Понятно что что-то не так станет через час, а то и 2-3 часа игры, зависит от ваших активностей. Выползшие косяки - будет достаточно сложно увязать с установленным 3 часа назад ESM - ведь он вообще никак к этим косякам формально не относится, и вообще всего лишь цвет воды в стакане изменяет. Вы начнете свои попытки найти "косяк", и если это Ваша сборка - Вы будете считать что где-то прое@ались и тщетно искать где (ну потому что косяк вовсе не в установленных модах, а в сбитых адресах, которые не дают им нормально работать), а потом начав новую игру и не обнаружив бага - ну решите что "кривая беседка". Если это чья-то сборка - то Вы решите что это просто сборка кривая, ну не мог же в самом деле один Ваш ESM испоганить сборку...

Ну вот как-то так всё обычно у модомесов происходит. Я ведь это не с кандачка придумываю - я очень долго мучался с такими проблемами - сам считая что так не бывает. А считаешь так - просто от банального незнания и непонимания как оно устроено. Представьте, каково было в средневековье поверить что Земля на самом деле круглая. У нас, конечно, ситуация не столь глобальная, но в целом - похожая.

Верить мне или нет - дело Ваше, обоснование своё я привёл.

p.s. Вот ещё момент, я это не могу утверждать наверняка, но мне кажется что более ранние игры беседки более устойчивы к смещению адресов за счёт того, что скрипты в них встроены в плагин, а не являются внешними прикреплениями к форме. Вообще, из моих наблюдений - сбиваются наиболее очевидно моды содержащие скрипты имеющие проперти из мастерфайлов: сбился мастерфайл, собьётся и скрипт. Наиболее устойчивы же моды так сказать замкнутые лишь на себе и на мастерфайлах мэйна и DLC. Опять же, думаю по понятным причинам.
Аватар zer02
zer02 в 21:30:21, 10.02.2023
Нравится (1)
если "сейв" загрузился, это не гарантия что всё пошло как надо.
Аватар Lyrfox
Lyrfox в 17:47:11, 07.02.2023
Нравится
Хорошо , здесь описана установка модов в ручном режиме и если их переставлять местами , или добавлять , но для этого , я так понял , и устанавливаются помощники - LOOT. FNIS . Wrye Bash и очень советуют установку первых двух для установки последовательности плагинов и файлов в NMM менеджере - именно они следят за этажами и сигнализируют при нарушениях , или тосутствии файлов и недостающих элементов ( пользуюсь NMM давно , ещё с первых версий и , в целом , помогает , но при наличии 100 и более модов , могут быть нестыковки по разным причинам и проверять отключая половину модов , или , как советуют , по одному , долго и часто получается не тот результат , что ожидается , а иногда просто всплывают новые глюки и чем лечить -  неизвестно , а часто исправляется простой переустановкой игры по верху старой , или началом новой игры ) . Благодарю за внимание !!!  respect  meeting
Аватар nodtrial
nodtrial в 18:05:49, 07.02.2023
Нравится (1)
Вы видимо не дочитали, или не до конца поняли суть описанного, это моя вина, но я не знаю как объяснить понятнее - а объяснить очень хочется, потому что эти ошибки встречаются у подавляющего большинства модомесов (к коим и себя отношу, и так же совершал эту ошибку). LOOT категорически нельзя использовать после начала игры. LOOT периодически обновляет свои базы - и он легко после обновления перетасует моды в новом порядке угробив прохождение, даже если до начала прохождения всё так же сортировалось LOOT'ом. Кроме того, LOOT как раз расставит новые моды "под новую игру". Правильно с точки зрения своей базы, но при этом вполне легко сместит адреса на текущем прохождении при добавлении какого либо мода - он банально за этим не следит. И не существует (мне не встречалось) приложений адекватно следящих за порядком.

В Мод Органайзере можно блокировать смещение модов, но почему-то лично у меня это не очень хорошо работает. Возможно просто я не разобрался.

FNIS - это же приложение для встраивания анимаций в скайрим, или я что-то путаю?
Wrye Bash - не думаю что он следит за порядком адресов в текущем прохождении. Было бы очень удивительно. Для этого ему как-то надо собирать статистику подключенных модов. Ну допустим он это из сейва делает. Но я ни разу не видел каких-то таких настроек в нём  wink

В теории восстановить сбитый порядок можно вручную, по сейву с помощью утилиты Fallrim Tools, но это гладко лишь на бумаге - когда условно 30 модов подключено. А выставлять 500 и более модов по порядку из не очень удобного Fallrim Tools (ну он просто не предназначен для этого)... ну такое себе...
Лучше следить за порядком с учётом всего выше описанного, держать его сохранённым в бекапах. И не мучать игру новыми модами, если уже начали её проходить. Это самый верный способ. А если всё же появился какой-то мод, который очень хочется добавить - то добавьте и начните новую игру. Остальные способы - для довольно продвинутых модомесов.
Аватар zer02
zer02 в 22:19:40, 10.02.2023
Нравится (1)
nodtrial

FNIS - по сути верно вами сказано (считывает папку анимаций актёров и опционально зверья, скармливает всё это добро движку,для списка загрузки модов ни как не создан).
LOOT - как уже писал страшная хрень,если сборку составляли с зарождения блоками (сначала всё косметическое для гг > графоний > свет,вода,реплейсеры ландшафта  > а потом самый смак сыплешь геймплей и прочее,хотя порядок можно изменить,но именно блочность лучше сохранять,а сам loot лучше не беспокоить.

WryeBash  именно это и делает - читает сейв и выдаёт тебе список,сравнивает с текущим и помечает что куда свалило\съехало и прочее,на этом его помощь заканчивается (вроде бы,  заканчивается).
Тут то ручёнками и перемещаешь всё как было,но вселенную не нае...шь простой перестановкой "как было" - 60% модов с нексуса конфликтуют друг с другом, по этому перезапись одного другим с помощью порядка загрузки, в целях "как было"  и при этом появлении нового мода в этом порядке приведёт к другому вылету даже на щах
"у меня новая игра,на хер пошли,чтоб никаких вылетов!!"
По этому,при внесении нового мода в сборку (скрипты и что то "серьёзное",к примеру изменённая ваниль.-лока на кастомную) исходить нужно в первую очередь из правила совместимости, а не "я сделал как было и профит".
Аватар nodtrial
nodtrial в 02:35:25, 11.02.2023
Нравится (1)
Цитата
LOOT - как уже писал страшная хрень
Про лут не соглашусь, это хороший инструмент, в нём кстати можно прописать собственные правила сортировки.
Аватар zer02
zer02 в 23:32:29, 11.02.2023
Нравится
Да,он хорош по своей сути,но выставленный собственноручно порядок загрузки, горит ярким пламенем после изменений вышеупомянутым монстром)
О правилах расстановки и изучение этой функции - к сожалению, на такие подвиги, у меня лично, времени нет.
avatar
Gamer-mods.ru © 2012 - 2023. Все права защищены. Копирование материалов без указанной активной ссылки на данный сайт запрещено.