Я читал статью Valve о многопользовательских сетях, которая была адаптирована из статьи Яна Бернье 2001 года « Методы компенсации задержки» в разработке и оптимизации внутриигрового протокола клиента / сервера . Я делаю многопользовательскую игру в реальном времени, используя сервер node.js, подключенный к клиентам через socket.io, и у меня есть несколько вопросов относительно принципов, подробно описанных ниже:
Интерполяция сущностей
[Интерполяция] предотвращает дрожание движения, к которому это обычно приводит, буферизируя обновления сервера, а затем воспроизводя их с промежутками, плавно интерполируемыми между ними. Он также может защитить от сбоев, вызванных потерей пакета.
Прогнозирование на стороне клиента
Предсказание - это понятие клиента, предсказывающее последствия действий локального игрока, не дожидаясь, пока сервер подтвердит их. Предсказанное состояние объекта проверяется на соответствие серверным командам до тех пор, пока не будет обнаружено совпадение или несоответствие.
Компенсация отставания
Компенсация запаздывания - это понятие сервера, использующего задержку игрока для перемотки времени при обработке [ввода пользователя], чтобы увидеть то, что увидел игрок при отправке команды. В сочетании с прогнозированием, компенсация задержки может помочь в борьбе с задержкой в сети до такой степени, что почти исключает ее с точки зрения злоумышленника.
Применяются ли принципы к TCP так же, как к UDP, и будут ли какие-либо различия в реализации? Я могу видеть, что интерполяция объекта не должна была бы защищать от потери пакета, но это об этом.
Могу ли я даже общаться между сервером и веб-браузером и наоборот, используя UDP и Node.js?
Поскольку работе уже более десяти лет, эти принципы все еще используются или появились другие технологии?
Любая помощь приветствуется.