Pull to refresh

Comments 14

Спасибо, было интересно.

Замечания - меши и треугольники кмк это вне рамок статьи.

Было бы интересно узнать как встраивать в такие лабиринты пустоты большей площади и соответственно зоны заполненные стенами. Сразу мне лично придумался вариант - на карте "рисуем" зоны пустот и стен, а при генерации просто не заходим в эти зоны.

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

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

кстати, технодемка как-то привязана к юнити? не вижу исполняемых файлов.

Да, нужно будет выкачивать репозиторий и открывать в unity. Чуть позже попробую собрать билд.

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

рандомом можно накидать только пустоты, а если накидаете стены, то нарушите проходимость лабиринта.

ну и у меня не было в вопросе сундуков, боссов и A*, поэтому и не было интереса к геймдизайну.

Здесь также не описаны методы подсчёта uv-координат сетки, на такие лабиринты не получится наложить текстуру.

Хм, а разве в Unity нет какого-нибудь группового UVW-наложения (как в том же 3ds Max, например, через модификатор)?

Действительно интересно. Всё хочу "пощупать" Unity, но пока всё никак руки не доходят.

Я был не совсем точен. В цитате выше я имел ввиду, что, используя стандартный шейдер, не получится отобразить текстур, поскольку процедурная сетка не имеет UV-координат. Но в таком случае можно рендерить текстуру через трипланарный шейдер.

используя стандартный шейдер, не получится отобразить текстур, поскольку процедурная сетка не имеет UV-координат. Но в таком случае можно рендерить текстуру через трипланарный шейдер.

Да, спасибо, теперь понятнее.

А то я уж было испугался, что в принципе никак невозможно текстурить процедурные объекты. )

При создании геометрии можно кроме вершин и трисов писать uv/uv2/uv3 для текстур и нормали в вершинах (хотя нормали можно и встроенным методом пересчитать).

Увидел этот пост в ленте и я буквально БЛИН Я ЖЕ ДЕЛАЛ ЭТО В МАЙНКРАФТЕ 10 лет назад. У тебя какой-то слишком сложный код, не дочитал до конца ибо спринт к дедлайну закончил только вот, но поделюсь своей методикой.

Нашел где-то на англоязычных ресурсах статью и повторил следующее - берём залитый целиком массив и запускаем "крота" - он ходит в случайные не залитые стороны на два. Если все 4 стороны залиты, то телепортируемся в другое четное место. Если все позиции четные залиты, значит лабиринт готов. Как-то так. Смог это в плагине воплотить через вырезание блоков, а за основу брал бетонные блоки 101*101, всегда работало, был вход и выход.

Понастольгировал.

Это точно статья про генерацию лабиринта, а не про генерацию мешей рантайм без поддержки текстурирования и освещения?

ИМХО, было бы лучше 90% статьи про геометрию заменить на простенькую расстановку префабов стен/пола

А в идеале ещё и сделать в генерации дополнительные поля, описывающие тип клетки, чтобы было понятнее, что тут можно добавлять вариативность визуала/будущих механик и как расширять генератор объектов.

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

ИМХО, было бы лучше 90% статьи про геометрию заменить на простенькую расстановку префабов стен/пола

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

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

Sign up to leave a comment.

Articles