Лаг (компьютерный сленг)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Лаг (от англ. lag, [læɡ] — «запаздывание», «задержка») — задержка в работе компьютерного приложения, когда оно не реагирует на пользовательский ввод вовремя. Производное от него «лагать» широко используются пользователями интернета для обозначения задержек в работе различных интернет-сервисов, онлайн-игр. Также геймеры используют слово «лаг» применительно к задержкам самой программы. Часто встречается в сетевых играх. С технической точки зрения представляет собой проявление влияния латентности операций передачи и обработки данных на качество работы системы реального времени.

Лаг в сетевых играх[править | править код]

Основной причиной лагов является время, необходимое на передачу информации от клиента к серверу и обратно. Это связано со скоростью соединения и загруженностью каналов на всём протяжении от клиента к серверу. Также немалую роль играет расстояние между клиентом и сервером, в отношении количества точек доступа и узлов. Строго говоря, каждый передаваемый пакет доставляется с задержкой, однако лагами обычно называют только ощутимые задержки, которые мешают нормальной игре. При этом восприятие лагов игроками зависит от многих факторов, прежде всего связанных с необходимой в данный игровой момент точностью и временем реакции[1]. Обычно причиной сетевых лагов является потеря сетевых пакетов и связанная с этим повторная отправка потерянных сетевых пакетов. Увеличение времени прохождения сетевых пакетов без их потери обычно называется «большой пинг».

Задержка реакции игры[править | править код]

Анализ[править | править код]

Даже в одиночной игре задержка между нажатием и изображением состоит из нескольких частей:

  • Физическое замыкание кнопки.
  • Реакция интерфейса клавиатуры/мыши.
  • Реакция подсистемы обработки клавиатуры/мыши.
  • Просчёт физики игровым движком.
  • Простой в очередях заданий на рендеринг.
  • Рендеринг кадра.
  • Простой готового кадра от окончания рендеринга до переключения буферов.
  • Физическая развёртка кинескопа или виртуальная «развёртка» ЖК-монитора.
  • Реакция устройств, преобразующих сигнал в мониторе — особенно если вместо монитора телевизор и у него нет «игрового» режима.
  • Физическая реакция пикселей ЖК-монитора.

Чтобы снизить задержки, применяют такие меры:

  • Быстродействующие клавиатуры и мыши — геймеры используют устройства с частотой шины 1000 Гц, кнопки с коротким ходом и линейной реакцией, оптомеханические выключатели.
  • Удачная архитектура подсистемы обработки ввода ОС. В рабочем ПО используется механизм сообщений, а в играх — прямой опрос устройств. У того и другого есть свои преимущества: сообщения сохраняют порядок нажатий-отпусканий, даже если программа реагирует медленно, прямой опрос быстрее.
  • Повышение кадровой частоты — оптимизацией движка, покупкой быстродействующего компьютера, снижением качества изображения.
  • Обнаружение и снижение простоев — как на уровне движка, так и на уровне видеоплаты.
  • Быстродействующий монитор. «Игровые режимы» в телевизорах.

История[править | править код]

В ранних видеоиграх было принято синхронизировать просчёт физики с частотой кадров. Каждая игровая система обновляла изображение фиксированное число раз в секунду. Для телевизионных приставок эта частота равна частоте кадров телевизора. За период между обновлениями экрана игра совершает все необходимые вычисления для обеспечения игрового процесса (в том числе опрос устройств ввода (англ.)). В случае слабой вычислительной мощности системы или непредусмотренных действий игрока программа может не успеть произвести все необходимые вычисления в отведённое время до обновления экрана. Тогда все оставшиеся действия (в том числе обновление картинки) переносятся на следующий кадр. При этом снижается не только частота обновления экрана, но и частота опроса пользовательского ввода.

При этом в старых приставках (до четвёртого поколения) рендеринг производился полностью аппаратно, прямо по ходу развёртки экрана — это ограничивало геймдизайн[2], но не вносило никакой задержки и удешевляло систему: так, частота Sega Mega Drive 7,6 МГц, а частоты 80386 были 12…40 МГц.

Современные игры используют переменную частоту кадров для устранения видимых задержек анимации. При этом обработка физики и отрисовка картинки происходят по отдельности, обычно с разной частотой. Игра рисует между кадрами обновления физики промежуточные состояния объектов. Слабость компьютера либо чрезмерность вычислений компенсируются в первую очередь снижением частоты отрисовки изображения, а частота опроса ввода и обработки физики не уменьшается. В результате динамика игры остаётся прежней, но изображение становится менее плавным. В случае же, если снижения частоты вывода изображения не достаточно, даже современной игре приходится снижать частоту обработки физики, что приводит к ощутимым задержкам реагирования игры на действия игрока.

Технологии адаптивной кадровой частоты (nVidia G-Sync и AMD FreeSync), появившиеся в середине 2010-х, стали компромиссом между задержкой и качеством изображения, и этим полюбились геймерам.

Чтобы равномерно загрузить видеоплату и процессор, сделали сложную буферизацию заданий на видеоплату, но она же и сыграла злую шутку: если загрузка видеоплаты на пределе, повышается задержка от нажатия до изображения. Задержка всё это время была в тени, потому что её сложно измерить — требуется модифицированная мышь (нажатие на кнопку зажигает светодиод) и скоростная камера[3]. Искусственное ограничение кадровой частоты, делающее игру виртуально «процессорозависимой» и загружающее видеоплату не полностью, даже на 95 %, снижает задержку[4]. Технологии nVidia Ultra-Low Latency/AMD Anti-Lag, призванные снизить задержку и работающие с любой игрой, помогают, но не дотягивают до подобных простых мер[4]. В 2020 году появилась технология nVidia Reflex — она позволяет игре следить за загрузкой видеоплаты, и этим снижает задержку ещё сильнее[3]. Технология доступна с любым монитором и даже на относительно старых видеоплатах (начиная с GeForce 900), но игра должна её поддерживать. (А вот другая часть nVidia Reflex, вычисление задержки, требует особого монитора и учитывает всё, кроме быстродействия процессора мыши и пикселей монитора.)

В ритм-играх важны сотые доли секунды, все события полностью предсказуемы, и они обычно играются на консолях, где устройство вывода — телевизор со своими алгоритмами улучшения изображения. Потому в Guitar Hero и подобных играх есть калибровка задержек[5].

См. также[править | править код]

Примечания[править | править код]

  1. Mark Claypool, Kajal Claypool. Latency can kill: precision and deadline in online games (англ.) // Proceeding MMSys '10 Proceedings of the first annual ACM SIGMM conference on Multimedia systems. — New York, NY: ACM, 2010. — P. 215-222. — ISBN 978-1-60558-914-5. — doi:10.1145/1730836.1730863.
  2. James Hague. Stumbling Into the Cold Expanse of Real Programming. Перевод
  3. 1 2 https://www.nvidia.com/en-us/geforce/news/reflex-low-latency-platform/
  4. 1 2 https://www.youtube.com/watch?v=QzmoLJwS6eQ
  5. https://www.youtube.com/watch?v=YLp6HqibvS0

Ссылки[править | править код]