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

Разработчики опубликовали новый блог, посвященный различным проблемам и вопросам производительности PlayerUnknown’s Battlegrounds на консолях Xbox и PlayStation. В этом блоге разработчики делятся техническими деталями и рассказывают, с какими проблемами они сталкиваются и как их решают.

Часть первая

Всем привет!

Перед вами первый выпуск нашей новой рубрики «Дневники консольной разработки» (Console Dev Report), которая приходит на смену еженедельным статьям в сообществе!

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

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

Для начала

Игроки сообщают нам о падениях частоты кадров. Особенно сильно это происходит на поздних этапах матчей из-за часто возникающих перестрелок на ближней дистанции (CQC). PUBG выполняет расчет всех ресурсов в радиусе 1 километра от персонажа. То есть, где бы ни находился ваш бравый боец, игра скрупулезно рассчитывает все, что находится на расстоянии до 1 км от него. На позднем этапе игры, когда белая зона сжимается почти до предела, оставшиеся бойцы собираются в небольшом круге. Это значит, что в одной области находится больше игроков, для которых нужно рассчитать ресурсы. То же самое происходит в горячих точках высадки, однако на поздних этапах нужно учитывать большее количество ресурсов, ведь многие прибывшие в зону персонажи под завязку набиты собранными вещами. Транспорт, обвес, раскраска оружия, дымовые завесы — вот только малый перечень ресурсов, которые приходится учитывать.

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

В поле обзора

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

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

К сожалению, для точного прогноза при перемещении персонажа требуется учитывать больший объем ресурсов. Так и появляется одна из причин падения частоты кадров. Мы решили повысить производительность и потому убрали расчеты, без которых вполне можно обойтись. В результате производительность скакнула вверх, а частота кадров стала просаживаться реже. График ниже называется «Время расчета физических объектов за кадр». Тестирование проводилось силами 30 ботов. На графике представлены кривые действующей и улучшенной сборок. Последняя скоро будет реализована в готовящемся обновлении. По сокращенному времени видно: чем меньше ресурсов приходится рассчитывать, тем выше производительность.

Вне поля обзора

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

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

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

Ниже мы помещаем график улучшения под уже привычным названием «Время расчета физических объектов за кадр». Для его составления мы снова выпустили на поле 30 ботов. На графике представлены кривые действующей и улучшенной сборок.

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

Часть вторая

Всем привет!

Это второй выпуск дневников разработки для консолей!

<...>

Сегодня мы поговорим о времени обработки данных графическим процессором и о том, как разные факторы могут его сократить.

Что такое время обработки данных графическим процессором?

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

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

Если сравнить разрешение 4K с самым распространенным 1080p, у 4K пикселей в 4 раза больше, чем у 1080p. Это значит, что объем данных, который надо обработать графическому процессору, увеличивается в 4 раза, соответственно, возрастает и время, необходимое для их обработки.

Динамическое разрешение

Примечание: Сейчас функция «Динамическое разрешение» дорабатывается. Она появится на PS4 и Xbox One в одном из будущих обновлений.

Динамическое разрешение — это функция, меняющая разрешение в зависимости от количества вычислений, которое нужно совершить графическому процессору. Разрешение варьируется в пределах от 1440p до 4K в реальном времени. Частота обновления при этом может меняться. Если во время матча нагрузка на графический процессор сильно возросла, то на время разрешение автоматически снизится, чтобы обеспечить стабильную производительность.

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

* Время обработки данных графическим процессором, показанное на графике, подсчитано на Xbox One X.

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

Отбор дублей графическим процессором

На Xbox One X и PS4 Pro отбор дублей графическим процессором появился в версии 1.0. С тех пор мы ввели множество улучшений, чтобы повысить производительность. Мы собираемся и дальше улучшать отбор дублей. Следующее обновление основного сервера также содержит обновление этой функции. Узнать больше о скорых изменениях можно далее в этом разделе.

Обратите внимание: для PS4 первого поколения, а также Xbox One первого поколения и моделей S эти улучшения все еще дорабатываются и будут внедрены позже.

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

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

Но что произойдет, если приблизить изображение, используя прицел с восьмикратным увеличением?

Уровень детализации значительно влияет на производительность: в зависимости от расстояния до игрока предметы отображаются с разным качеством. В обычном режиме (без прицела) самый высокий уровень детализации (уровень 0) будет только у ближайших деревьев. С прицелом все деревья в поле зрения отображаются с максимальной детализацией — в результате время обработки данных растет, а производительность падает.

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

Уровень детализации объекта определяется тем, сколько места он занимает на экране. От его расстояния до игрока зависит, будет ли он отображаться вообще.

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

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

* Время обработки данных графическим процессором измерялось при использовании прицела с восьмикратным увеличением.
* Время обработки данных графическим процессором, показанное на графике, подсчитано на Xbox One X.

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

Sony опубликовала рейтинг самых скачиваемых игр декабря в цифровом магазине PlayStation Store. Первое место в нем (среди платных игр) заняла PlayerUnknown’s Battlegrounds.

Источник: vk.com