Прогнозирование на стороне клиента в сетевых играх
Client-side prediction
Прогнозирование на стороне клиента в играх: уменьшение задержек и повышение отзывчивости. Техника скрывает лаги, обеспечивая мгновенную реакцию на действия игрока.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Клиентское предсказание — это техника сетевого программирования, используемая в видеоиграх для маскировки негативных эффектов высокой задержки соединения. Эта техника стремится сделать реакцию на действия игрока более мгновенной, одновременно управляя этими действиями на удалённом сервере. Клиентское предсказание подразумевает, что клиент локально реагирует на ввод пользователя до того, как сервер подтвердит этот ввод и обновит состояние игры. Таким образом, вместо того чтобы просто отправлять данные управления на сервер и ждать обновления состояния игры в ответ, клиент параллельно с этим предсказывает состояние игры локально и предоставляет пользователю обратную связь, не дожидаясь обновления от сервера. Клиентское предсказание снижает проблемы, связанные с задержкой, поскольку исчезает задержка между вводом и визуальной обратной связью на стороне клиента, вызванная временем сетевого пинга. Однако это также приводит к рассинхронизации состояния игры на клиенте и сервере, которую необходимо учитывать для сохранения игрового процесса. Клиент включает порядковый номер в каждый пакет данных, отправляемый на сервер, и сохраняет локальную копию. Когда сервер отправляет авторитетное обновление клиенту, он включает порядковый номер последнего обработанного пакета для этого клиента. Клиент принимает новое состояние и повторно применяет пакеты, которые ещё не были обработаны сервером, что в большинстве случаев полностью устраняет видимые проблемы рассинхронизации. Первым известным шутером от первого лица, использовавшим клиентское предсказание, был Duke Nukem 3D, в котором эта функция была встроена начиная с shareware-версии от 29 января 1996 года. Эта техника также была важной особенностью QuakeWorld, популярного дополнения к Quake. Хотя сетевая игра присутствовала в оригинальной Quake, она была оптимизирована в основном для локальных сетей. Разработчики Quake, имея доступ к высокоскоростным домашним подключениям (что было редкостью в то время), не учли свои предположения о высокой пропускной способности и низком пинге, из-за чего игра в Интернете была разочаровывающей для пользователей с dial-up подключением. После серии экспериментов в длительном закрытом бета-тестировании id Software выпустила QuakeWorld с новой прогностической моделью, которая оказалась популярной как среди игроков с высокой, так и с низкой задержкой.
Client side prediction is a network programming technique used in video games intended to conceal negative effects of high latency connections. The technique attempts to make the player's input feel more instantaneous while governing the player's actions on a remote server. The process of client side prediction refers to having the client locally react to user input before the server has acknowledged the input and updated the game state. So, instead of the client only sending control input to the server and waiting for an updated game state in return, the client also, in parallel with this, predicts the game state locally, and gives the user feedback without awaiting an updated game state from the server. Client side prediction reduces latency problems, since there no longer will be a delay between input and client side visual feedback due to network ping times. However, it also introduces a desynchronization of the client and server game states, which needs to be handled to keep the game playable. The client includes a sequence number in every input sent to the server, and keeps a local copy. When the server sends an authoritative update to a client, it includes the sequence number of the last processed input for that client. The client accepts the new state, and reapplies the inputs not yet processed by the server, completely eliminating visible desynchronization issues in most cases. The earliest known first person shooter to use client side prediction is Duke Nukem 3D, which had it built in since the January 29, 1996 shareware release. The technique was also a prominent feature of QuakeWorld, the popular add on to Quake. While network play was included in the original Quake game, it was optimized mainly for LAN play. Having had high speed home connections (a rarity at the time), Quake'''s designers overlooked their assumptions of high bandwidth and low ping times that made playing online frustrating for dial up users. After a series of experiments in a long private beta, id Software released QuakeWorld'' with a new predictive model that proved popular with both high and low latency players.