4A Games — о том, как удалось портировать Metro Redux на Switch

Всё нaчaлoсь с сoздaния пoртa Doom 2016 для Switch — зaдaчи нaстoлькo aмбициoзнoй, чтo oнa кaзaлoсь прoстo нeвoзмoжнoй. A кульминaциeй нa дaнный мoмeнт стaлo пoявлeниe издaния Metro Redux oт 4A Games — сaмoгo впeчaтляющeгo и, вoзмoжнo, сaмoгo aутeнтичнoгo пoртa срeди шутeрoв oт пeрвoгo лицa, выxoдившeгo дo сиx пoр нa Switch. В чём жe сeкрeт?

Кaк рaзрaбoтчикaм удaлoсь дoбиться тaкиx впeчaтляющиx рeзультaтoв oт мoбильнoгo чипa NVIDIA пятилeтнeй дaвнoсти? Oб этoм oни рaсскaзaли в бeсeдe с Eurogamer. «Снaчaлa у мeня были дeйствитeльнo бoльшиe прoблeмы с прoизвoдитeльнoстью, — признaлся глaвный тexничeский директор 4A Games Александр Шишковцов. — Знаете ли, переход с базовой версии для PS4 и Xbox One с примерно шестью с половиной или семью ядрами процессора, работающими на частоте 1,6–1,75 ГГц, на всего лишь три ядра с частотой 1 ГГц звучит пугающе. С ГП всё было в порядке, так как графику можно масштабировать вверх и вниз гораздо проще, чем, например, код симуляции в игре».

Результаты работы впечатляют, учитывая столь разительные отличия в характеристиках процессоров. 4A начала с портирования существующих игр Metro Redux с PS4 и Xbox One на Switch — с этим процессом команда 4A справилась довольно быстро, но ранняя версия игры выдавала лишь 7–15 кадров в секунду. Узким местом была производительность процессора.

Metro Redux на Switch в режиме док-станции

Metro Redux на Switch в портативном режиме

Прежде чем приступить к задаче оптимизации, требовалось вдвое снизить целевую кадровую частоту, с 60 до 30. «Во-первых, мы перенесли некоторые оптимизации из Exodus в код Redux, — продолжил Шишковцов. — Затем сосредоточились на обработке анимации на высоком уровне и на извлечении ILP (параллелизм на уровне инструкций) из Cortex-A57 на низком уровне — вплоть до ассемблирования. Только низкоуровневая оптимизация позволила нам добиться нестабильной частоты в 30 Гц без привязки к ГП. Затем была добавлена система снижения уровня детализации скелетной анимации, и проблема процессора была решена, даже с некоторым запасом, необходимым для стабильной частоты кадров».

После этого 4A перешла к оптимизации ГП: всё началось с выбора графического API. Metro Exodus работает на DX11, DX12, Vulkan и GNM в различных мультиплатформенных версиях. Switch поддерживает OpenGL и Vulkan, но для оптимальной производительности 4A выбрала API, разработанный самой NVIDIA для оптимальной производительности на Switch.

Metro Redux на Switch в режиме док-станции

Metro Redux на PS4

Metro 2033 на Xbox 360

«NVN — это наиболее низкоуровневый из возможных графических API на NX, — пояснил разработчик. — Нагрузка на процессор незначительна, в большинстве случаев это всего лишь несколько DWORD, записанных в буфер команд ГП. Он хорошо спроектирован, чист и выжимает из оборудования всё возможное. Гораздо эффективнее, чем Vulkan, например».

4A Games отметила, что NVM даёт прямой доступ к архитектуре NVIDIA Maxwell. Какие же функции Maxwell используются в Metro Redux? «Я не уверен, что могу говорить об этом, но мы, кажется, используем их все, — отметил Александр. — Большая часть наших оптимизаций ГП была направлена на сокращение пропускной способности памяти и передачи данных за пределы кристалла. Например, NVN предоставляет множество элементов управления для сжатия памяти, управления кешем, компоновки памяти и алиасинга».

Metro Redux на Switch в режиме док-станции

Metro Redux на PS4

Metro 2033 на Xbox 360

Как и многие игры этого поколения, Metro Redux использует временно́е полноэкранное сглаживание (Temporal anti-aliasing), когда информация для сглаживания краёв берётся не из более высокого разрешения, а из предыдущих кадров. Подобная технология широко используется, например, для улучшения качества камеры смартфона. Проблема в том, что метод предполагает активную выборку текстур и сложные математические вычисления, что является непростой задачей для ГП в Nintendo Switch. Александр Шишковцов потратил на разработку оптимального по производительности и качеству алгоритма целый месяц, и признался, что теперь прекрасно разбирается в наборе инструкций Maxwell.

В портативном режиме игра выводится в разрешении 720p, а при установке в док-станцию — в 1080p, но чёткость изображения и сила времены́х алгоритмов регулируются в соответствии со сложностью сцены. Особенно хорошо игра выглядит в портативном режиме, и этому есть объяснение.

Metro Redux на Switch в режиме док-станции

Metro Redux на PS4

Metro 2033 на Xbox 360

«При установке в док-станцию мы получаем вдвое более быстрый с точки зрения частоты ГП, но пропускная способность растёт не так сильно, так что волшебное удвоение производительности не наблюдается, хотя всё же система становится значительно быстрее», — пояснил разработчик.

Также в ресурсах Redux отсутствовали различные уровни геометрии для многих объектов. Поскольку команда художников 4A была занята работой над двумя крупными дополнениями к Metro Exodus, то недостающие были сгенерированы автоматически, а не вручную. На Switch используется оригинальная геометрия из PS4/X1, но в портативном режиме применяется более агрессивное переключение уровня детализации на расстоянии, хотя на маленьком экране это не так заметно.

Metro Redux на Switch в режиме док-станции

Metro Redux на PS4

Metro 2033 на Xbox 360

В Metro Redux для Switch впечатляет стабильная частота в 30 кадров/с. Это важный момент, потому что в случае Doom 2016, The Witcher 3 или Warframe частота нередко падает ниже этого заданного уровня. В общем, оптимизации были внедрены весьма эффективно. Быть может, владельцы Switch могут надеяться на появление в будущем на их платформе и Metro Exodus (впрочем, там активно используются большие открытые пространства, так что, возможно, эта задача будет уже непосильной).

Источник:

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.