Перейти к содержанию

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends


Kubik

Рекомендуемые сообщения

  • Администратор

Коротко о главном

В течение последних дней техническая команда Riot Esports работала над рядом технических проблем, связанных с инструментом, который мы используем для выравнивания значений пинга между нашими локальными и удаленными командами на турнире Mid-Season Invitational 2022 (MSI).

Первой проблемой была ошибка, которую мы обнаружили в программном обеспечении под названием Latency Service Tool, которое было настроено на настройку задержки (ping) до 35 мс для всех игроков, участвующих в турнире. Ошибка проявилась в виде повышенного пинга для игроков на площадке в Пусане, Корея, где их фактический пинг был выше, чем 35 мс, которые отображались на их экранах. По сути, в то время как игроки в Китае играли с пингом 35 мс, пинг у игроков в Пусане был выше. К сожалению, проблема не была обнаружена до начала мероприятия. Причина, по которой мы не нашли её раньше, заключается в том, что проблемой была ошибка в коде, которая неправильно рассчитала задержку, что означало, что значения в наших журналах также были неверными. В результате наш постоянный мониторинг и предварительное тестирование показали, что все работает правильно, хотя это было не так.

13 мая мы смогли устранить ошибку конфигурации инструмента обслуживания задержек. Учитывая, что сетевая среда поставила игроков в невыгодное положение на стадионе в Пусане из-за чрезмерной задержки, мы приняли трудное, но необходимое решение переиграть три игры группы B, где уровни пинга были неравными.

Побочным эффектом изменений от 13 мая стала визуальная проблема, из-за которой пинг, отображаемый на экранах игроков в Пусане был ниже фактического пинга. В итоге, когда мы транслировали экран игрока, мы показывали более низкое значение пинга, и, поскольку мы не сообщали об этом визуальном несоответствии заранее, зрители по понятным причинам полагали, что игроки в зале играли с более низким пингом, чем он был на самом деле.

В этой статье рассматриваются эти проблемы с технической точки зрения, начиная с предварительных соревнований и заканчивая настоящим.

Предварительное мероприятие

Когда мы заканчивали последние шаги технической настройки для MSI в этом году, мы столкнулись с текущими проблемами, связанными с COVID-19. Представители команды IPL, Royal Never Give Up (RNG), не могут поехать из Шанхая в Пусан и должны соревноваться дистанционно.

На первый взгляд, простым решением было бы подключить команду к MSI удаленно, пока остальные команды играют в локальной сети. Однако есть несколько проблем, которые делают этот вариант нежелательным.

Одна из проблем заключается в том, что Пусан и Шанхай находятся примерно в 850 километрах друг от друга (с Желтым морем между ними). Это означает, что сетевой трафик должен перемещаться между Шанхаем и серверами MSI в Корее, а затем обратно в Шанхай.

Это время сетевого трафика в оба конца измеряется как “пинг” (он же задержка). От местоположения RNG до серверов MSI он синхронизируется примерно за 35 миллисекунд (мс). Десять из одиннадцати команд находятся на площадке в Пусане, где их пинг значительно ниже и составляет около 15 мс. Обратите внимание, что значения пинга являются приблизительными, поскольку они естественным образом колеблются в пределах + /- 5 мс.

Для среднего игрока League of Legends разница между пингом в 35 мс и пингом в 15 мс может быть незаметной, но для профессиональных игроков это достаточно сильно меняет ощущение игры, чтобы сделать небольшую, но заметную разницу. Поскольку одним из наших основных принципов является честность в соревновании, нам необходимо обеспечить, чтобы все команды соревновались на равных условиях во время наших турниров.

Чтобы обеспечить честные условия игры, нам нужно было решить проблему с неравенством пингов.

Создание честной удаленной игры

Поскольку киберспортивные игры проводятся по сети, мы продолжили изучение удаленного решения для MSI 2022.

У нас возникло два вопроса:

  1. Находится ли пинг в 35мс между Шанхаем и Пусаном в пределах, позволяющих показать соревновательные навыки на самом высоком уровне?
  2. Можем ли мы предоставить способ обеспечить равные условия игры, чтобы все игроки имели одинаковую задержку?

Ответом на вопрос #1 было “да”. Для League of Legends Esports у нас есть предел в 40 мс, чтобы игра считалась честной на самом высоком соревновательном уровне с приемлемой вариацией + /- 5 мс. Это число было выбрано в середине 2020 года в результате глубокого обсуждения и анализа как с внутренними, так и с внешними партнерами, а также с нашей внутренней группой по анализу и дизайну игр. 40 мс - это точка перегиба, когда большинство опрошенных игроков начинают замечать пинг, и это начинает влиять на такие вещи, как выбор драфта, попадание умений и способность быстро реагировать на игру оппонентов.

