Бесплатный туториал по детализации кирпичных/каменных объектов
Привет, разрабы!
Хочу поделиться с вами моей техникой по созданию более детализированных архитектурных объектов. Надеюсь она и вам будет полезна!
Делитесь с друзьями 3дэшниками
--------
Профессиональный художник по окружению. Работал над PUBG, Walking Dead, Atomic Heart.
Веду канал в Телеграм о разработке игр, советами и техниками по моделированию окружения, подписывайтесь @Cod3Art
Продолжение поста «UNREAL ENGINE 5: Изучаем Редактор и Создаем Заброшенную Шахту из Megascans Ассетов Поэтапно!»
Также разместил на Бусти файлы проекта Заброшенной Шахты на Unreal Engine 5.1.1
Подписка при этом не нужна, но если захотите меня поддержать, буду очень благодарен 😘
Файлы можно скачать тут:
https://boosty.to/688studio/posts/9a708784-d8e1-4ebb-871e-fc...
Удачи в изучении и творчестве!
UNREAL ENGINE 5: Изучаем Редактор и Создаем Заброшенную Шахту из Megascans Ассетов Поэтапно!
Добрый день, дорогие друзья!
Сегодня хочу вам представить большой базовый ролик по Unreal Engine 5, который широко проходится по и знакомит с основными механиками движка и инструментами для создания локаций.
Мы вместе с нуля рассмотрим создание Заброшенной Шахты: установим и изучим редактор, создадим новый уровень, научимся работать с Megascans Bridge и палитрой ассетов, поработаем с Foliage Tool (камнями и растительностью), настроим коллизии для всей сцены, побегаем внутри проекта персонажем с фонариком и устроим всему уровню фотосессию!
Для всех интересующихся и вновь прибывших: канал возвращается в рабочий ритм. Наконец есть время и силы заниматься новым контентом для сообщества. Как видео-контентом так и инструментарием.)
Деформируем мешку в UE5
Наконец в unreal engine 5 появилась возможность делать деформации меша в риалтайме. Всякие красивости типа squash , twist и прочее теперь можно анимировать в UE5. Показываю на примере как это работает как для construction script так и для runtime и sequncer. Так же мешку можно отрендерить в видео.
Ue5 short tutorials: Максимальное качество рендера секвенции в UE 5.1. Maximum render quality
Настройка MRQ с примерами и объяснением консольных команд, а так же с примерами использования. Подключаем DLSS и game mode override. Актуально для unreal engine 5.1
r.BasePassOutputsVelocity 1
r.ScreenPercentage 150
r.Tonemapper.Sharpen 1,3
r.SSGI.Quality 4
r.Shadow.Denoiser 1
r.TemporalAACurrentFrameWeight 0,5
r.MotionBlurSeparable 1,0
Ue5 short tutorials: Максимальное качество рендера секвенции в UE 5.1. Maximum render quality
Настройка MRQ с примерами и объяснением консольных команд, а так же с примерами использования. Актуально для unreal engine 5.1 r.BasePassOutputsVelocity 1 r.ScreenPercentage 150 r.Tonemapper.Sharpen 1,3 r.SSGI.Quality 4 r.Shadow.Denoiser 1 r.TemporalAACurrentFrameWeight 0,5 r.MotionBlurSeparable 1,0
Процедурная генерация простого подземелья в 150 строк (C#)
Всем привет. Решил поделиться кодом для создания подземелья, который я использую в своём рогалике. Код опубликовал год назад, но добавить пояснения и комментарии для начинающих руки дошли только сейчас.
Примеры генерации, как настроить канвас и прикрепить скрипт (первая минута): https://www.youtube.com/watch?v=_Vz9FDigioU
В игре есть тропический остров, на котором расположены руины, после обнаружения которых игрок спускается в подземелье состоящее из нескольких этажей (есть опция начать сразу с подземелья). Собственно с помощью кода создаётся основа для каждого этажа (но можно использовать и для создания интерьеров в наземных прямоугольных строениях). Работа алгоритма построения проста - сначала строится горизонтальная или вертикальная стена и в ней отмечается дверь (или несколько), таким образом пространство делится на две части, в каждом из которых происходит последующее разделение на две части и т.д. За основу взят метод построения правильных лабиринтов “Recursive Division”, посмотреть интерактивные примеры (в том числе и для десятка других алгоритмов) и код для ruby можно здесь: http://www.jamisbuck.org/mazes/
Чтобы в подземелье были «комнаты» и возможность нарезать круги добавлено ограничение на минимальный размер комнаты (int roomMinHorizontal, roomMinVertical) и шанс построения дополнительной двери (int extraDoorChance, minLengthForExtraDoor - минимальная длинна стены для дополнительной двери). В коде всего три метода, давайте посмотрим что они выполняют.
CreateDungeon() - главный метод, вызывается по нажатию пробела, строит подземелье и отрисовывает его на спрайте. В начале метода происходит проверка размера карты - по горизонтали и вертикали должны быть только нечётные числа. Затем идёт инициализация двумерного массива int[,] maze в котором и будет храниться карта. Далее - вызов метода разделения начальной пустой области Division(). Отрисовка полученной карты идёт с 39 по 56 строку - создается текстура и спрайт, текстуре присваивается цветовая информация (стены, пол, двери). Этот фрагмент можно использовать для отображения в игре мини-карты.
Division(int startX, int endX, int startY, int endY) - определение как надо разделить переданную область от стартовых координат (int startX, int startY) до конечных (int endX, int endY) на две части. В методе производится проверка габаритов области и если она слишком мала то выходим из метода через return - в этом случае дальнейшие действия в этом прямоугольнике не производятся. Если нет - создаём новую область через CreateRoom().
CreateRoom(bool isHorizontal, int startX, int endX, int startY, int endY) - непосредственно построение стены и дверей в определенной «комнате». isHorizontal - область по горизонтали шире чем по вертикали, т.е. будет ли построена вертикальная или горизонтальная стена. Сделано для того, чтобы комнаты не были слишком растянуты в одном из направлений. Это определяется в предыдущем методе через if (endX - startX > endY - startY), для квадратных комнат используется рандомное расположение стены. После этого проводится стена в массиве maze[verticalWall, i] = 1 (0 - пол, 1 - стена, 2 - дверь), через int doorNumbers определяем количество дверей в ней - как минимум должна быть одна дверь (но вы можете усложнить не добавляя на этом этапе дверей и создав телепорты для несвязанных частей подземелья). Затем вызывается Division() для каждой из двух областей разделённых стеной и происходит дальнейшее деление, пока не останется неразмеченных областей, после чего продолжится выполнение метода CreateDungeon() и будет визуально отрисована карта получившегося подземелья.
Итак, какие есть плюсы и минусы данного алгоритма. Построение комнат элементарно, при этом они все связаны и при дополнительных дверях появляется нелинейность прохождения. Также игровое пространство используется по максимуму, а с получившимися прямоугольниками в дальнейшем легко работать, расставляя в них мобов и дополнительный интерьер. В то же время, простота алгоритма определяет и его недостатки - некоторая однообразность и предсказуемость - в подземелье будет как минимум одна стена идущая от края до края. Более интересных и «пещеристых» подземелий можно добиться с помощью модификации этого алгоритма под названием "Blobby" Recursive Subdivision Algorithm (в ссылке выше примеры идут сразу после Recursive Devision). Однако, для своего проекта решил остановиться на первом варианте, поскольку мне удобнее работать с прямоугольниками, а вот внутри уже них я применял другие алгоритмы для создания самых разнообразных помещений, пещерок и коридоров. Вот примеры того как таким образом можно усложнить подземелье (игрок на карте отмечен зелёным кружочком):
Здесь коридоры на самом деле тоже находятся внутри прямоугольных комнат - они просто соединяют клетки дверей граничащих комнат, а остальное пространство заливается стенами.
Пару слов о рогалике Tzakol in Exile. Разработку веду с 2021 года, планировал опубликовать в прошлом году, но притормозил и отодвинул дату до лучших времён. Сейчас периодически добавляю новый контент и то, что раньше было демоверсией постепенно повышаю до уровня lite - бесплатной версии. В ней есть два режима - с мета-прогрессией и в стиле традиционных рогаликов (доступны за исключением нескольких последний этажей и сражения с финальным боссом). Планирую добавить ещё блиц-режим, который будет представлен в lite-версии полностью. Скачать демо можно в стиме: https://store.steampowered.com/app/1764840/Tzakol_in_Exile/
Если есть вопросы по коду или по игре - пишите в комментариях, постараюсь ответить.