Прогноз на стороне клиента - Client-side prediction

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

Процесс прогнозирования на стороне клиента означает наличие клиент локально реагировать на ввод пользователя до того, как сервер подтвердит ввод и обновит состояние игры.[1] Таким образом, вместо того, чтобы клиент только отправлял управляющий ввод на сервер и ждал взамен обновленного состояния игры, клиент также, параллельно с этим, предсказывает состояние игры локально и дает пользователю обратную связь, не дожидаясь обновленного состояния игры от сервер.

Прогнозирование на стороне клиента уменьшает проблемы с задержкой, поскольку больше не будет задержки между вводом и визуальной обратной связью на стороне клиента из-за времени проверки связи сети. Однако он также вводит десинхронизацию игровых состояний клиента и сервера, которую необходимо обрабатывать, чтобы игра оставалась доступной для игры.[1] Обычно рассинхронизация корректируется, когда клиент получает обновленное состояние игры, но, поскольку мгновенная коррекция приведет к «привязке», обычно используются некоторые алгоритмы «сглаживания». Например, одним из распространенных алгоритмов сглаживания может быть проверка местоположения каждого видимого объекта на стороне клиента, чтобы увидеть, находится ли он в пределах некоторой эпсилон-ошибки своего местоположения на стороне сервера. Если нет, информация на стороне клиента обновляется непосредственно на стороне сервера (привязана из-за слишком большой десинхронизации). Однако, если расположение на стороне клиента не слишком далеко, новое положение между стороной клиента и стороной сервера интерполируется; это положение устанавливается в пределах некоторой небольшой разницы в шаге от местоположения на стороне клиента, которое обычно считается «достаточно маленьким», чтобы не мешать пользователю.

Другое решение проблемы десинхронизации, обычно используемое в сочетании с прогнозированием на стороне клиента, называется сверка сервера.[2] Клиент включает порядковый номер в каждый ввод, отправляемый на сервер, и сохраняет локальную копию. Когда сервер отправляет официальное обновление клиенту, он включает порядковый номер последнего обработанного ввода для этого клиента. Клиент принимает новое состояние и повторно применяет входные данные, которые еще не обработаны сервером, что в большинстве случаев полностью устраняет видимые проблемы с десинхронизацией.

Самый ранний из известных шутеров от первого лица, использующий предсказание на стороне клиента, - это Duke Nukem 3D, которая была встроена в условно-бесплатную версию 29 января 1996 года.[3][4] Техника также была характерной чертой QuakeWorld, популярное дополнение к Землетрясение. Хотя сетевая игра была включена в оригинал Землетрясение игра, она была оптимизирована в основном для LAN играть в. Имея высокоскоростное домашнее соединение (редкость в то время), Землетрясение 'Разработчики упустили из виду свои предположения о высокой пропускной способности и низком времени пинга, из-за которых онлайн-игра стала для набрать номер пользователей.[5] После серии экспериментов в длинной частной бета-версии, id Программное обеспечение вышел QuakeWorld с новой моделью прогнозирования, которая оказалась популярной среди игроков с высокой и низкой задержкой.

Смотрите также

Рекомендации

  1. ^ а б Бернье, Ян В. (2001). «Методы компенсации задержки при проектировании и оптимизации внутриигрового протокола клиент / сервер» (PDF). Получено 2008-12-19.
  2. ^ Габриэль Гамбетта, Прогнозирование на стороне клиента и согласование сервера
  3. ^ Дрансфилд, Ян (14.07.2018). "Машинное отделение: сборка". Ретро Геймер. Объединенное Королевство: Future plc (182): 62–67. ISSN  1742-3155. Получено 2018-11-24.
  4. ^ Выпуск исходного кода Duke Nukem 3D (версия 1.5 на компакт-диске) - 1 апреля 2003 г., См. Domovethings (), fakedomovethings () и fakedomovethingscorrect (), Сохранение видеоигр, 2019-05-15, получено 2019-05-15CS1 maint: другие (связь)
  5. ^ Джон Кармак, QuakeWorld .plan