"Бесконечная инициализация" - ЧТО ДЕЛАТЬ?
Самое нужное для исправления
Для исправления данной проблемы нам понадобится мод "Mod Manager" и его дополнение "Mod Manager: Server". Они просто необходимы для удобного обращения с модами.
Ссылки:
https://steamcommunity.com/sharedfiles/filedetails/?id=2694448564
https://steamcommunity.com/sharedfiles/filedetails/?id=2725216703
Ну а так же нам понадобится немного терпения и усидчивости :)
Из-за чего вообще происходит такая шляпа?
Не стоит говорить, что я - не кодил игру, а тем более достоверно не знаю, как работает загрузка модов на сервер. Я основываю свое мнение на моем опыте игры и опыте создания сборок, запуска серверов.
Сразу хочу обозначить, что на бесконечную инициализацию (скорее всего) НЕ влияет количество оперативной памяти, выделенной на сервер, но и слишком мало выделять не стоит. В зависимости от сборки, хватит от 6 до 8 GB оперативной памяти максимум.
Чаще всего, проблема либо в несовместимости (конфликта) модификаций, или же в том, что игра просто не может "достучаться" до Steam, чтобы получить файлы модификации (в чем можно будет убедиться, когда я буду разбирать второй, более удобный способ).
P.S: Я точно не знаю, есть ли данная проблема на 42-ом билде, т.к практически на нем не играю. Но с данной проблемой на 41-ом билде я столкнулся чуть ли не в первый десяток часов (из моих 700), когда попытался поиграть с друзьями.
Настройка порядка загрузки
Проблема спокойно может крыться в том, что сервер пытается сначала загрузить моды без зависимостей (библиотек, других модов для работы конкретного мода), но он, почему-то, зависает и ломает нам всю загрузку.
Как советует Gemini, порядок загрузки должен быть примерно таков (приоритеты сверху вниз, т.е сверху - библиотеки, базы, API. Снизу - фиксы и минорные, малозначущие моды).
Главный технический принцип Project Zomboid (как и большинства других движков): строка Mods= считывается слева направо (а в Mod Manager — сверху вниз). Это значит, что каждый последующий мод в списке имеет более высокий приоритет и может перезаписывать (overwrite) файлы предыдущего.
К слову, если вам лень самому выстраивать порядок загрузки модов, то можете скинуть любой нейросети свою сборку и попросить сделать порядок загрузки (желательно в режиме 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.