2016-04-16 3 views
0

Im развивающая 2d изометрическая игра. Вы управляете автомобилем по городу, вот и все. Проблема заключается в создании случайных карт со связанными дорогами. Я хотел бы написать сценарий - я думаю, что смогу - но я не могу найти идею для самого альгоритма. Позволяет сказать, что у меня есть карта 100x100, и я бы хотел построить логическую таблицу 1, дорога 0 не дорога.Процедурное родовое поколение, единство

У меня есть решение, которое рисует случайное число строк (4-8 для ex) в горизонтальной и одинаковой вертикали. Но эта дорожная карта прямая.

Можете ли вы поделиться некоторыми идеями? Любой поможет

ответ

1

вопрос слишком широк для простого ответа. theres много путей в различной степени сложности.

но как совет, рассмотрите проблему с другой точки зрения. конечно, в конце вы хотите дороги, но почему дороги там в первую очередь? в вашем случае его город. город состоит из городских блоков, которые обычно являются прямоугольными. поэтому одним из способов было бы найти способ заполнить карту прямоугольными фигурами и рассмотреть края дорог (или только некоторые).

или вы могли бы изучить алгоритмы триангуляции и триангулировать свою карту с кучей случайных точек. затем объедините несколько треугольников и используйте эти края в качестве дорог.

или даже использовать случайную прогулку, чтобы она не обернулась полностью.

или ...

... серьезно, хотя, варианты и возможные решения многообразны и зависят от уровня вашего мастерства (а также, как вы хотите выглядеть ваш город, в конце концов). не ищите свою конкретную проблему, попробуйте адаптировать какой-либо другой алгоритм для ваших нужд. Theres много учебников по случайному поколению подземелий для игр с рогейнами. также, в конце концов, вероятно, не будет алгоритмом единого поколения, дающим вам лучший результат, но сочетание многих.

+0

Здравствуйте, @yes и спасибо за ваши советы, я нашел полезную информацию. Я выяснил некоторую линейную сетчатую карту со случайным размером и случайными объектами карты, вот эффект :) [ссылка] (http://smilesoft.pl/images/games/roads.png) Еще раз спасибо и хорошо провести день ! – budda1989

+0

@ budda1989 хорошо выглядит до сих пор, теперь продолжайте строить на нем. у вас есть эти дороги, и вы знаете, где они пересекаются. теперь удалите некоторые дороги между двумя перекрестками снова, это уже немного сломает сетку. то вы могли бы провести еще один проход, чтобы проверить длинные дороги, например, и, возможно, добавить u-curve или развить дорожную разметку блока, или сесть на перекресток и превратить его в круговую развязку. и это только некоторые идеи, которые мгновенно пришли мне в голову. – yes

+0

или вы также можете разбить карту в 2 (или 3) с помощью дороги с севера на юг. затем разделить обе стороны с дорогой (или двумя или тремя) с востока на запад, но каждый на другой высоте. то вы снова разделяете вертикаль, затем горизонтали. сделайте это несколько раз. затем удалите несколько дорог, создайте круговое движение, возможно, произведите дорогу на очень длинных прямых кусках и так далее. тоже что-то не связанное, поверните стрелки на 45 °, atm можно только догадываться, в каком направлении они означают;) – yes