Risk of Rain 2 — это не просто успех игрового дизайна, а целое исследование оптимизации ассетов для Unity. Его стилизованная 3D-эстетика, основанная на четких силуэтах и неоновых цветовых палитрах, возникла не случайно. За каждым массивным врагом и каждым взрывом частиц стоит тщательно продуманный конвейер, сочетающий моделирование в Maya, текстурирование в Substance Painter и жесткое управление масштабом в игровом движке.
От Maya к Unity: моделирование, силуэты и трюк с cel-shading 🎨
Процесс начинается в Maya, где выжившие и инопланетяне моделируются с чистой топологией и низким полигонажем. Ключ не в микроскопических деталях, а в силуэте: каждый персонаж должен быть узнаваем, даже когда сотни врагов заполняют экран. После экспорта базовой модели работа переходит в Substance Painter. Здесь, вместо реалистичных текстур, применяется стиль cel-shading с помощью генераторов плоских теней и чернильных краев. Технический трюк заключается в картах ID цвета и каналах эмиссии: неоновые тона назначаются материалам, которые в Unity будут светиться без необходимости в сложном освещении, экономя ресурсы рендеринга. Результат — ассет, сохраняющий объем, не теряя эстетики мультфильма.
Масштаб и частицы: вызов оптимизации для инди ⚙️
Самая большая техническая проблема Risk of Rain 2 — это масштаб. С десятками врагов и одновременными эффектами частиц плохое управление LOD (Level of Detail) разрушает производительность. Решением стало создание модульных систем частиц в Unity, которые повторно используют текстуры низкого разрешения в сочетании с системой GPU Instancing для дублирования врагов без дублирования памяти. Чтобы воспроизвести эту эстетику в инди-проектах, совет ясен: ставьте силуэты выше деталей, используйте Substance Painter для создания плоских текстур со световыми краями и никогда не недооценивайте силу хорошей неоновой палитры для скрытия низкой полигональной плотности.
Как команде Risk of Rain 2 удалось сбалансировать высокую производительность, необходимую для хаотичного мультиплеера, с использованием процедурных текстур в Substance и затенением cel-shading в Unity, не жертвуя неоновой визуальной идентичностью игры?
(PS: 90% времени разработки — это полировка, остальные 90% — исправление багов)