Чтобы ответить на вопрос #2 мы рассмотрели варианты:

Вариант 1: Каждая команда играет с естественной задержкой сети, которая у них есть.

Этот вариант заключается в том, что удаленные команды подключаются к серверам MSI, используя максимально быстрый доступ в Интернет. Это означало бы, что команды на площадке MSI могли бы играть с очень низким пингом (~ 15 мс), в то время как удаленная команда (в данном случае RNG) получала бы их естественную задержку (~ 35 мс в Китае).

Мы рассмотрели и отклонили этот вариант, основываясь на нашем принципе честности соревнований, поскольку мы хотим обеспечить паритет для всех команд.

Вариант 2: Разместить серверы на середине пути между Китаем и Кореей.

Если у нас есть пинг 35 мс между Китаем и Кореей, другим вариантом было бы разместить серверы посередине, разделив разницу в пинге, чтобы у каждого был пинг 17,5 мс. С этим вариантом связано много проблем ... но самая большая, конечно, заключается в том, что это приведет к размещению серверов посреди океана.

Вариант 3: Ввести искусственную задержку.

Итак, если проблема в том, что команды, соревнующиеся в Корее, имеют очень низкий пинг, а команды в Китае имеют более высокий пинг, что, если мы добавим некоторую задержку на стороне Кореи, чтобы уравнять их? Сработает ли это? Можем ли мы это сделать?

Как оказалось, у команды разработчиков League of Legends уже был способ ввести искусственную задержку, известную как служба задержек. Некоторые называют её ”поддельным пингом". Это функция клиент/сервер, созданная для решения проблемы выравнивания условий для дистанционной конкуренции из-за ограничений на поездки из-за COVID-19. Служба задержки позволяет нам установить цель (скажем, 35 мс ping), и она вводит задержку на клиенте и сервере для каждого игрока по мере необходимости, чтобы уравнять всех с одинаковым уровнем задержки.

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

Наш выбор

Взвесив все наши варианты, мы решили, что самое главное - это стремиться к честности соревнований, и, таким образом, искусственная задержка стала лучшим выбором.

Изучение искусственной задержки: как работает

Служба задержки встроена в собственный сетевой код клиент/сервер программного обеспечения League of Legends. Он непрерывно измеряет фактическую задержку в сети между каждым игроком и сервером, внося необходимые коррективы, добавляя задержку с целью достижения целевого значения задержки. Это клиент-серверное решение, поэтому оно стремится ввести эту задержку на обеих сторонах сети в равной степени.

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

На приведенной выше диаграмме показаны различные компоненты системы. В верхней части диаграммы вы можете увидеть компоненты игрового сервера, а в нижней части диаграммы показан клиент (компьютер игрока). В этом примере Служба задержки настроена на выравнивание в 35 мс. Красные стрелки на диаграмме указывают на фактическую задержку в сети, которая присутствует. Как вы можете видеть, Игрок 1 и Игрок 2 в Пусане показывают “фактический” пинг в 15 мс, в то время как Игрок 10 в Шанхае показывает пинг в 35 мс. Желтые флажки указывают, какая задержка вводится искусственно на стороне клиента и сервера. В этом случае у Игрока 1 и Игрока 2 есть задержка в 10 мс, добавленная на стороне клиента и на стороне сервера для достижения целевого показателя в 35 мс. Игрок 10 уже имеет реальную задержку, равную целевой задержке в 35 мс, и, следовательно, не имеет добавленной задержки (0 мс).

Одно равное игровая среда или две равных игровых среды?

Чтобы погрузиться еще глубже, мы должны поговорить о решении, которое мы приняли относительно удаленной среды против локальной среды.

Что касается технической группы Esports, мы всегда стремимся минимизировать риски для наших прямых трансляций. Память о 2-м чемпионате мира 2012 года в Лос-Анджелесе, где нам пришлось отменить мероприятие в середине дня из-за проблем с Интернетом, запечатлелась в душе каждого сотрудника Riot, который работает в киберспорте.

Принимая решение о топологии сети для мероприятия MSI 2022, мы поняли, что нам нужно выбирать между двумя различными стратегиями:

Стратегия #1: Единая топология для всех сценариев

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

