RE:NODE

Сеть13 мин чтения

Где разместить игровой сервер: задержка и география

Задержка - это расстояние, делённое на скорость света. Как выбрать расположение для игроков, которые у вас есть на самом деле, честно измерить его и прочитать цифры.

Обновлено

0 прочтений

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

Сначала физика, потом железо#

Свет в вакууме проходит 300 км за миллисекунду. В стекле он замедляется примерно до двух третей этого, так что удобное правило - 200 км за миллисекунду в оптоволокне. Путь туда и обратно - это дорога в обе стороны, поэтому абсолютный минимум для любого соединения примерно равен расстоянию в одну сторону в километрах, делённому на 100, выраженному в миллисекундах.

На практике этот минимум недостижим по трём причинам, которые накладываются друг на друга. Оптоволокно не идёт по прямой: оно следует за береговыми линиями, железнодорожными коридорами и существующей канализацией, так что длина кабеля обычно в 1,3-2 раза больше расстояния по большому кругу. Каждый маршрутизатор на пути добавляет время коммутации, обычно долю миллисекунды, но их десять-двадцать. А хуже всего последняя миля: интерливинг в DSL, планирование в кабельном модеме, повторные передачи по wifi и перегруженный домашний исходящий канал могут добавить от 5 до 40 мс ещё до того, как пакет покинул здание.

Так что реалистично ожидать примерно вдвое больше физического минимума, иногда чуть меньше на хорошо соединённом маршруте между двумя крупными узлами, иногда втрое-вчетверо на маршруте, которому приходится идти в обход. Ни один хостинг этого не меняет. Хостинг, рекламирующий пинг ниже, чем позволяет геометрия, измеряет что-то другое - обычно время до собственного веб-сервера или пинг изнутри собственной сети.

Как ощущается каждый диапазон задержки#

Числа ниже - это время туда и обратно, которое видит игрок, и по ощущениям они нелинейны. Переход с 20 до 40 мс почти незаметен. Переход со 100 до 120 меняет то, какие бои вы выигрываете.

Время туда и обратноКак играется
До 30 мсНеотличимо от локальной игры в любом жанре
30-60 мсНормально для выживания, строительства, гонок и roleplay. В шутере заметно, если присматриваться
60-100 мсИграть можно везде. Игроки соревновательных шутеров начинают жаловаться
100-150 мсВыживание и строительство по-прежнему в порядке. Всё, где есть дуэли, - нет
Больше 150 мсДругой опыт, а не худшая версия того же самого

Жанр важнее числа. Сервер Valheim или Factorio при 120 мс вполне играбелен, потому что в этих играх почти ничто не зависит от реакции быстрее ста миллисекунд. Сервер Counter-Strike 2 при 120 мс - плохой сервер, потому что преимущество выглядывающего растёт прямо пропорционально разнице задержек двух игроков, а вся игра построена вокруг этого. Minecraft находится посередине: строить можно и при 150 мс, а вот PvP нет.

Есть и взаимодействие с tick rate, которое несправедливо списывают на расположение. Сервер на 20 тиков сам добавляет до 50 мс задержки, ещё до того, как двинется хоть один пакет, а на 64 тика - до 15 мс. Если люди жалуются на «лаг» на сервере в пяти миллисекундах от них, смотреть надо на tick rate и собственное время кадра сервера, а не на карту; подробно это разобрано в статье что на самом деле означает tick rate.

Время до Франкфурта и где проходит минимум#

Франкфурт - разумная замена для любой площадки в Германии, потому что там находится DE-CIX и через него проходит большинство европейских маршрутов. Вот физический минимум рядом с тем, что обычно измеряется на домашнем соединении. Ваше число будет отличаться в зависимости от провайдера и времени суток - измеряйте, а не доверяйте таблице, в том числе этой.

