Лучшее  🚀
02.10.2020 в 16:22 Evernews

Почему сложно портировать игры с PlayStation 4 на PC: рассказывает команда Detroit Become Human

На консоли игре хватало одного потока рендера, на PC пришлось делать многопоточную отрисовку.

Кстати, на сайте читать удобнее

Студия Quantic Dream, выпустившая Detroit Become Human на PlayStation 4, а спустя полтора года портировавшая игру на PC, продолжает рассказывать об опыте работы с незнакомой платформой. Как мы уже знаем, основные проблемы были с графическим движком.

На PlayStation удобнее: как делали порт Detroit Become Human

С точки зрения программистов Quantic Dream, разрабатывать под PlayStation 4 удобнее, чем под PC. Во-первых, существует только две модели консоли, не нужно адаптироваться под многочисленные конфигурации; во-вторых, операционная система PlayStation 4 работает очень быстро и минимизирует накладные расходы на обращение к железу.

Например, на PlayStation 4 у Detroit Become Human был только один поток рендеринга. Дело в том, что вызовы отрисовки выполняются на консоли так быстро, что разработчикам просто не нужно распараллеливать эти задачи.

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

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

Для этого в Quantic Dream воспользовались уже существующей системой задач, позволяющей разбрасывать вычисления по процессорным ядрам. Разработчикам повезло: в движке была сделана группировка вызовов отрисовки по типам — например, в отдельные группы попадали тени, отрисовка прозрачных объектов, отрисовка шейдеров кожи.

При многопоточной обработке графики может возникнуть другая проблема: скачки производительности, когда задача блокирует поток. Проблема, признают разработчики, была довольно серьезной. Ее не удалось решить полностью, но получилось минимизировать — за счет разрешения взаимодействовать с потоком до завершения вычисления задачи.

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

Из-за недостатка времени на разработку порта некоторые вычисления на PC происходят не так эффективно, как на PlayStation 4. Например, программисты не смогли реализовать такую же продвинутую поддержку асинхронных вычислений, с помощью которых в игре обсчитывалось объемное освещение.

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

Зато Quantic Dream удалось перенести на PC другую оптимизацию с PlayStation 4: алиазинг памяти GPU, дающий возможность сократить издержки на хранение текстур и буферов данных. Только эта оптимизация позволила сэкономить до 164 мегабайт видеопамяти — порядка 10% от общего объема — в разрешении 1080p.

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