Разработчики улучшили производительность VALORANT

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

Улучшение производительности: минимизация интерфейса VALORANT

Благодаря минимизации интерфейса, VALORANT стала более доступной для многих игроков. Эта функция привела к самому большому увеличению производительности на стороне клиента за всю историю нашей игры. В этой статье есть несколько интересных графиков (и мы довольны результатами), но важно понимать, что они означают. Мы используем большое количество данных, систематизируем и отслеживаем их, чтобы лучше понять, насколько игроки удовлетворены работой VALORANT. Теперь несколько слов о первом графике.

  • Оси в нем называются «patch» и «FPS average». Чем выше значение, тем больше кривизна линии.
  • Каждая линия представляет собой общую конфигурацию (комбинацию процессора и видеокарты) среди наших игроков. При анализе данных о производительности игры мы в значительной степени полагаемся на конфигурацию для расчета ожидаемого процента производительности. На этом графике системы с одинаковым сочетанием процессора и видеокарты сгруппированы вместе.
  • Выборки данных были взяты из рейтинговых и нерейтинговых игр. Это самые популярные режимы в VALORANT, поэтому мы внимательно изучаем, как игра ведет себя в них, и ищем способы улучшить производительность.
  • Чтобы получить точные результаты, мы исключили игры, в которых было менее 10 игроков (чем меньше игроков, тем быстрее идет игра).

ВКРАТЦЕ О МИНИМИЗАЦИИ ИНТЕРФЕЙСА

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

ДЛЯ КОГО ПОЛЕЗНА МИНИМИЗАЦИЯ ИНТЕРФЕЙСА И ЧЕГО ОТ НЕЕ ОЖИДАТЬ?

Согласно нашим данным, минимизация пользовательского интерфейса повышает производительность CPU-зависимых клиентов (в основном на машинах среднего и высокого класса) на 15%. Однако, хотя это усиление заметно в целом, оно не всегда заметно во время игры. Кроме того, нет гарантии, что каждое устройство с одинаковыми компонентами будет давать одинаковые результаты. Это означает, что в среднем производительность VALORANT на процессорозависимых системах значительно улучшилась, но то, как игра работает на вашем устройстве, зависит от ряда сторонних и уникальных факторов.

ПОНИМАНИЕ МИНИМИЗАЦИИ ИНТЕРФЕЙСА

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

ВИДЖЕТЫ И ДРЕВОВИДНЫЕ СТРУКТУРЫ

Элементы пользовательского интерфейса (также известные как виджеты) создаются путем объединения отдельных блоков в древовидную структуру. Файловая система вашего компьютера устроена аналогичным образом. Каждый виджет может иметь столько подразделов, сколько вы захотите (так же, как папка может иметь много файлов).

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

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

ИНВАЛИДАЦИЯ

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

  • топология (компоновка) — при изменении размера виджета (потребляет много ресурсов).
  • paint — когда внешний вид виджета меняется, но не его размер.
  • Sub-order — когда виджеты меняют свой порядок в дереве (обычно включает топологию, поэтому является ресурсоемким).
  • Видимость — когда виджет становится видимым или невидимым (обычно подразумевает топологию, поэтому является ресурсоемким).

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

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

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

ЯЧЕЙКИ ИНВАЛИДАЦИИ (INVALIDATION BOXES)

В Unreal Engine есть компонент под названием Invalidation Boxes, который позволяет группировать виджеты вместе. Виджеты в блоке не проходят через этап рендеринга; вместо этого они кэшируются в буфере вершин. Когда виджет в ячейке становится недействительным, кэш очищается, виджет обновляется и перерисовывается. Обновление кэша может быть дорогостоящим для отдельных кадров, но выгодным в долгосрочной перспективе. Отключение ячеек является неотъемлемой частью интерфейса VALORANT и много раз помогало нам на этапе подготовки к выпуску. Однако у них есть свои нюансы.

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

ВСТРЕЧАЙТЕ МИНИМИЗАЦИЮ ИНТЕРФЕЙСА

