MAATRIX GAMES / Блог / Project Zomboid не подключается через Steam

Project Zomboid не подключается через Steam

MAATRIX GAMES

Заходишь в Project Zomboid, открываешь вкладку Internet или Favorites в браузере серверов, вбиваешь IP — и либо сервер вообще не виден в списке, либо клиент зависает на "Connecting to server" и через минуту выкидывает с молчаливым таймаутом. При этом сервер в консоли живой, игроки, зашедшие напрямую по IP, всё видят нормально. Это почти всегда не баг сервера, а нестыковка между обычным игровым портом и отдельным Steam-слоем поверх него — сейчас разберём, где там что ломается и как починить по шагам.

Почему Steam-подключение — это отдельный механизм

Project Zomboid при старте сервера поднимает два независимых канала. Первый — игровой UDP-порт (по умолчанию 16261), через который идёт весь трафик симуляции: позиции игроков, чанки карты, инвентарь. Второй — это Steam Game Server слой, который использует библиотеку Steamworks для регистрации сервера в мастер-листе Valve и для верификации соединений через VAC. Именно второй слой отвечает за то, чтобы сервер появился в браузере Steam-серверов и чтобы клиент мог подключиться кнопкой "Connect" из этого браузера.

Прямое подключение по IP (Direct Connect в меню Join) в некоторых случаях обходит часть Steam-логики и работает даже при кривой настройке SteamPort — поэтому у тебя может быть рабочий "заход по IP" и одновременно полностью нерабочий "заход через Steam". Это не глюк, а ожидаемое поведение: разные пути используют разные порты и разную аутентификацию.

Три параметра, которые отвечают за Steam-слой

В файле конфигурации сервера (ServerName.ini, обычно в ~/Zomboid/Server/ на Linux или %USERPROFILE%\Zomboid\Server\ на Windows) есть три ключевых параметра:

DefaultPort=16261
SteamVAC=true
SteamPort1=16262
SteamPort2=16261
  • DefaultPort — основной игровой UDP-порт, на нём висит вся геймплейная синхронизация.
  • SteamVAC — включает верификацию через Valve Anti-Cheat. Если стоит false, сервер не будет фигурировать как VAC-secured, а часть клиентов с включённым "показывать только secure-серверы" его просто не увидит.
  • SteamPort1 и SteamPort2 — два отдельных UDP-порта для Steam Game Server API. Классическая ошибка новичка — оставить их равными DefaultPort или друг другу. По факту это должны быть три РАЗНЫХ UDP-порта, иначе Steamworks не может корректно забиндиться и подключение через браузер серверов рассыпается с непонятной ошибкой или просто таймаутом.

Рабочая связка чаще всего выглядит так: DefaultPort=16261, SteamPort1=16262, SteamPort2=16263 (иногда встречается вариант с SteamPort2=16261, он тоже валиден — Valve допускает совпадение SteamPort2 с игровым портом, но SteamPort1 обязан быть отдельным). Проверяй по факту у себя: если после старта сервера в логе Steamworks вылезают предупреждения про "port already in use" или "failed to bind", значит где-то порты пересеклись.

Поднять сервер Project Zomboid за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Пошаговая диагностика

  1. Останови сервер и проверь конфиг. Открой ServerName.ini и убедись, что DefaultPort, SteamPort1, SteamPort2 — три разных значения (или минимум SteamPort1 не совпадает ни с одним из двух других).
  1. Проверь, что порты реально слушаются. На Linux:
ss -ulpn | grep -E '16261|16262|16263'

Должны быть три строки с процессом ProjectZomboid64 (или start-server.sh), слушающим UDP на всех трёх портах. Если какого-то нет — сервер не смог забиндить порт, смотри лог на предмет ошибки.

  1. Проверь фаервол и проброс на роутере/у хостера. Нужно открыть UDP для всех трёх портов, а не только для игрового:
sudo ufw allow 16261:16262/udp
sudo ufw allow 16261/tcp

