Я пытаюсь создать алгоритм для создания простой двумерной городской дорожной системы. Его даже не будет процедурным, просто ограничен небольшой сеткой.
Простым я имею в виду что-то вроде этого:
Я подумал, что просто стреляю по случайным линиям длины по краям, но это не дает мне видимость связности, которую я хочу.
Я также пытался случайным образом размещать узлы и связывать их с L-образными линиями, но это тоже не давало хороших результатов.
Любые ссылки на ресурсы, теорию или образец кода будут высоко оценены!
PS Это может быть на любом языке. Мне просто нужно знать концепцию этого.
При создании ландшафта, например горных хребтов, часто используются фрактальные структуры, поэтому, возможно, подобная идея может быть использована здесь. Сделайте поиск Google для "фрактальной генерации ландшафта", чтобы узнать больше. В случае создания уличного макета вы можете попробовать следующий алгоритм (это просто с головы до ног, так что никаких гарантий, что это будет действительно хорошо выглядеть):
Я бы создал случайные блоки разных размеров и добавлял их вместе с оставлением пространства между каждым блоком, представляющим улицы.
В деталях я бы сделал 2d-массив. Поместите первый случайный блок, например, в один угол и установите для всех полей, охватываемых блоком, идентификатор для не-уличной плитки. Окружайте весь блок уличной плиткой. И повторить процесс со следующим блоком, поставив его рядом с уличными плитками из первого блока. Делайте это до тех пор, пока все поля в массиве не будут либо уличными, либо уличными.