Как синхронизировать физику сотен объектов и экономить трафик
При синхронизации состояния симуляция идёт на обеих сторонах, а по сети передают команды игрока и состояние лишь части объектов. Между пакетами объекты движутся по последним координатам и скоростям. В примере с 901 кубом пакет содержит до 64 обновлений.
Накопитель приоритета чаще выбирает активные объекты, но счёт остальных растёт каждый кадр. Не поместившееся обновление сохраняет приоритет до следующей отправки.
На приёмнике буфер задерживает пакеты на 4–5 кадров при 60 Гц и выдаёт их равномерно. При сжатии всё состояние округляют до сетевой точности на обеих сторонах перед каждым шагом симуляции: иначе расхождение координат вызывает рывки.
В статье Gaffer On Games разобраны структура пакета, приоритеты и расчёт под лимит 256 кбит/с.
Post #2070
858

- ❤ 2