Учитывая принцип надежности, мы знали, что если нам понадобится игровой сервер на базе Интернета, мы хотели выбрать развертывание, в котором мы были бы наиболее уверены. Очевидным выбором для этого было использование корейских игровых серверов Esports. Это среда только для профессионалов, которая размещена в том же центре обработки данных, что и общедоступные серверы Кореи, и регулярно используется для LCK, нашей корейской лиги. Это означает, что у нас есть бесчисленное количество игровых часов, чтобы убедиться, что у него хорошее сетевое подключение и надежная инфраструктура. С точки зрения надежности ясно, что когда по крайней мере одна команда должна быть удаленной, использование этого фрагмента имеет большой смысл. Но тогда возникает вопрос, следует ли нам использовать его для всех игр или только для игр, где одна команда удалена. Это приводит к стратегии #2 минимизировать подверженность сетевому риску.

Стратегия #2: Сведите к минимуму подверженность сетевому риску, используя удаленный доступ только по мере необходимости

В предыдущей стратегии, учитывая необходимость проводить некоторые игры в среде, подключенной к Интернету, возникает вопрос: “Почему бы просто не сыграть все игры в этой среде?” На это есть очень простой ответ: стабильность Интернета. Может быть, что Интернет будет работать идеально, а может быть, и нет. Если все игры MSI проходят через Интернет, то любая проблема с интернет-сетью может вызвать проблемы в игре. Если через Интернет проводятся только игры с удаленными участниками, то мы снижаем общий риск стабильности Интернета только для этих игр. Хотя мы уверены в нашей способности преодолеть проблемы с Интернетом с помощью ряда решений на случай непредвиденных обстоятельств, по-прежнему лучше, чтобы этот риск был как можно ниже. Учитывая нашу способность выровнять игровое соединение с точки зрения пинга за счет использования искусственной задержки, это был вопрос сложности по сравнению с надежностью. У нас немного больше сложности (две топологии), чтобы добиться меньшего риска (свести к минимуму подверженность потенциальным проблемам со стабильностью Интернета).

Учитывая эти два варианта, мы решили выбрать стратегию #2 основываясь на нашей оценке того, что это будет представлять наименьший общий риск для надежности и конкурентной целостности мероприятия.

То, что вы видите ниже, - это схема выбранной нами топологии. Это показывает различные сценарии, которые у нас есть с точки зрения сетевого подключения.

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

Лучшие продуманные решения…

Взвесив все вышеперечисленные факторы, мы приняли решение поддерживать две разные топологии, сохраняя при этом конкурентную целостность, используя службу задержки, чтобы поддерживать одинаковый уровень задержки во всех играх. Игры между командами, физически расположенными в Корее, будут проводиться на игровых серверах MSI venue, а игры, в которых участвует удаленная команда, будут проводиться на игровых серверах Esports в корейском дата-центре. Мы настроили систему и провели тестирование инфраструктуры, чтобы убедиться, что все было правильно. Это включало в себя измерение и мониторинг пинга, скачки сети и тщательный анализ, чтобы определить, были ли какие-либо потери пакетов. Мы также заставляли команды играть дружеские матчи, используя киберспортивные игре сервера, и просили их приходить на арену, чтобы провести техническую проверку на сцене.

После первого дня соревнований игроки сказали нам, что игры были не очень приятными. Некоторые игроки сообщали, что, несмотря на то, что на экране показывало пинг в 35 мс, им казалось, что он медленнее. Все наши журналы и инструменты мониторинга инфраструктуры показали, что все было правильно, но мы продолжали расследование, чтобы точно определить причину этой проблемы.

Гоняться за призраками? Первопричина проблемы была неясна. Наши инструменты мониторинга инфраструктуры не сообщали о каких-либо проблемах, и хотя у нас были сообщения о том, что пинг был высоким, не было никаких конкретных ошибок или игровых ситуаций, которые нужно было бы просмотреть. Итак, мы вернулись к первым принципам. Какие данные имеются в наличии? Какие отчеты у нас есть? Какую информацию мы можем собирать?

Мы использовали двусторонний подход. Первый состоял в том, чтобы собрать воедино набор вопросов, которые мы могли бы задать профессиональным командам, которые смогли бы помочь нам приблизиться к пониманию того, что происходит. Где ты это видел? Было ли хуже на серверах MSI или на киберспортивных игровых серверах? Было ли хуже в сети арены или в сети дружеских игр? Было ли это во всех играх или только в некоторых играх? Во-вторых, параллельно, поскольку наши стандартные отчеты не показывали ничего неправильного, мы начали активно просматривать другие журналы и показатели, чтобы увидеть, есть ли какие-либо расхождения. Мы начали извлекать логи клиентов и серверов из турнира и начали копаться в данных.

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

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

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