TCP на 16261 тоже нужен — часть сервисных запросов (RCON, некоторые статус-пинги) идёт через TCP поверх того же номера порта. Если сервер у облачного провайдера или на VDS с внешним фаерволом (Security Group, панель хостинга) — правило нужно продублировать и там, локальный ufw не поможет, если трафик режется раньше, на уровне сети. Подробный разбор портов и правил для разных игр есть в статье про настройку портов и файрвола.

  1. Проверь публичный IP и NAT. Если сервер стоит дома за роутером, а не на арендованном VPS, убедись, что проброс портов настроен на внешний IP, а не на локальный (192.168.x.x). Быстрая проверка снаружи:
nc -uzv <твой-внешний-IP> 16262

Команда не гарантирует 100% результат для UDP (протокол без подтверждения соединения), но если она сразу рвётся с "Connection refused" — порт точно не проброшен.

  1. Проверь SteamVAC и целостность аккаунта сервера. Если SteamVAC=true, но сервер всё равно не в браузере, попробуй временно поставить false, перезапустить и посмотреть — появился ли сервер. Если да, значит проблема именно в верификации VAC (обычно это тайминг: Valve иногда не успевает провалидировать сервер в первые 1-2 минуты после старта — подожди и обнови список).

Разница между прямым IP и браузером серверов

Стоит явно понимать, что игроков у тебя по факту два независимых пути захода, и они диагностируются по-разному:

СпособЧто используетОт чего зависит
Direct Connect по IP:портТолько DefaultPort, без Steam-слояОткрыт UDP/TCP DefaultPort, сервер запущен
Steam-браузер серверов (Internet/Favorites)Steamworks API через SteamPort1/2Корректные разные SteamPort, открыты все три UDP, публикация в мастер-листе Valve
Favorites по вручную добавленному IPСмешанный: список хранит IP, но при "Connect" всё равно может идти через Steam-слойТе же условия, что и для браузера

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

Публикация сервера в браузере Steam

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

  1. Public=true в ServerName.ini — иначе сервер не публикуется в общем списке, только в Favorites у тех, кто знает IP вручную.
  2. Указать PublicName и PublicDescription — без них сервер отображается пустой строкой, и в списке из сотен серверов его просто не найдут.
  3. Дождаться регистрации в мастер-листе — обычно занимает от 30 секунд до пары минут после старта. Если сервер так и не появился за 5+ минут, это почти всегда SteamPort1/2 конфликт из раздела выше, а не проблема самого списка.

Дополнительно стоит проверить Password — если сервер публичный, но с паролем, он всё равно виден в списке (просто требует пароль при попытке зайти), это не баг.

Поднять сервер Project Zomboid за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Сервер виден в списке, но подключение обрывается на "Connecting to server"?

Обычно это открытый SteamPort, но закрытый DefaultPort — Steam-слой видит сервер и регистрирует его, а реальное игровое соединение не проходит. Проверь UDP на 16261 отдельно от SteamPort1/2.

Помогает ли отключение SteamVAC насовсем?

Как временный диагностический шаг — да, поможет понять, в VAC ли дело. Как постоянное решение — не рекомендуется: часть игроков сознательно фильтрует non-VAC серверы, и ты теряешь охват.

Нужно ли перезапускать сервер после смены портов в конфиге?

Да, обязательно полный рестарт процесса — Project Zomboid не подхватывает изменения ServerName.ini на лету, только при следующем старте.

Можно ли использовать один и тот же порт для нескольких серверов на одной машине?

Нет, каждый экземпляр сервера (и его DefaultPort/SteamPort1/SteamPort2) должен занимать уникальные порты — иначе второй процесс просто не сможет забиндиться и упадёт при старте либо тихо перехватит чужой трафик.

После смены модов через Steam Workshop сервер вдруг перестал быть виден в браузере — это связано?

Обычно нет, это разные механизмы, но если моды тянут дополнительную нагрузку и сервер долго стартует, Steamworks может не успеть зарегистрироваться в мастер-листе до таймаута клиента — просто подожди подольше после рестарта. Подробнее об установке модов — в статье про Steam Workshop для Project Zomboid.