NokiMo
DogmaMods
DogmaMods

patreon


Отчет 16

Снова приключалась проблема с вылетом из CK, и снова из-за диалоговой вкладки в квесте. Только на этот раз всё намного серьезнее, и я уже несколько дней с этим безрезультатно пытаюсь бороться.

Это еще на прошлой неделе началось, но тогда проблема сама по себе куда-то исчезла на следующий день. Вылетало только в одном квесте, и не при открытии вкладки, а при редактировании там диалогов. Теперь вылет из программы происходит при открытии диалоговой вкладки любого квеста.

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

Может кто помнит, у меня была когда-то аналогичная проблема, которую я решил удалив все диалоги из dragonborn.esm. Я полагал, что проблема заключается в их количестве, и пока всё указывает на то, что так и есть, но что странно - я еще не добавил даже близко такое же количество новых диалогов, которое удалил из Dragonborn.esm, а проблема уже вернулась. Возможно здесь что-то еще, о чем я пока не догадываюсь.

Я тогда рассчитывал на то, что когда проблема вернется однажды, я проделаю то же самое и со skyrim.esm, то-есть, конвертирую его в esp, удалю из базовой игры какую-то часть диалогов, конвертирую обратно, и продолжу работать. Но тут не всё так просто, как оказалось - конвертировать его нельзя, по крайней мере tes5edit этого не позволяет сделать, но мне удалось через wryebash, после чего загрузил в creation kit (кстати загрузка происходила очень долго, минут 15), после чего я произвел удаление некоторых диалогов из главных квестов игры, которые мне для работы никаким образом не нужны, после чего конвертировал обратно в esm, и уже потом загрузил свой плагин, как и обычно. И да - это сработало, но, во-первых, загрузка плагина значительно увеличилась, доходит до 20-ти минут, что сделает работу практически невозможной, но это не всё, во-вторых, игра с этим модифицированным skyrim.esm не загружается, мне приходится подменять его на оригинальный перед запуском.

То-есть, если я решу вот так продолжить работу, то будет примерно следующее: загружаю creation kit, жду 15-20 минут, работаю, далее, чтобы проверить в игре что-то, сохраняюсь, также жду минут 5 пока сохранит (это тоже происходит гораздо дольше чем на оригинальном skyrim.esm, видимо там были какие-то оптимизации, которые теряются при конвертировании или редактировании в CK), затем подменяю skyrim.esm, чтобы игра могла запуститься, проверяю, всё что мне нужно в игре, затем снова подменяю skyrim.esm чтобы я мог продолжить работу и тд. Это еще не учитывая того, что CK часто вылетает, например, при попытке добавить скрипт. То-есть, работа превратится в сущий кошмар. Можно конечно еще дополнительную установку игры сделать, на которой я буду тестировать, и создать bat файл, который будет копировать из одной установки в другую измененные файлы, но это всё равно не отменяет другие проблемы. И это я еще только подтвердил факт успешного запуска, и вовсе не факт, что мой мод не сломается от такого модифицированного skyrim.esm, все таки наверняка не просто так его запретили редактировать в tes5edit.

Сам по себе вылет стабильный, определить конкретную причину которого не представляется возможным, я не нашел никаких инструментов или плагинов для этого. Журнал windows в ошибке creation kit указывает на сбойный модуль Windows\SYSTEM32\ntdll.dll, а по коду ошибки, что там же был указан, я нагуглил, что это что-то связано с переполнением стека вызовов. Я не особо в этом разбираюсь, но видимо все же это как-то связано с количеством диалогов. Открытие диалоговой вкладки происходит довольно долго, и чем больше диалогов, тем дольше, к примеру на чистом плагине, только созданном: 1-2 секунды, у меня: секунд 10-15, наверное какая-то функция перепроверяет их, или что-то в этом роде, и когда их становится слишком много, что-то ломается.

У меня также была надежда, что вот такой способ сработает: создать отдельный плагин на базе skyrim.esm, и удалить в нем часть диалогов из базовой игры, далее сохранить этот плагин и затем конвертировать его в esm, а потом подключить при загрузке thief. Но это также не решило проблему, квесты на самом деле не удалены а просто помечены как удаленные, правда диалогов в них нет, но видимо и они не удаляются, а также подтягиваются при загрузке плагина. Жаль, если бы это сработало, я бы потом просто удалил эту зависимость от данного плагина во время релиза, чтобы оригинальные квесты игры продолжали работать с подключенным thief, но к сожалению эта идея нерабочая.

Решил попробовать снова на Creation Kit SE, сделал чистую установку с минимумом модов, но там аналогичная проблема. В любом случае, у меня на SE не сохраняется плагин, также вылетает, эта проблема была уже давно, и никуда не делась. Так что и этот вариант отпадает.

Также я проверял на разных пк, проблема одинаковая.

В общем, полный тупик пока что, возможно кто-то из вас даст мне еще идей.