Когда мы просматривали журналы и код, мы начали получать дополнительную информацию от профессиональных команд. Было больше жалоб на среду MSI. Это казалось нам нелогичным. В конце концов, игры в среде MSI проводились на оборудовании, которое находилось в том же здании, что и игроки. Как игры с идеально контролируемой сетевой средой могут быть хуже, чем игры, в которые играют через Интернет?

Это привело к другой гипотезе… Если журналы показывают хорошие показатели задержки, но опыт говорил, что нет, возможно, с журналами что-то не так? Может быть, была проблема с тем, как мы измеряли задержку?

Чтобы проверить это, команда разработчиков написала некоторый код и скомпилировала пользовательскую отладочную сборку клиента. Обычно журналы генерируются на основе “обратной передачи” пакетов игровых данных между сетевым уровнем на сервере и сетевым уровнем в клиенте. В этих журналах не было обнаружено никаких ошибок. Таким образом, новый инструмент проверил задержку по-другому. Вместо того, чтобы тестировать задержку трафика на сетевом уровне, мы хотели протестировать весь сквозной цикл от щелчка пользователя до просмотра реакции на этот щелчок. Другими словами, не просто измерение производительности сети, а измерение взаимодействия между всеми системами в игровом движке.

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

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

Теперь, когда у нас появился новый диагностический инструмент, мы хотели провести несколько экспериментов, чтобы посмотреть, сможем ли мы воспроизвести проблему, о которой сообщают игроки.

Первое, что мы хотели сделать, это получить базовое измерение с отключенной службой задержки. Поскольку у нас есть бесчисленное количество игровых часов данных с наших общедоступных серверов, это считалось нашим “контрольным” тестом, где мы могли быть уверены, что у нас не было никаких ошибок сервера. Этот первый эксперимент, который был базовым, имитирует среду, которая была бы у нас, если бы команды в Корее и команда в Китае были подключены к серверу через Интернет.

Эксперимент 1: Отключена служба задержки, сравнение корейской сети с китайской сетью

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

Данные для этих экспериментов сложны, но мы смогли собрать их воедино в визуальное представление, чтобы начать понимать, что мы видим.

Если вы проследите по оси X (Игровое время), то увидите, что изначально (левая часть графика) значения задержки были низкими. Через несколько минут (середина графика слева направо) мы начали имитировать сеть с более высоким пингом (например, из Шанхая). Как вы можете видеть, измерение задержки по вертикальной оси сместилось вверх. Это именно то, чего мы и ожидали. В сети с низким пингом задержка невелика, а в сети с более высоким пингом задержка выше.

Первый контрольный набор тестов показал нам, что наши измерения с использованием новой методики соответствовали нашим ожиданиям. Это хороший первый шаг.

В следующем эксперименте мы хотели запустить те же тесты, имитируя те же сетевые условия, но на этот раз запустив их с включенной службой задержки.

Эксперимент 1: Включена служба задержки, сравнение корейской сети с китайской сетью

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

Помните, что целью службы задержки является выравнивание задержки независимо от естественного сетевого пинга. Если бы мы изменили характеристики сетевого пинга, то ожидалось бы, что служба задержки компенсирует это, и, следовательно, измерения задержки должны остаться прежними. Однако результаты тестов были совершенно другими. Как вы можете видеть, данные показали, что измерения задержки были ниже при моделировании сети в Шанхае, чем при моделировании сети Кореи. Это было неожиданно и показывает, что служба задержки создает более высокую задержку для среды Кореи, чем для среды Шанхая.

Из этого отчета мы смогли определить три вещи:

  • Существует реальная проблема, и новые данные соответствовали тому, что сообщали игроки
  • Мы можем воспроизвести проблему в нашей лаборатории
  • Проблема, вероятно, как-то связана с нашим инструментом искусственной задержки

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

Это объясняло целый ряд проблем, с которыми мы сталкивались. В наших журналах не отображалась проблема, потому что расчет был неправильным. Это объясняло, почему задержка в месте проведения была хуже, чем на интернет-серверах, т.к. ошибка хуже проявляется в средах с более низким пингом. Это также объясняло, почему игроки в Пусане чувствовали, что пинг был хуже 35 мс, потому что на самом деле он был хуже, чем пинг в 35 мс, который был показан на их экране.

