Создаём оптимизированные модели внутри Unreal Engine одним плагином

Вам нравится, когда игры мало весят, а крутая графика не отнимает слишком много времени у процессора? Мне тоже.

Процедурная генерация в играх может применяться не только для создания однотипных данжей и квестов. Пример .kkrieger показывает, что сгенерировать можно буквально весь визуал полноценной 3D(!) игры.

<i>Не так уж плохо для 100 килобайт, да?</i>
Не так уж плохо для 100 килобайт, да?

Конечно, при создании современной фотореалистичной графики такой подход создаёт очевидные трудности. И не только для разработчиков, но и для оборудования. Компиляция шейдеров? А как насчёт создания всей игры во время запуска?

Благо, в Unreal Engine давно существует более компромиссный подход. Имя ему Instanced Static Mesh. С ISM можно хранить на диске условный ассет кирпича, смоделированный традиционными способами, из которого в теории можно построить бесконечное количество зданий. Вместе с этим мы получаем оптимизацию вызовов отрисовки, ибо после создания дубликатов, процессор может говорить видеокарте о единственном экземпляре, а со всем остальным супом она там сама разберётся.

Естественно, все инструменты UE даст, а все удобства для их использования нужно сделать самому.

<i>И узнать страшное магическое слово в процессе</i>
И узнать страшное магическое слово в процессе

Идея плагина была в том, чтобы создать нечто похожее на модификатор Array в Blender. Только по умолчанию блендер никаких оптимизированных моделей не делает, и паттерн генерации дубликатов просто так из него не вытащишь. Здесь же создаются и сохраняются именно шаблоны. Все координаты генерируются на лету.

Также, для придания "естественности" и объёма можно настроить рандомизацию прямо во время моделирования.

<i>В отличии от карт нормалей в "честной" модели ощущение объёмности не теряется под любым углом</i>
В отличии от карт нормалей в "честной" модели ощущение объёмности не теряется под любым углом

Собственно, вот гайд, как с этой штукой работать:

Ссылка будет в описании под видео

Пы.Сы. Конечно, не стоит забывать, что это не панацея. И сгенерированный таким образом некстген неизбежно будет что-то кушать, а конкретно ресурсы видеокарты. И если игрок не сможет слишком близко разглядывать ваши стены, деревья, трубы или космические врата, то хуже ему от фейкового объёма, сделанного картами нормалей, не будет.

<i>Плоские стены с нормал мапами выглядят вполне сносно, если смотреть на них под правильным углом</i>
Плоские стены с нормал мапами выглядят вполне сносно, если смотреть на них под правильным углом
3