Игровой сервер Steam появляется в списке только тогда, когда работают три отдельные вещи: сервер зарегистрировался на мастер-сервере Steam, клиент игрока может достучаться до query-порта сервера и получить ответ, и собственные фильтры игрока пропускают результат. Сервер, на который можно зайти по IP, но который нельзя найти в списке, провалил одно из этих трёх условий, и лечатся они по-разному. Но прежде всего проверьте одно: использует ли игра список Steam вообще, потому что немало популярных игр публикует серверы через Epic, PlayFab, Cfx.re или собственный сервис, и исправления на стороне Steam им ничем не помогут.
Эта статья разбирает путь в список по порядку. Если нужны только номера портов, таблица есть в статье порты игровых серверов; если игроки не могут подключиться вообще, даже по IP, начните лучше со статьи почему игроки не могут подключиться к вашему серверу.
Как строится список серверов Steam#
Список - это не живое отображение серверов. Он собирается в два шага, и делают это две разные стороны.
- Регистрация. Когда запускается сервер, использующий API игровых серверов Steam, он входит в Steam - анонимно или с токеном входа игрового сервера - и начинает отправлять heartbeat. Мастер-сервер Steam записывает публичный адрес сервера и его query-порт под app id игры вместе с несколькими флагами: пароль, античит, регион, теги.
- Запрос. Когда игрок открывает список, клиент запрашивает у мастер-сервера адреса, подходящие под игру и фильтры игрока. Затем клиент сам отправляет query-пакет на каждый адрес из списка и ждёт ответов. Название, карта, число игроков и пинг, которые вы видите, приходят из этого прямого запроса, а не от Steam.
Это разделение объясняет почти любую жалобу на список. Сервера, который так и не зарегистрировался, в списке нет совсем. Сервер, который зарегистрировался, но не отвечает на запросы, либо отсутствует, либо показан без пинга и без названия - зависит от игры. А сервер, который и зарегистрирован, и отвечает, всё равно не виден игроку, если его исключает фильтр по пингу или «не заполнен». Сам запрос - это протокол A2S, описанный в статье query-порты и A2S.
Регистрация: сервер так и не сообщил о себе Steam#
Если сервер не зарегистрирован, никакая работа с портами не заставит его появиться. Причины, примерно в порядке частоты:
Выключен собственный переключатель «public» в игре
В большинстве игр есть настройка, которая решает, регистрироваться ли вообще. Часто по умолчанию она выключена или выставлена шаблоном в «только для друзей».
| Игра | Настройка | В списке, когда |
|---|---|---|
| Игры на Source (CS2, TF2, Garry's Mod) | sv_lan в server.cfg | sv_lan 0 |
| Valheim | Аргумент запуска -public | -public 1 |
| Palworld | Аргумент запуска -publiclobby | указан |
| Project Zomboid | Public в servertest.ini | Public=true |
| 7 Days to Die | ServerVisibility в serverconfig.xml | 2 (публичный); 1 - только для друзей, 0 - не в списке |
| Factorio | visibility в server-settings.json | "public": true плюс имя пользователя и токен factorio.com |
Сервер на Source с sv_lan 1 - это LAN-сервер: он не общается с мастер-сервером и отказывает игрокам вне своей подсети. Для LAN-вечеринки это правильная настройка, для всего остального - неправильная, и в скопированных конфигах она попадается чаще, чем следовало бы.
Нет токена входа или он плохой
Нескольким играм Steam для публичной регистрации нужен токен входа игрового сервера (GSLT). Counter-Strike 2 без него не появится в публичном списке, а токен, который забанен, удалён или создан для другого app id, ведёт себя как отсутствующий. Сервер при этом обычно всё равно запускается, поэтому на поиск этой причины и уходит столько времени. На сервере на движке Source вывод при запуске сообщает, что произошло:
Connection to Steam servers successful. Public IP is 203.0.113.10.Assigned persistent gameserver Steam ID [G:1:1234567].VAC secure mode is activated.«Persistent» значит, что токен принят. «Anonymous» значит, что сервер вошёл без него, и в зависимости от игры он будет в списке с ограничениями или не появится вовсе. Строка о том, что вход не удался, означает, что токен отклонён. В статье токены игровых серверов Steam описано, как его создать, какой app id использовать и за что токен банят.
Сервер не может достучаться до Steam
Сервер должен устанавливать исходящие соединения со Steam. На арендованном сервере проблема почти никогда не в этом; на домашнем сервере за агрессивным исходящим файрволом или на VDS, где кто-то прописал политику «запрещать всё исходящее по умолчанию», - вполне может быть. Если в логе запуска так и не появилось сообщение о подключении к Steam, смотрите исходящие правила раньше входящих. А иногда дело в самом Steam: во время сбоя или технических работ Steam регистрация не проходит ни у кого. Это быстро проверяется по тому, видны ли в списке другие серверы той же игры.
Запрос: Steam о сервере знает, а клиент не может спросить#
Зарегистрированный сервер с недоступным query-портом даёт самый запутанный симптом: он может ненадолго появиться, появиться без пинга или не появиться вовсе - зависит от того, как список в игре обращается с сервером, который не отвечает. Большинство внутриигровых списков отбрасывает серверы, не ответившие за короткий таймаут, поэтому со стороны игрока это выглядит в точности как «не зарегистрирован».
Все причины - вариации одного и того же: на query-пакет не приходит ответ.
- Query-порт не выделен или не проброшен. Играм, у которых query-порт отличается от игрового, - Valheim (
2457), Palworld (27015), Unturned (27015рядом с игровым портом27016), Arma 3, DayZ, большинству игр на Unreal - нужен открытый второй порт. Люди открывают тот порт, который вводят в поле подключения, и забывают про тот, которым пользуется список. - Он открыт не для того протокола. Запросы Steam идут по UDP.
- Игра отвечает не на том порту, который зарегистрировала. Если вы поменяли query-порт в одном месте, но не в настройках самой игры, мастер-сервер хранит порт, который никто не слушает.
- Сервер ограничивает частоту запросов. Серверы на Source ограничивают, сколько запросов они обслуживают с одного адреса и в сумме (
sv_max_queries_sec,sv_max_queries_sec_global). Значения по умолчанию разумны; конфиг, в котором их понизили во время атаки и так и не вернули, сделает сервер для части списков похожим на неотвечающий.
Окончательно вопрос решает проверка: запросите сервер сами из другой сети, это одна строка с инструментами из статьи query-порты и A2S. Если пришёл ответ с правильным названием и числом игроков, с сервером и сетью всё в порядке, а проблема на стороне клиента.
Фильтры игрока и ограничения списка#
Сервер зарегистрирован и отвечает на запросы, а игрок всё равно говорит, что его нет. Теперь проблема в самом списке.
Фильтры по пингу. Многие внутриигровые списки по умолчанию скрывают серверы выше порога задержки, и у собственного списка в клиенте Steam (View, затем Game Servers) тоже есть фильтр задержки. Игрок в Северной Америке, который ищет сервер в Германии с фильтром «меньше 100 мс», никогда его не увидит. Прежде всего спросите, какие фильтры выставлены.
«Не заполнен», «есть игроки» и «без пароля». Новый сервер с нулём игроков скрыт фильтром «есть игроки». Сервер с паролем на вход скрыт фильтром «без пароля». В некоторых играх оба фильтра включены по умолчанию.
Регион. Серверы на движке Source сообщают регион через sv_region, и мастер-сервер умеет по нему фильтровать. sv_region 3 - это Европа, а 255 - весь мир; сервер, сообщающий неверный регион, может выпасть из списков с фильтром по региону. Не каждая игра это учитывает, и новые проекты в основном игнорируют, но правильно выставить его ничего не стоит.
Список длинный, а поиск слабый. Мастер-сервер Steam возвращает ограниченное число результатов на запрос, а внутриигровые списки часто сортируют по пингу и перестают отрисовывать после нескольких сотен строк. Небольшой сервер с общим названием вроде «EU Survival» теряется в таком списке, даже если формально в нём есть. Ищите по необычному слову из названия своего сервера. В играх на Source sv_tags добавляет теги для поиска - держите их короткими и честными.
Всё просто медленно. Некоторым спискам нужны минуты, чтобы подхватить новый сервер. Самый известный случай - список сообщества Valheim; десять минут там не редкость. Сервер, который каждые несколько минут перезапускается из-за цикла падений, может так и не продержаться зарегистрированным достаточно долго, чтобы его увидели.
Игры, которые не используют список Steam#
Большая доля вопросов «нет в списке Steam» касается игр, которые им никогда не пользуются. Для них проверки на стороне Steam - потраченное зря время.
| Игра | Сервис списка | Чем управляется |
|---|---|---|
| Minecraft (Java) | Нет - клиент пингует сохранённые адреса | Регистрировать нечего; поделитесь адресом |
| FiveM | Список серверов Cfx.re | sv_licenseKey; пустой sv_master1 скрывает сервер |
| BeamMP | Бэкенд BeamMP | AuthKey и Private в ServerConfig.toml |
| Don't Starve Together | Лобби Klei | Токен кластера в cluster_token.txt |
| Valheim с кроссплеем | PlayFab | -crossplay; игроки также заходят по коду |
| ARK: Survival Ascended | Epic Online Services | Показывается в игре среди неофициальных серверов |
| Satisfactory | Публичного списка нет | Игроки добавляют сервер по адресу в Server Manager |
| Terraria | Публичного списка нет | Поделитесь адресом |
Схема у них та же, что у Steam, - зарегистрироваться, затем отвечать на запросы, - но учётные данные и адреса сервисов другие. Серверы FiveM с недействительным лицензионным ключом в список не попадут; серверы BeamMP без ключа авторизации работают приватно; сервер DST без действующего токена кластера не появится в лобби. Каждый из этих ключей можете предоставить только вы, потому что он привязан к вашей учётной записи в этом сервисе. На RE:NODE игры, которым нужны такие данные, - CS2 и Unturned (токен Steam), FiveM (ключ Cfx.re), Don't Starve Together (токен Klei), BeamMP (ключ авторизации) - собираются сразу, а установка ждёт на вкладке Setup, пока вы не вставите ключ, вместо того чтобы запускать сервер, который никогда не попадёт в список.
Диагностика по порядку#
Проходите по пунктам сверху вниз и остановитесь на первом, который не проходит.
- Зайдите по прямому адресу. Если не получается, проблема не в списке. Переходите к диагностике подключения.
- Найдите в логе запуска строку о регистрации. Для игр на Source - строки о подключении к Steam и Steam ID, приведённые выше. Для других игр ищите подключение к сервису: heartbeat Cfx.re, аутентификация BeamMP, сессия PlayFab или код подключения, принятый токен Klei.
- Проверьте переключатель публичности.
sv_lan,-public,Public=,ServerVisibility- как бы он ни назывался в игре. - Запросите query-порт снаружи. Одна команда, она описана в статье query-порты и A2S. Нет ответа - значит, проблема с портом или протоколом.
- Проверьте фильтры клиента. Задержка, «не заполнен», «есть игроки», пароль, регион.
- Поищите по необычному слову из названия и подождите. Десять минут, а не десять секунд.
Добавляя сервер в избранное в клиенте Steam, указывайте query-порт, если он отличается от игрового. Список Steam общается по A2S с тем портом, который вы ему дали, а игровой порт узнаёт из ответа.
Когда вы не хотите быть в списке#
Список - это то, как вас находят незнакомцы, включая нежелательных: сканеры, ищущие открытый RCON, люди, ищущие серверы без патчей, и изредка тот, кому хочется что-нибудь зафлудить. Приватному серверу для друзей список ничего не даёт.
Выключите переключатель публичности там, где он есть (-public 0 для Valheim, ServerVisibility ниже 2 для 7 Days to Die), поставьте пароль на вход и раздайте адрес или ссылку Steam connect тем, кому он нужен. sv_lan 1 для этого на интернет-сервере не подходит: он отказывает всем игрокам вне локальной сети, а не только незнакомцам. Сервер, которого нет в списке, всё равно доступен любому, кто знает адрес или просканировал его, так что это снижение шума, а не граница безопасности - в статье что мы делаем с атаками объяснено, почему query-порт в любом случае самое заметное, что вы выставляете наружу.
На RE:NODE query-порт входит в выделенные по тарифу порты, показан рядом с игровым портом на странице сервера и добавляется на вкладке Network, когда игре нужен ещё один. Серверы Valheim стартуют с обоими выделенными UDP-портами; для других игр перед выбором посмотрите количество портов на странице тарифа.
FAQ#
Почему друзья заходят по IP, но никто не может найти сервер?
Подключение по IP использует игровой порт; список использует регистрацию плюс query-порт. Если прямое подключение работает, с сервером и его игровым портом всё в порядке, а причина в одном из следующего: выключен переключатель публичности, нет токена входа или он отклонён, закрыт query-порт, или сервер скрывают фильтры игрока.
Сколько времени нужно новому серверу, чтобы появиться в списке?
Для большинства игр Steam - минута-две после того, как сервер закончил запуск. Некоторые списки гораздо медленнее - для списка сообщества Valheim обычны десять минут, - а сервер, который постоянно перезапускается, может выпасть раньше, чем его подхватят.
Убирает ли пароль сервер из списка?
Нет. Серверы с паролем показываются в списке со значком замка, но многие списки по умолчанию скрывают их фильтром «без пароля». Игрокам нужно снять эту галочку или подключиться напрямую либо через избранное.
Можно ли поднять сервер выше в списке?
Честным способом - нет. Большинство списков сортирует по пингу, поэтому сервер оказывается выше у тех игроков, которые к нему близко. Узнаваемое название, точные теги и настоящее число игроков помогают найти сервер больше, чем что-либо ещё.
Почему мой сервер показывает 0 игроков, когда на нём есть люди?
Число игроков берётся из ответа на запрос. Если query-порт отвечает, но игра медленно сообщает об игроках или мод меняет способ их подсчёта, список может отставать. Если там всегда ноль, проверьте, что запрос попадает именно на этот сервер, а не на другой с тем же адресом.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.