Как стать автором
Обновить

Unity: бесконечный процедурно генерируемый город, получаемый при помощи алгоритма WFC (коллапс волновой функции)

Время на прочтение7 мин
Количество просмотров26K
Всего голосов 46: ↑46 и ↓0+46
Комментарии22

Комментарии 22

Интересно реализовать, но, имхо, такое не комфортно для игроков. Выглядит бессмысленным лабиринтом.
Всё, пока нет игровой атмосферы, NPC, целей и прочего, будет бессмысленным лабиринтом.
Что насчет шахматного симулятора?
Вот это и сложнее всего генерировать.
Имхо вопрос в том, что выгоднее либо сгенерировать и попытаться переделать, либо сразу делать по какой-то идее с минимум генерации.
А было бы интересно посмотреть на игру, где сгенерировалось бы абсолютно всё, вплоть до квестов! То есть, как бы, игра для всех одна, но у всех разная.
Я джва года хочу такую игру
Dwarf Fortress? Там безумные генераторы всего. Вроде даже есть режим приключений, а не только строить за дварфов полземные холлы.
Плюсую DF. Адвенчурный мод игры люто доставляет. Всё рандомно.
no man's sky? Как-то не очень вышло.
Главный вопрос — а зачем?
Если просто по приколу, то команда гейм дизайнеров намного быстрее и эфективнее создаст достаточное количество подсценариев приемлимого качества, которые создадут иллюзию выбора.
Если же делать реальную привязку к страхам, интересам, тайным желаниям человека (что-то вроде Черного зеркала 3 сезон 2 серия), то звучит очень заманчиво. Но реализуемо ли и когда?
А игрового персонажа будет генерировать тоже компьютер? Мне страшно и страшно интересно было бы на такое взглянуть
Тут есть такой недостаток для данного алгоритма, что генератор не учитывает логику ветвлений. То есть, поскольку этим нельзя управлять напрямую, лабиринт получается настолько случайным, что создаются замкнутые комнаты или пространства «без окон и дверей» из которых не выбраться. В том числе создаются достаточно большие замкнутые лабиринты, из которых также не выбраться и не попасть куда то дальше.

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

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

Это напоминает мне мои сюрвивалистские сны, когда ты шаришься по лабиринтам/пещерам/древним храмам.

SCP secret laboratory и SCP containment breach
Хорошие примеры игр где карта генерируется каждый раз. В результате игроки реально не знают куда идти, лабиринт для них новый, каждый раз.
Это же можно классический рогалик запилить на такой основе. Только монстров и предметы создать еще.
Уже при чтении статьи на ум пришёл SCP-3008 (кратко — ловушка в виде бесконечного магазина Икеа с монстрами-консультантами). При грамотной реализации можно такое забабахать…
Можно не классический.
Персонаж видит на N шагов. Всё, что дальше — отсутствует, появляется при доступе и удаляется при покидании. Получается, если тебе дадут задание принести предмет, то за предметом ты идёшь одной дорогой, а обратно — другой. :)
Стругацкие. «Град обреченный»
Зарегистрируйтесь на Хабре, чтобы оставить комментарий