Записки Унрил Инжона. Часть 2

Продолжаю серию погружения в увлекательные миры Unreal Engine 5. В данной серии получился полноценный лонг. Расскажу немного про ландшафт, генерацию моделек с помощью ИИ, создание города, анимацию частиц и теми проблемами, на которые я напоролся. Напоминаю, что в конце серии блогов должна получиться игра!

Записки Унрил Инжона. Часть 2

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

Концепцию я выбрал не самую простую, если признаться честно) Такой удаленный советский город где-то в заснеженных горах в зимнем сеттинге. Наверно зимний сеттинг является одним из самых сложных, но я не жалею, что выбрал именно его. О проблемах и нюансах сеттинга расскажу далее.

Записки Унрил Инжона. Часть 2

Ландшафт

Все начинается с ландшафта. И конечно же я попробовал лепить все самостоятельно. Но можно наверняка сказать, что это не лучшая идея, особенно если дело касается гор. Их реализм достигается именно за счет деталей вроде фактуры от осадков, которые можно получить из качественных высотных карт. В анриле как и во многих других редакторах есть возможность импорта. Я для сохранения ресурсов выбрал не самую тяжеловесную карту (4к). Хотя как дальше я понял, для гиперреализма все же нужно было брать хотя-бы 8к или даже 16к.

Но при этом нельзя сказать, что я скипнул процесс скульптинга ландшафта, нет, одну из гор и многие другие детали я делал самостоятельно. На самом деле, как выяснилось позже, можно на неплохом уровне сделать примерно тоже самое (если дело идёт не про сверх разрешение) инструментами скульптинга.

Также много времени уделил материалам ландшафта. Насоздавал кучу слоёв-функций, которые отвечают за разные слои поверхности. Например, начиная с самого верха и заканчивая самым низом. Базовый слой это снег, такой заветренный и немного грубый. Вообще для реализма даже приходилось смешивать разные текстуры, чтобы рандомизировать их ещё сильнее. Довольно интересный процесс, сделать так, чтобы текстура с далека не выглядела паттеринизированно, а вблизи реалистично.

Базовый слой ландшафта
Базовый слой ландшафта
Примерно так выглядит функция материала базового слоя
Примерно так выглядит функция материала базового слоя

Далее можно создавать слои условно до бесконечности, допустим, утёс горы, подножье горы, растоптанный снег, подтаявший снег и т.д.

Модели

В прошлой части я упоминал уже о том, что с моделями могут возникнуть большие проблемы. Особенно если нестандартный сеттинг. Я начал задаваться вопросом генерации моделей с помощью ИИ или даже самостоятельным сканом, уж очень было интересно)

Записки Унрил Инжона. Часть 2

Данную книгу я самостоятельно отсканил со всех сторон, не помню уже приложение, пробовал аж 4, только 1 из них дало вот такой достойный результат. Но в целом это не особо применимо на практике, здание не получится отсканить, ведь с земли получится очень плохо. Только небольшие предметы и то нужно выставлять хорошее освещение, иначе получится высер.

Далее пробовал генерировать модели на основе картинок и вышло мягко говоря так себе, но забавно)

Записки Унрил Инжона. Часть 2

Из всех инструментов был только один годный. Luma AI. У них генерация из текста в модель. Иногда даже удивляешься насколько качественно получаются. Хотя текстуры слабенькие, такие модельки идеально подойдут для игры с видом сверху. Можно всю игру сделать из генераций по сути. Ну а зная неплохо блендер, возможно, это будет сильно упрощать работу. Получаешь базовую концепцию, доделываешь и полируешь в конфетку. Все другие инструменты делали идентичные генерации, которые были похоже друг на друга, а этот нет, исключение. В теории можно даже здание сгенерить на ооочень дальний фон)

А так смотрите, сколько всего сгенерил. Некоторым существам кости добавить, анимации и все, полноценный игровой персонаж.

Записки Унрил Инжона. Часть 2

Создание города

Для базы обучения начал проектировать небольшой и компактный городок, в который при желании можно поместить что угодно. На фото ниже, кстати, можно заметить как я немного постарался с горными текстурами. Существует множество инструментов и готовых решений для автогенерации ландшафта. Но я решил, что я должен некоторые вещи проходить с низов и раскрасил горы самостоятельно по референсам. Раскрасил частично, так как изначально расширения вдаль не планируется. Сам процесс использования инструментов кисти оказался занимательным, хоть и не быстрым. С помощью инструментов smooth, flatten, noise можно рандомизировать даже самые паттернизированные ландшафты, мощный инструмент.