«Почему бы не поместить все элементы пользовательского интерфейса в одну ячейку?». — Вы можете спросить. В принципе, в этом и заключается весь смысл минимизации интерфейса. Минимизация значительно улучшает общее впечатление от игрового пользовательского интерфейса, а также позволяет разработчикам быстрее размещать виджеты в отдельных ячейках пня. Это одно из преимуществ. Однако в UE4.25 (версия Unreal Engine, используемая в VALORANT) минимизация интерфейса применялась не ко всем типам виджетов. Эта система была усовершенствована в более поздних версиях движка, но команда VALORANT не смогла сразу воспользоваться ее преимуществами. Кроме того, мы не до конца понимали, насколько быстрее будет работать игра, если минимизировать пользовательский интерфейс. Поэтому мы просто пошли на это.

ПОЧЕМУ МЫ РЕШИЛИ ЭТО СДЕЛАТЬ?

В конце июля 2021 года наша команда решила проверить минимизацию пользовательского интерфейса во внутреннем плейтесте. Мы внесли небольшие изменения и исправили несколько ошибок, чтобы успешно провести тест. Однако мы подозревали, что ошибки все равно появятся ……. и мы были правы. В конце тестирования мы обнаружили более 20 ошибок — и это только самые очевидные. Помимо этих, вероятно, существует множество менее очевидных проблем, не говоря уже о редких случаях, когда отдельные тесты не проводились. Но улучшило ли минимизация интерфейса производительность игры? Еще бы. Анализ результатов однокадровых тестов показывает, что интерфейс работает примерно на 35% быстрее (обратите внимание: интерфейс составляет лишь небольшую часть нагрузки на кадр). Однако многие вопросы остаются нерешенными.

  • Сколько времени потребуется, чтобы исправить все ошибки?
  • Какая команда (или команды) должна взять на себя эту задачу?
  • Стоит ли исправлять его перед другими запланированными задачами? Для того чтобы регулярно выпускать обновления для игры, мы планируем свой график на месяцы вперед, поэтому иногда трудно найти время для дополнительной работы, даже для такой интересной задачи.
  • Оказывает ли исправление ошибок негативное влияние на производительность игры? В конце концов, это требует внесения большого количества изменений в код, что может сделать интерфейс еще более ресурсоемким.
  • Когда стоит начинать? Мы знали, что Epic активно работала над минимизацией пользовательского интерфейса в последних выпусках Unreal Engine, и нам нужно было определить сроки интеграции их правок.

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

ИНТЕГРАЦИИ UNREAL ENGINE И СРОКИ

В версиях 4.26 и 4.27 движка Unreal Engine минимизация интерфейса была значительно улучшена. Однако мы никогда не интегрируем последние версии в VALORANT немедленно, так как хотим избежать ненужных рисков и обеспечить стабильный опыт для наших игроков. Согласно нашему графику, мы должны были остаться на Unreal Engine 4.25 еще на много месяцев. В результате игра не будет запущена до конца этого года. Такая перспектива нас не устраивает. Чтобы узнать больше о том, что команда VALORANT говорит об обновлении Unreal Engine, читайте Это Сообщение в Twitter от Маркуса Рида, руководителя инженерного отдела.

ДОКАЗАННЫЙ ПРИРОСТ БЫСТРОДЕЙСТВИЯ

Минимизация интерфейса дала нам уникальную возможность измерить скорость игры. Мы рассчитали потенциальный прирост производительности во внутреннем игровом тесте и более или менее поняли, как его достичь. Увеличение скорости игры — это тяжелая, трудоемкая работа: в большинстве случаев для повышения производительности требуется много времени, и это после того, как было сделано несколько настроек. Редко когда удается добиться двузначного улучшения сразу. Поэтому мы не могли упустить такую заманчивую возможность. Даже когда скорость игры упала после исправления ошибок, мы знали, что минимизация интерфейса — наш лучший шанс дать игрокам значительный прирост производительности за разумное время.

КАК МЫ ЭТО СДЕЛАЛИ?

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

ВЫБОРОЧНАЯ ИНТЕГРАЦИЯ ИЗМЕНЕНИЙ EPIC

