Разъяснение по возможным причинам падения производительности в версиях 0.5.14...
Дата: 01.12.2016 20:51:05
Santcoder: С выходом обновлений 0.5.14 и 0.5.15 некоторые из пользователей
столкнулись с проблемой падения производительности игрового клиента
в World of Warships. Со стороны проекта видится необходимость дать
развернутые пояснения, что могло послужить причиной и как последние
технологические нововведения влияют на производительность
клиентской части в зависимости от выбранного игроком разрешения
экрана. Но обо всем по порядку. Для начала дадим пояснения понятиям
CPU-bound и GPU-bound. CPU – центральный процессор системы, GPU –
процессор графической карты, которая установлена в системе. Чьих
ресурсов приложение потребляет больше, от нехватки каких ресурсов
она сильнее зависит, к той подсистеме она и «привязана» - bound.
CPU-bound и GPU-bound, в чем разница? Кадр строится
на GPU и CPU параллельно. Что кадр больше обрабатывает, то и будет
bound. Эта же система, как правило, и причина фризов и лагов. При
этом если на GPU кадр закончит обрабатываться раньше, чем на CPU,
то в это в время GPU "отдыхает". Что и выражается в сниженной
нагрузке, недогрузке до 100% и так далее. Теперь касательно
нашей игры. В большинстве случаев наша игра CPU-bound. Это касается
всех боев. Мы получаем данные с сервера, ждем их, обрабатываем,
строим траектории полетов снарядов, проигрываем музыку, получаем
голосовые сообщения, считаем время полета снаряда для прицела. В
результате мы упираемся в CPU, а GPU простаивает в эти моменты. То
есть на CPU посчитали кадр за 18мс, на GPU за 12мс, 6мс каждый кадр
GPU отдыхает. Это все очень упрощенно, потому что у нас еще есть
треды, ядра и т.д. Мы рассматриваем лишь "подсистемы" и их
взаимодействие с друг другом. В большинстве случаев наша
игра CPU-bound, исключение составляет порт, в котором нагрузка на
процессор столь мала, что та небольшая нагрузка, которая есть на
GPU, становится основной, и наша игра превращается в GPU-bound.
Именно поэтому в порту нагрузка на GPU 100% - потому что CPU там
почти всегда простаивает, а не потому что там что-то дополнительно
обрабатывается на GPU. Но есть и еще одно исключение - очень
большие разрешения экрана, например, 4К.
Данное разрешение приблизительно в 4 раза по площади больше
чем FullHD (1920x1080), что существенно увеличивает нагрузку на
видеокарту. В разрешении 1920x1080 наша игра ведет себя как
CPU-bound, но в разрешении 4K нагрузка на GPU значительно
увеличивается. В результате мы перемещаемся в зону GPU-bound, и
настройки графики, влияющие на GPU, которые не давали существенных
просадок при разрешении 1920х1080, начинают проявлять себя
значительно сильнее, в плане производительности. В
частности, к таким настройкам относятся сглаживание MSAA и
«Дополнительные отражения» (SSR). «Дополнительные отражения»
(SSR) выдержка из патчноута Добавлена графическая настройка
«Дополнительные отражения (SSR)». Она направлена на улучшение
качества отражений: Cнижает мерцание отражения при движении камеры.
Повышает качество отражения на ближнем плане и дополняет
отсутствующие отражения на заднем плане. Для
наглядности мы провели несколько тестов с разрешением 4К на
следующей конфигурации:
Результаты представлены в таблице: Разрешение/Режим
MSAA Off | SSR off MSAA Off | SSR Medium MSAA8x | SSR Off MSAA
8x | SSR Medium MSAA 8x | SSR High 1920x1080 63.6 FPS 63 FPS 61.5
FPS 61.2 FPS 60.5 FPS 3840 × 2160 51 FPS 47 FPS 39 FPS 35 FPS
34 FPS Таким образом, мы
видим что если при FullHD разрешении MSAA 8x и SSR практически не
влияют на FPS, хотя и могут несколько увеличивать нагрузку на
GPU. В то же время, на разрешении 4K просадка FPS
становится очень заметной. Стабилизация проекта под разрешение 4К -
это отдельная, большая и сложная технологическая задача. И в
данный момент для "Кораблей" она не решена. Именно поэтому в
системных требованиях на официальном сайте
игры указано рекомендуемое максимальное разрешение — 1920*1080.
Помимо влияния непосредственно на FPS, увеличение
качества режима MSAA вместе с включением SSR значительно
повышает требования к памяти GPU, что также может приводить к
появлению мелких фризов. В качестве рекомендации, возможно
несколько вариантов, на ваш выбор: Снижение и подбор разрешения,
при котором просадки производительности становятся менее заметными.
Снижение MSAA до 4x - визуально, разницы между 8х и 4х
практически нет, а разница в производительности значительная
Выключение дополнительных отражений или снижение их качества до
приемлемого. Если никакая из перечисленных
рекомендаций вам не помогла, просьба отписаться в личку
мне, alexbljack или в профильной теме фидбека
Данное разрешение приблизительно в 4 раза по площади больше
чем FullHD (1920x1080), что существенно увеличивает нагрузку на
видеокарту. В разрешении 1920x1080 наша игра ведет себя как
CPU-bound, но в разрешении 4K нагрузка на GPU значительно
увеличивается. В результате мы перемещаемся в зону GPU-bound, и
настройки графики, влияющие на GPU, которые не давали существенных
просадок при разрешении 1920х1080, начинают проявлять себя
значительно сильнее, в плане производительности. В
частности, к таким настройкам относятся сглаживание MSAA и
«Дополнительные отражения» (SSR). «Дополнительные отражения»
(SSR) выдержка из патчноута Добавлена графическая настройка
«Дополнительные отражения (SSR)». Она направлена на улучшение
качества отражений: Cнижает мерцание отражения при движении камеры.
Повышает качество отражения на ближнем плане и дополняет
отсутствующие отражения на заднем плане. Для
наглядности мы провели несколько тестов с разрешением 4К на
следующей конфигурации:
Результаты представлены в таблице: Разрешение/Режим
MSAA Off | SSR off MSAA Off | SSR Medium MSAA8x | SSR Off MSAA
8x | SSR Medium MSAA 8x | SSR High 1920x1080 63.6 FPS 63 FPS 61.5
FPS 61.2 FPS 60.5 FPS 3840 × 2160 51 FPS 47 FPS 39 FPS 35 FPS
34 FPS Таким образом, мы
видим что если при FullHD разрешении MSAA 8x и SSR практически не
влияют на FPS, хотя и могут несколько увеличивать нагрузку на
GPU. В то же время, на разрешении 4K просадка FPS
становится очень заметной. Стабилизация проекта под разрешение 4К -
это отдельная, большая и сложная технологическая задача. И в
данный момент для "Кораблей" она не решена. Именно поэтому в
системных требованиях на официальном сайте
игры указано рекомендуемое максимальное разрешение — 1920*1080.
Помимо влияния непосредственно на FPS, увеличение
качества режима MSAA вместе с включением SSR значительно
повышает требования к памяти GPU, что также может приводить к
появлению мелких фризов. В качестве рекомендации, возможно
несколько вариантов, на ваш выбор: Снижение и подбор разрешения,
при котором просадки производительности становятся менее заметными.
Снижение MSAA до 4x - визуально, разницы между 8х и 4х
практически нет, а разница в производительности значительная
Выключение дополнительных отражений или снижение их качества до
приемлемого. Если никакая из перечисленных
рекомендаций вам не помогла, просьба отписаться в личку
мне, alexbljack или в профильной теме фидбекаРазъяснение по возможным причинам падения производительности в версиях 0.5.14...














