11442

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

3
Поделиться
Поделиться
Полноценно оптимизировать генерацию шейдеров разработчики так и не смогли.
На PlayStation удобнее: как делали порт Detroit Become Human
В самом конце 2019 года студия Quantic Dream выпустила на PC Detroit Become Human, бывший эксклюзив для PlayStation 4. Спустя 9 месяцев после релиза разработчики из Quantic Dream поговорили о том, как создавался порт для PC.

Портирование Detroit Become Human далось непросто: почти все технологии, использованные в игре, Quantic Dream разрабатывала самостоятельно. Адаптировать их под новую платформу тоже пришлось самим. Мы выбрали самые любопытные моменты из рассказа разработчиков.

Про начало разработки

  • Портирование заняло больше года: перенос игры начали в июле 2018 года, через два месяца после выхода на консоли.
  • Движок с самого начала создавался под PlayStation 4, разработчики никогда не думали, что когда-нибудь его придется перенести на другую платформу.
  • Для PC-версии игры потребовалось создать новый рендер. Это была самая непростая часть работы.

Про проблемы с рендером

  • В инструментах студии использовался OpenGL — API, который может работать на PC. Адаптировать его под PC и выпустить игру в таком виде было нельзя: были сложности с производительностью и поддержкой GPU разных производителей.
  • Использовать DirectX 11 тоже не вариант: в Detroit используется масса ресурсов без биндинга, на DirectX 11 это привело бы к масштабной переделке шейдеров и падению производительности.
  • Разработчикам пришлось выбирать между DirectX 12 и Vulkan. Они похожие, но Vulkan на тот момент поддерживал Windows 7 и 8, а студия хотела, чтобы порт был доступен максимальному числу игроков.
  • В конце концов выбрали Vulkan, но за время разработки порта Windows 10, поддерживающая DirectX 12, очень сильно распространилась: можно было остановиться и на этом API.

Про разницу между PC и PlayStation 4

  • Процессор PlayStation 4 медленнее современных PC, но у консоли есть существенное преимущество: минимальные накладные расходы на работу с API и очень быстрый доступ к железу.
  • При работе с Vulkan разработчики придерживались подхода, напоминающего PlayStation 4: старались контролировать как можно больше и отдавать на откуп драйверу минимум работы.
  • По оценке Quantic Dream, графический API консоли гораздо эффективнее, чем любой из API, существующих на PC. В частности, на консоли можно отправлять очень много вызовов отрисовки за один кадр; на низкопроизводительных PC это могло привести к проблемам.

Про шейдеры

  • На PlayStation 4 они компилируются в автономном режиме и грузятся мгновенно. На PC драйвер компилирует шейдеры во время загрузки, приходится поддерживать много разных GPU и процесс занимает кучу времени.
  • В случае с Detroit ситуация усложняется тем, что в игре очень много шейдеров: художники могли создавать огромное количество шейдеров, тонко настраивая материалы.
  • Во время тестов с OpenGL генерирование кэша шейдеров занимало всю ночь, и на старте игра все равно подвисала.
  • С Vulkan все было не так страшно. Сперва подготовка шейдеров тоже занимала очень много времени, но затем разработчики оптимизировали промежуточные файлы шейдеров и сделали так, чтобы их генерацией занимались все процессорные ядра.
  • Это сильно ускорило процесс, но был нюанс: привязка к числу ядер. На Threadripper процесс завершался за пару минут, на слабом PC он мог занимать больше 20 минут.
  • Единственный способ, позволяющий полностью устранить проблему, это уменьшение числа шейдеров. В случае с Detroit это невозможно — потребовалась бы переделка всех материалов, — но в будущем разработчики учтут этот момент.

Про оптимизацию отрисовки

  • В одном кадре Detroit Become Human может использоваться больше 4 тысяч разных текстур — это очень много.
  • Для оптимизации процесса разработчики используют несколько массивов с дескрипторами текстур: для 2D-текстур, для 3D-текстур, для буфера материалов, для кубических текстур.
  • Чтобы быстро определять видимость ассета в кадре, разработчики не считают пересечения, а сравнивают списки дескрипторов, сгенерированные для нынешнего и предыдущих кадров.
  • Одна только эта оптимизация позволила на один или два порядка увеличить скорость обновления списков дескрипторов.
  • Благодаря индексации дескрипторов игра может отрисовывать множество примитивов за один вызов — при условии, что используется один и тот же набор дескрипторов, шейдерный пайплайн и вертексный буфер.
  • Благодаря этому удалось на 60% снизить число вызовов отрисовки и увеличить производительность на слабых PC.
Теги: Detroit: Стать человеком, Игры, История, Технологии
Evernews
7874 подписчика
Manor Lords: как одиночка делает масштабную стратегию про Средневековье