Ошибка Code 5 в Project Zomboid: как найти причину в журналах

«Code 5» сам по себе не обозначает единую официальную причину. Исключение Java, занятый порт и неудачное подключение требуют разных проверок. Источник PZFans рассматривает Build 42.19; сначала найдите точную ошибку и соседние строки, а не меняйте файлы наугад.
Не удаляйте erosion.ini, папку персонажа или сетевое сохранение как универсальное исправление: можно потерять данные и не устранить причину. Сначала штатно закройте игру и сервер и сделайте копию всей пользовательской папки Zomboid.

Резервная копия и журналы
Полная копия папки Zomboid при выключенной игре и остановленном сервере сохраняет миры, базы игроков, настройки, логи, конфигурацию, списки и локальные моды. Загрузки Steam Workshop обычно лежат отдельно в библиотеке Steam: запишите их ID и версии или отдельно сохраните содержимое, если нужна точная сборка мода.
| Данные | Windows | macOS / Linux |
|---|---|---|
| Пользовательская папка | %UserProfile%\Zomboid\ | ~/Zomboid/ |
| Настройки сервера | %UserProfile%\Zomboid\Server\<server>.ini | ~/Zomboid/Server/<server>.ini |
| Клиент | %UserProfile%\Zomboid\console.txt | ~/Zomboid/console.txt |
| Host Game | %UserProfile%\Zomboid\coop-console.txt | ~/Zomboid/coop-console.txt |
| Выделенный сервер | %UserProfile%\Zomboid\server-console.txt | ~/Zomboid/server-console.txt |
| История | %UserProfile%\Zomboid\Logs\ | ~/Zomboid/Logs/ |
| Архив поддержки, если есть | %UserProfile%\Zomboid\logs.zip | ~/Zomboid/logs.zip |
Скрипты запуска Windows dedicated server могут отсутствовать в пакете клиента macOS. Название запускающего файла не объясняет сбой: смотрите вывод консоли и созданные журналы.
Найдите сообщение и выберите проверку
| Сигнатура | Что означает по источнику | Следующее действие |
|---|---|---|
| NullPointerException, Exception, Caused by | Исключение или другой сбой исполнения; NullPointerException не универсальный Code 5 | Сохраните всю трассировку, найдите первый относящийся файл, класс, Lua-путь или ID мода после Caused by; проверяйте на копии |
| BindException, Address already in use, bind failed | Требуемый порт уже занят процессом или другим сервером | Прочитайте DefaultPort, UDPPort и включённый RCONPort в INI; определите процесс, остановите лишний либо задайте свободный порт и перезапустите один сервер |
| timeout, connection failed, server is not responding, повторные разрывы | Подключение не завершено; сервер может запускаться, быть недоступным или заблокированным; адрес, порт или ветка могут отличаться | Дождитесь готовности сервера, проверьте адрес, порт, firewall/NAT и совпадение веток и сборок |
| checksum, workshop, mod, version mismatch | Не совпадает содержимое игры или модов | Сверьте ветку, Workshop ID, ID модов, порядок загрузки и скачанные версии; дождитесь загрузки, перезапустите; не стирайте данные игроков |
| Перед сбоем назван файл сохранения, базы или конфигурации | Только названный в журнале файл может быть нечитаемым или несовместимым | После полной копии переместите или переименуйте только названный файл с возможностью восстановления; не удаляйте весь мир или каталог персонажа |
Поиск в текущем журнале
- При подключении к чужому серверу начните с console.txt пострадавшего клиента.
- Для Host Game сопоставьте coop-console.txt хоста с console.txt клиента.
- Для выделенного сервера сопоставьте server-console.txt и console.txt игрока.
Для Windows источник предлагает выполнить в PowerShell поиск по имеющимся консольным журналам:
Get-ChildItem "$env:USERPROFILE\Zomboid\*console.txt" -File -ErrorAction SilentlyContinue | Select-String -Pattern "exception|error|caused by|bind|address already in use|timeout|checksum|workshop|version mismatch"
Для macOS и Linux приведена команда:
grep -niE "exception|error|caused by|bind|address already in use|timeout|checksum|workshop|version mismatch" ~/Zomboid/*console.txt 2>/dev/null
Не останавливайтесь на последней общей строке: найдите первое исключение или ошибку той же попытки запуска, сохраните трассировку целиком и непосредственно предшествующие строки.
Порты: только при соответствующей ошибке
Экран подключения предлагает 16261 по умолчанию; если сервер настроен иначе, ориентируйтесь на INI и сообщение об ошибке. По дополнительному источнику Loafhosts, у самостоятельно размещённого сервера PZwiki указывает DefaultPort 16261 и UDPPort 16262 по UDP и RCONPort 27015 по TCP. RCON — удалённая консоль, а не порт входа игроков. Значения конкретного сервера могут отличаться.
| Параметр | Протокол | Назначение |
|---|---|---|
| DefaultPort | UDP | Игроки подключаются к игровому порту |
| UDPPort | UDP | Порт прямого подключения |
| RCONPort | TCP | Удалённая консоль; проверять при её использовании |
При bind-ошибке источник предлагает для игрового UDP-порта Windows PowerShell:
$port = 16261
Get-NetUDPEndpoint -LocalPort $port -ErrorAction SilentlyContinue
В macOS или Linux для того же примера:
lsof -nP -iUDP:16261
Подставьте порт из настройки или сообщения. Если найден процесс, определите его до остановки. Перезагрузка может убрать зависший процесс, но не устранит повторяющуюся конфигурацию или постоянно занятый порт. Примеры проверяют локальную машину; доступ через интернет ими не подтверждён. Эти примеры проверяют UDP и не показывают, занят ли TCP-порт RCON.
Если сервер размещён у Loafhosts
Следующие особенности относятся к описанной панели Loafhosts, а не ко всем хостингам. На странице Network звёздочкой отмечен игровой порт и указан адрес; два следующих выделенных порта используются для прямого подключения и RCON. На новом сервере Loafhosts источник описывает их как game port +1 и +2 соответственно; у собственного сервера RCON по умолчанию указан отдельно как 27015, не как обязательный следующий номер. На Loafhosts Steam browser, по измерению хостинга, опрашивает игровой порт.

В Config Editor позиции Game port, Direct connection port, UPnP, RCON port и RCON password заблокированы: панель записывает выделенные значения в конфигурацию при каждом запуске. На странице Startup название SteamPort у Loafhosts относится к UDPPort, порту прямого подключения; в INI 42.21 источник не находит SteamPort1 и SteamPort2. Не меняйте это значение в панели без оснований: оно должно совпадать с выделенным портом.

RCON-порт и пароль принадлежат панели; команды вводятся через Console. UPnP для открытия портов домашнего маршрутизатора на Loafhosts выключен: порты открывает хостинг, ручная переадресация не требуется. Провайдер сообщает о сетевой DDoS-защите всех портов и отсутствии игрового фильтра Project Zomboid: в Protection показано None. Это сведения хостинга, самостоятельно не проверенные.
- Если игроки не находят сервер Loafhosts, проверьте адрес и игровой порт в Network.
- Если Crashes сообщает, что игровой порт занят, возможно, ещё работал другой экземпляр; автор предлагает остановить сервер, подождать минуту и запустить снова.
- Для команд используйте страницу Console; RCON занят панелью.
Контролируемая повторная проверка
- Закройте клиент и остановите все серверные экземпляры.
- Сохраните полную копию папки Zomboid, нужные console.txt, coop-console.txt или server-console.txt, соответствующие файлы Logs и logs.zip, если он есть.
- Примените одно изменение по конкретной сигнатуре журнала.
- Запустите сервер, дождитесь готовности или явного сбоя и только затем подключайтесь.
- Сравните новый журнал со старым; если ошибка изменилась, разбирайте новое сообщение.
Что указать при обращении за помощью
- Точную сборку и ветку Steam клиента и сервера.
- Первую полную трассировку либо точное сообщение о порте или соединении, а не только Code 5.
- Тип сервера: Host Game, выделенный или арендованный; ОС и способ запуска.
- Workshop ID и ID модов, а также результат проверки без модов на отдельном тестовом сервере.
- logs.zip после удаления имён, IP-адресов, паролей, токенов и другой информации, которую не хотите публиковать.
Связанные инструкции
Как найти мод, вызывающий ошибку
Резервное копирование (открывается в новой вкладке)
Настройки сервера
Подключение к серверу Loafhosts (открывается в новой вкладке)
RCON и консоль Loafhosts (открывается в новой вкладке)
Не удаётся подключиться к серверу (открывается в новой вкладке)