Когда Valheim минутами висит на "Connecting" или на экране загрузки, причина почти всегда одна из пяти: клиент вообще не достучался до сервера (неверный порт, заблокирован UDP, сервер ещё не закончил запуск), у crossplay relay неудачный момент, игрок входит рядом с огромной базой, которую нужно передать ему целиком, мод синхронизируется или проверяет версии, либо где-то медленный диск. Быстрее всего отличить одно от другого можно по логу сервера, пока игрок пытается зайти: если сервер его не видит, виновата сеть; если видит, но игрок не появляется в мире, дело в мире или модах. Всё остальное ниже - подробная версия этой одной фразы.
Что происходит между Connect и появлением в мире#
Вход на сервер Valheim - это не один шаг, а короткая последовательность, и каждый этап ломается по-своему. Поэтому полезно понимать, на каком этапе застрял игрок.
- Поиск маршрута. Игрок Steam, заходящий по IP, отправляет UDP прямо на игровой порт. Игрок crossplay, использующий код подключения, идёт через relay PlayFab. Если этот этап не проходит, вы видите "Connecting", а затем, спустя время, "Failed to connect".
- Рукопожатие. Клиент и сервер сверяют версии игры, затем клиент должен ввести пароль. Разница версий заканчивается здесь сообщением "Incompatible version"; неверный пароль - повторным запросом пароля.
- Проверка модов. На сервере с модами библиотеки вроде Jotunn сверяют версии модов, а ServerSync отправляет клиенту конфигурацию сервера. Если всё совпадает, это быстро; если нет, именно здесь возникают отключения из-за несовпадения версий.
- Данные мира. Сервер отправляет состояние зон вокруг места, где персонаж вышел из игры: каждую деталь построек, сундук, предмет на земле, прирученное животное и правку рельефа. Это и есть долгий экран загрузки.
- Появление. Персонаж появляется, и клиент берёт на себя управление зонами, в которых стоит.
Игрок, застрявший на слове "Connecting", находится на этапе 1 или 2. Игрок, который прошёл пароль и три минуты смотрит на экран загрузки, находится на этапе 4. Это разные проблемы.
Что проверить в первую очередь#
Прежде чем читать что-либо ещё, пройдите по списку по порядку. В большинстве случаев всё решается на шаге 2 или 3.
- Сервер действительно запущен? Серверу Valheim нужно время, чтобы загрузить мир и зарегистрироваться в Steam. На большом мире это минута и больше после старта процесса. Дождитесь строки с началом сессии (или кода подключения на crossplay-сервере), и только потом пускайте игроков.
- Работает ли вход по IP у одного игрока Steam? Используйте Join Game, Add Server и адрес с игровым портом, например
203.0.113.10:2456. Если так всё работает, сервер и его порты в порядке, а проблема в маршруте, которым пользуются остальные. - Проблема у одного игрока или у всех? Если застрял один игрок, а остальные заходят нормально, дело в нём: его сеть, моды, установка игры или место, где стоит его персонаж. Если застряли все, дело в сервере.
- Игра только что обновилась? В течение суток после патча несовпадение версий и сломанные моды - самая вероятная причина чего угодно. См. обновление сервера и несовпадение версий.
- Видно ли в логе сервера появление игрока? Это решающий вопрос, он разобран в последнем разделе.
Застряли на "Connecting": сеть и сервер#
Если лог сервера ни разу не упоминает игрока, пакеты не доходят. Обычные причины:
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Вход по IP никогда не завершается | Используется порт запросов, а не игровой | Заходите на 2456 (или ваш -port), а не на 2457 |
| Никто не может зайти, сервер работает | Файрвол пропускает только TCP | Откройте оба порта как UDP |
| Работает в локальной сети, снаружи нет | Порт не проброшен или CGNAT | Пробросьте UDP или возьмите арендованный сервер |
| Вход не удаётся минуту после старта | Мир ещё загружается | Дождитесь строки о сессии в логе |
| Только у одного игрока | Его роутер, VPN или провайдер | Проверьте из другой сети, отключите VPN |
Valheim использует UDP на игровом порту и на порту выше него. Правило, которое открывает TCP или только один из двух портов, даёт сервер, который прекрасно работает, но до которого никто не может достучаться. Диапазон подробно описан в статье порты Valheim: объяснение, а в статье Failed to connect и другие ошибки подключения разобрано каждое сообщение, которое показывает клиент, если этот этап заканчивается неудачей.
Домашнее подключение за carrier-grade NAT вообще не может принимать входящие соединения, как ни настраивай роутер. Если публичный адрес на странице состояния роутера отличается от того, что показывает сайт "what is my IP", дело именно в этом. Проверка и способы обойти проблему описаны в статье NAT и CGNAT для хостинга игр.
VPN на компьютере игрока стоит исключить в самом начале. Одни направляют игровой трафик через далёкий выходной узел, другие режут UDP, а некоторые блокируют адреса relay, которые использует crossplay. Отключить его на одну попытку ничего не стоит.
Crossplay и relay PlayFab#
Сервер, запущенный с -crossplay, доступен через relay Microsoft PlayFab, а не напрямую. Благодаря этому игрок Xbox может зайти по шестизначному коду, и crossplay-сервер работает даже за неудобным NAT, но появляется зависимость, которую вы не контролируете.
Что это означает на практике:
- Код подключения меняется при каждом перезапуске. Игрок, который вводит вчерашний код, видит "Connecting", а затем ошибку. После каждого перезапуска берите актуальный код из лога сервера или консоли.
- Relay добавляет промежуточный узел. Подключение может занимать заметно больше времени, чем прямой вход по IP, а если relay работает с перебоями, оно может зависнуть. Когда crossplay-сервер, нормально работавший вчера, внезапно никого не пускает, разумный первый шаг - перезапустить сервер (он получит новую сессию и новый код).
- Идентификаторы отличаются. На crossplay-сервере игроки определяются идентификаторами с префиксом платформы, например
Steam_7656...илиXbox_2535.... Если вы ведёте список разрешённых вpermittedlist.txt, а игрок записан в нём в неверной форме, ему отказывают, и со стороны клиента это может выглядеть как проблема с подключением.
Если вся группа играет в Steam, самое простое решение проблем с relay - отключить crossplay и заходить по IP. У прямого UDP меньше движущихся частей. Если нужны игроки Xbox или Game Pass, настройка подробно описана в статье crossplay и игроки Xbox на сервере.
Долгие загрузки: размер мира, базы и рельеф#
После принятия пароля сервер передаёт область вокруг места, где персонаж вышел из игры. Время зависит от того, сколько там всего находится, а не от размера файла всего мира. Персонаж, вышедший на пустом лугу, загрузится за секунды даже в мире на 150 МБ. Тот же персонаж, вышедший посреди главной базы группы, с четырьмя сотнями сундуков, несколькими тысячами деталей построек, загоном из тридцати волков и сровненной горой, может долго сидеть на экране загрузки.
Что обходится дороже всего:
- Детали построек. Каждая стена, балка и пол - отдельный объект, который клиент должен получить и построить. Большие базы, особенно из тысяч мелких деталей, - главная причина медленных входов в зрелых мирах.
- Предметы на земле. Брошенные стопки, случайно высыпанное содержимое надгробий и мусор от многолетних плавок. Каждый предмет - это объект.
- Прирученные животные. Каждое животное - объект со своим состоянием, а загоны для разведения разрастаются незаметно.
- Правки рельефа. Поднятая, опущенная и выровненная земля хранится как изменения для каждой зоны. База на полностью выровненном плато тяжелее такой же базы на естественной земле.
Практические решения, примерно в порядке трудоёмкости:
- Выходите из игры в тихом месте. Персонажи появляются там, где вышли. Если заканчивать сессию вне базы или в небольшом портальном домике неподалёку, долгий вход становится коротким. Для групп с одной огромной базой это самая действенная привычка.
- Уберите мусор с земли. Администратор с подходящими инструментами может очистить брошенные предметы; в статье брошенные предметы и очистка мира описано, какие команды есть и что они удаляют.
- Проредите загоны. Меньше прирученных животных в одном месте - быстрее загрузка и лучше работа после неё.
- Стройте крупными деталями. Стена из панелей 2x2 - это четверть объектов от той же стены из деталей 1x1.
Компьютер самого клиента важен не меньше сервера. Построение большой области означает создание тысяч объектов локально, и медленный процессор или игра на жёстком диске затягивают этот этап независимо от сервера. Если один игрок всегда грузится медленно, а остальные нет, сравните их железо, прежде чем винить мир. Больше о том, как не дать тяжёлым постройкам делить зоны, в статье размещение баз на общем сервере.
Моды: запуск BepInEx, Jotunn и ServerSync#
На сервере с модами при входе происходят ещё две вещи, и обе могут выглядеть как зависание.
Проверка версий. Многие модификации с контентом зависят от Jotunn, который сравнивает моды и их версии на клиенте и на сервере. Если они различаются, игрока отключают сообщением со списком несовпадений. Если сообщение появляется медленно или клиент показывает общую ошибку, игрок воспринимает это как зависание с последующим выбросом. Как прочитать сообщение и исправить набор, показано в статье отключения из-за несовпадения версий модов.
Синхронизация конфигурации. Моды, использующие ServerSync или синхронизацию конфигов Jotunn, при входе отправляют каждому клиенту настройки сервера. Обычно это мгновенно, но мод с большим конфигом или несколько модов, синхронизирующихся одновременно, добавляют время. Клиент со старой версией синхронизируемого мода может ждать синхронизации, которая так и не завершится.
Есть и собственный запуск клиента. Клиент с большим количеством модов дольше добирается до главного меню, а некоторые моды выполняют работу при первом входе в мир. Это не связано с сервером, но игроки часто жалуются именно так: "сервер грузится вечность".
Что делать:
- Пусть вся группа ставит моды из одного общего профиля, чтобы каждый клиент точно совпадал с сервером. Экспорт и импорт кода профиля описаны в статье профили r2modman для группы.
- После патча игры не позволяйте никому обновлять моды по отдельности. Обновите набор сервера, снова экспортируйте профиль и пусть все импортируют его.
- Если на сервере с модами завис один игрок, пусть один раз попробует зайти без модов на чистый тестовый сервер. Если так всё работает, проблема в его наборе модов, а не в подключении.
Клиентский лог BepInEx - BepInEx/LogOutput.log в папке игры; обычный лог Unity - Player.log в %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\. Мод, выдавший ошибку во время входа, обычно оставляет трассировку стека в одном из них.
Диски, сохранения и память на сервере#
Три серверных состояния вызывают задержки, которые игроки принимают за проблемы с подключением.
Идёт сохранение. Valheim держит мир в памяти и записывает его каждые -saveinterval секунд. Пока идёт запись, сервер занят, и игрок, пришедший в этот момент, ждёт. На большом мире на медленном накопителе пауза достаточно длинная, чтобы её заметить. В логе печатается строка World saved с затраченным временем, по ней видно, сколько длится ваша пауза. Если это несколько секунд, помогут более быстрый накопитель или меньший мир; цифры есть в статье CPU и диск для сервера Valheim.
Медленный старт на медленном накопителе. Загрузка большого файла .db с жёсткого диска идёт заметно дольше, чем с SSD или NVMe. Игроки, пытающиеся зайти в этот промежуток, никуда не попадают, а если это повторяется после каждого планового перезапуска, это выглядит как постоянная неисправность.
Нехватка памяти. Сервер, упирающийся в лимит памяти, может быть убит и перезапущен в середине входа игрока. На большинстве панельных хостингов это выглядит так: сервер уходит в офлайн и возвращается, а клиент игрока либо висит на экране загрузки, либо вылетает в меню. Посмотрите график памяти: если он стоит на лимите, пока заходят люди, тариф мал для этого мира. Подбор объёма описан в статье сколько RAM нужно серверу Valheim.
На RE:NODE каждый тариф работает на NVMe, в консоли есть графики памяти, CPU и диска относительно лимитов тарифа, а сервер, достигший лимита памяти, останавливается и чисто перезапускается, а не уходит в своп. Это значит, что симптом - перезапуск, видимый в консоли, а не медленная деградация, поэтому его легко заметить.
Чтение лога сервера во время входа#
Лог - это место, где заканчиваются догадки. Откройте консоль, попросите одного игрока зайти и наблюдайте. Точные формулировки немного различаются между версиями игры, но успешный вход выглядит примерно так:
Got connection SteamID 76561198012345678Got handshake from client 76561198012345678Server: New peer connected,sending global keysGot character ZDOID from Bjorn : 1234567890:1Что означает каждый исход:
| Что показывает лог | Где застряли | Что смотреть |
|---|---|---|
| Ничего вообще | До сервера | Порты, UDP, CGNAT, код подключения, VPN |
| Соединение, но нет рукопожатия | Версия или маршрут | Версии игры с обеих сторон |
| Строка о неверном пароле | Пароль | Сам пароль и то, что он актуальный |
| Рукопожатие, затем быстрое отключение | Проверка модов или список разрешённых | Сообщение Jotunn, permittedlist.txt |
| Рукопожатие, но минутами нет строки о персонаже | Данные мира | Место выхода, размер базы, железо клиента |
| Сервер перезапускается во время входа | Ресурсы сервера | График памяти, лог сбоя |
Если вы запускаете сервер сами, -logFile записывает тот же вывод в файл, по которому потом можно искать. Остальные важные строки разобраны в статье лог сервера Valheim: разбор.
Ещё две проверки, на которых часто попадаются. Во-первых, убедитесь, что игроки заходят именно на тот сервер, на который вы думаете: у группы, сменившей хостинг, иногда остаётся устаревшая запись в избранном со старым адресом, и она просто вечно показывает "Connecting". Во-вторых, если игрок находится за тем же роутером, что и сервер (хостинг дома), вход по публичному адресу может не работать на роутерах без поддержки hairpin NAT; такому игроку нужно использовать локальный адрес.
FAQ#
Почему Valheim зависает на Connecting только у одного друга?
Потому что что-то на его стороне отличается: сеть, VPN, файрвол на его ПК, устаревшая игра, мод, которого нет у остальных, или старый код подключения. Пусть зайдёт по IP с игровым портом, пока вы смотрите лог сервера. Если лог его не показывает, дело в его сети; если показывает, причина в его установке или модах.
Долгая загрузка означает, что сервер слишком слабый?
Сама по себе редко. Длительность экрана загрузки в основном определяется количеством объектов вокруг персонажа, а также процессором и диском самого игрока. Нехватка памяти на сервере проявляется иначе: перезапусками, рывками и графиком памяти, упирающимся в лимит.
Ускорит ли вход отключение crossplay?
Для группы только из Steam, как правило, да. Без crossplay игроки подключаются прямо к UDP-порту сервера, а не через relay, что убирает промежуточный узел и сервис, который вы не контролируете. Если кто-то играет на Xbox или через Game Pass, crossplay нужен.
Почему я могу зайти на свой домашний сервер по IP снаружи, но не изнутри?
Многие домашние роутеры не возвращают трафик на собственный публичный адрес обратно в сеть. Игрокам в том же доме нужно заходить по локальному адресу сервера, а всем остальным - по публичному.
Мы застряли на загрузке после обновления игры. Что делать сначала?
Проверьте, что сервер и все клиенты на одной версии, затем проверьте моды. На сервере с модами исходите из того, что что-то сломано, пока авторы не выпустят обновления, и держите игроков на старой версии или сервер без модов, пока этого не случится.
Может ли большой файл мира замедлять загрузку у всех?
Не только размером. Важно, сколько всего находится рядом с местом появления каждого персонажа. Большой файл с далёкими исследованными землями загружается быстро; маленький, где все выходят в одной плотной базе, - нет.


