Перейти к основному содержимому
Живая игра

Эта страница ещё не переведена — показана английская версия.

Как показывать других игроков

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

Режим отображения объявляется

Для чужих сущностей (entity) комната объявляет, чем заполнять промежуток между пришедшими состояниями: интерполировать между теми, что уже есть, или экстраполировать дальше самого нового. Это объявление на сущности, поэтому ответ одинаков на всех клиентах и не зависит от того, кто писал рендерер.

Задержка интерполяции тоже объявляется. Чтобы другие игроки двигались плавно, их приходится показывать с небольшим опозданием — на объявленную величину. Это число вы настраиваете под свой жанр.

Экстраполяция останавливается, а не выдумывает

WHAT ARRIVES their state, at intervals WHAT YOU DRAW a smooth path through what arrived, held a little behind carried on stopped not invented
Состояния приходят с интервалами, между ними вы рисуете плавный путь, а если следующее не пришло, движение останавливается

Окно экстраполяции объявляется. Когда оно истекает, сущность перестаёт показываться движущейся и не продолжает путь наугад. Если экстраполировать бесконечно, игрок (player) будет целиться туда, где цели никогда не было, и даже не поймёт этого. Видимая остановка — сбой, после которого игра восстанавливается.

Почему это отдельно от предсказания своего движения

У трёх механизмов предсказания (prediction) разные авторитетные стороны и разная цена ошибки. Если назвать их одним словом, настройка одного будет незаметно менять два других.

МеханизмГде работаетЦена ошибки
предсказание своего движенияклиенткоррекция: ввод переигрывается, результат сглаживается
показ других игроковклиентзаметный рывок
компенсация лаговсерверкто-то погибает несправедливо

Из-за этого разделения и существует пресет observer, в котором есть только этот механизм. Своего ввода у зрителя нет и предсказывать нечего, так что настройки предсказания описывали бы то, чего он не делает.