Я знаю только один вариант, но он очень трудоемкий, к которому я не хотел бы прибегать, но придется, если ничего другого не найду в ближайшее время. Это разделить плагин на два отдельных, при чем, сделать это надо будет таким образом, чтобы я мог их в creation kit запускать независимо друг от друга, то-есть, между ними не должно быть зависимостей. Иначе, если они будут загружены оба, то эта же проблема никуда не денется, ведь все диалоги будут загружены. То-есть, я не могу просто взять за основу текущий плагин, а работать на новом, надо именно четко разделить их, вырезать Тихолесье из одного, а из другого всё кроме Тихолесья, а взаимодействие между ними произвести через отдельный плагин, например вывести переменные в dogma - engine.esm.

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

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

Всё это только в самом крайнем случае, если других вариантов найти не удастся. А пока я еще не сдался, и каждый день пробую кучу всего. У меня один раз получилось сделать так, что skyrim.esm после редактирования вел себя как оригинальный, то-есть, грузился так же быстро, но на нем случается вылет во время попытки сохранить thief. Сейчас вся надежда на то, что у меня получится выяснить в чем заключается эта проблема, я действую путем исключения и это совсем не быстрый процесс, так как каждый раз мне надо загружать плагины в CK и проверять.

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

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

И как всегда, огромное спасибо за вашу поддержку!

Comments

Dawnguard не используется, он не подключен к моему моду, только skyrim.esm и dragonborn.esm

Dogma

Спасибо! Я попробую этот способ.

Dogma

Once you have finished creating the sub-file for the collection of quests you want to group together, it is easier to close TES5Edit then re-open it without the new file loaded, so that you can more easily select all of the records that you want to delete from the main file without also deleting them from the new file. I have completed the process for the Dragonbridge quest and sidequests (removing 1,438,210 bytes from the main file), and you can download the results https://www.mediafire.com/file/gmi0omgxcjyc2kp/Dogma_-_Thief.esp/file and https://www.mediafire.com/file/erl3j2us11fp2dx/Dogma_-_Thief_Part_11.esp/file

reinheitsgebot

I am testing this right now. It appears as though TES5Edit is not very good at copying SCEN Records, and some will need to be copied several times until they finally make it into the new file. Just scroll through the list of SCEN in Thief.esp and select all of the ones that are yellow, then right-click and "Copy as override with overwriting" until they turn green.

reinheitsgebot

One you are ready to release the mod, you can use the same process in reverse to copy all of the DIAL, DLBR, INFO, and SCEN Records back into a single Thief.esp file. Just be careful of the Records that exist in multiple files. If there are updates to a Record that have not been reflected across all copies of that Record, be sure to copy the latest version into the main file last to overwrite the older data with the new.

reinheitsgebot

The same menu that appears when you select and copy the Records also allows you to select "Remove" which will delete them all from the main file. This will cut down on the amount of DIAL and INFO data that you are required to load in the CS by upwards of 90% if you make enough files. One additional difficulty you will face is the dialog views. The .xml files generated by the CS are required to correctly load the .esp files, and are saved on a per-file basis. Solving that problem should be as simple as copying the XML documents to appropriately-named directories.

reinheitsgebot

Repeat this process with the side-quests (everything starting with hp_db), copying the owned Records from each of those into the same file. It's possible for Record types that can contain conditions or scripts to reference more than one QUST, which will result in those being copied multiple times into the same file, or possibly into multiple files. In the case of being copied into the same file, nothing bad happens - it will simply replace the existing data with identical data. In the second case, there should not be dependencies created but there will be multiple copies of certain Records, meaning that edits to those Records will need to be repeated across all copies in all files. Hopefully this is rare.

reinheitsgebot

If I open the mod file in TES5Edit, and go to the bd_sq_db quest entry, I can see in the bottom that there are 1514 references to that QUST Reference. All DIAL, DLBR, INFO, and SCEN Record types must be "owned" by a QUST, and contain a required field pointing back to the owning quest. From the "Referenced By" tab at the bottom, it is possible to shift-select or ctrl-select all such records, then right-click on one and "Copy as override into..." then create a new file. For DIAL records, you want to use "Deep copy as override" to include their sub-records.

reinheitsgebot

It sounds like the dialog is the main issue, in which case the best solution would probably be to use TES5Edit to move dialogs belonging to a given quest into a new file, and then delete the dialogs from Thief.esp itself.

reinheitsgebot

It may be necessary to break the Thief.esp file into multiple pieces. So long as each piece is not dependent upon previous pieces but instead a very small master, you should be able to work on one or two parts independently of others.

reinheitsgebot

Brewmasterhal here: The comment editing system on this page is trash, so to make things clearer I will split my idea into multiple comments and reply to myself.

reinheitsgebot

Вы пробовали удалить диалоги из Dawnguard.esm?

Highborn

Нужно пролистать ниже текущих отчетов. Я кину ссылку в личку.

Dogma

Где я могу скачать последний мод?

真 张


Related Creators