сетевой буфер дрожания - как отобразить буферизованные пакеты на текущее время клиента - PullRequest
0 голосов
/ 20 сентября 2018

При чтении пакетов на клиенте я хочу выполнять их с постоянной скоростью.Допустим, сервер отправляет пакеты с интервалом 50 мс, затем я хочу, чтобы пакеты выполнялись на клиенте также с интервалом 50 мс.

Насколько я понимаю, вы не можете выполнять пакеты такими, какие они есть.получено.Это может вызвать дрожание, так как задержка от сервера может колебаться.Вместо этого вы хотите буферизовать эти пакеты в буфере задержки и выполнить их с установленной задержкой.

Source Multiplayer Networking - Entity Interpolation

Нумерацией пакетов (снимков на изображении) их будет легко буферизовать.Если я получаю пакеты в неправильном порядке, я все еще знаю, какой пакет подходит к какому слоту в буфере, или, если пакет отсутствует, его легко обнаружить.

Мой вопрос - Какя знаю, как отобразить буфер задержки на текущее время клиента?

Скажем, это будет буферизованный фильм, я мог бы просто установить "текущее время чтения" где-нибудь, где, я думаю, я будуполучать пакеты вовремя, чтобы мне не пришлось останавливаться и буферизовать.Я мог бы установить произвольную точку в буфере и просто шагать через фиксированные временные интервалы (такие же, как скорость отправки).Это не совсем то, чего я хочу, вместо этого я хочу сказать, что я хочу запустить его ровно на 100 мс позади текущего времени клиентов, но я не знаю, как связать пакеты с текущим рендерингом или временем клиента.Как узнать, какой момент времени в буфере соответствует задержке в 100 мс?

...