Недавно я увлекся вещами, которые можно сделать с процедурной местностью, и начал немного экспериментировать с построением мира. Я хотел бы иметь возможность сделать миры чем-то вроде крепости Гномов с помощью биомов, созданных из множества различных карт.
Итак, первый шаг сделан. Используя алгоритм алмазного квадрата, я создал несколько хороших карт. Следующим шагом я хотел бы добавить некоторые водные объекты и сделать их несколько реалистично с дождями. Я читал о нескольких разных подходах, таких как начало в верхних точках карты и «спуск» к самой низкой соседней точке, объединение / размывание, когда он спускается к уровню моря.
Есть ли какие-либо документированные алгоритмы с этим или они больше не в порядке?
Буду любить любые советы / мысли.
Ответы:
Амит Патель, пользователь этого сайта, создал замечательный источник информации о генерации случайных миров, который, безусловно, будет вам полезен.
Далее на этом сайте есть несколько замечательных вопросов / ответов о процедурной генерации.
Генерация дороги / реки на 2-й карте сетки
Процедурное мировое поколение, ориентированное на особенности игрового процесса
Как я могу генерировать случайные озера и реки в моей игре?
Генерация случайной карты
источник
Когда я экспериментировал с подобными вещами (конец 1990-х годов), я читал некоторые статьи и книги, чтобы узнать о потоке воды, но я не вел записи о том, на какие из них я смотрел. Я закончил тем, что делал свое дело, потому что хотел справиться с эрозией. Я хотел, чтобы реки производили каньоны и поймы. Я хотел, чтобы водохранилища плотины наполнились осадком. Я хотел, чтобы реки производили такие эффекты, как блуждающие и волнистые озера. Я хотел каналы для орошения и водозабора. Я хотел, чтобы наводнения повредили фермы и дома в поймах.
Я сохранил некоторые заметки (ссылки) в разделе географии этой страницы . Есть бумага Jos Stam, которую нужно прочитать. К сожалению, я никогда не организовывал заметки. Кроме того, к сожалению, игра была для OS / 2, поэтому я не могу легко дать вам исполняемый исполняемый файл для игры. И, к сожалению, мой код ужасен, но если вы хотите посмотреть, посмотрите water.cpp в исходном коде (zip).
Вещи, с которыми я играл в моей симуляции (не все реалистично):
В целом, мой опыт заключался в том, что со всем этим было довольно весело играть, но для его работы потребовалось много эвристик и настроек. Я никогда не доходил до точки, где я мог бы сказать, что создание реки было естественным и неизбежным без настройки. Это было так весело (и как программист, и как игрок), что я потратил на это годы и никогда не заканчивал остальную часть игры. :)
источник
Большинство реализованных мною реализаций либо сочетали «карту реки» (используя узкую полосу из шума Перлина или какой-то похожий подход), либо метод «дождевой капли», о котором вы упомянули.
Вот несколько отправных точек:
источник