Какой алгоритм вы использовали в прошлом для создания простого 2d лабиринта?
algorithm
procedural-generation
jdeseno
источник
источник
Я предпочитаю сильно намотанные лабиринты, которые создает алгоритм Крускала.
Стандартное описание алгоритма Крускала неуместно в том смысле, что оно не может отличить местоположения в графе от групп местоположений, в то же время полагаясь на каламбур в отношении выбора структуры данных, что приводит к неясностям описания, которые смущают новичков. Поэтому я отвергаю терминологию Крускала.
Я буду использовать следующие термины:
И из них мы получаем:
источник
В Википедии есть большой ресурс по созданию лабиринтов . Я использовал алгоритм рандомизированных простых чисел с отличными результатами. Алгоритм деления выглядит интересно, но я никогда не использовал его.
Вот пример википедии о работе на компьютере.
источник
Один простой способ - составить список северных и западных стен, а затем их переставить. Дайте каждой комнате номер. Затем взорвать одну из стен в списке, пока две комнаты не имеют одинаковое число, а затем распространить одно из номеров на все другие комнаты с одинаковым номером. Продолжайте, пока не выбежите из стен. Это работает для прямоугольных лабиринтов или, на самом деле, для любого другого лабиринта, где вы можете дать список «потенциально связанных комнат». Плюс, это довольно просто программировать.
источник
Я также хотел бы взглянуть на некоторые алгоритмы, используемые в разработке Roguelike. В Rogue Basin есть хороший стартовый ресурс
источник
Хороший прогон есть здесь: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
Основные шаги были:
Код здесь: https://github.com/munificent/hauberk/blob/db360d9efa714efb6d937c31953ef849c7394a39/lib/src/content/dungeon.dart
источник
Вы спросили, какой я использовал, поэтому я обязательно отвечу на это. Я использовал Рекурсивный алгоритм Backtracker в моей игре-лабиринте на Rootbeer Games .
Это доказательство того, что я использовал алгоритм, пожалуйста, не рассматривайте его как рекламу моей работы.
источник