Войти
Unreal EngineФорумПрограммирование

Unreal Engine 4 и процедурная генерация уровня

#0
14:14, 22 июня 2015

Итак вводная. Появилась идейка игры, делать-нет еще посмотрим, но есть желание хотя бы набросать базовый прототип. Склонился к анрилу, потому как дефолтный инструментарий куда богаче юнайтевского, да и возможности шире. Структура уровня - квадратная сетка, полы, стены. Из ближайших аналогов - карта базы в DF9. То есть каждая ячейка сетки может быть пустой, полом или стеной. Вид как в стратегии, сверху, с изменяемым углом и зумом. Первое решение в лоб - создал actor, пристегнул static mesh component и попытался в скрипте отспаунить сетку. Прикинул на пальцах, карта 100х100 должна быть вполне рядовым явлением, так и сгенерил - 100х100, в качестве меша простой параллелепипед, изображающий клетку пола. В итоге получил совершенно непригодный фпс. Примерно 18, притом, что никакого хитрого текстурирования и освещения, на не самом плохом железе. Попробовал изменить подход и к одному агенту прицепить необходимое число static meshей - результат практически тот же. Статистика показывает, что практически весь расход времени идет на GPU и draw. То есть дело не в излишней обвязке акторов и мешей. У меня создается впечатление, что dynamic batching отсутствует как класс и оно фигачит по drawcallу на каждый меш. Попробовал instanced mesh component, который по идее и предназначен для рендеринга множества копий одного меша. Как выяснилось с ним не работает навигация, navmesh не генерится. Причем даже в редакторе. Тоже не годится. Сейчас появился procedural mesh. По идее то, что надо для изменяемой геометрии, но. Во-первых он пока в статусе experimental, т.е. неизвестно какие есть баги, да и поменяться реализация может еще не раз. Во-вторых текущая реализация тоже весьма... странная. Банально отнаследовать его не прокатило, использовать по ссылке тоже. Компилятор тупо не видит нужные заголовки и вообще ведет себя странно. Что уже тревожный сигнал. Пока что решил попробовать схему когда собственный компонент (унаследованный от базового actor component) строит геометрию в понятном porcmeshу виде и через visual script передает его. Но, если честно, доверие к procmeshу несколько подорвано. Тем более, что отрисовывать геометрию "вручную", повертексно слишком неудобно и придется лезть в структуру стандартных static meshей дабы добыть геометрию и писать всякие свистелки для компоновки. А я таки пока хочу быстрого прототипирования, а не глубокой разработки. Отсюда вопрос - может кто-то знает другие, более простые пути реализации, которые я пропустил?


Unreal EngineФорумПрограммирование

Тема в архиве.