Комментарии 25
Я ожидал действительно чего-то «сложного», но для понимания хватило и одного прочтения статьи. Давно, ещё при игре в майнкрафт задавался вопросом генерации случайного лабиринта «на ходу», используя ненормальное программирование на командных блоках. Возможно, тогда читал что-то по этой теме, поэтому-то и статья легко «пошла».
Очень интересно почитать действительно сложные вещи, жду следующей статьи, спасибо.
Очень интересно почитать действительно сложные вещи, жду следующей статьи, спасибо.
+2
Ну, здесь и правда ничего сложного нет, если имеются базовые знания о графах. Иначе некоторые моменты могут быть неочевидны. Что-то по-настоящему сложное… Ну, может быть, при пересекающихся коридорах или полярных лабиринтах сложность будет повыше. На примитивном двухмерном пространстве всё тривиально при наличии опыта в программировании и немного в математике.
0
Здорово, очень здорово! Я как раз сегодня разбирался с next (table [, index]).
Возможно я хочу слишком многого, но было бы очень наглядно с презентацией работы алгоритмов в love2D. Я конечно, уже написал свою реализацию алгоритмов (кстати, это было очень занятно и интересно!), что были представлены в прошлой статье, но хотелось бы увидеть Вашу работу…
Возможно я хочу слишком многого, но было бы очень наглядно с презентацией работы алгоритмов в love2D. Я конечно, уже написал свою реализацию алгоритмов (кстати, это было очень занятно и интересно!), что были представлены в прошлой статье, но хотелось бы увидеть Вашу работу…
Спойлер
+1
Могу скинуть весь исходный код для Лав2Д в ЛС. Или опубликую его позже, так как код рендера мне стыдно выкладывать.
0
Не стесняйтесь, публикуйте! Либо GitHub, как вариант.
0
Нет-нет, сейчас на публику выкладывать слишком рано весь код. Я его рефакторю в процессе написания статей. А пока костылей там слишком много.
0
Таким образом вы его никогда не выложите. Ну и что, что костыли? Все когда-то с них начинали, особенно, когда что-то пишется в процессе.
0
Залил исходники на гитхаб. Без рефакторинга вообще. Всё ещё не уверен в правильности сего действа :)
Исходники
Исходники
0
Реакция публики оказалась значительно позитивнее моих предположение, а значит, мы продолжаем разговор на одну из любопытнейших тем процедурной генерации – создание лабиринтов.
Извините за мою придирчивость, но не могли бы исправить опечатку? :)
И насчет статьи — очень интересно! Продолжайте цикл статей, с удовольствием читаю перед началом рабочего дня!
+1
Сейчас (немного по другому поводу) ковыряю DLA. На выходе получаются структуры, немного похожие на лабиринты. Думаю, если немного заточить их с этой стороны — можно немного получить похожий результат. Там тоже на выходе граф без колец. Похожий — потому что там не полное заполнение сетки. Но это можно исправить.
Офтоп: А куда вообще можно картинку выложить, чтобы прицепить к комменту?
Офтоп: А куда вообще можно картинку выложить, чтобы прицепить к комменту?
+1
https://bost.ocks.org/mike/algorithms/ тут есть радел про лабиринты и еще много всего.
0
Извините, поправьте меня, если я не прав. Мне кажется с первой картинкой в разделе «Смещение и случайность» что-то не так. Кажется на лабиринт просто наложили затемнение нижнего(второго) лабиринта, ибо затемнение во многих местах идёт не по стенкам… Или я всё неправильно понял?
+1
Можно усовершенствовать алгоритм Олдоса-Бродера. Для того, что бы не было ненужного брожения по уже отрисованной части лабиринта, необходимо помещать «красный квадрат», случайным образом, в одно из полей из которых возможно продолжение прорисовки проходов. И случайным образом выбирать одно из возможных направлений проходов.
0
Можно. Вот только это будет уже совсем другой алгоритм с совершенно другим принципом работы :)
Поиск с возвратом, например. Или Hunt&Kill.
Поиск с возвратом, например. Или Hunt&Kill.
0
А если для того, что бы сохранить название, просчитывать вероятность выхода «красного квадрата» за пределы размеченного в каждой возможной точке (чем дальше точка входа, тем меньше вероятность, что он выйдет в этом месте). Тогда и эффективность возрастет и лабиринты будут генерироваться похожие.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Классические алгоритмы генерации лабиринтов. Часть 2: погружение в случайность