Фон
NEW STATE Mobile — это игра в жанре «королевская битва» от Krafton, которая вышла во всем мире в ноябре 2021 года и за первый месяц запуска ее загрузили более 45 миллионов раз. KRAFTON, Inc. — это коллектив независимых студий разработки игр, объединившихся для создания инновационных и увлекательных развлечений для геймеров по всему миру. В состав компании входят PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion и Unknown Worlds, каждая из которых обладает своим уникальным опытом. NEW STATE Mobile был создан с использованием Unreal Engine 4, и были предприняты различные попытки уменьшить нагрев и потребление батареи, вызванное высокой загрузкой графического процессора, за счет их отличительных игровых функций.
Геймеры могут участвовать в боях на больших дистанциях, поэтому игровой движок должен иметь возможность отображать сцены на довольно большом расстоянии. Кроме того, на поле боя присутствует многочисленная растительность, из-за чего чрезмерное изображение этой растительности оказывает существенное влияние на снижение производительности. Это привело команду к использованию Android GPU Inspector (AGI), который поможет оптимизировать использование графического процессора в игре и устранить узкие места.
Рис. 1. Скриншот NEW STATE Mobile.
Что они сделали
Компания NEW STATE Mobile использовала AGI для доступа к множеству информации счетчиков графических процессоров и соответствующей оптимизации их использования. Они определили ненужные проходы рендеринга с помощью данных профиля активности графического процессора, предоставленных AGI. Определив, какие сегменты потребляют ресурсы графического процессора и пропускную способность памяти, они продолжили проверять ход оптимизации с помощью счетчика графического процессора и активности графического процессора, чтобы проверить, движутся ли они в правильном направлении.
Рис. 2. Скриншот NEW STATE Mobile.
Вот несколько вещей, которые они узнали о производительности игры с использованием AGI:
Оптимизация базового прохода : предварительный проход по глубине, технология, расширяющая использование Early-z, помогла уменьшить использование фрагментного затенения. Предварительный проход глубины был специально использован для LOD0, который занимает большую часть экрана, сводя к минимуму нагрузку, которая может возникнуть из-за дополнительных вызовов отрисовки. Кроме того, использование 32-битного формата цвета сцены может повысить производительность всего прохода рендеринга. Формат SceneColor по умолчанию для UnrealEngine4 — FloatRGBA, который является 64-битным. Если используется 32-битный формат, пропускная способность памяти может быть уменьшена вдвое.
Измеренное влияние : после применения предварительного прохода глубины загрузка графического процессора снизилась на 7,5%. Из-за предварительного прохода глубины большее количество фрагментов может быть Early-Z. Скорость времени, необходимого для закрашивания фрагментов, уменьшилась на 2%. Благодаря 32-битному формату цвета сцены загрузка графического процессора была снижена на 5,3%. Загрузка шейдеров снизилась на 2%, а общий объем операций чтения графическим процессором из системной памяти снизился на 330 МБ/с. Объем записи графическим процессором в системную память был уменьшен на 78 МБ/с, а скорость чтения текстурной памяти также была уменьшена на 43 МБ/с.
Оптимизация прохода теней . Когда в качестве средства создания теней используются сетки, использование высокого полигонального уровня детализации на самом деле не влияет на качество. Предпочтительно использовать низкополигональный уровень детализации, который помогает уменьшить количество треугольников. В Unreal Engine 4 низкополигональный уровень детализации можно использовать с помощью консольной команды ForceLODShadow.
Измеренное воздействие : количество треугольников, используемых для создания теней, уменьшилось примерно на 120 000. Данные счетчика графического процессора в AGI показали, что использование графического процессора снизилось примерно на 2%, объем памяти графического процессора, считываемой из системной памяти, уменьшился на 130 МБ/с, а объем записи из графического процессора в системную память уменьшился примерно на 23 МБ.
Автоматическое создание экземпляров : автоматическое создание экземпляров, которое можно применять как для оптимизации теневого прохода, так и для базового прохода, позволяет объединять одни и те же команды рендеринга во время выполнения, а затем выполнять рендеринг всех сразу. Это позволило NEWSTATE mobile применять глобальное освещение к отдельным объектам без потери производительности. Автоматическое создание экземпляров — это базовая функция UnrealEngine4.
Измеренное воздействие : количество вызовов отрисовки сократилось на 500. Это уменьшило количество вызовов отрисовки примерно на 48%. Загрузка графического процессора снизилась примерно на 3,5%. Эти измерения были сделаны с использованием OpenGL.
Рисунок 3. Внутренние данные, показывающие снижение использования графического процессора.
Результаты
Используя AGI, компания NEW STATE Mobile сократила использование графического процессора на 22%. За счет оптимизации предварительного прохода глубины и прохода теней использование графического процессора снизилось на 19% и 3% соответственно. Вызовы отрисовки и общий объем памяти, считываемой и записываемой графическим процессором из системной памяти, также были существенно уменьшены.
Начать
Узнайте, как анализировать влияние вашей игры на устройства Android, выявляя проблемы с производительностью и области, требующие оптимизации, с помощью Android GPU Inspector (AGI).