"Бесконечная инициализация" - ЧТО ДЕЛАТЬ?

Project Zomboid21 views3 favorites7 min readRussianby ШНЫРЬ-КУРЬЕРUpdated 3 JulView on Steam ↗

Самое нужное для исправления

Для исправления данной проблемы нам понадобится мод "Mod Manager" и его дополнение "Mod Manager: Server". Они просто необходимы для удобного обращения с модами.

Ссылки:

https://steamcommunity.com/sharedfiles/filedetails/?id=2694448564
https://steamcommunity.com/sharedfiles/filedetails/?id=2725216703

Ну а так же нам понадобится немного терпения и усидчивости :)

Из-за чего вообще происходит такая шляпа?


Cегодня мы будем говорить только про запуск через внутриигровую функцию "Свой сервер"

Не стоит говорить, что я - не кодил игру, а тем более достоверно не знаю, как работает загрузка модов на сервер. Я основываю свое мнение на моем опыте игры и опыте создания сборок, запуска серверов.

Сразу хочу обозначить, что на бесконечную инициализацию (скорее всего) НЕ влияет количество оперативной памяти, выделенной на сервер, но и слишком мало выделять не стоит. В зависимости от сборки, хватит от 6 до 8 GB оперативной памяти максимум.

Чаще всего, проблема либо в несовместимости (конфликта) модификаций, или же в том, что игра просто не может "достучаться" до Steam, чтобы получить файлы модификации (в чем можно будет убедиться, когда я буду разбирать второй, более удобный способ).


P.S: Я точно не знаю, есть ли данная проблема на 42-ом билде, т.к практически на нем не играю. Но с данной проблемой на 41-ом билде я столкнулся чуть ли не в первый десяток часов (из моих 700), когда попытался поиграть с друзьями.

Настройка порядка загрузки

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

Как советует Gemini, порядок загрузки должен быть примерно таков (приоритеты сверху вниз, т.е сверху - библиотеки, базы, API. Снизу - фиксы и минорные, малозначущие моды).

Originally posted by Gemini:
Главный технический принцип Project Zomboid (как и большинства других движков): строка Mods= считывается слева направо (а в Mod Manager — сверху вниз). Это значит, что каждый последующий мод в списке имеет более высокий приоритет и может перезаписывать (overwrite) файлы предыдущего.

(почти) Универсальная таблица правильного построения порядка загрузки

Приоритет загрузки
Категория модификаций
Почему именно здесь?
Начало списка (Фундамент)
Библиотеки, API, фреймворки
Они не добавляют контент, а создают функции. Если их не загрузить первыми, все зависимые моды выдадут ошибку при инициализации
Верхняя треть (Глобальные изменения)
Глобальные изменения, сложные механики
Моды, которые глубоко перекраивают логику игры (например: анимации персонажа, ампутации, гигиену, новые системы болезней).
Середина (тяжелый контент)
Машины, оружие
Моды со сложными скриптами, физикой, деталями тюнинга и кастомными листами спавна предметов в мире.
Ниже середины (Легкий контент)
Одежда, предметы, еда, ретекстуры
Простые аддоны, добавляющие новые вещи, предметы интерьера или заменяющие текстуры зомби/моделей.
Нижние моды
UI (Интерфейс) и QoL (Качество жизни, удобство)
Скрипты, которые просто выводят информацию на экран или автоматизируют рутину. Они почти не трогают базу данных мира.
Самый конец (Корректировки)
Минорные (малозначимые) исправления, хотфиксы, переводы.
Критически важно ставить в самый низ. Чтобы русификатор или фикс сработал, он обязан загрузиться после самого мода и перезаписать его файлы своими.

К слову, если вам лень самому выстраивать порядок загрузки модов, то можете скинуть любой нейросети свою сборку и попросить сделать порядок загрузки (желательно в режиме Pro, которая предназначена для сложных задач), и она все сделает за вас. Вам останется лишь вставить строку в txt файл сервера.
Путь такой: (C:\Users\(имя пользователя)\Zomboid\Server), далее находите в папке название вашего сервера. Например, "servertest.ini". Далее ищете строчку "Mods=" и вставляете все то, что вам наделала нейросеть.

Так же на помощь приходит дополнение для Mod Manager: https://steamcommunity.com/sharedfiles/filedetails/?id=3180893708

Решение "дедовским" методом.

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

