Network Transform

Компонент Network Transform синхронизирует положение, поворот и масштаб сетевых игровых объектов по всей сети.

Mirror в настоящее время предоставляет два варианта NetworkTransform:

  • Reliable: низкая пропускная способность, та же задержка, что и у Rpcs/Cmds/т.д.

  • Unreliable: высокая пропускная способность, чрезвычайно низкая задержка

Используйте NetworkTransformReliable если только вам не нужна сверхнизкая задержка.

Игровой объект с компонентом Network Transform также должен иметь компонент Network Identity. Когда вы добавляете компонент Network Transform к игровому объекту, Mirror также добавляет компонент Network Identity к этому игровому объекту, если у него его еще нет.

По умолчанию, Network Transform является авторитетным для сервера, если вы не измените Sync Direction на Client To Server. Client Authority применяется как к игровым объектам, так и к неигровым объектам, которые были специально назначены клиенту, но применяется только для этого компонента. Если этот параметр включен, изменения местоположения отправляются с клиента на сервер.

Вы можете использовать Sync Interval чтобы указать, как часто он будет синхронизироваться (в секундах).

Плавное перемещение во время задержки, потери пакетов и дрожания

NetworkTransform отправляет обновление позиции каждые sendInterval поверх Unreliable канала.

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

Плавное перемещение в неидеальных сетевых условиях является одной из наиболее сложных проблем в игровых сетях. Наш компонент NetworkTransform решает это с помощью Snapshot Interpolation. Мы рекомендуем прочитать главу, на которую дана ссылка, чтобы понять ее в деталях.

Короче говоря, плавное перемещение в неидеальных условиях достигается за счет буферизации. Чем хуже условия, тем больше Buffer Time Multiplier должно быть. Однако, чем он выше, тем дольше он также буферизуется.

Общее время буферизации вычисляется по формуле sendInterval * Buffer Time Multiplier. Обычно рекомендуется использовать коэффициент '3'.

Это означает, что, хотя вы можете увеличить Buffer Time Multiplier чтобы компенсировать ухудшение условий, вы также могли бы уменьшить sendInterval чтобы по-прежнему сохранять разумно низкую задержку буферизации.

Наш новый Network Transform уже используется в производстве несколькими реальными игровыми проектами. Посмотрите наше видео для сравнения между нашими старыми и новыми компонентами Network Transform.

Примечание: В более новых версиях Mirror, sync interval был перемещён в NetworkManager как "Send Rate". Send rate в 10, будет как 0.1 у sync interval.

Last updated