ОткудаФизический минимумОбычно измеряется
Амстердам4 мс7-10 мс
Берлин4 мс8-12 мс
Париж5 мс10-15 мс
Лондон6 мс12-18 мс
Милан5 мс14-20 мс
Варшава9 мс20-28 мс
Стокгольм12 мс25-32 мс
Мадрид14 мс30-40 мс
Киев16 мс30-45 мс
Москва20 мс35-50 мс
Стамбул19 мс45-60 мс
Тбилиси29 мс60-80 мс
Нью-Йорк62 мс85-100 мс
Дубай48 мс110-135 мс
Лос-Анджелес93 мс145-165 мс
Сингапур103 мс155-185 мс
Сан-Паулу98 мс190-215 мс
Сидней165 мс250-290 мс

Две строки заслуживают комментария, потому что показывают, что делает маршрутизация. Дубай ближе к Франкфурту, чем Нью-Йорк, а задержка у него примерно на треть больше, потому что трансатлантические кабели короткие, прямые и огромные, а трафик в Персидский залив идёт более длинным наземным и подводным путём с большим числом прыжков. Тбилиси расположен менее чем в 3000 км от Франкфурта и нередко показывает результат хуже, чем Нью-Йорк, находящийся более чем вдвое дальше, потому что кавказские маршруты часто делают крюк через Стамбул, Бухарест или Москву вместо чего-то, напоминающего прямую.

В этом общий урок. Расстояние задаёт минимум. Маршрутизация решает, насколько выше минимума вы окажетесь. Город в 500 км с плохим транзитным путём может быть медленнее города в 2000 км с хорошим.

Выбирайте по середине вашей группы#

Сервер, поставленный так, чтобы одному человеку дать 10 мс, а всем остальным 90, хуже сервера, дающего всем по 45. Это звучит очевидно и нарушается постоянно, потому что выбирающий хостинг обычно тот, кто будет размещать его поближе к себе.

Метод, который работает:

  1. Спросите каждого постоянного игрока, в какой он стране и у какого провайдера. Не «в Европе», а в какой стране, потому что Португалия и Польша разделены тремя тысячами километров.
  2. Пусть каждый выполнит ping до тестового адреса в предполагаемом месте и сообщит число, а не впечатление.
  3. Отсортируйте результаты и посмотрите на медиану и худшее значение. Вы оптимизируете медиану, удерживая худший результат ниже диапазона, где ломается их жанр.
  4. Сознательно отбрасывайте выбросы. Человек на спутниковом соединении или в другом полушарии в любом случае будет страдать, куда бы ни переехал сервер, а перенос сервера в его сторону стоит восьми людям по десять миллисекунд каждому, чтобы сберечь одному сорок.

Стоит назвать два особых случая. Если ваша группа действительно разбросана по континентам - половина в Европе, половина в Северной Америке, - хорошего единого расположения нет, и честных вариантов два: выбрать ту половину, которая играет больше, и сказать другой правду, либо запустить два сервера и смириться, что это два разных сообщества. Разделить разницу, поставив сервер в Исландии, значит дать всем посредственный опыт, а это единственный исход, которого не хотел никто.

А если вы запускаете публичный сервер, а не сервер для друзей, расположение определяет, кто на него зайдёт. Сервер в Германии заполняется европейскими игроками независимо от того, что вы задумали, потому что все остальные видят плохой пинг в браузере и уходят. Это достоинство, если вы хотели европейское сообщество, и проблема, если нет.

Расстояние задаёт минимум, маршрутизация - остальное#

Когда у вас есть короткий список, различия между вариантами определяются качеством сети, а не километрами. Важны три вещи, и ни одной из них нет на странице с ценами.

Пиринг. Датацентр, подключённый к крупному обменному узлу, передаёт трафик потребительским провайдерам напрямую, а не платит транзитному провайдеру за его перевозку. Пиринг в Европе происходит во Франкфурте, Амстердаме и Лондоне, поэтому сервер там нередко обгоняет географически более близкий сервер в городе с одним вышестоящим провайдером.

Асимметричные пути. Маршрут туда не обязательно совпадает с маршрутом обратно, а traceroute показывает только одно направление. Путь, который с вашей стороны выглядит нормально, может быть ужасен в другую, поэтому одностороннний traceroute - это свидетельство, а не доказательство. Что на самом деле значат столбцы и какие прыжки можно спокойно игнорировать, объясняет статья как читать traceroute и mtr.

