История
эволюции этих технологий, латентность осталась неизменной.различные формы в течение довольно долгого времени.
Например, один из той первой сетевой игрой стал Mazewar в 1973 году. Теперь существует бесчисленное множество сетевых виртуальных сред, включая игры, военное моделирование и виртуальные игры среда сотрудничества.
Тем не менее, на всем протяжении эволюции этих технологий, латентность осталась неизменной. Хроническая проблема.
Один из подходов, который не использует никаких шагов для отрицания того, что задержка - это клиент-серверная система, в которой клиент находится называемый тупым клиентом или тупым терминалом .
Это когда клиент обычно рассматривается как входное устройство и сервер запускает симуляцию, которая может быть игрой. движок, реальную среду или научную симуляцию.
Использовались различные подходы, направленные на то, чтобы свести на нет следующие факторы последствия задержки.
Ниже приводятся несколько примеров.
С предсказаниями клиента, клиент также понимает динамику виртуальной среды и понимает, что такое может действовать (т.е. имитировать) независимо от сервера.
Обычно это применяется к играм, в которых симулируемая динамика - это движение персонажей, действия в статической среде.
Однако, хотя в некоторых ситуациях это полезная техника пойдет вразрез с нашей целью разгрузить симулятор на сервере.
Кроме того, в очень динамичной среде, один пользователь может оказывать большое влияние на окружающую среду, тем самым увеличивая вероятность того, что локальный и серверный сервер симуляции расходятся.
Интерполяция и фильтрация местного восприятия сглаживание входящих обновлений состояния путем интерполяции по всем принимаемым штатам, вместо того, чтобы представлять их непосредственно клиенту .
Однако, хотя это техника помогает создавать ровные визуальные эффекты и компенсировать разрыв, это также маскирует сумму латентности, эквивалентной возрасту данных представлен.
Задержки с получением результатов сокращают разрыв между действия и результат, но есть предел тому, как давно прошло время, которое пользователь может потратить до создания прерывистости между действием пользователя и результатом.
Несмотря на то, что пользователь может быть интерполированные, интерполированные, интерполированные все видимые данные моделирования разместил бы умеренную память и вычислительную нагрузку на клиента.
В нашем симуляторе, пользователь может взаимодействовать с десятками тысяч частиц, которые могут иметь воздействует на сотни тысяч частиц.
К тому же, потому что мы работаем с системой видеомагнитофона, мы пытаемся чтобы избежать решений, которые увеличивают время ожидания.
Компенсация запаздывания или таймворп - это система, в которой хранит историю всех недавних игроков и окружающей среды состояния в течение определенного временного интервала, например, 1 с в CS.
Затем, если пользователь выполнит какое-либо действие, то сервер оглядывается назад во времени на состояние мира в том точный момент, в который пользователь выполнил действие, и моделирует действие для верификации.
Однако хотя это очень сильный метод обращения с мгновенные действия на расстоянии (например, шутеры), такие как размер моделирования увеличивается все больше и больше трудно вести историю симуляции и шага в прошлое.
Кроме того, потому что действия в нашем деле моделирование являются / в основном непрерывными, а не мгновенных, есть в настоящее время нет необходимости в возможностях, которые этот метод обеспечивает.
Экстраполяция требует более старых состояний и создает предсказать текущее или будущее состояние.
Если действия пользователя могут привести к тому, чтобы достаточно точно предсказать, то клиент может быть "тупой клиент" (т.е. устройство ввода и программа просмотра), тем самым поддерживая работу симуляции на сервере.
В то время как интерполяция консервативна, экстраполяция - это оптимистичный алгоритм, надеясь сделать правильный выбор, предсказания.
Мертвый расчет - это процесс предсказания. поведение организации, основанное на предположении, что она будет продолжать делать то, что он делает в настоящее время.
Это означает экстраполяцию, и поэтому расхождения являются следующими почти определенно и были изучены ранее.
Тем не менее, есть преимущества. Мертвое исчисление пытается свести к минимуму пропускную способность сети, посылая сообщения в состояние обновления на сервер только в том случае, если клиент отступает от требований курс, который в последний раз посылался на сервер.
Это сделано отчасти и от клиента, выполняющего локальное моделирование, что, как уже упоминалось, является проблемой для нашей компании, предназначение.
Когда клиент обнаруживает несоответствия, он может также интерполировать из текущего состояния в правильное состояние с помощью метода интерполяции, который лучше всего подходит для что позволяет обеспечить бесперебойную работу.
Если погрешность прогнозирования можно сдержать на низком уровне, тогда такой подход поможет синхронизировать клиент(ы) и сервер, в связи с преобладанием экстраполяции вместо экстраполяции интерполяция.
Продолжение следует в моей следующей статье