Лаг (компьютерный сленг)
Лаг (от англ. lag, [læɡ] — «запаздывание», «задержка») — задержка в работе компьютерного приложения, когда оно не реагирует на пользовательский ввод вовремя. Производное от него «лагать» широко используются пользователями интернета для обозначения задержек в работе различных интернет-сервисов, онлайн-игр. Также геймеры используют слово «лаг» применительно к задержкам самой программы. Часто встречается в сетевых играх. С технической точки зрения представляет собой проявление влияния латентности операций передачи и обработки данных на качество работы системы реального времени.
Терпимость игрока к задержкам зависит от жанра игры. Например, в стратегических или пошаговых играх с медленным темпом высокие задержки могут быть вполне терпимы или даже почти не влиять на игровой процесс. А вот в динамичных играх, таких как шутеры от первого лица или файтинги, где темп значительно выше, для комфортной игры требуется минимальная задержка.
Задержка, как правило, измеряется в миллисекундах (мс) и может отображаться в игре (иногда называется лагометром)[1]. Наиболее распространенные причины задержки выражаются через время отклика (или просто пинг) и частоту кадров (fps). Обычно задержка ниже 100 мс (10 Гц или кадров в секунду) считается необходимой для комфортной игры. Минимальный физически возможный пинг для соединения между противоположными точками на Земле, пересекающего половину планеты, составляет 133 мс. Другие причины задержки обычно приводят к задержке ниже играбельных 20 мс (50 Гц или кадров в секунду), либо к потере, искажению или дрожанию изображения в игре.
Задержка реакции игры
Анализ
Даже в одиночной игре задержка между нажатием и изображением состоит из нескольких частей[2][3]:
- Физическое замыкание кнопки.
- Реакция интерфейса клавиатуры/мыши. Реакция подсистемы обработки клавиатуры/мыши.
- Просчёт физики игровым движком.
- Простой в очередях заданий на рендеринг[3].
- Рендеринг кадра.
- Простой готового кадра от окончания рендеринга до переключения буферов, а затем — до прохождения через видеоинтерфейс.
- Если игра в оконном режиме, даже безрамочном — между переключением буферов и попаданием в видеопамять вклинивается работа оконного менеджера[3].
- Реакция устройств, преобразующих сигнал в мониторе[4][5][3] (увеличивающих изображение[4][6], улучшающих качество[7]) — особенно если вместо монитора телевизор и у него нет «игрового» режима.
- Физическая реакция пикселей ЖК-монитора[4].
В сетевой игре к этому добавляется время прохода пакетов от компьютера к компьютеру.
Также играют роль микролаги или запинки (stutters) — кадры, которые рисуются дольше остальных[8]. Обычно микролаги случаются, когда дела в игре приобретают серьёзный оборот[8] (перестрелка в FPS, сложный трафик в гонке) — потому микролаги влияют на впечатление от игры даже больше, чем средняя задержка.
Чтобы снизить задержки, применяют такие меры:
- Со стороны игрока:
- Быстродействующие клавиатуры и мыши — геймеры используют устройства с частотой шины 1000 Гц, кнопки с коротким ходом и линейной реакцией, оптомеханические выключатели.
- Повышение кадровой частоты — покупкой быстродействующего компьютера, снижением качества изображения.
- Поиск «узкого места» игры, которое снизит задержку на данном компьютере.
- Быстродействующий монитор. «Игровые режимы» в телевизорах.
- Быстрое сетевое подключение. Отключение домочадцев, занимающих всю сеть — например, качающих большие файлы. QoS в маршрутизаторе, настроенный в пользу игры.
- Со стороны разработчика и издателя:
- Оптимизация разных подсистем игры — графической, сетевой, загрузки данных и так далее.
- Игроков в онлайн-играх делят на регионы (Европа, СНГ, США…) и располагают сервер поближе к ним.
Лаг в сетевых играх
Если с задержками от кнопки до изображения начали бороться только в 2010-е, то задержки компьютерной сети начали играть роль с первых лет игр по интернету и почти всегда более значимы, чем остальные виды задержек (кроме особых случаев — киберспорт, то есть игра по неперегруженной локальной сети). В частности, свет проходит по экватору Земли за 130 мс — современными геймерами такой пинг считается неприемлемым, а ведь это теоретически наименьшая цифра, когда игроки в разных концах Земли.
Строго говоря, каждый передаваемый пакет доставляется с задержкой, однако лагами обычно называют только ощутимые задержки, которые мешают нормальной игре. При этом восприятие лагов игроками зависит от многих факторов, прежде всего связанных с необходимой в данный игровой момент точностью и временем реакции[9]. Обычно причиной сетевых лагов является потеря сетевых пакетов и связанная с этим повторная отправка потерянных сетевых пакетов.
Архитектура Doom (1993) была простейшей: у каждого игрока есть полное состояние игры. Каждый такт (35 тактов в секунду, 1 такт = 28 мс) игрок рассылает остальным своим кнопки управления. Как только у игрока накопятся кнопки от всех участников сетевой игры, он проводит новый такт[10]. Через поперечник США тот же свет проходит за 15 мс, и подобной архитектуры хватает даже для модемной игры через несколько штатов США.
Между современными играми и Doom разница такая.
- Подобная архитектура ущербна по другим параметрам: неустойчива к читерству, не позволяет много игроков, с трудом позволяет войти в начатую игру или выбросить игрока…
- В телефоне используется канальная коммутация — АТС даёт абоненту гарантированную полосу пропускания со стабильной задержкой. В интернете коммутация пакетная — один участник передаёт другому сообщение (пакет), а промежуточные узлы выясняют, как его доставить. Это увеличивает ёмкость каналов и живучесть Интернета — но любой из узлов Сети может решать заторы, выбрасывая пакет, задерживая его, пуская по другому пути и т. д., что тоже увеличивает задержку.
- Если пакеты идут долго, управление запаздывает. Потому Doom плохо играется на задержках, превышающих игровой такт.
Обычно вопрос задержек решается так. У игры есть два состояния — «гарантированное» и «передовое»[11]. «Гарантированное» — это что случилось на сервере и никак нельзя изменить вдруг дошедшими пакетами, и может отставать на немалую величину — более 100 мс. «Передовое» состояние определяется локальным управлением игрока и пакетами тех игроков, у кого связь хорошая. Таким образом, несмотря на плохую связь, у каждого игрока отзывчивое управление. Стереотипные сетевые лаги выглядят так:
- если у другого связь кратковременно пропадает — его персонаж сначала «зависает» (стоит на месте или двигается по прямой), а потом перепрыгивает. Если связь постоянно плохая — персонаж двигается рывками;
- если у тебя связь кратковременно пропадает — вся игра приостанавливается (видит пропажу связи и перестаёт рассчитывать передовое состояние), а потом мгновенно перепрыгивает в новое состояние. Если связь постоянно плохая — вся игра двигается рывками.
Ещё со времён Doom в играх есть два способа стрельбы — мгновенный просчёт траектории пули (hitscan) и медленный снаряд (projectile). (Промежуточный — быстрая пуля — реализуется крайне редко и в очень реалистичных играх, ориентированных на снайперские и артиллерийские дуэли, его опустим.) Со снарядами игра не сильно погрешит против истины, если игрок целится по передовому состоянию, а попадания просчитываются по гарантированному[12]. С просчётом траекторий так невозможно — на сервере передового состояния нет вообще, у разных игроков они разные, и существуют мощные виды hitscan-оружия вроде снайперской винтовки, для которых вопрос «попал-промахнулся» архиважен. Потому во многих движках (Source) используется так называемая компенсация задержек — сервер делает предположение, какую картинку видел клиент в момент выстрела[13]. Внешне это выглядит так: игрок высунулся из укрытия, успешно спрятался и был убит уже там, в безопасном месте[13].
Влияние различных функций видеоадаптера на задержку одиночной игры
Базовый показатель — платформа ПК, игра одиночная или по неперегруженной локальной сети (сетевые задержки незначительны), двойная буферизация выключена, игра настроена так, что кадровая частота системы стабильна и превышает таковую у монитора.
- Ухудшение качества изображения — снижает задержку, даже если производительность упирается в другой компонент (процессор/видеоплату) и общая кадровая частота при этом не повышается[3].
- Двойная буферизация — значительно повышает задержку[14]
- Тройная буферизация — ещё сильнее повышает задержку[14].
- nVidia G-Sync, AMD FreeSync — в таких условиях (кадровая частота системы больше, чем у монитора) бессмысленны. Если меньше — несколько повышают задержку[14].
- Скоростная синхронизация (тройная буферизация, продолжающая вместо ожидания синхронизации заполнять заэкранные буфера) — в таких условиях незначительно повышает задержку[14]. Если кадровая частота системы меньше таковой у монитора — бессмысленна.
- Оконный режим, даже безрамочное окно — повышает задержку по сравнению с полноэкранным режимом[3][15].
- Искусственное ограничение кадровой частоты — снижает задержку, если производительность упирается в видеоплату[16].
- nVidia Ultra-Low Latency/AMD Anti-Lag — бессмысленны, ограничение кадровой частоты эффективнее[16].
История
Долгое время снижение игрового лага сводилось к повышению кадровой частоты. При этом игровые приставки изначально имели преимущество — с первых поколений выдавали высокую кадровую частоту (50/60 FPS), это достигалось специализированными решениями, ограничивавшими геймдизайн[17], но удешевлявшими систему: так, Sega Mega Drive 16-битный с частотой 7,6 МГц, а сходный по производительности 80386 уже 32-битный[18] и 12…40 МГц.
К началу 2000-х игры на ПК стали стабильно давать те же 60 FPS, что и на приставках, и все 2000-е повышалось качество изображения путём программирования видеоплаты с помощью шейдеров. Чтобы добавить освещение, отражения и прочее, потребовалось несколько проходов рендеринга[19], и чтобы процессор не ждал, рендеринг сделали отложенным[20]. Такая технология сыграла злую шутку: если загрузка видеоплаты на пределе, повышается задержка от нажатия до изображения. Ограничение кадровой частоты, даже до 95 %, делающее игру виртуально «процессорозависимой», снижает задержку[16].
Задержка всё это время была в тени, потому что её сложно измерить — требуется модифицированная мышь (нажатие на кнопку зажигает светодиод) и скоростная камера[3]. Исследователи могли измерить цифру до 120 мс, и даже на кадровой частоте 120 fps она порядка 40 мс[14][16]. Подобную задержку иногда называют «преимущество выглядывающего» — выглядывающий из-за препятствия заранее знает, что в данной точке обороняющийся, и может выстрелить наперёд, а обороняющийся — нет[3]. В 2020 году появилась технология nVidia Reflex — она позволяет игре следить за загрузкой видеоплаты, и этим очень сильно снижает задержку[3]. Технология доступна с любым монитором и даже на относительно старых видеоплатах (начиная с GeForce 900), но игра должна её поддерживать. (А вот другая часть nVidia Reflex, вычисление задержки, требует особого монитора и учитывает всё, кроме быстродействия мыши и пикселей монитора.)
В ритм-играх важны сотые доли секунды, все события полностью предсказуемы, и они обычно играются на консолях, где устройство вывода — телевизор со своими алгоритмами улучшения изображения. Потому в Guitar Hero и подобных играх есть калибровка задержек[21].
Облачные игры
Облачные игры — это вид онлайн-игр, при котором вся игра запускается на игровом сервере в дата-центре, а пользователь использует лишь тонкий клиент который отправляет команды с контроллера на игровой сервер. Сервер обрабатывает игру, генерирует следующий кадр видео, сжимает его, используя сжатие видео с малым лагом и отправляет обратно тонкому клиенту для распаковки и отображения. Чтобы облачный гейминг был комфортным, общая задержка всех компонентов системы (тонкого клиента, интернета и/или LAN соединения с игровым сервером, выполнения на самом игровом сервере, сжатия и распаковки видео и аудио, а также вывода изображения на экран) должна быть настолько низкой, чтобы у пользователя создавалось впечатление, будто игра запущена локально[22][23]. Из-за таких строгих требований к задержке, скорость света в оптоволокне становится ограничивающим фактором. По данным OnLive это позволяет размещать игровые серверы на расстоянии не более 1600 километров от пользователя[24]. Существует также немало споров относительно задержек, связанных с облачным геймингом. В многопользовательских играх с клиент-серверной архитектурой компьютер игрока самостоятельно отрисовывает графику, а на сервер отправляется лишь информация о действиях игрока. Например, при нажатии кнопки персонаж на экране мгновенно выполняет соответствующее действие. Однако последствия этого действия, например, уничтожение противника, становятся видны лишь с небольшой задержкой, поскольку информация о нем должна дойти до сервера. Это приемлемо лишь до тех пор, пока отклик на действия игрока достаточно быстр.
При использовании облачного гейминга между действиями игрока и отображением отклика на экране может возникать небольшая задержка. Команды игрока должны быть сначала переданы на удалённый сервер, затем сервер обрабатывает графику выполняемого действия и передает видеопоток обратно игроку по сети, что требует дополнительного времени. В результате игрок ощущает заметную задержку между нажатием кнопки и появлением изменений на экране. В зависимости от уровня мастерства и опыта игрока это может вызвать дезориентацию и замешательство, схожие с задержками слуховой обратной связи, и затруднить навигацию и прицеливание в игровом мире. При быстром выполнении длинных комбинаций действий персонаж на экране не будет синхронизирован с нажатиями кнопок. Обычно это вызывает сильное замешательство у игрока, приводящее к неудаче выполнения комбинации.
Дополнительная задержка ввода также может сильно затруднить прохождение некоторых однопользовательских игр. Например, если противник замахивается на игрока, а тот должен заблокировать удар, то к моменту, когда на экране игрока отобразится начало атаки противника, тот уже успеет нанести удар и убить игрока на сервере.
Кале в игре Dota 2
Кале - это игровой сленг и интернет-фраза[25] , обозначающая лаги[26][25]. Происходит от китайской фразы 卡了[26][25] и впервые была использована на Dota 2 Asia Championships 2015, когда некоторые китайские игроки писали её в чате, чтобы пожаловаться на раздражающие лаги в игре и попросить поставить паузу[26]. По мере роста популярности китайской Dota 2 сцены это выражение также стало известным. Многие западные игроки, как профессионалы, так и любители, часто пишут "kale" (кале) вместо "lag" (лаг) в игровом чате и на Twitch[25][26].
См. также
Примечания
- ↑ Optimize XP for Multiplayer Mööayhem. Maximum PC (англ.). Vol. Summer. Future US, Inc. 2004. p. 49.
- ↑ Exploring Input Lag Inside and Out. Дата обращения: 28 апреля 2022. Архивировано 28 апреля 2022 года.
- ↑ 1 2 3 4 5 6 7 8 9 Introducing NVIDIA Reflex: Optimize and Measure Latency in Competitive Games | NVIDIA. Дата обращения: 20 ноября 2020. Архивировано 19 ноября 2020 года.
- ↑ 1 2 3 Minute Science: Input Lag vs. Response Time - YouTube. Дата обращения: 28 апреля 2022. Архивировано 28 апреля 2022 года.
- ↑ Factors Affecting PC Monitor Responsiveness | PC Monitors. Дата обращения: 28 апреля 2022. Архивировано 25 апреля 2022 года.
- ↑ Duck Hunt on an HDTV 2 на YouTube
- ↑ Игровой режим на телевизоре Samsung. Дата обращения: 11 апреля 2024. Архивировано 10 мая 2023 года.
- ↑ 1 2 How To Fix Stutter In Games - Frame Rate, Frame Time & RTSS - YouTube. Дата обращения: 29 апреля 2022. Архивировано 29 апреля 2022 года.
- ↑ 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. Архивировано 4 июня 2016 года.
- ↑ Doom networking component | Doom Wiki | Fandom. Дата обращения: 8 мая 2022. Архивировано 7 июля 2022 года.
- ↑ Client-Side Prediction and Server Reconciliation - Gabriel Gambetta. Дата обращения: 8 мая 2022. Архивировано 5 мая 2022 года.
- ↑ Lag compensation - Official TF2 Wiki | Official Team Fortress Wiki. Дата обращения: 8 мая 2022. Архивировано 8 мая 2022 года.
- ↑ 1 2 Lag Compensation - Gabriel Gambetta. Дата обращения: 8 мая 2022. Архивировано 27 апреля 2022 года.
- ↑ 1 2 3 4 5 Nvidia Fast Sync Better Than G-Sync and V-Sync? - YouTube. Дата обращения: 29 апреля 2022. Архивировано 25 марта 2022 года.
- ↑ (Borderless) Windowed Mode Should You Use It? - YouTube. Дата обращения: 29 апреля 2022. Архивировано 29 апреля 2022 года.
- ↑ 1 2 3 4 NVIDIA Reflex Low Latency - How It Works & Why You Want To Use It на YouTube
- ↑ James Hague. Stumbling Into the Cold Expanse of Real Programming Архивная копия от 11 ноября 2020 на Wayback Machine. Перевод
- ↑ Так, игры Disney’s Aladdin и The Lion King выпускались только под защищённый режим 80386.
- ↑ Unreal’s Rendering Passes — Unreal Art Optimization. Дата обращения: 28 апреля 2022. Архивировано 19 апреля 2022 года.
- ↑ Multiple-Pass Rendering — Win32 apps | Microsoft Docs. Дата обращения: 28 апреля 2022. Архивировано 28 апреля 2022 года.
- ↑ How to Fix the Lag in Guitar Hero на YouTube
- ↑ The Process of Invention: OnLive Video Game Service. The FU Foundation School of Engineering & Applied Science (Columbia University). Дата обращения: 23 января 2010. Архивировано из оригинала 20 декабря 2012 года.
- ↑ D8 Video:OnLive demoed on iPad, PC, Mac, Console, iPhone. Wall Street Journal (9 августа 2010). Дата обращения: 19 августа 2010. Архивировано 12 февраля 2011 года.
- ↑ Beta Testing at the Speed of Light. OnLive (21 января 2010). Дата обращения: 23 января 2010. Архивировано из оригинала 16 декабря 2012 года.
- ↑ 1 2 3 4 Josuamarcelc. What Is Kale in Dota 2? josuamarcelc (8 июля 2021).
- ↑ 1 2 3 4 正惊游戏. 当网游出现延迟的时候,中国玩家用lag,老外却用拼音说"kale"? (неопр.). 17173 (1 сентября 2018).
Ссылки
- Определение лага в Файле жаргона
- Определение лага на сайте компьютерных игр TASVideos.org
- Beginning iPhone Games Development - PJ Cabrera, Peter Bakhirev, Ian Marsh, Ben Smith, Eric Wing, Scott Penberthy - Google Книги. books.google.ru. Дата обращения: 11 октября 2012.