Project Zomboid Руководство

Project Zomboid зависает на Getting server info: где обрывается подключение

Найдите этап сбоя Getting server info в Project Zomboid: сборка, запущенный экземпляр, UDP-маршрут и журналы подключения.

Project Zomboid зависает на Getting server info: где обрывается подключение

Сопоставьте одну неудачную попытку входа с журналом сервера за то же время. Надпись Getting server info показывает текущий этап клиента, но сама по себе не указывает на firewall, повреждённый мир или конкретный мод. Полная переустановка уничтожает часть диагностических следов, а причина может остаться.

Инструкция рассчитана на Steam-клиенты для ПК и уже установленный Linux-сервер. Пути взяты из руководства по Ubuntu: пользователь pz, домашний каталог /srv/pz, установка /srv/pz/server, имя сервера servertest. Подставьте свои значения. Build 42 уже доступна в публичной ветке: сравнивайте полные версии запущенных программ, а не название ветки из старой инструкции.

Определите, проблема у одного клиента или одного сервера#

Сделайте два сравнения, не меняя мир. Может ли проблемный клиент войти на другой совместимый ванильный сервер? Может ли другой игрок войти на ваш? Запишите время, адрес назначения, порт подключения и сообщение для каждой попытки. Сбой на всех серверах направляет проверку к клиенту и Steam; сбой у всех игроков только на вашем — к серверу или его сети.

Выбирайте адрес по расположению клиента. В общей локальной сети проверьте частный адрес серверного компьютера. Из другой сети используйте публичный. Адрес 127.0.0.1 всегда указывает на компьютер, где запущен клиент. Проверка своего публичного адреса из домашней сети зависит от hairpin NAT роутера и не заменяет внешний тест.

В обсуждении с администратором форума разработчика для проблем с разными серверами предложена проверка другой Steam Download Region. Сначала запишите исходный регион; если результат не изменился, верните его. Это обратимая диагностическая проба, а не способ открыть недоступный выделенный сервер.

Убедитесь, что сервер завершил запуск#

В отдельном SSH-сеансе посмотрите данные фактического серверного пользователя:

bash
sudo -iu pz sh -c 'id; printf "%s\n" "$HOME"; ls -ld "$HOME/Zomboid" "$HOME/Zomboid/Logs"'
sudo -iu pz find /srv/pz/Zomboid/Logs -maxdepth 2 -type f -printf '%TY-%Tm-%Td %TH:%TM %p\n'
sudo ss -lunp 'sport = :16261 or sport = :16262'

Команды собирают наблюдения, но не подтверждают готовность к игре. Найдите текущий журнал по времени изменения и откройте участки запуска и неудачного входа. Процесс Java может ещё загружать мир, скачивать Workshop или завершаться с ошибкой до готовности сети. Наличие UDP-сокета также не означает, что игрок уже может появиться в мире.

Ищите первую существенную ошибку и строки перед ней. Разделяйте сбой инициализации Steam, загрузки Workshop и чтения мира. Последняя видимая строка не всегда содержит причину. В одном обращении по Build 42 значение имело расположение установки; переносить из-за этого каждый сервер в другой каталог не следует.

Процесс и открытый сокет — промежуточные наблюдения. Завершает проверку вход в нужный мир.

Сравните версии до изменения сети#

Прочитайте версию клиента и версию из начала серверного журнала, включая номер небольшого обновления. Сопоставьте выбранные ветки Steam. Фразы «оба на Build 42» недостаточно, если один участник уже перешёл на более свежую unstable-версию.

Для мира Build 41 сохраните совместимую установку сервера, а для клиентов выберите документированную разработчиком ветку legacy41. Доступность веток dedicated app 380870 проверяйте отдельно: не все клиентские ветки обязательно доступны серверу. Для нового мира Build 42 согласуйте публичные версии. Разделение описано в руководстве по веткам и мирам. Не обновляйте единственную установку поверх старого мира ради проверки, изменится ли подключение.

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

Проверьте оба UDP-пути по отдельным границам#

Для стандартной конфигурации выведите только необходимые параметры без паролей:

bash
sudo -iu pz sed -n '/^DefaultPort=/p; /^UDPPort=/p; /^Public=/p' /srv/pz/Zomboid/Server/servertest.ini
sudo ufw status verbose

Обычная пара — DefaultPort=16261 и UDPPort=16262. В разъяснении технической поддержки оба порта указаны как UDP. Если ваша сгенерированная конфигурация отличается, проверяйте реальные значения. Старые диапазоны TCP «по порту на игрока» сюда переносить не надо.

Проверьте firewall ОС, firewall провайдера и перенаправление на нужный домашний компьютер. Правило роутера может указывать на вчерашний DHCP-адрес и выглядеть правильным. При двойном NAT нужны оба маршрутизатора; при CGNAT — доступный извне адрес либо решение, которое действительно передаёт UDP.

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

Отделите моды, сохранив исходный мир#

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

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

После исправления войдите в исходный мир обычным игровым аккаунтом, отключитесь и подключитесь снова. Сохраните краткую запись версий, проверенных адресов и результата. Для обращения в поддержку приложите её и очищенные фрагменты журналов. Пароли, токены и базы аккаунтов игроков передавать не нужно: они не заменяют описание конкретного неработающего этапа.