Последняя миля самого игрока. Это то, что вы не можете исправить, и нередко самое большое слагаемое. Wifi добавляет 2-10 мс в хороший день и намного больше, когда канал занят. Перегруженный домашний исходящий канал добавляет десятки миллисекунд ожидания в очереди под нагрузкой, поэтому пинг у кого-то утраивается, когда член семьи начинает загрузку. Прежде чем винить сервер, пусть игрок проверит по кабелю, когда больше ничего не запущено.

Как измерять правильно#

Число пинга в игре - это отправная точка, а не измерение, потому что каждая игра считает его по-своему, а некоторые включают в показываемое значение собственную задержку тика сервера. Измеряйте снаружи игры.

bash
# Baseline: a hundred pings, and read the deviation, not just the average$ ping -c 100 node.example.com# Where the time goes, and where loss starts, over a sustained run$ mtr -rwzbc 200 node.example.com# Windows equivalents> ping -n 100 node.example.com> pathping node.example.com

Что читать в выводе:

  • Минимум, а не среднее. Минимум близок к настоящей задержке пути; среднее загрязнено очередями на вашей собственной линии.
  • Стандартное отклонение или разброс между минимумом и максимумом. Пинг 40 мс, качающийся между 35 и 200, хуже для игры, чем ровные 80.
  • Где в `mtr` впервые появляются потери. Потери на одном прыжке, которые пропадают на последующих, - это ограничение частоты ICMP на том маршрутизаторе, и они ничего не значат. Потери, которые начинаются на каком-то прыжке и продолжаются до конца, настоящие.

Проводите тест в тот час, когда вы действительно играете. Европейские вечера - время, когда домашние сети загружены, и маршрут, прекрасно измеряющийся в 11:00, в 21:00 может быть на 30 мс хуже. Одно измерение в тихий час - вот как люди оказываются удивлены.

Если нужна вся диагностическая процедура - как отличить задержку, джиттер и потери друг от друга и понять, что из них вызывает описанный людьми симптом, - для этого есть статья задержка, джиттер и потери пакетов.

Джиттер и потери пакетов важнее пинга#

«Лагом» игроки называют три разные проблемы, а расположение вызывает лишь одну из них.

Задержка - это постоянное запаздывание. Ровные 90 мс ощущаются как чуть более медленный мир, и мозг привыкает к нему за минуты. Именно её контролирует география.

Джиттер - это разброс этой задержки. Пакеты, приходящие с интервалами 40, 45, 120, 38, 90 миллисекунд, не сгладит никакая интерполяция на стороне клиента, поэтому получается «резиновое» движение: объекты двигаются, затем возвращаются туда, где на самом деле были. Джиттер обычно происходит от собственного соединения игрока или перегруженного прыжка, а не от расстояния, и он гораздо разрушительнее, чем предполагает среднее значение.

Потеря пакетов - это пакеты, которые не приходят вовсе. Игра на UDP их не отправляет повторно, поэтому потерянное обновление позиции означает, что клиент догадывается и потом поправляет. Один-два процента терпимы; пять процентов невыносимы в шутере и всё ещё заметны в игре на выживание.

Практический вывод для выбора расположения: не платите за 20 мс меньше, если это стоит вам маршрута с джиттером. Стабильный сервер на 70 мс всегда лучше дрожащего на 50 мс для всех, и люди, громче всех жалующиеся на лаг, почти всегда описывают джиттер, а не задержку.

Одно расположение и кому оно подходит#

RE:NODE работает из одного места: Германии, на оборудовании, которым мы управляем, а страница статуса показывает единственный узел, на котором всё размещено. Выбора региона нет, и притворяться, что он есть, незачем, так что полезнее сказать, кому это подходит, а кому нет.

Оно подходит группе от Ирландии до Кавказа. Игроки из Западной, Центральной и Восточной Европы получают от 8 до 45 мс, игроки из Турции и Грузии - от 45 до 80, и всё это с запасом внутри диапазона, где выживание, строительство, гонки и roleplay ощущаются как локальные, а шутер в порядке, если только кто-то не играет на уровне, где это не так. Оно подходит грузинским, турецким и балканским игрокам, которых плохо обслуживают хостинги, думающие только категориями Лондона и Амстердама.