Записки Унрил Инжона. Часть 2

В итоге я решил сделать сеттинг еще сложнее, чтобы на дворе стояла ночь) На самом деле я просто хотел, чтобы было больше объемного света, а ночью он себя как раз может проявить на полную

Записки Унрил Инжона. Часть 2

Для вида добавил эмиссивные материалы окон) Потом планирую внедрить текстуры проекции, как оказалось это довольно просто. Ну помните на демке матрицы, интерьеры в каждом окне, которые на самом деле просто умные текстуры, а самое главное эффективные. Там так много объёмного света и тумана, что даже на дтф картинка распалась на атомы)

А куда же зимой без снега? Поэтому пришлось немного погрузиться в Ниагару, это система частиц, очень мощная и производительная. Фпс вообще не дёргается хоть 100к частиц рендери одновременно. Эффективно. А в роли частиц можно рендерить вообще любые мэши. Крутить, вертеть, пердеть как угодно в любом направлении, все рандомизировать. Знатно поигрался, было весело.

Записки Унрил Инжона. Часть 2

Смотря на эти текстуры есть идея оставить эти дома и прокачать их, сделать вход в них, этажи и даже квартиру, не везде, но в одном здании можно попробовать, по сути в коробке пробурить жизнь, звучит интересно.

Далее я решился сделать разметку города. А то устал постоянно все менять-воротить. Пора уже заложить фундамент и подбирать ассеты под конкретные потребности, а не тыкать пальцем в небо.

Записки Унрил Инжона. Часть 2

Немного наполнил город новыми зданиями и другими ассетами. Для планирования разложил такие листы с текстурами, которые сгруппировал в одну папочку, чтобы можно было просто их скрывать когда надо. То есть условно я делал так. Вот тут я планирую парковку машин, а вот тут гаражи, а вот тут подвал дома, а вот там то ледовый каток, а между домами - детская площадка. На самом деле город сразу наполнился и стало гораздо проще двигаться вперед.

Вообще группировать в папочки это теперь процесс по умолчанию. Так как количество ассетов растёт, то придерживаться стандартов именования и поддержания структуры приложения становится обязательным.

Для масштаба везде использую человечка, помогает, очень. Причем для всего, для зданий, текстур, любых ассетов.

Записки Унрил Инжона. Часть 2

Заключение

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

Записки Унрил Инжона. Часть 2

Что немаловажно, я начал испытывать небольшие технические трудности в процессе обучения. Для здоровой игровой разработки на Unreal Engine вам потребуется на менее 1тб свободного места на диске, стабильный интернет в идеале не менее 250мбит, все ассеты жирные, в гигибайтах. Потребуется ПК с хорошей видеокартой не менее 4x-ой серии нвидиа, хороший процессор, который не ущемляет производительность видеокарты и не менее 48 гигабайт оперативной памяти.

Моей мощности ноутбука, хоть и неплохого часто не хватает, напрашивается более мощный десктоп.

Также вам потребуется стальные нервы и упорство) Ведь 5 версия движка весьма и весьма нестабильна. Суммарно я потратил около 2-3 часов на разные выяснения особенностей рендеринга. Появлялись артефакты, не очевидное поведение, криво работающий Lumen, который в отличии от path-tracing'a намного менее стабильный, хотя и намного более производительный.

Ну и примерно такую ошибку я получаю в среднем до 10 раз в час. Да, крашит жестко и очень часто. Пока не привык, в процессе)

Записки Унрил Инжона. Часть 2
1010
15 комментариев

А как там со сгенеренными модельками, что по сетке, сильно всратая?

А что конкретно имеется ввиду?

Выглядит круто и атмсоферно. где брал ассеты хрущей? Я тоже хочу сделать коротенькую бродилку с такой атмосферой

телефон с фотограмметрией попробуй)
или моделирование по принципу ленивого моделирования по Яну Хуберта
https://www.youtube.com/watch?v=v_ikG-u_6r0

Для здоровой игровой разработки на Unreal Engine вам потребуется на менее 1тб свободного места на дискеЧёто дохуя

Есть такое, я в начале пути, у меня разные ассеты, паки и ТД уже занимают 500гб, это именно для процесса разработки и обучения, понятно, что игра в конце столько не будет весить

В процессе обучения поймал себя на четкой и понятной мысли в том, что сперва необходимо создать базовое, но неплохое окружение, сеттинг.а разве не игровую механику надо сначала сделать
что в этом сеттинге делать то