Лаг (компьютерный сленг)
Лаг (от англ. 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].
См. также
Примечания
- 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.
- Duck Hunt on an HDTV 2 - YouTube
- James Hague. Stumbling Into the Cold Expanse of Real Programming. Перевод
- Так, игры Disney’s Aladdin и The Lion King выпускались только под защищённый режим 80386.
- Introducing NVIDIA Reflex: Optimize and Measure Latency in Competitive Games | NVIDIA
- NVIDIA Reflex Low Latency - How It Works & Why You Want To Use It - YouTube
- How to Fix the Lag in Guitar Hero - YouTube
Ссылки
- Определение лага в Файле жаргона
- Определение лага на сайте компьютерных игр TASVideos.org
- Beginning iPhone Games Development - PJ Cabrera, Peter Bakhirev, Ian Marsh, Ben Smith, Eric Wing, Scott Penberthy - Google Книги . books.google.com.ua. Дата обращения: 11 октября 2012.