Каковы хорошие ресурсы относительно генерации процедурного контента в контексте генерации подземелий?
Самой близкой статьей, которую я смог найти, был Алгоритм создания 2d лабиринта , который не совсем то, что я ищу. Такие функции, как номера и соединенные коридоры, идеальны.
Спасибо!
procedural-generation
Габриэль Изенберг
источник
источник
Ответы:
Это было более или менее ответили раньше. Ваше первое место остановки должно быть http://pcg.wikidot.com/
Так как меня обвинили в том, что это вообще не является полезным ответом (правда? Кто-то просит ресурс, и я публикую ссылку на вики, посвященную этой теме? ), эта страница в вики посвящена генераторам Dungeon и ссылкам на различные статьи по этой теме.
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation
Я по-прежнему рекомендую просмотреть всю вики, хотя генерация процедурного контента - это просто очень творческий подход, и любые идеи верны. Это проблема латерального мышления - и притом забавная.
источник
Мне удалось получить достаточно хорошо выглядящие уровни, используя следующий алгоритм, основанный на квадратной сетке:
Сначала создайте набор комнат. Случайные параметры будут определять размеры комнат и их количество. Адаптивный алгоритм может даже определить некоторые зоны, которые сделаны из больших коридоров, а другие - из очень маленьких комнат.
Затем вам нужно убедиться, что все комнаты связаны друг с другом. Для этого запустите поисковик, чтобы вырыть коридоры (скажем, A *) между каждой парой комнат, придавая произвольно выбранный вес существующим пространствам (комнатам или другим коридорам) по сравнению с пространством, еще не вырезанным (стены). Если разница в весе невелика, то рытье новых коридоров будет достаточно дешевым, и алгоритм создаст много коридоров между комнатами с множеством возможностей перехода из одного места в другое. Если разница в весе велика, тогда алгоритм предпочтет пройти через существующие комнаты и коридоры, делая пути более извилистыми и с меньшим количеством вариантов для достижения определенного места назначения.
Это позволяет из небольшого числа параметров создавать очень разные по виду уровни, из редких массивных залов с небольшими коридорами, связывающими их, в лабиринт из тесно связанных друг с другом камер.
Вот пример сгенерированного уровня.
Основываясь на этом алгоритме, вы можете добавить отделку стен, которая зависит от зоны, сделать коридоры меньше или больше, сделать специальные комнаты и так далее.
источник
Если вам нравится читать код и разбирать C #, могу ли я предложить генератор подземелий, который использует мой roguelike Amaranth? Это здесь . Он обрабатывает смежные комнаты, расширяемые функции и некоторые другие приятные вещи.
Если вы потянете вниз и соберете весь проект, есть отдельный инструмент, который будет генерировать и рисовать подземелья, чтобы вы могли настроить его и посмотреть, как он работает.
источник
Все это отличные идеи. Я взял немного от RogueBasin и pcg.wikidot.com и написал свою собственную реализацию на C #.
Мне очень понравился «естественный» вид пещерных уровней, которые можно получить с помощью метода клеточных автоматов. Чтобы понять, что я подразумеваю под методом клеточных автоматов, представьте игру жизни Конвея. Мой код использует то, что называется методом 4-5, что означает, что плитка станет стеной, если она является стеной, а 4 или более из ее девяти соседей являются стенами или если это не стена и 5 или более соседей являются стенами. Я начинаю с случайного заполнения карты стенами или пробелами, затем итеративно посещаю каждую х / у позицию и применяю правило 4-5. Чтобы облегчить проблему формирования изолированных пещер, после случайного заполнения карты я закрываю горизонтальную линию поперек карты, устанавливая каждую плитку в пространство вместо стены, прежде чем применять правило 4-5 к каждой плитке.
Вы можете просмотреть код для моего класса обработчика карты и любые улучшения, которые я здесь сделаю
или архивную версию здесь .
источник
Я думаю, что самое непосредственное место, где можно найти это, - это посмотреть исходный код. Два основных игрока в этой области, Angband и Nethack, имеют открытый код.
источник