Если вы столкнулись с такой проблемой, то, сначала, выключите сервер, а после выключите все моды. Да, вообще все. После попробуйте запустить сервер (скорее всего, он запуститься сразу и без каких-либо проблем).
После этого заходите обратно в Mod Manager: Server и включайте от 10 до 20 модов. Наша задача на этом этапе выявить, какие моды "стопорят" инициализацию сервера.
Если все будет хорошо, то после примерно полутора минут (а иногда хватает и секунд 20-30) статус запуска сервера сменится на "Создание резервной копии", значит все хорошо. Выключаем сервер, а после добавляем еще модов.

Но если вы, включив очередную десятку модов обнаружили, что инициализация идет слишком долго (больше двух-трех минут), то выключаем сервер. Теперь же наша задача в том, чтобы сузить круг модов. Если вы включили 10 модов, то оставьте включенными только 5 из них. Если проблема осталась, то гад сидит среди этих пяти. Если инициализация сменилась "Созданием резервной копии", то это значит, что плохиш сидит в другой пятерке.

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

Как я написал, такой способ будет очень долгим, если вы собираетесь захостить сборку с большим количеством модов (например, 200-300). Будет очень нудно включать каждый и смотреть на результат. К тому же надо учитывать, что длина инициации зависит от количества и "тяжести" (веса) модов.

В любом случае, перебрав их всех вы успешно обнаружите тех, кто портил вам всю малину.

Более удобный и оптимизированный способ

Этот способ я открыл для себя достаточно недавно. Как неудивительно, он оказался куда более оптимизированным, но над ним тоже нужно посидеть.

Итак, сначала матчасть:

По пути C:\Users\(имя пользователя)\Zomboid у вас хранятся разные файлы. Они нам не нужны, кроме одного: coop-concole.txt

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


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

Сначала, нужно зайти в игру и запустить сервер с модами, а после немного подождать.
Если иницализация затянулась и вы, через некоторое время, открыли консоль, и видите, что в самом внизу есть подобные строчки:


то, перед тем как делать какие-то выводы, вам нужно через некоторое время (буквально хватит секунд 5-10), после чего заново открыть txt файл консоли. Если та же сама строчка там и осталась (т.е она является самой последней, новых в файл не добавилось) - вы нашли мод, который все вам ломает.
Но проблема в том, что в этом файле указан ID мода, а не его название. Как нам понять, каково название этого мода?
Тут тоже все просто. Открываем браузер и пишем вот это:

https://steamcommunity.com/sharedfiles/filedetails/?id=[ID зависшего мода]

после чего мы переходим на Steam страницу мода в мастерской. Да, все эти циферки - просто ID мода в мастерской.
Переходим в Mod Manager: Server и выключаем глючный мод.

А далее вновь запускаем сервер и следим через txt файл за его загрузкой.
Только вот слишком нудно переоткрывать его раз за разом... Неужели нельзя сделать, чтобы txt обновлялся в реальном времени?
Оказывается, можно!
Для этого мы заходим в папку с coop-console.txt и, с зажатым Shift-ом нажимаем ПКМ.


в контекстном меню нам открывается опция "Открыть окно PowerShell здесь". Нажимаем.
на этом моменте позволяется почувствовать себя хакером. Далее в эту консоль мы прописываем такую команду:

Get-Content coop-console.txt -Wait


если вкратце, эта команда считывает данные из txt файла и, при любом его изменении, пишет его содержимое в консоль. Теперь, когда мы запускаем сервер, можем наблюдать, что консоль сама летит, и заново открывать нам ничего не надо!

Теперь если мы видим, что мод достаточно долго висит с статусом 0/0 download - останавливаем запуск сервера, находим название мода описанным выше способом и выключаем его в Mod Manager.
Такое нужно проделать, пока сервер не запустится.

Вот пример:


Как вы тут можете видеть, Powershell остановился на моде с ID 3420581050. Если находить его в мастерской, то это будет вот этот мод:
https://steamcommunity.com/sharedfiles/filedetails/?id=3420581050

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


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

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

Если вам вдруг понадобилось остановить конкретно Powershell, то нажмите сочетание клавиш CTRL + C

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

Концовка

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

Я не уверен, но, может быть, эти фишки помогут, если вы будете хостить сервер не через внутриигровую функцию (о которой мы сегодня и говорили), а через "Project Zomboid Delicated Server". НО, опять же, я не проверял. Оставляю это дело вам.

В конце же хотелось просто вам поблагодарить за прочтение этого руководства. Мне будет приятно, если вы просто поставите высокую оценку.
Награды можете не давать, т.к я все равно баллы за них не получу (спасибо новому обновлению Steam).

Приятного выживания в модифицированном мире Project Zomboid! Счастья вам!

This guide was created by its original author on the Steam Community. Are you the author and want it removed? Request removal.