Мы создаем многопользовательскую игру в реальном времени, в которой каждый игрок должен сообщать о своем состоянии на каждой итерации игрового цикла.
Обновления состояния передаются с использованием ненадежного UDP .
Чтобы минимизировать отправку данных о состоянии, мы создали систему, которая будет отправлять только дельты (независимо от того, какие данные о состоянии были изменены).
Этот метод, однако, имеет недостатки, так как потерянный пакет будет означать, что другие игроки не получат дельту, что заставит игру вести себя неожиданным образом.
Например:
Предположим, что состояние состоит из: {positionX, positionY, health}
Frame 1 - positionX changed --> send a packet with positionX only.
Frame 2 - health changed // lost !
Frame 3 - positionY changed --> send a packet with positionY only.
// Другие игроки не знают об изменении здоровья.
Как можно решить эту проблему? отправка всей информации не всегда возможна.