Round Trip Time (RTT)
Краткий обзор RTT от Mirror и того, как улучшить его в вашей игре.
Понимание RTT
Round Trip Time (rtt) это время, необходимое для того, чтобы сообщение дошло до другого конца и обратно. RTT всегда зависит от двух факторов:
Задержка: Сетевое сообщение проходит через Интернет определенное время.
Интервал обновления: Сообщения должны быть обработаны и отправлены обратно на другой конец. Если скорость обновления вашего сервера низкая, 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