Counter-Strike 2 была выпущена официально больше года назад,
однако полноценных графический обзоров как-то не появлялось. Было множество отдельных
сравнений, но полноценной компиляция от крупных изданий так и не вышло.
Печально конечно, но предлагаю самостоятельно разобраться что же изменили в
новой версии игры, в плане графических технологий и построении уровней, и проведём
повторное тестирование производительности.Автор: ValveИсточник:www.counter-strike.netЭтот материал должен был появиться ещё год назад как продолжение цикла статей, посвящённых новому движку, обзору предрелизной версии CS2 и тестированию производительности игры после официального выхода. Ссылки на эти статьи будут появляться по мере необходимости, а также я приложу их в конце данного материала.Некоторые моменты лучше демонстрировать в динамике, так что имеется видеокомпиляции загруженная на YouTube и Rutube. Ссылки на них будут в ходе материала и с другими ссылками в конце.СодержаниеГлоссарий и введениеОбновление картГрафика и технологииПроизводительностьРазбор настроекТестирование производительностиСистема и условия тестовПроизводительностьКак получить больше fpsВыводГлоссарий и введениеПеред началом, как лучше делать в материалах со специфическими
терминами, разберём некоторые понятия. Это поможет в дальнейшем, в случае если
будут возникать дискуссии на основании дальнейших изъяснений. Для начала
попробуем посмотреть какие определения даёт нам всемирная паутина:Оптимизация — процесс, имеющий целью направить развитие какого-либо объекта или метода к наиболее лучшему состояниюПроизводительность — величина действия устройства, то есть отношение количества произведённой работы ко времени их выполненияАссет — объект представляющий часть виртуального мира, который обладает некоторыми свойствамиКомпьютерная графика — область информационных технологий, которая занимается созданием и отображением изображений с использованием специальной вычислительной техники (ПК или ЭВМ)Общее определения имеют место быть, однако в данном случае неплохо
было бы перейти от общего к частному. Для этого сфокусируемся на игровой
индустрии, и попробуем составить определения этих же терминов для видеоигр:Оптимизация — процесс, в результате которого игра будет использовать ресурсы системы максимально эффективноПроизводительность — количество кадров в секунду которые игра может подготовить и отрисоватьАссет — текстура, звук, эффекти т. п., которые используются в игреКомпьютерная графика — отображаемая на экране визуальная составляющая игрыДа, вторая группа определений не совсем точна, однако они
вполне точно спроецированы на игры. Разберём это чуть подробнее, начав с первой
пары терминов. Результат работы над оптимизацией игры зачастую приводит к повышению
производительности, из-за чего их зачастую используют как синонимы, но всё же в
данных терминах есть различия. Для понимания этого разберём несколько примеров:
некая игра показывает на счётчике кадров 30 стабильных fps на минимальных
настройках в HD, при этом она оптимизирована идеально (такое почти невозможно,
но мы смотрим на ситуацию в вакууме). Почему так мало кадров, неужели всё же плохая
оптимизация? Нет. Игре может банально не хватать мощностей железа, из-за чего
приходится понижать разрешение и настройки. И дело тут не только в видеокарте,
в чём привыкли измерять мощность систем: игре может не хватать объёма или
скоростей ОЗУ, вычислительной мощности процессора… Кроме них есть ещё шины
данных, у которых ограниченное ПСП (пропускная способность памяти), что так же
влияет на результат, ведь CPU и GPU будут простаивать без данных. Ну и не стоит
забывать про накопитель, а также о том факте, что за перенос данных и их декомпрессию
(грубо говоря подготовку данных для работы) отвечает ЦП или ГПУ (при
использовании DirectStorage), что отнимает у них ресурсы которые могли бы пойти
на рендер графики. Но для лучшего понимания нам нужен второй пример: вторая
игра выдаёт 100 кадров в секунду в FHD на максимальных настройках. Однако технические
специалисты выяснили что движок игры плохо отсекает «невидимую»
геометрию, из-за чего рендерится множество лишних элементов, а также игра забивает
конвейер множеством однотипных запросов, вместо которых можно было бы
использовать посчитанные ранее значения. И то что игра выдаёт столько кадров
это заслуга не оптимизации, а мощного железа, которое позволяет справится со
всеми проблемами.Собственно пример второй игры я приведу спокойно:PC
Building Simulator,у которой есть проблемы с оптимизацией, при том что моё
железо выдаёт более 100 кадров. В данной игре мониторинг показывает неполную
загрузку процессора и видеокарты, а на графике времени кадров проскакивают пики
и наблюдаются небольшие микрофризы. Конечно сейчас, спустя 5 лет после релиза,
ситуация заметно улучшилась, однако проблемы ещё остаются. С первой же игрой
сложнее, ведь тут нужна игра которая на несколько лет старше железа, при этом
надо быть уверенными в оптимизации данной игры. Можно, кончено, взять RDR2 и
железо аналогичное PlayStation 4, ведь Digital Foundry выяснили следующее: на
ПК даже минимальные настройки имеют значения ВЫШЕ, чем на Xbox One X, который
заметно мощнее базовой PS4.Аналогичная ситуация и с графикой. Игры состоят из различных ассетов, но одно только качество ассетов не гарантирует высокое качество графики. Банальный пример: если в игре высококачественные модели переднего плана, главный герой и его транспорт, будут передвигаться между низкополигональными моделями окружения (горы, деревья или здания) или по объектам с низким разрешением текстур (дорога, земля), это будет говорить лишь о низком качестве ассетов. Собственно, на эту тему я уже рассуждал в статье про визуальный стиль в играх, где обозначил несколько мыслей: все элементы графики должны быть проработаны равномерно; низкое качество графики может являться одним из инструментов визуального стиля. Если в игре грамотно выстроен визуальный стиль, как в играх Papers Please и Portal, то текстуры низкого разрешения и недостаточная детализация не будут проблемой, наоборот — они будут играть на антураж. Однако мы можем столкнуть Portal и Portal RTX, и вроде у второй игры будут значительные преимущества: реалистичное освещение и затенение, динамические источники света… И если в испытательных камерах всё действительно так, то вот помещения вне испытаний становятся более пустынными, и улучшенное освещение только усугубляет ситуацию.На основании этого мы делаем два вывода: оптимизация != производительность;
качество ассетов != качество графики.Обновление картДля начала вспомним, как изменились официальные карты. Да, материал выходит больше чем год после официального релиза CS2, но какая разница? Все карты из CS2 можно поделить на три группы: ремейки, ремастеры и порты. Порты — это карты, перенесённые из прошлой версии без изменений, но такие карты предлагает только сообщество в мастерской. Ремастеры — это слегка улучшенные карты с обновлёнными ассетами и исправлениями некоторых старых багов, и таких карт сейчас большинство, а вот ремейки — это карты, которые уже воссозданы с нуля, с использованием возможностей нового движка. На данный момент нам представили три ремейка: Italy, Overpass и Inferno, которые довольно сильно отличаются от своих предшественников, ну и ждут выход Cache.Пока я заканчивал редактировать данный материал вышла картаTrain, которая так же подверглась значительной переработке. Как итог, на момент выхода были недовольны все: половина ругалась, что не обновили их любимую карту, другая возмущалась тому, что на их любимую карту внесли какие-то изменения. Спустя время Overpass убрали из списка передовых карт (карты для игры в Премьер-режиме и на турнирах), про Italy в режиме с заложниками все забыли, а про Inferno до сих пор говорят что зря её вообще меняли. Но это обсудим позже, а пока давайте из списка ремастированных карт вынесем Ancient и Anubis в отдельную категорию, которая будет неким связующим мостом между ремастерами и ремейками. Как это понять объясню позже, а пока начнём разговор про графику.Для начала рассмотрим ремастированные карты на примере
классики, — de_marage, на котором глобальных изменений пойти нет. Для примера
три пары скриншотов, на которых можно сравнить одинаковые локации в CS2 и CS: GO:Автор: ValveАвтор: ValveАвтор: ValveАвтор: ValveАвтор: ValveАвтор: ValveТекстуры стали чётче, острых углов стало меньше, появились
цветовые рефлексы, что видно на паре скриншотов №2 (цветовые рефлексы это возможность переотражённым светом приобретаться оттенок от которого отразился)… В целом игра перестала выглядеть как проект
конца нулевых, собственно, коей она и являлась. И несмотря на то, что CS: GO
развивалась более 10 лет и получила множество обновлений, даже к моменту
перехода в новую игру на картах был минимум детализации и текстуры из прошлого
десятилетия. Собственно, почему так? Ответ на этот вопрос давался уже не раз,
например в даннойстатье, и поэтому дам только краткую историческую справку:
все игры на движке Source, кроме проектов от Respawn, созданы на DX9 с
соответствующими ограничениями. А это значит упор в одно ядро процессора,
отсутсвие современных технологий, устаревшая шейдерная модель, множество кода,
который копился в движке двадцать лет… Довольно широкий перечень проблем,
которые нельзя увидеть, исчез с выходом CS2, ведь Source 2 обновил техническую
часть игры, что позволило добавить в игру многие новые технологии, как,
например, продемонстрированные выше цветовые рефлексы.Именно это и произошло на ремейках карт: улучшились ассеты, появились новые технологии и всего остального по мелочи. Но стоит отметить, что на этих картах осталась неизменная геометрия, да, где-то дотянули текстуры, немного подвинули объекты, но это скорее исключение из правил. И это всё, что можно сказать про ремастеры, и перед тем, как рассмотреть карты-ремейки, посмотрим на ту самую связующую пару карт. Две данные карты были добавлены под конец CS: GO, и от обилия предметов и мелких деталей эти карты, как и карта Cache в своё время, очень сильно просаживали стабильность. Но после глобальной уборки, которая удалила все мелкие предметы и большинство растительности, карты вернулись к играбельному состоянию. И это частично объясняет отсутствие изменений на этих картах: они уже были достаточно проработанными на момент выхода, из-за чего им хватило небольшой полировки при переходе на новый движок. Ну и конечно, не следует забывать про изменения, которые пришли после обновления движка: отражения, локальные источники света, эффекты…Ну, а теперь к самому интересному: Italy, Overpass и Inferno,
три полностью переработанные карты. И вот на этих картах можно разгуляться:
переработали геометрию, которая стала сложнее, значительно увеличилась
детализация, достаточно мест где видна игра света и тени, на Италии даже
появилось несколько новых проходов. Карты в целом стали играться по-другому, и
приходится подстраиваться под новую реальность. На картах довольно много
предметов с которыми можно взаимодействовать, чем, собственно, и славился
всегда движок Source, а стены начали пересекаться не под углом 90, что привело
к большему числу рельефных и наклонных поверхностей. Кстати о декоре: сразу
после релиза на карте Инферно некоторые «внимательные» искатели нашли бельё,
которое развивается на ветру. Ну и конечно, они сразу решили, что эта деталь
лишняя и сажает кадровую частоту, но, видимо, они зашли в игру впервые, ведь
это бельё изначально появилось в GO версии, которое, о чудо, так же развивается
на ветру.Данная статья создавалась до выхода карты Train, так что про неё тут ничего не будет. Разбор обновления с погодой, на Train впервые появилась дождливая погода, что существенно изменяет восприятие, обновление текстур и структуры карты… В общем статья бы задержалась ещё на месяц.Графика и технологииИ первое, что бросается в глаза, это изменённая цветовая гамма, что можно было заметить на кадрах выше, но это эффект постобработки, который можно крутить как угодно. Из-за этого данный эффект нам не интересен, и лучше посмотрим на свет, освещение и тени, которые уже не раз обсуждались, но некоторые моменты так и остались без внимания.В данной версии игры данные эффекты получили значительное
обновление, и теперь у нас есть улучшенные статические и новые динамические
тени. И перед тем как продолжить, надо упомянуть ещё об одном графическом
эффекте, который появился спустя двадцать с лишним лет: игрок теперь может
увидеть собственные ноги. Ничего особенного в этом нет, но просто забавная
вещь. И в догонку к этому второй эффект: игрок видит тень, которая создаётся
его персонажем. Тень от персонажа была и в GO, но её видели только другие
игроки и всего в нескольких локациях. Сейчас можно самостоятельно
контролировать тень от персонажа. Теперь к источникам света, которые бывают
двух видов: глобальные и локальные. В роли глобального источника света
выступает Солнце, которое присутствует на всех картах. С этим источником
знакомы все игроки в CS, ведь оно присутствует уже давно, а вот локальные
источники света стали фишкой CS2. Они добавлены для создания теней не только на
улице, но и в помещениях, и для этого пригождаются торговые автоматы,
строительные прожекторы, некоторые потолочные лампы и так далее. Теперь немного
технической части: в Counter-Strike: Global Offensive тени были реализованы
методом каскадных теневых карт (Cascaded Shadow Maps). Реализация теней в
Counter-Strike 2 изменений не претерпела, хотя достоверной информации пока нет,
но заметно повысили качество теней и внедрили новый алгоритм для теней от
локальных источников света. Тени, которые создаются новыми источниками света,
изменяют резкость и размер в зависимости от удалённости источника света. Из-за
этого, смею предположить, что они создаются с помощью Shadow Mapping (или,
возможно, тем же самым методом каскадных карт, но проверить это пока не вышло),
но в него был добавлен параметр, отвечающий за контактную жёсткость. За счёт
этого тени становятся более размытыми в процессе удаления от осветительного
прибора, а если взять два источника, то тени будут более рассеянными, а чёткая
часть будет только в местах пересечения теней от двух источников. Хотя
возможно, что за размытие теней отвечает не контактная жёсткость, а фильтр
наподобие PCF (процентная фильтрация). Но такие подробности мы узнаем только
тогда, когда появится полноценная документация на Valve Developer Community, ну
или когда такой разбор выложит студия, которая работает с движком Source 2
(например Facepunch с их S&Box). Но уже сейчас можно сказать, что теперь
тени, которые раньше использовались в полутора локациях по всей карте, стали
неотъемлемой частью геймплея.А теперь разбавим материал анекдотичной частью. Раньше, во времена CS: GO, меня не сильно волновали технологии, ведь я играл в игру десятилетней давности с технологиями двадцатилетней давности, но сейчас уже другое дело. И, зайдя в GO с целью вспомнить, как там выглядели и работали тени, я нахожу вот это:Автор: ValveАвтор: ValveАвтор: ValveАвтор: ValveТени от персонажа и окружения есть, всё вроде хорошо, но стоит включить зум, как тени от персонажей исчезают, а тени окружения переключаются в самое низкое качество. Как так, почему, что случилось? Вопросов много, а ответов нет. А теперь, как говорится, вспомните тени в CS2, которые стали на несколько голов выше, но всё же недотягивают до современных высокотехнологичных игр.На этом с
тенями всё, так что посмотрим на что-то более простое, что на словах выглядит
круто, однако не является существенно важным. В игре появились реалистичные
отражения, которые, согласно утечкам до релиза игры, создавались с
использованием трассировки, что в целом не ново. Отражения встречаются в двух
ситуациях: на воде, лужи и водоёмы, а также на зеркальных (или начищенных)
поверхностях. И, невзирая на то где находится отражение, можно сказать с
уверенностью, что они сделаны с помощью кубических карт, которые запекаются в
текстуру на этапе разработки. Плюсом такого подхода является
производительность, ведь кубические карты требуют минимум ресурсов системы при
рендере графики, ведь это просто текстура, которая лежит в файлах игры.
Рассмотрим отражения в зеркальных поверхностях и лужах:Зеркальный пол на MirageАвтор: ValveЛужи на карте ItalyАвтор: ValveОтражения от окружения есть, бот есть, отражения бота нет. Собственно, исходя из этого я сделал вывод о том, что это статичные кубические карты, однако как дела обстоят на водных поверхностях? Основная масса воды собрана на картах Anubis и Ancient, значит, на них и будем смотреть, что к чему. Вот что можно увидеть в отражениях на воде карты Anubis (заодно сравним их с отражениями в CS: GO):Anubis в CS: GOAnubis в CS2Нет ничего, но стоит поднять камеру чуть выше, как становится понятно, что для отражений на воде используется SSR (отражения в экранном пространстве).И почему было не сделать «классическую» пару кубические карты и SSR? Данная комбинация применяется уже достаточно давно и хорошо себя зарекомендовала: заранее заготовленные отражения создают меньше нагрузки на систему, а SSR позволяет с минимальными затратами по производительности добавить более качественные отражения тех элементов, которые и так рендерятся в пространстве экрана. Но на самом деле в игре используются кубические карты, а скрин без них был вставлен нарочно: для их появления необходимо ПОВЫШАТЬ настройки (пункт Детализация шейдеров на Высоко). Почему не сделать наоборот, отражения кубмапами всегда, а SSR появляется при повышении настроек? В общем ладно, это дело разработчиков, а пока разберём детали. Использование SSR позволяет увидеть более качественные отражения геометрии и динамические объекты (такие как дымовые гранаты), но всё пропадает если изменить угол камеры, и без кубмап вода становится слишком прозрачной. Стало ли картинка красивее? Да. Полезно ли это? Ну-у-у-у-у, нет, и дело тут не только в ограничениях SSR-алгоритма. Но эти ограничения всё же вносят довольно значимый вклад: во-первых, в данной игре SSR настроен очень плохо, и если что-то попадает в игровую камеру частично, то отражения на воде не появится, а подложка в виде кубических карт появляется только на высоких настройках. Второй момент связан с геймплеем: использование SSR не позволяет использовать отражения на воде для получения информации и поиска противников, так что отражения на данный момент являются таким же неиспользуемым гиммиком, коим в CS: GO были тени. Это возможно изменить если добавить в отражающие поверхности виртуальные камеры, ну или использовать трассировку для отражений. Но тут мы переходим к вилке: в данный момент основной API — это DirectX 11, а он не поддерживает трассировку (для этого нужен DX12 или Vulkan), так что сейчас это можно было бы сделать только виртуальными камерами (динамические кубические карты или планарные отражения). Но виртуальные камеры могут понижать производительность линейно в зависимости от кол-ва таких поверхностей. Для тех, кто не понимает, в чём же дело, и из игр запускал только CS1.6, то в игровой индустрии создание отражения всегда требовало значительных ресурсов, и до повсеместного внедрения статичных кубических карт и SSR приходилось использовать виртуальные камеры. Как, например, в Half-Life 2, где отражения на воде создавались с помощью виртуальных камер (методом планарных отражений), что позволяло отражать динамические объекты, но требуя при этом больше вычислительных мощностей. Ведь использование любого числа виртуальных камер будет просаживать кадровую частоту из-за того, что игровые локации теперь создаются не 1 раз (для камеры персонажа), а N раз (где N — это кол-во отражающих поверхностей с виртуальными камерами). И не надо быть доктором наук, чтобы осознать тот факт, что создать 1 картинку в несколько раз проще, чем создать N картинок.Ну и на основании всего этого мне кажется, что сам алгоритм SSR добавили скорее по остаточному принципу либо для проверки и/или тестирования возможностей движка. Так что, смею предположить, движок всё ещё находится в стадии активной разработки, и необходимо проверять множество возможностей и дорабатывать функционал. И перед завершением разговора про отражения пара заключительных слов про CS: GO. В предыдущей версии игры отражения на воде были реализованы кубическими картами, которые кажутся более качественными на первый взгляд, однако такое ощущение складывается из-за более простого шейдера жидкости. Из-за этого можно сразу забыть про отражения динамических объектов, а также про различные визуальные эффекты.Переключение «Детализация шейдеров» на Высоко включает статичные отражения на водеСравнить в динамике отражения в CS: GO и CS2, а так же отличия Низких и Высоких шейдеров тут —YouTubeиRuTubeПро следующую фичу которую привнёс новый движок, и смотреть на неё мы будем на карте Office. Самые догадливые уже поняли что речь пойдёт про стёкла, коих в данной версии стало ещё больше. Во-первых, что не важно, у них появились отражения, но сделаны они кубмапами и отражают непонятно что. Второе, что начали разносить сразу после релиза игры, это их анимация разбивания. Говорили что это некст ген, и на первый взгляд это действительно так, но как всегда не всё так. Физически корректные стёкла были в игре Half Life 2, что помнят многие геймеры, да и в CS: GO года так до 2018, однако их удалили в угоду оптимизации (и с этого времени окна имеют всего два состояния: окно цело и окно разбито). И тут затронем карту Mirage, где есть две вентиляционные решётки, которые приходится разрушать каждый раунд. В GО версии игры у них была одна общая черта: при получении урона, не важно каким способом, они мгновенно разбивались, при этом с одинаковыми анимациями. С переходом на Source 2 оби эти сущности получили обновление: вентиляционные решётки с de_mirage теперь разрушаются только при попадании непосредственно в металлические составляющие, что позволяет стрелять сквозь них и не разбивать, а окна на cs_office разбиваются и начинают трескаться от места попадания пули. И если первое улучшение действительно важное, и существенно влияющее на геймплей, то вот окна, и прочие стеклянные объекты, получили лишь эволюционное обновление анимации. Но разве не в этом суть обновлений? Тут преработали, тут немного улучшили, тут дополировали…Отражение в окнеИ что отражаетсяАнимация разбития стеклаИ в связи с
этим посмотрим на новые частицы и эффекты. Для начала об эффектах: из файлов
игры удалили, или точнее сказать не перенесли на новый движок, огромный
перечень визуальных эффектов. В CS: GO было множество эффектов, которые хранились
в файлах движка со времён HL2, что давало возможность их
запускать через консоль на локальных серверах, а картоделам использовать для
создания спецэффектов. Ну, а раз лежали они в файлах с очень давних времён без
необходимости, скорее всего их решили не переносить на новый движок, или просто
оставили это дело на потом, а эффекты на новом движке, скорее всего, будут
добавляться по мере необходимости (а в CS2 пока такой необходимости нет).
Собственно с этим я какой-то мере согласен, ведь подавляющее число игроков в Counter Strike никогда их не видело (разве что в
роликах каких-то блогеров), а вот в Half Life Alyx такие эффекты являются
необходимостью и заметит их куда больше людей. Таким образом, на данный момент,
в игре есть только эффект: электрический паралич, создаваемый при смерти игрока
от электрошокера. Теперь о новых декалях: брызги крови, вытекшая из разбитых
бутылок жидкость… Valve значительно обновили декали, после чего перестала
работать команда «r_cleardecals», которая очищала карту от крови и
следов пуль. В Counter Strike 2 пятна крови, которые остаются
после попадания по игроку, пулевые отверстия и брызги вина формируются чуть
более интересно, чем простая картинка накладывающаяся на текстуру, они стали
рельефнее и с фишками. Рельефность и высыхание относится больше к крови,
которая сразу после появления имеет алый оттенок, а с течением времени
превращается в сероватую массу, ну, а вино… Собственно тут должен был быть
небольшой рассказ о винных бутылках, которые после разбивания могли оставлять винные
пятна, однако тут будет небольшой реверанс в сторону сторонников всего старого.
Вино после разбития бутылок было вырезано, ну или отключено для моделей, которые
используются на официальных серверах. Тут уже надо более детально изучать
модели и редакторе, но это уже следующий уровень.И пара слов о ещё одном немаловажном достоинстве нового движка: увеличение детализации, что очень заметно на новых картах. Помимо улучшенных ассетов, на обновлённых картах значительно повысили количество объектов в кадре. При этом добавленные объекты не статичные, а динамичные или физичные пропы, с которыми может взаимодействовать игрок: тарелки на спавне Italy разбиваются от выстрелов, можно покрошить фрукты на втором миду на Inferno…ПроизводительностьС
производительностью всё немного сложнее и одновременно проще. Очень много шума
поднялось из-за повышения системных требований, которые по меркам 2023 года
довольно низкие. В тесте TechPowerUp GTX 1630 в FHD на максимальных настройках
графики смогла обеспечить 50 кадров в секунду. Спустя год, разумеется, ситуация
изменилась, и карта выдаёт уже другую кадровую частоту, но столько же
репрезентативного и массового тестирования CS2 больше не было. Но что вообще из
себя представляет данная карта? GTX 1630 — это затычка, созданная на основе
обрезанной GTX 1650, но с полноценным кодировщиком поколения Turing, а по
уровню производительности в играх это GTX 1050 Ti (в зависимости от игры). Ну, а
GTX 1050 Ti — это уже видеокарта начального игрового уровня. 2016 года.
Бюджетная видеокарта восьмилетней (8 лет!) давности потянет игру на
максимальных настройках в +-50 фпс и при сотне кадров со средними настройками.
Ради интереса я нашёл статистику железа за 2016 год, на самом деле я её нашёл
для использования в ежегодных итоговых материалах Steam-статистики, но суть в
том, что тогда в топ-10 находились карты Radeon HD 7000 и GTX 500. Вопрос,
насколько они себя хорошо показывали в играх того года при запуске в 1080р при
средне-низких настройках, думаю, риторический. Но на всякий случай: BF 1 — 30 с
просадками; Titanfall 2 — 60 с просадками; Overwatch ~60 FPS в зависимости от
карты. Я специально брал мультиплеерные игры, чтобы можно было провести
параллели. Теперь же посмотрим топ железа за прошлый год, в момент начала
закрытого тестирования CS2. Для этого обратимся к моей новостнойстатье, где
есть информация о двадцати самых популярных видеокартах. Все видеокарты
поколения Pascal или новее, да и сами графические чипы в большинстве своём —
это средний сегмент и мощнее. На эту тему можно рассуждать и дальше, но тогда
это будет уже статья про компьютерное железо, а мы тут игру обсуждаем.Основная мысль тут такая: при грамотном выставлении
настроек можно достичь достаточного уровня производительности почти на любом
железе, если оно подходит для данной игры. И именно для этого я провёл львиную
долю времени в материале с тестированием CS2 за тем, что разбирался в различных
настройках, которые в тот момент находились в меню. Данное меню немного
изменили, так что предлагаю уточнить некоторые вещи.Разбор настроекБольшинство теоретической базы со времён материала годичной давности актуальности не потеряло, так что для понимания всех аспектов советую изучить данныйматериал, если, конечно, данная тема Вам интересна.Ну, а в этом подразделе я буду лишь дополнять тот материал. Первый момент касается фильтрации текстур, разница в котором вроде есть, а вроде нет. Собственно, год назад в комментариях к своему материалу я указал на место, где лучше всего видна разница в фильтрации текстур: Титаник на втором дасте. Но зайдя это проверить сегодня, я понял, что это уже не работает. Но чтобы понять почему, необходимо узнать, что же делает фильтрация текстур. Говорить буду кратко, так что: если в игре используются MIP-текстуры или LOD-модели, то в процессе игры они заменяют друг друга. Так, самые дальние объекты имеют низший уровень лодов или MIP-текстур, что позволяет повысить производительность при небольшой потере в качестве. Но если у нас имеется длинная текстура (например, дорога), то как быть с ней? И вот тут в дело включается фильтрация: чем лучше алгоритм, тем более плавный будет переход между уровнями детализации объектов и текстур. Но тут мы возвращаемся в реальность Counter-Strike’а. В CS: GO LOD-модели были отключены, чтобы поставить всех игроков в равные условия. А если у нас отсутствует такое понятие, как уровни детализации, то откуда взяться влиянию от фильтрации текстур? Собственно, скорее всего, в CS2 ситуация аналогичная. Почему же тогда в тестовых настройках будет не минимальное значение, а чуть выше среднего? Анизотропная фильтрация влияет на производительность в пределах 1% от кадровой частоты, при этом если она работает, то картинка получает солидный буст к качеству (в видеоролике есть попытка сравнения фильтрацию теней с разными параметрами).Второе
уточнение касается настройки теней. Год назад была только одна настройка, Общее
качество теней, которая отвечала за все тени в игре. Изменяя данный параметр мы
могли изменять качество теней, а при выставлении Высокого или Очень высокого
значения появлялись тени от локальных источников света. Сейчас же настройка
Общего качества теней регулирует только качество теней, и чем выше значение,
тем лучше проработаны тени, а возможность создавать тени локальными источниками
света была вынесена в отдельный параметр. Так что в тестовые настройки запишем
параметр качества теней Среднее, а также обязательно активируем динамические
тени от всего.И последней
новостью можно считать сглаживание MSAA. Поясняю: полгода назад самые
внимательные люди на просторах CS сцены нашли баг, который заключается в том,
что при выставлении данного сглаживания решётка на перилах Б плента на Vertigo
(это самый лучший пример) становилась частично прозрачной. Этот баг я нашёл за
полгода до этого, в том самом материале с первым тестом CS, из-за этого я его и
рекомендовал изначально. Однако, видимо, из-за шумихи по этому поводу, данный
баг частично исправили, и теперь решётка становится прозрачной только при
включении MSAA 2x. С данным сглаживанием решётки не попадают в выборки по семплам, из-за чего решётка становится прозрачной, а с более качественным MSAA прутья уже попадают в выборки и решётка становится менее прозрачной. Кстати, без АА или с CMAA сквозь решётки не видно ничего, но враг на радаре отображается.Без ААCMAAMSAA 2xMSAA 4xMSAA 8xС внесением
уточнений вроде всё, так что подытожим и составим тестовые настройки:Повышенный контраст игроков — Вкл.Вертикальная синхронизация — Выкл.Сглаживание — MSAA 2xОбщее качество теней — СреднееДинамические тени — От всегоДетализация моделей и текстур — СреднееФильтрация текстур — Анизотропная фильтрация 4xДетализация шейдеров — НизкоеДетализация частиц — НизкаяГлобальное затенение — СреднееHDR — ПроизводительностьFSR — Выкл.Nvidia Reflex — Выкл.Разрешение — 1920х1080Тестирование производительностиНастройки определили, теперь разберём тестовые локации. В игре доступно два API, которые реализованы в движке Source 2, — DirectX 11 и Vulkan. На сегодняшний день в качестве решения по умолчанию используется API от Microsoft. Связано это, скорее всего, с несовершенством нового движка и неправильной работой неких функций, из-за чего мы начали получать игры с шутерной механикой на данном движке только спустя 5 лет после его выхода.Система и условия тестовТесты проводятся на компьютере с Ryzen 5 5500 и RTX 3050. Игра установлена на SATA SSD от Crucial MX500, а в качестве оперативной памяти 16 Гб двумя модулями со скоростью 3200 MT/s. Операционная система Windows 10 Pro 22H2 сборки 19045.5011, драйвер GameReady 566.03. В фоне не запущено никаких сторонних программ, кроме клиента Steam и пары MSI Afterburner с RTSS для замеров производительности. Тесты будут проводиться в два этапа: первый прогон для записи геймплея и кэширования всего необходимого, второй прогон без записи, но с включенным инструментом для фиксации показателей FPS.Всего будет три тестовых отрезка, первый из которых — это забег по карте Ancient, идентичный показанному в данном ролике, однако провести корреляцию между тестами не выйдет: в прошлый раз использовался более слабый процессор — R3 3100. Но в любом случае это позволит пополнить базу данных и в случае чего проводить повторные тесты и изучать изменения в производительности.На карте Inferno будет идентичный, и в данном тесте, как и на Аншенте, будут присутствовать боты, но которые расставлены по карте в разных позициях. Их положение может несколько отличаться, как и их вооружение, из-за того, что для проведения тестов не используются автоматизированные скрипты.Последний, третий тест — это карта de_dust2_benchmark, которая автоматически проводит тести выводит результат. А в качестве результата нам выводится два значения: средний FPS и Р1 (1 процентиль, показатель редких событий).Ну и конечно, не будем забывать про разные API, и каждый из перечисленных выше тестов будем проводить дважды: с DirectX и Vulkan. И вот тут уже можно будет провести некое сравнение с тестами годичной давности, ведь мы будем изучать влияние на производительность от смены API.ПроизводительностьНа этом моменте с подготовкой точно всё, можем переходить к тестированию. Видеокомпиляцию тестов можно найти тут —YouTube,RuTube, так же как и некоторые другие видеофрагменты, снятые для данного материала. Далее в статье будут стоп-кадры из видео и таблицы с данными, зафиксированные по результатам прогонов.ФПСDX11VulkanСредний206,1193,4Максимальный248,5236,9Минимальный120,3129,51%88,3112,70,1%71,8100,2ФПСDX11VulkanСредний186,1176,7Максимальный336,5313,6Минимальный103,998,31%87,494,20,1%12,883,4Средний фпс по данным карты191,2184,41% по данным карты101,7104,3Суммарное кол-во кадров2187821101ФПСDX11VulkanСредний166,1162,4Максимальный205,3200,7Минимальный98,2118,51%67,383,70,1%53,974,8И сразу после таблиц неожиданный вывод: в игре были устранены некоторые проблемы и производительность выросла. И дело тут не в более мощном процессоре или ином наборе настроек, нет. Этот вывод касается API Vulkan. Год назад кадровая частота с данным API была на 15-20% ниже, чем на DirectX, а сегодня разница уже менее 5%. И, казалось бы, Vulkan более современный, имеет низкоуровневый доступ к железу, создан изначально под многоядерные системы и так далее и тому подобное. Но для достижения результатов необходимо научиться с ним работать, адаптировать инструментарий и системы под данный API. К примеру, если сегодня запустить небольшие игры в Стиме, как, например, серию «Find All», то они будут сделаны под DX11, хотя к моменту выхода уже более пяти лет существовала двенадцатая версия данного пакета и его аналог — мультиплатформенный Vulkan.Перейдём к обсуждению тестов. По результатам тестов кадровая частота на DirectX несколько выше, но показатели редких и очень редких событий выше на Vulkan. Если попытаться сравнить видео прогонов, то уже однозначно сказать какой API лучше не выйдет: в разных сценах преимущество остаётся за разными API, однако, что прослеживается и на других картах, частота кадров более стабильная на DirectX. Обратите внимание на графики частоты кадров и времени кадра, и при переходе на Vulkan они превращаются в заборы. Нет, это не заметно в геймплее из-за высокой кадровой частоты, и сейчас я просто констатирую факт. Также обратите внимание на различие в кадровой частоте на картах Infrno и Ancient. Более 50 кадров по среднему и максимальному fps. Посему проведём ещё небольшой тест с использованием карт Dust2, Infrno, Overpass и Anubis. Суть теста заключается в небольшой пробежке по открытой территории с целью узнать, как отличается кадровая частота на разных картах. Это совсем не репрезентативный тест, ведь сравниваются разные локации с различной степенью проработки, но в этом и суть.Вот они, слева на право: Inferni, Overpass, Anubis и Dust IIКадровая частота на Инферно самая низкая, а самая высокая на Дасте, Анубис же показал ФПС немного выше чем Оверпас. Разумеется, на это повлиял и выбор локаций, ведь Dust II из тестируемых карт самый примитивный, что позволяет получить самый высокий FPS; следом идёт Anubis, который уже может похвастаться более сложной геометрией, однако не самую высокую детализацию; Overpass, несмотря на кажущуюся простоту локации, имеет сложный рельеф и геометрию, а также текстуры довольно высокого разрешения; ну и Inferno, карта, которая показывает максимальную детализацию на каждом виртуальном квадратном метре, выдаёт минимальный фпс из всех протестированных локаций.Собственно,
из-за этого у меня есть вопросы к карте FPS Benchmark, а точнее к карте,
которая была взята за основу для данного бенчмарка. На данной карте
симулируется максимальная игровая нагрузка, за счёт чего мы имеем средний фпс
на 10% ниже, чем при обычном забеге по более сложной карте Ancient, но если
устроить подобное на карте Inferno, да даже на том же самом Ancient, то мы
получим более серьёзные просадки частоты кадров из-за множества мелких объектов
и куда более сложной геометрии карты. Таким образом, мы вроде как имеем
представления о частоте кадров, но данный тест не отражает реалии
переработанных карт, которых в будущем будет только больше.Но вернёмся
к тестам и подведём промежуточный итог. В течение года выходили патчи, которые
меняли производительность как в плюс (как случилось с Vulkan’ом), так и в
минус: недавнее обновление Арсенал, которое привнесло в игру множество
косметических предметов. При этом, если в патче указано, что производительность
выросла, то надо понимать, где искать: если улучшили работу частиц — можно
проверить на карте с бенчмарком; взаимодействие с жидкостью лучше проверять на
Ancient; оптимизированный конвейер рендера лучше всего изучать на картах со сложной
геометрией и множеством объектов (Inferno или Italy). И, к сожалению, сейчас
нет возможности проверять это в одном месте, ведь для этого необходимо создать
новый бенчмарк, который позволял бы воспроизводить одинаковый тестовый отрезок
с высокой нагрузкой (как de_dust2_benchmark) на масштабной карте с высокой
детализацией (Italy), при этом такая карта должна иметь внутри себя аспекты,
которые могут вызывать просадки: взаимодействие с водой множества объектов,
просчёт физики большого числа пропов (отбрасывание предметов взрывом) и другие
игровые сценарии.Как получить больше fpsЕсли вы
ожидаете увидеть в данном разделе советы по оптимизации или лайфхакерские
конфиги, которые позволят запустить игру на компьютере двадцатилетней давности,
то нет.Вы, конечно,
можете обратиться к интернет-советам по увеличению кадровой частоты. Например,
можно очищать кеш шейдеров после каждого обновления, экспериментировать с
параметрами запуска или искать «особые» настройки в драйверах для повышения
производительности. О последнем мы поговорим чуть позже, а сейчас я постараюсь
объяснить, какие настройки можно изменить, чтобы увеличить частоту кадров, при
этом не потеряв преимущество перед соперниками. Этот раздел специально написан
после тестов, чтобы можно было использовать условные цифры для объяснения.Традиционно
одним из самых тяжёлых графических параметров является сглаживание. Существует
не один десяток алгоритмов, которые отличаются как подходом к избавлению от
«лесенок», так и степенью влияния на производительность. Алгоритм MSAA
позволяет повысить качество на краях объектов, однако взамен приходится
жертвовать производительностью. Можно включить CMAA сглаживание, что несколько
ухудшит картинку, но даст прибавку ~10%, хотя зависеть всё будет от локации. Ну
и, конечно, можно полностью отключить сглаживание, но в таком случае объекты на
удалении сильно потеряют в чёткости и могут сливаться в месиво.Настройка
качества теней, сниженная до Низкого параметра, выиграет Вам ещё несколько
процентов производительности, в пике я заметил разницу в 11 кадров, а в среднем
около 7. Но стоит отметить, что больше влияния данная настройка оказывает на
тени от локальных источников света:Детализация теней — НизкоАвтор: ValveДетализация теней — СреднееАвтор: ValveДетализация теней — ВысокоАвтор: ValveДетализация теней — Очень высокоАвтор: ValveДетализация теней — НизкоАвтор: ValveДетализация теней — Очень высокоАвтор: ValveТени от
фонаря становятся чётче при увеличении качества теней, при этом довольно
заметно: если на низких настройках видны только пиксели, то на значениях
«Высоко» и «Очень высоко» уже можно разобрать некоторые мелкие детали. При этом
тени от глобального источника света также изменяются, но из-за фиксированного
положения источника они более качественные и не зависят от положения игрока.Так же, как
и год назад, параметры Детализация моделей и текстур, а также Фильтрация
текстур на качество картинки влияют слабо, так же как и на производительность:
разница в 1-2 кадра.Ну и,
конечно, следует ждать полноценного завершения работы над Vulkan. Почему это
важно? Во-первых, что важно для любителей портативок, это производительность на
одном из продуктов компании Valve, и речь не про Steam Deck, а про операционную
систему, на которой он основан: SteamOS, которая является дистрибутивом Linux,
а DirectX — это решение от Microsoft для Windows и Xbox. Таким образом, использование данного API позволит запускать игру нативно, без использования ретрансляторов по типу Wine Proton или решений формата DXVK (которые перехватывают вызовы DirectX и переводят их в Vulkan). Ну и, во-вторых, это позволит повысить производительность и стабильность даже на Windows, за счёт всех тех возможностей нового API, про которые шла речь выше.ВыводНа этом
основная часть подошла к концу, и для лучшего завершения попробую
структурировать мысли из данной статьи.Игра
получила довольно значимое обновление, в котором были переработаны многие
механики и карты, а значительное число элементов получило развитие или
улучшение. На некоторых картах появилось больше число мелких деталей, выросло
качество ассетов и усложнилась геометрия карт, что заставляет игроков менять
свой игровой стиль и занимать более выгодные позиции. Изменили множество
анимаций, что вызывает проблемы с визуальным отображением. Так что правильнее
будет сказать, что мы получили новую игру, которая просто похожа на старую:
новый движок, новая система программирования, новые технологии, изменённые
механики…Ну и
разумеется, производительность по сравнению с CS: GO кратно просела. Когда мы
сможем вернуться к уровню GO по фпсам? Года через 3-4, когда выйдет железо,
превосходящее текущие процессоры и видеокарты по производительности в несколько
раз. Собственно, это я уже писал год назад, но повторюсь: в момент релиза CS: GO
на топовом железе с максимальными настройками в 1080р выдавала 200-300 fps,
опять же в зависимости от карты, и было меньше, чем на аналогичном железе выдавали
CS: S и CS1.6. Позже, с выходом новых процессоров и видеокарт, люди смогли
достичь показателей в 500+ фпс вне зависимости от карты. Произойдёт такое же с
CS2? Да, но опять же, спустя несколько лет. Но сможем ли мы, как игроки,
получить прибавку в 10-20 или даже до 50 кадров на текущем железе? Вполне, если
разработчики будут заниматься только оптимизациями и улучшениями
производительности, откажутся от нововведений и улучшений, а также будут
находится в постоянном контакте с разработчиками драйверов для улучшения
конфигурационных файлов и команд компилятора. И в таком случае получить
прибавку будет возможно, но есть ещё один вариант: переработка инструментария и
затачивание игры изначально под API Vulkan, а также улучшение его поддержки со
стороны движка и драйверов, ну и конечно, отказ от нововведений. И в таком
случае игра сможет эффективнее загружать работой многоядерные процессоры и
лучше распоряжаться ресурсами памяти, что может повысить кадровую частоту, но
уже чуть в более далёкой перспективе. А сможем ли мы получить прибавку до сотни
кадров? Ну, если пойти по одному из путей, указанных выше, и вдобавок урезать
физику, упростить графические эффекты и сложность геометрии, то можно и
получить такую прибавку. Но это опять же при условии, что не будут выходить
обновления с контентом или добавлением чего-то нового, например новые модели
или улучшенные анимации, ведь это, в свою очередь, будет понижать кадровую
частоту.Кстати, подобное уже реализовали: взяв за основу карту Mirage и максимально «вычистив» её. С карты удалили все текстуры, оставив только «dev-заглушки», которые представляют из себя серые прямоугольники. Вот так выглядит эта карта:Автор: ValveАбсолютно пустая карта, с небольшим контрастом отдельных деталей. По замерам это позволило получить до 50 кадров, что вполне себе вписывается в теорию описанную выше. При этом более сложные карты, Overpass или Inferno, вполне смогут показать прибавку и в 100-150 кадров, если их также очистить.Но тут мы уже подходим к вопросу, а как же получить максимум FPS? Упрощать карты, уменьшать нагрузку на компоненты, а сделать это можно как? Правильно, играя в более старые версии игры, которые будут менее технологичными и требовательными. Да, CS2 заменила
собой CSGO, но, скорее, это было сделано для того, чтобы не получилась ситуация
как с CS: S и CS1.6, ведь после выхода первой, из-за возросших системных требований и неприязни к игре, люди решили остаться в более старой игре.Статьяс обзором CS2Статьяс тестированием CS2Видеоролик наYoutubeВидеоролик наRutubeИзображение в превью:Автор: ValveИсточник:www.counter-strike.net Подробнее ...