Round Trip Time (RTT)

Краткий обзор RTT от Mirror и того, как улучшить его в вашей игре.

Понимание RTT

Round Trip Time (rtt) это время, необходимое для того, чтобы сообщение дошло до другого конца и обратно. RTT всегда зависит от двух факторов:

  1. Задержка: Сетевое сообщение проходит через Интернет определенное время.

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

Mirror вычисляет RTT как на клиенте, так и на сервере:

  • Клиенты могут использовать NetworkTime.rtt

  • Сервер может использовать NetworkServer.connection.rtt (разные для каждого соединения)

Если вы хотите отображать RTT в вашей игре, вы можете использовать компонент NetworkPingDisplay.

RTT на локальной машине

Если вы запустите нашу демонстрационную версию Tanks с сервером и клиентом на одном компьютере, вы увидите среднее время ожидания около 8 мс:

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

Причина этого проста: по умолчанию, Mirror NetworkManager.sendInterval поставлен на 60 Hz.

Это означает, что сетевые обновления происходят каждые 16 миллисекунд (1 секунда / 60).

Сообщения RTT могут поступать во время обновления или во время ожидания следующего обновления в течение 16 мс.

В среднем это означает, что время ожидания каждого сообщения RTT составляет 8 миллисекунд.

Вот почему на приведенном выше рисунке показано время ожидания около 8 мс на вашем локальном компьютере.

Оптимизация RTT

Интервал отправки 60 Гц - это разумный компромисс между пропускной способностью (чем чаще вы отправляете, тем больше ваши затраты на пропускную способность) и RTT. Если вы хотите обменять большую пропускную способность на более низкую RTT:

  • Измените sendInterval на 120 Гц или больше в NetworkManager

  • Убедитесь что VSYNC выключено (если конечно ваш монитор работает на 60 Гц, Vsync ограничивает обновление кадров на 60 Гц)

  • Убедитесь, что ваша игра работает достаточно быстро (если ваш процессор работает слишком медленно, чтобы достичь 120 Гц, то ваша частота отправки, очевидно, не сможет составлять 120 Гц)

Благодаря высокой скорости отправки и частоте кадров мы можем легко снизить RTT демо-версии Tanks до 1-2 мс на нашем локальном компьютере. Конечно, это не рекомендуется в готовой игре:

Last updated