Отчет 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 (6)
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.
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.
Вы пробовали удалить диалоги из Dawnguard.esm?
Dawnguard не используется, он не подключен к моему моду, только skyrim.esm и dragonborn.esm
Где я могу скачать последний мод?
Нужно пролистать ниже текущих отчетов. Я кину ссылку в личку.
