Подтвердить что ты не робот

Алгоритм создания произвольной 2D-плитки-карты

Может ли кто-нибудь сказать мне способ создания островных структур или конструкций холмов, как в minecraft?

Я просто ищу подходящую ТЕОРЮЮ для создания случайной формы, но она должна содержать определенный базовый шаблон.

: острова должны быть округлены, но имеют форму и масштаб (минимальная/максимальная ширина и высота).

или: реки не должны быть прямыми, они должны иметь кривые и случайную ширину.

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

Какую математику я могу использовать, чтобы делать такие вещи?

Я был бы рад некоторым ссылкам для учебников или ссылок. Я работаю по всему Интернету несколько часов, но все, что я мог найти, это книги, которые можно купить как "математика игры" или что-то в этом роде, но мой бюджет равен нулю.

EDIT:

Прежде всего, я сожалею о своем плохом englisch.

Вторичный Я хочу поблагодарить всех вас за ваши ответы. Это отличные ссылки, и я потрачу много времени, чтобы углубиться в это.

4b9b3361

Ответ 1

Я настоятельно рекомендую посмотреть Amits Game Programming Information и другие сообщения в блоге от него. У него была целая серия по созданию реалистично выглядящих карт с реками, береговыми линиями и т.д.

Построение мира

Хотя создание процедурной карты может быть применено к сетям без сетки, его чаще всего используют с сетками. Рассматриваемый в один момент времени, сгенерированные игровые карты редко так же хороши, как созданные вручную миры. Однако у них есть три преимущества: (1) более низкая стоимость на мир, если многие миры должны быть сделаны, (2) больше значения повтора, потому что следующий время через мир отличается, и (3) потенциал для мира развивается, пока игра прогрессирует.

  • Amits Генератор карт мира
  • Построение процедурного контента: создание местности, городов, зданий.
  • Создание подземелий в Unangband
  • Создание игровых миров с блокировкой и ключом, чтобы некоторые комнаты нуждались в объектах из других комнат.
  • Алгоритм построения рек
  • Добавление рек к случайно созданной местности
  • Оригинальный алгоритм Rogue для создания подземелий
  • 11 Лабиринт Генерирующие алгоритмы с демонстрацией и кодом
  • Использование шумовых функций для создания пещер, таких как Terraria и Minecraft
  • Номера неправильной формы, простой алгоритм
  • Изменчивые области внутренних помещений.
  • Алгоритм туннелеров для подкачки подземелий в DungeonMaker
  • Руководство по случайным методам генерации ландшафта
  • Вики-руководство по созданию процедурного контента
  • Имитация больших виртуальных миров

Amit Создание многоугольной карты для игр (первый элемент в списке) - чрезвычайно впечатляющая статья, в которой говорится о логика создания разумных форменных береговых линий, островов, рек, гор и т.д. Очень впечатляющая работа!

Метод для "роста" рек в случайно сгенерированном мире [включен в список выше] довольно простой алгоритм для создания речного пути, основанный на других "плитах" на карте, например. их тип и высота.

Ответ 2

Когда-то я нашел отличный сайт для теории, когда я сделал роггелику. Посмотрите.

Ответ 3

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

Затем для каждого слоя запускается другой тип генератора. Очень часто используются фракталы, потому что они имеют тенденцию создавать интересные и трудно предсказать формы. Но используется только часть фрактала. Использование целого было бы мгновенно разоблачить структуру (на фракталах верхнего уровня очень повторяющиеся), и зрители заметили бы это. Таким образом, сгенерированный фрактал затем искажается/модифицируется/фильтруется/вырезается, чтобы это не было очевидно. Например, вы можете генерировать базовый уровень местности с помощью простого тригонометрического генератора XY, а затем суммировать его с частью вашего фрактального изображения, ограниченным некоторыми значениями min-max, и вы получите неровный ландшафт с заметными холмами и каплями..

Для всех остальных слоев вы обычно не можете "суммировать", потому что слои, отличные от ландшафта, не относятся к "высоте" или "плотности", а скорее относятся к 0/1 - поместите дерево здесь или нет, чтобы поместить дерево Вот? Но опять же вы выполняете его аналогично: вы генерируете некоторое изображение (возможно, фрактал снова), затем проверяете числа и устанавливаете пороговое значение: везде, когда число выше/ниже X, вы помещаете/замещаете вещь. Вы можете дополнительно фильтровать или разветвлять его: например, если дерево попало в положение под водой, поместите там рыбу или не разместите дерево вообще.

Я удивлен, что вы не можете найти ресурсы на нем. Несколько лет назад googling для "алгоритмов генерации ландшафта" возвращал много обращений!