Полная интеграция Unreal Engine версий 4.26 и 4.27 не обсуждалась, но мы знаем, что Epic активно работает над минимизацией пользовательского интерфейса. Поэтому мы решили просмотреть тысячи изменений, чтобы найти те, которые с наибольшей вероятностью позволят добиться полной и стабильной минимизации. Эта задача была нелегкой. Нам нужно было интегрировать правки Epic, сохранив при этом как можно больше основных функций, чтобы игра оставалась стабильной. Мы также хотели не мешать другим командам, поэтому работали с независимой сборкой VALORANT. После внедрения некоторых изменений, внесенных Epic в игровой движок, мы провели еще несколько недель, исправляя как можно больше ошибок и готовя пользовательский интерфейс к интеграции в основной релиз VALORANT. Мы также создали переключатель для быстрого включения и отключения функции (в случае катастрофического сбоя). В связи с многочисленными исправлениями ошибок и исправлениями ошибок Epic в 4.26 и 4.27, мы объединили автономную и основную версии.

ПОИСК ОБЩЕГО СРЕДИ ОШИБОК

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

НАЙТИ ОШИБКИ, ИСПРАВИТЬ ИХ, ПРОТЕСТИРОВАТЬ ИГРУ – И ВСЕ ПО НОВОЙ

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

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

ПРИМЕЧАТЕЛЬНЫЕ ОШИБКИ
  • Астра ломает игру. Некоторое время выбор Astra приводил к сбою игры при загрузке матча. После внедрения изменений Epic проблема была устранена.
  • Проблемы с множественным наследованием. Множественное наследование в C++ может быть довольно проблематичным, но мы не будем вдаваться в технические подробности, скажем лишь, что деструкторы в определенном классе выполнялись не по порядку, что приводило к краху игры. Чтобы исправить эту ошибку, нам нужно просто заменить две строки кода и изменить порядок наследования. Чтобы узнать больше о множественном наследовании, см. это (статья на английском языке).
  • Бесконечное количество звуков чата. Когда вы находитесь в меню, панель чата издает звук при наведении на нее курсора. Мы обнаружили чрезвычайно раздражающую ошибку, из-за которой звук воспроизводился несколько раз за секунду. Чтобы исправить это, мы должны были выяснить, как виджет получает сигнал мыши несколько раз в каждом кадре.

МЕТОДЫ ТЕСТИРОВАНИЯ

Мы были очень внимательны и осторожны при тестировании минимизации пользовательского интерфейса, поскольку это влияет на все аспекты игры. Буквально. Список ваших друзей? Абсолютно. Кнопка поиска группы? И это тоже. Меню настроек? Вы не можете жить без него. Моя скорость выстрела в голову? Хммм …… В любом случае, в игре везде есть интерфейс, который сообщает игроку важную информацию. Отказ любого из его элементов недопустим. Поэтому наш отдел контроля качества создал план тестирования с различными стратегиями, чтобы мы могли убедиться, что свернутый интерфейс будет работать так, как ожидается.

ВЕРТИКАЛЬНЫЙ СРЕЗ

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

ПРОВЕРКА НА ПРОЧНОСТЬ

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

ТЕСТИРОВАНИЕ РЕДКИХ СИТУАЦИЙ

Многие аспекты VALORANT доступны лишь небольшой группе игроков, если вообще доступны, то только один раз за весь опыт игры (например, контракты новых игроков). Однако важно, чтобы они были стабильными. Проверка всех редких случаев помогает нам выявить тонкие ошибки.

ТЕСТИРОВАНИЕ В ПТС (ПУБЛИЧНОЙ ТЕСТОВОЙ СРЕДЕ)

Тестирование в PTS — один из самых больших шагов в минимизации работы с интерфейсом.

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

После выходных испытаний на PTS (22-23 января 2022 года) мы убедились, что минимизация пользовательского интерфейса не нарушает целостность игры и обеспечивает ожидаемый прирост производительности.

ВЫПУСК МИНИМИЗАЦИИ ИНТЕРФЕЙСА

С выходом функции минимизации пользовательского интерфейса в патче 4.03 мы внимательно следим за сообщениями об ошибках от игроков. Мы также изучили отзывы о работе, чтобы убедиться, что наши ожидания оправдались. В результате, минимизированный интерфейс является огромным преимуществом для игроков. Мы надеемся, что вы довольны улучшенной частотой кадров. Теперь, когда пользовательский интерфейс сведен к минимуму, команда разработчиков VALORANT будет искать новые способы повышения производительности игры. До скорой встречи! Всем удачной игры!

VALORANTHUB
Добавить комментарий