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

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

Лаг в сетевых играх

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

Задержка реакции игры

Анализ

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

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

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

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

История

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

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

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

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

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

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

См. также

Примечания

  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. Duck Hunt on an HDTV 2 - YouTube
  3. James Hague. Stumbling Into the Cold Expanse of Real Programming. Перевод
  4. Так, игры Disney’s Aladdin и The Lion King выпускались только под защищённый режим 80386.
  5. Introducing NVIDIA Reflex: Optimize and Measure Latency in Competitive Games | NVIDIA
  6. NVIDIA Reflex Low Latency - How It Works & Why You Want To Use It - YouTube
  7. How to Fix the Lag in Guitar Hero - YouTube

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.