Теперь, когда мы выявили проблему, нашим следующим шагом было устранить ее как можно быстрее.

К счастью, просмотрев код, мы смогли понять природу проблемы и найти решение, чтобы компенсировать ошибку вычисления.

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

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

Эксперимент 3: Служба задержки ВКЛЮЧЕНА с исправленными настройками конфигурации

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

Как и в предыдущих двух экспериментах, мы сначала начали имитировать среду с низким пингом, а затем через пару минут скорректировали, чтобы имитировать среду с более высоким пингом. Но, в отличие от предыдущих экспериментов, после развертывания изменения конфигурации служба задержки компенсировала корректно. График показывал, что задержка была неразличима даже после переключения с низкого пинга на более высокий пинг.

Проблема решена, верно? В то время как изменение конфигурации исправляло ошибку в расчете пинга в игре, одним из побочных эффектов было то, что после публикации изменения значение на экране, которое показывает FPS и Ping, показывало неправильное число для игроков в Пусане, число на экране было ниже примерно на 13 мс, чем фактическая задержка. Это связано с тем, что изменение конфигурации, которое мы внесли в Службу задержки, по сути, добавило смещение к целевому значению, чтобы компенсировать ошибку вычисления. Это привело к последующему эффекту применения смещения к зарегистрированным и отображаемым значениям ping в клиенте (подробнее об этом позже). В результате отображаемые цифры будут ниже реального пинга на 13 мс. Хотя это и прискорбно, мы сочли, что лучше добавить в игру правильную задержку для обеспечения равных условий игры, даже если это означало, что на экране будет отображаться неправильное значение.

Путь вперед и трудное решение

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

По мере того, как мы лучше изучили проблему, мы также пришли к очень трудному решению.

Мы поняли, что игроки на площадке MSI играли с пингом, который был хуже 35 мс, в то время как удаленная команда в Шанхае играла с желаемым диапазоном пинга в 35 мс, что является естественной задержкой между Шанхаем и Пусаном, а значит, что мы не достигли паритета пинга, необходимого для честной игры.

Мы немедленно сообщили об этом командам. Остался единственный вопрос о том, была ли разница достаточно существенной, чтобы назначить переигровку. Это стало настоящим соревновательным вызовом. По нашим оценкам, разница в задержке находилась где-то в диапазоне 15-20 мс, что привело нас к трудному решению переиграть три игры с новой конфигурацией, чтобы обеспечить честную конкуренцию.

Осмысление значений пинга на экране

Как только мы приняли решение переиграть некоторые игры, сыгранные ранее на турнире, мы поняли, что нам предстоит проделать большую работу. Это означало изменение графика игр и обращение к командам, чтобы убедиться, что они понимают, что происходит и почему. Это также означало подготовку к изменению конфигурации игровых серверов и повторный запуск всех тестов, чтобы убедиться, что изменение прошло. Мы также попросили профессионалов приехать на место проведения, чтобы протестировать серверы с новой конфигурацией, просто чтобы дважды и трижды проверить, что мы устранили проблему. Мы даже провели слепые тесты, в которых попросили некоторых профессионалов попробовать обе конфигурации и сообщить нам, какая из них ощущалась как пинг в 35 мс, а какая - как нечто большее.

К сожалению, один шаг, который мы пропустили, заключался в том, чтобы четко донести до игроков, болельщиков и команд трансляции тот факт, что цифры отображения пинга были неверными.

Вскоре после возобновления турнира наши болельщики начали сообщать о том, что казалось им несправедливым преимуществом команд в Пусане. Мы начали видеть, как фанаты публикуют скриншоты из нашей трансляции, показывающие пинг в 22 мс вместо ожидаемого пинга в 35 мс.

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

Мы поняли, что должны разъяснить этот момент.

Как упоминалось ранее, решением проблемы с ошибкой в службе задержки было добавленное в конфигурацию значение компенсации смещения. Это смещение имело побочный эффект и влияло на значения, отображаемые на экране игры:

  • Значение пинга, отображаемое для игроков в Шанхае, верно
  • Значение пинга, отображаемое для игроков в Пусане, неверно. На самом деле реальная задержка игрового процесса примерно на 13 мс выше, чем отображаемая.

Причиной этому стало то, что в Шанхае цифры пинга верны, потому что они уже достигли целевого значения задержки в 35 мс, и поэтому к их значению не было добавлено никакой компенсации. Причина, по которой значение в Пусане неверны, заключается в том, что смещение конфигурации задержки исправило просчет пинга в движке, так что реальный пинг был выровнен до 35 мс, но это привело к последующему эффекту смещения данных в отчетах и отображению пинга на экране примерно на 13 мс ниже.

Чтобы убедиться в этом, мы собрали логи клиента из более чем 30 игровых сессий и составили график данных о пинге / задержке, которые коррелируют с тем, что игроки увидели бы на экране.

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

На приведенном выше графике мы показываем только игры от RNG. Ось Y - это переданное значение пинга. В отличие от графиков описанных ранее, которые показывали данные с течением времени, в этом случае ось X представляет собой дискретные наборы данных, по одному для каждой игры. Таким образом, каждый из зеленых квадратов представляет собой график гистограммы переданного значения пинга, считанного из клиентских логов, для компьютера одного игрока в одной игре. Как вы можете видеть, существует некоторое минимальное колебание значений, и все значения находятся в диапазоне от 33 мс до 39 мс. Это соответствует известному естественному значению пинга 35 мс +/- 5 мс для RNG.

Следующий набор данных, который мы рассмотрели, - это логи из клиента игроков в Пусане как до изменения конфигурации, так и после изменения конфигурации.

Технический блог Riot Games: Искусственная задержка для удаленных игр League of Legends

На приведенном выше графике мы отфильтровали данные, чтобы показывать только игры, сыгранные на стадионе в Пусане. Игры, показанные слева от двусторонней стрелки, - это те, в которые играли до изменения конфигурации. Как вы можете видеть, сообщаемые значения находятся в диапазоне от 33 до 39 мс, которые находятся в диапазоне 35 мс + /- 5. Мы также знаем, что эти значения неверны, основываясь на сообщениях игроков о том, что они чувствовали себя некомфортно, которые мы впоследствии проверили с помощью нашего обновленного инструмента мониторинга.

На правой стороне вы можете видеть, что после того, как мы применили изменение конфигурации, которое исправило реальный пинг, сообщенное значение пинга снизилось, показывая значения от 19 мс до 25 мс и обычно в диапазоне 22 мс + /- 5 мс. Путем вычитания этих двух значений мы можем видеть, что ошибка смещения в передаваемом значении пинга соответствует, и она составляет приблизительно 13 мс (35 мс - 22 мс = 13 мс). Таким образом, после изменения конфигурации для корректировки реальной задержки, значение пинга отображаемого на экране игры в Пусане показывает 22 мс, но в действительности правильное значение составляет 35 мс.

Возвращаясь к снимку экрана, показывающему игру T1 против SGB, это объясняет, почему экран Zeus'а показывал 22 мс, хотя мы выровняли реальный пинг с помощью изменения конфигурации до 35 мс. Если мы добавим корректирующее значение смещения в 13 мс, которое мы собрали из эмпирических данных логов клиента, то мы получим правильное значение пинга в 35 мс.

Вывод

Как технологическая команда, поддерживающая прямые трансляции, мы делаем все возможное, чтобы протестировать, проверить, перепроверить и еще раз перепроверить соревновательную среду, чтобы обеспечить бесперебойную работу. Стремление создать равные условия для профессиональных команд всегда будет главным приоритетом. Наша цель - убрать влияние технологий с дороги, а спорт и игровой процесс поднять на центральное место.

Наша команда стремится поддерживать честность соревнований и упорно трудится, чтобы создать лучший опыт просмотра киберспорта для фанатов по всему миру. Любые изменения в планах сопряжены с риском, но мы делаем все возможное, чтобы планировать и учитывать эти риски с целью создания наилучших впечатлений для команд и болельщиков.

В этом конкретном случае мы пропустили ошибку, которая повлияла на игры. Мы искренне приносим извинения за сбои и разочарование, вызванные этим во время турнира, а также за путаницу, вызванную неясным сообщением о проблеме с неправильными значениями отображения пинга.

Мы знаем, что это было нелегко, и мы работаем над дополнительными мерами тестирования и проверки, чтобы гарантировать, что следующие этапы турнира пройдут более плавно. Мы хотели бы поблагодарить профессиональные команды и игроков за их стойкость на протяжении всего турнира, несмотря на эти препятствия, и поблагодарить их за обратную связь, которая помогла нам решить эти проблемы. Хотя мы не можем сказать, что в будущем больше никогда не будет ошибок, влияющих на соревнования, мы можем взять на себя обязательство извлекать уроки из этого, становиться лучше, более активно общаться с командами и болельщиками и продолжать вкладываться в улучшение нашей способности отслеживать и проверять среду для наших мероприятий.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...