description |
---|
Краткий обзор RTT от Mirror и того, как улучшить его в вашей игре. |
{% hint style="info" %} Round Trip Time (rtt) это время, необходимое для того, чтобы сообщение дошло до другого конца и обратно. RTT всегда зависит от двух факторов:
- Задержка: Сетевое сообщение проходит через Интернет определенное время.
- Интервал обновления: Сообщения должны быть обработаны и отправлены обратно на другой конец. Если скорость обновления вашего сервера низкая, RTT будет большим. {% endhint %}
Mirror вычисляет RTT как на клиенте, так и на сервере:
- Клиенты могут использовать
NetworkTime.rtt
- Сервер может использовать
NetworkServer.connection.rtt
(разные для каждого соединения)
Если вы хотите отображать RTT в вашей игре, вы можете использовать компонент NetworkPingDisplay
.
Если вы запустите нашу демонстрационную версию Tanks с сервером и клиентом на одном компьютере, вы увидите среднее время ожидания около 8 мс:
60 Hz update rate gives 8 ms RTT
Поначалу это может показаться странным: хотя 8 мс - это немного, однако всё же не так мало, как можно было бы ожидать от вашего локального компьютера. Очевидно, что пакетам не потребуется 8 мс, чтобы пройти через вашу память.
Причина этого проста: по умолчанию, Mirror NetworkManager.sendInterval поставлен на 60 Hz.
Это означает, что сетевые обновления происходят каждые 16 миллисекунд (1 секунда / 60).
Сообщения RTT могут поступать во время обновления или во время ожидания следующего обновления в течение 16 мс.
В среднем это означает, что время ожидания каждого сообщения RTT составляет 8 миллисекунд.
Вот почему на приведенном выше рисунке показано время ожидания около 8 мс на вашем локальном компьютере.
Интервал отправки 60 Гц - это разумный компромисс между пропускной способностью (чем чаще вы отправляете, тем больше ваши затраты на пропускную способность) и RTT. Если вы хотите обменять большую пропускную способность на более низкую RTT:
- Измените sendInterval на 120 Гц или больше в NetworkManager
- Убедитесь что VSYNC выключено (если конечно ваш монитор работает на 60 Гц, Vsync ограничивает обновление кадров на 60 Гц)
- Убедитесь, что ваша игра работает достаточно быстро (если ваш процессор работает слишком медленно, чтобы достичь 120 Гц, то ваша частота отправки, очевидно, не сможет составлять 120 Гц)
Благодаря высокой скорости отправки и частоте кадров мы можем легко снизить RTT демо-версии Tanks до 1-2 мс на нашем локальном компьютере. Конечно, это не рекомендуется в готовой игре: