MAATRIX GAMES / Блог / Десинк между игроками на ARK-сервере

Десинк между игроками на ARK-сервере

MAATRIX GAMES

Классика ARK: один игрок клянётся, что рекс стоит у ворот базы, второй в это же время спокойно проходит мимо — существа для него в другом месте. Или трайб бьёт по боссу, а урон засчитывается с задержкой в секунду-две, будто игра сама не может определиться, что происходит прямо сейчас. Это десинк — рассинхронизация положения существ, игроков и объектов между клиентами и сервером. Разберём, откуда он берётся и что из этого реально лечится настройками, а что придётся просто пережить как особенность движка.

Что такое десинк и чем он отличается от обычных лагов

Десинк — не то же самое, что просадка FPS или тик-лаги в привычном понимании. При обычном лаге весь мир на сервере тормозит одинаково для всех: все видят одну и ту же замедленную картинку. Десинк — это когда у разных клиентов разные версии реальности в один и тот же момент: игрок А видит велоцираптора на скале, игрок Б — уже спустившегося вниз, хотя оба смотрят на один и тот же сервер в одну и ту же секунду.

Технически дело в том, как ARK на движке Unreal синхронизирует состояние мира. Сервер — источник истины, но не может слать полное состояние каждого объекта каждому клиенту в реальном времени, это нереалистичный объём трафика при сотнях существ на карте. Вместо этого используется репликация с интерполяцией и предсказанием на клиенте: клиент сам достраивает движение существ между пакетами обновлений, а когда приходит новый пакет — «доводит» позицию до реальной. Если пакеты идут редко, с задержкой или сервер не успевает вовремя разослать обновления — расхождение между тем, что клиент "напредсказывал", и тем, что реально происходит на сервере, растёт. Это и ощущается как десинк, рывки существ («телепорты»), запоздалый урон.

Если у вас в принципе весь сервер тормозит одинаково для всех — это, скорее всего, обычный тик-лаг, а не десинк, и тут больше пригодится общая статья про мониторинг TPS и лагов на игровом сервере — принципы диагностики CPU/RAM там применимы и к ARK. Здесь разбираем именно ситуацию, когда картина мира у разных игроков расходится.

Сетевая нестабильность сервера: проверяем первым делом

Прежде чем лезть в конфиги игры, исключите банальное — проблемы с сетью самого сервера. Десинк усиливается пропорционально тому, насколько нестабильно и с задержкой сервер отправляет пакеты обновлений клиентам.

С клиентской машины проверьте маршрут до IP сервера:

tracert ip_сервера        # Windows
traceroute ip_сервера     # Linux/macOS
mtr ip_сервера             # Linux/macOS, показывает потери по каждому узлу маршрута

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

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

Поднять сервер ARK: Survival за пару минут

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

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

Перегрузка сервера: слишком много существ и построек

ARK известен тем, что плохо масштабируется по числу активных объектов на карте — это не секрет и не баг конкретно вашего сервера, а особенность того, как движок обсчитывает и реплицирует сотни прирученных существ, турелей, построек с физикой. Каждое существо на карте — это не просто модель, а объект с ИИ, коллизией и сетевым состоянием, которое нужно постоянно синхронизировать со всеми клиентами поблизости. Чем больше таких объектов скопилось за долгую жизнь сервера — тем больше нагрузка на каждый цикл репликации, и тем заметнее десинк даже при в целом приличном тикрейте.

Характерный сценарий: сервер живёт месяцами, трайбы держат десятки прирученных динозавров каждый, база обросла сотнями построек — и десинк, которого не было в первую неделю, постепенно нарастает. Это прямое следствие накопленной нагрузки, а не внезапной поломки конфига.

Что реально снижает эту нагрузку:

  • лимит на число прирученных существ на трайб или на игрока (TamedDinoClassDamageMultipliers тут не поможет — а вот лимиты через настройки сложности сервера и модерация вручную работают);
  • регулярная чистка заброшенных построек неактивных игроков — в ванильном ARK это частично делает система разрушения построек в PvP по таймеру, но на PvE-серверах чаще нужна ручная модерация или плагин;
  • ограничение числа турелей на базу там, где это уместно для баланса сервера — турели с постоянным сканированием целей тоже не бесплатны для сети.

Если у вас модовый сервер со структурными или creature-модами — учтите, что часть модов сама по себе добавляет нагрузку на репликацию сверх ванильной игры. Разбор популярных сборок и на что смотреть при их выборе — в статье про топ модов для ARK: Survival.

NetServerMaxTickRate и сетевые настройки в конфиге

Один из немногих рычагов, который напрямую влияет именно на десинк, а не на тик-лаги в целом — параметр NetServerMaxTickRate в GameUserSettings.ini, секция [ServerSettings]:

[ServerSettings]
NetServerMaxTickRate=30

Это частота, с которой сервер рассылает клиентам обновления сетевого состояния — по умолчанию ориентировочно около 30 в секунду (точное значение по умолчанию может отличаться между версиями игры, не воспринимайте это как жёстко зафиксированную цифру). Чем выше значение — тем чаще клиенты получают свежие данные о позициях существ и объектов, и тем меньше клиенту приходится "додумывать" интерполяцией — соответственно десинк субъективно ощущается меньше. Но у этого есть цена: более высокий тикрейт сети — это больше исходящего трафика на каждого подключённого игрока и больше нагрузки на CPU сервера на сборку и рассылку этих пакетов. Поднимать его стоит только если у сервера реально есть запас по каналу и процессору — иначе можно получить обратный эффект и просадить общую производительность.

Путь до файла для классического ARK: Survival (Evolved):

ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini

Для ARK: Survival Ascended — обратите внимание, папка называется WindowsServer даже на Linux-хостинге, потому что бинарник сервера остаётся Windows-приложением и крутится через Proton:

ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini

Если ставили сервер по нашим инструкциям — подробный разбор структуры и остальных параметров есть в статьях как поднять сервер ARK: Survival и как поднять сервер ARK: Survival Ascended.

Поднимать NetServerMaxTickRate стоит небольшими шагами (например, с 30 до 40-45) и проверять реакцию сервера по CPU и по фидбеку игроков, а не сразу выкручивать в максимум — иначе конфиг может сделать хуже, а не лучше.

Слишком много игроков на насыщенной карте

Десинк усиливается нелинейно с ростом одновременного онлайна на насыщенной событиями карте — не потому что каждый игрок сам по себе тяжёлый, а потому что каждый добавляет свою зону активности (существа рядом, постройки, бои), которую нужно синхронизировать со всеми остальными поблизости. Сервер на 70 игроков с активной PvP-зоной десинкает заметно чаще, чем тот же сервер на 20 игроков при равном железе — это довольно типичная картина для survival-песочниц с плотной застройкой.

Если карта разрослась и десинк стал регулярной жалобой, а не редким эпизодом, есть несколько практических путей, кроме banального апгрейда тарифа:

  • Кластер вместо одной перегруженной карты. Разнести игроков по нескольким картам-инстансам (например, The Island + Ragnarok в кластере с общим складом) снижает плотность объектов на каждой отдельной карте и, соответственно, нагрузку на репликацию в каждый момент времени.
  • Ограничение максимального онлайна под реальные возможности железа, а не под то, сколько слотов хотелось бы продать — если сервер стабильно десинкает при заполнении, честнее снизить MaxPlayers в конфиге запуска, чем терпеть жалобы.
  • Разделение PvP и PvE активности по времени или зонам, где это применимо для формата сервера — концентрация боёв с турелями и существами в одном месте создаёт локальный пик нагрузки на репликацию сильнее, чем равномерно распределённая активность.

Что реально помогает: чек-лист минимизации

Собираем всё в порядке приоритета — от простого к более трудозатратному:

  1. Проверить сеть сервера (mtr/traceroute, стабильность пинга, packet loss на исходящем канале) — это база, без которой остальные шаги бессмысленны.
  2. Свериться с ресурсами хоста — CPU и, отдельно, загрузку исходящего сетевого канала в часы пика.
  3. Провести ревизию накопленных существ и построек — заброшки, лишние турели, раздутые фермы динозавров.
  4. Аккуратно поднять NetServerMaxTickRate небольшими шагами, если есть запас по CPU и каналу.
  5. При стабильно высоком онлайне на насыщенной карте — рассмотреть разнесение по кластеру или пересмотр лимита слотов.
  6. Если после всего этого десинк остаётся заметным при обычной активности — это, вероятнее всего, упор в возможности тарифа, и стоит смотреть в сторону более мощной конфигурации VPS под сервер ARK.

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

Поднять сервер ARK: Survival за пару минут

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

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

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

Десинк — это то же самое, что рубербендинг (rubber-banding)?

Близкие явления с одной причиной — задержкой или потерей сетевых обновлений, но рубербендинг обычно про резкие рывки позиции самого игрока при движении, а десинк шире — расхождение положения существ, объектов и событий (урон, взаимодействия) между разными клиентами.

Помогает ли SSD/NVMe против десинка?

Косвенно и не напрямую. Десинк — это в первую очередь про сеть и CPU-нагрузку на репликацию состояния, а не про скорость диска. Быстрый диск важен для загрузки мира и сейвов, но не решает проблему рассинхронизации между клиентами.

Можно ли полностью убрать десинк на ARK-сервере?

Реалистично — нет, если сервер активный и насыщенный контентом. Можно заметно снизить частоту и выраженность через настройки сети, чистку карты и достаточные ресурсы, но полностью исключить его при высокой нагрузке движок не позволяет.

NetServerMaxTickRate одинаково настраивается для ARK: Survival и ARK: Survival Ascended?

Сам параметр и логика работы одинаковые, но путь до конфига отличается — Config/LinuxServer у оригинального ARK и Config/WindowsServer у Ascended, даже при развёртывании на Linux-хостинге.

Стоит ли сразу винить хостинг, если начался десинк?

Не сразу — сначала проверьте сеть (mtr/traceroute) и ресурсы своими силами. Если сеть чистая, CPU не упирается в потолок, а десинк всё равно есть при разумном онлайне — вот тогда есть смысл писать в поддержку хостинга с конкретными данными диагностики, а не с абстрактным "сервер лагает".