Оно не подходит группе, центр тяжести которой находится в Северной Америке, Южной Америке, Южной Азии, Восточной Азии или Океании. Игрок в Техасе видит 120-140 мс, а игрок в Сиднее 250 и больше, и никакое изменение конфигурации этого не улучшит. Если ваша группа такая, размещайтесь ближе к ней и забирайте остальное содержание этой статьи с собой. Что ещё проверить перед тем, как кому-либо платить, описано в статье как выбрать хостинг игрового сервера.

Честность важнее всего для публичного сервера, который вы собираетесь растить. Выбирайте расположение под то сообщество, которое хотите, примите, что оно само отбирает ваших игроков, и не позволяйте никому продать вам тариф на основании списка регионов, которым вы никогда не воспользуетесь.

Переезд позже и его цена#

Если вы ошиблись, переехать можно, и это не бесплатно. Файл мира, конфигурация и набор плагинов переезжают без проблем. Не переезжает адрес, а цена переезда измеряется тем, сколько игроков это заметит.

Порядок действий, который сводит эту цену почти к нулю:

  1. Дайте серверу имя хоста сейчас, до того как оно понадобится, и раздавайте игрокам имя, а не адрес. Подключение домена к игровому серверу - дело десяти минут, превращающее будущую миграцию в одну правку DNS.
  2. Снизьте TTL этой записи до 300 секунд за день до переезда, чтобы кэши быстро истекли, когда придёт время.
  3. Копируйте данные при остановленных обоих серверах, чтобы после копирования ничего не записывалось.
  4. Смените запись, оставьте старый сервер доступным на несколько часов и наблюдайте, кто всё ещё подключается туда.

Игроки, сохранившие сырой IP-адрес, не последуют за вами, и это и есть весь довод за то, чтобы с первого дня раздавать имя. Полный чек-лист, включая то, что делать с файлами сохранений, хранящими абсолютные пути, есть в статье как переехать, не потеряв игроков.

Одна вещь, которая не повод переезжать: пинг одного-единственного игрока. Сначала проверьте его последнюю милю, запустите mtr с его машины и посмотрите, его ли это потери. Переезд сервера из-за чьего-то wifi - хорошо известная ошибка.

FAQ#

Уменьшает ли более быстрый сервер мой пинг?

Нет. Пинг - это время, за которое пакет доходит туда и обратно, и оно задаётся расстоянием, маршрутом и оборудованием на пути. Более быстрый процессор сокращает время, которое сервер тратит на обработку тика, - это реальное и отдельное улучшение, - но число в углу вашего экрана он не меняет.

Какой пинг достаточен для шутера?

До 50 мс все остаются примерно в равных условиях. От 50 до 100 играть можно, и это заметит любой, кто играет соревновательно. Выше 100 разница задержек между двумя игроками начинает решать дуэли, и именно это, а не само число, вызывает возражения у серьёзных игроков.

Размещать сервер рядом со мной или рядом с моими игроками?

Рядом с игроками, если только вы не единственный, кто играет. Пинг администратора - самый неважный на сервере, потому что большую часть времени вы проводите в панели, а не в игре.

Хорош ли сервер в Германии для игроков из Грузии или Турции?

Да, для большинства игр. Типичное время туда и обратно - 45-60 мс из Стамбула и 60-80 мс из Тбилиси, чего хватает для выживания, строительства, гонок и roleplay и приемлемо для казуальных шутеров. Игроки соревновательных шутеров это почувствуют.

Почему вечером мой пинг хуже?

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

Может ли VPN улучшить пинг до сервера?

Иногда, и только когда маршрут вашего провайдера по умолчанию действительно плох, а у VPN случайно оказывается лучший. Гораздо чаще он добавляет прыжок, шаг шифрования и немного джиттера и делает чуть хуже. Измеряйте до и после, а не предполагайте.


Комментарии

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

0/2000