Компания NCSOFT раскрыла подробности о Project G — амбициозной стратегической игре в реальном времени, разрабатываемой на Unreal Engine 5. Её главная техническая задача — отрисовка тысяч юнитов на экране с сохранением высокой детализации каждого, что переопределяет границы жанра RTS. Для достижения этой цели студия внедрила гибридный конвейер, сочетающий инструменты цифровой скульптуры с системами массовых эффектов.
Технический конвейер: От ZBrush до Houdini для цифровой войны 🛠️
Производственный процесс начинается в ZBrush, где художники лепят высокодетализированные модели для каждого юнита, обеспечивая точность до мельчайших деталей даже для самых маленьких солдат. Затем эти активы передаются в Maya для ретопологии и создания риггинга, оптимизируя геометрию для работы в реальном времени. Настоящий секрет кроется в Houdini, который генерирует массовые системы VFX (взрывы, дым и разрушения), интегрируемые непосредственно в движок. Для управления графической нагрузкой команда внедрила систему динамических LOD и GPU instancing, где каждый юнит использует общие уменьшенные буферы вершин. Кроме того, отсечение по пирамиде видимости и иерархическая окклюзия позволяют UE5 мгновенно отбрасывать объекты за пределами поля зрения игрока, поддерживая стабильную частоту кадров даже при 10 000 активных сущностей.
Дилемма детализации в массовом масштабе ⚔️
Парадокс Project G заключается в том, что каждый солдат должен выглядеть уникально при приближении камеры, но быть неразличимым на расстоянии. Решение заключается в использовании текстурных атласов и параметризованных материалов, которые позволяют варьировать цвет и износ без увеличения количества draw calls. Хотя движок справляется с нагрузкой с помощью Nanite и Lumen, настоящая проблема не техническая, а дизайнерская: убедить игрока, что каждый юнит имеет индивидуальную ценность в цифровом хаосе. Project G доказывает, что в следующем поколении стратегий масштаб не противоречит детализации.
Как разработчик, какие конкретные технические проблемы возникают при реализации тысяч одновременных юнитов в Unreal Engine 5 и какие решения приняла NCSOFT для поддержания стабильной производительности в Project G?
(P.S.: шейдеры — как майонез: если свернутся, начинай всё заново)