Пинг, джиттер и потери: три числа, а не одно
Пинг — время полного оборота пакета. Джиттер — насколько это время скачет от пакета к пакету. Потери — доля пакетов, которые не дошли вовсе. Игроки обычно смотрят только на первое число, а на ощущения от игры сильнее влияют второе и третье.
Стабильные 45 мс играются лучше, чем 25 мс с разбросом от 15 до 90. Причина в том, как устроен сетевой код: клиент предсказывает состояние мира и корректирует его по приходящим пакетам. Ровная задержка предсказывается хорошо, скачущая приводит к рывкам персонажей и откатам позиции. Потери выше 1% дают то же самое даже при отличном пинге.
Практический ориентир: для шутеров нужен пинг до 50 мс, джиттер до 10 мс и потери ниже 0,5%. Для игр с более медленной механикой — стратегий, ролевых, пошаговых — допустимы 150 мс и выше, там задержка просто не заметна. Прежде чем что-то настраивать, замерьте эти три числа без туннеля.
Почему 20 мс решают всё в шутере и ничего в стратегии
В соревновательном шутере сервер обрабатывает состояние 64 или 128 раз в секунду, то есть кадр длится 15,6 или 7,8 мс. Лишние 20 мс задержки — это один-три пропущенных кадра: вы видите противника позже, стреляете позже, а на его экране успеваете уйти за угол. Отсюда знакомое ощущение «я же попал».
В стратегии или ролевой игре команда «идти в точку» выполняется за секунды, и 20 мс на её доставку никто не различит. Там важнее, чтобы соединение не рвалось: разрыв на минуту в рейде хуже, чем постоянные 200 мс.
Отсюда правило выбора: если вы играете в шутер и он работает нормально, туннель для самой игры не нужен, ограничьтесь загрузками. Если играете во что-то неторопливое, прибавка к пингу вас не коснётся, и туннель можно держать включённым постоянно.
Загрузки и игра — две разные задачи
Скачивание обновления и игровой трафик пользуются каналом совершенно по-разному. Загрузке нужна пропускная способность и безразлична задержка: файл идёт большими блоками, TCP разгоняется, лишние 100 мс погоды не делают. Игре нужно обратное — минимальная и ровная задержка при копеечном объёме в 50–150 кбит/с.
Поэтому оптимальная схема часто гибридная: включить туннель на время загрузки, выключить перед игрой. Или настроить раздельное туннелирование так, чтобы через туннель ходил только клиент магазина, а исполняемый файл игры — напрямую. В нашем клиенте это делается выбором приложений в разделе маршрутизации.
Отдельно стоит помнить: загрузка на полной скорости забивает канал и портит пинг всем в доме. Большинство лаунчеров умеют ограничивать скорость и ставить загрузки на расписание — это полезнее любых сетевых ухищрений.
ПК и консоли: разные возможности
На ПК есть выбор: клиент с раздельным туннелированием, правила по приложениям, быстрое переключение локаций. Можно пустить через туннель магазин и оставить игру напрямую, можно включать туннель только на время загрузки. Гибкость полная.
На консолях выбора нет. Ни Xbox, ни PlayStation не позволяют установить стороннее сетевое приложение — система закрыта. Единственный реальный путь — настройка на роутере: тогда консоль просто получает интернет, уже идущий через туннель, и ничего не знает о нём. Подробности в разделе настройка на роутере.
У роутерного варианта два следствия, о которых надо знать заранее. Первое: через туннель пойдёт вся домашняя сеть, если не настроить исключения по устройствам. Второе: маршрутизация через туннель меняет тип NAT, и в некоторых играх это ломает подключение к сессиям. Разбор — на страницах консолей.