Я работаю над игрой, похожей на цивилизацию, и я ищу хороший алгоритм для создания земных карт мира. Я экспериментировал с несколькими альтернативами, но пока не попал в реального победителя.
Один из вариантов заключается в создании карты высот с использованием шума Perlin и добавления воды на уровне, чтобы около 30% мира было землей. В то время как шум Перлина (или аналогичные методы на основе фракталов) часто используется для местности и является достаточно реалистичным, он не предлагает много способов контролировать количество, размер и положение конечных континентов, которые я бы хотел с точки зрения игрового процесса.
Второй вариант состоит в том, чтобы начать с случайно расположенного семени из одной плитки (я работаю над сеткой из плиток), определить желаемый размер для континента и каждый поворот добавить плитку, которая горизонтально или вертикально смежна с существующий континент, пока вы не достигнете желаемого размера. Повторите для других континентов. Этот метод является частью алгоритма, используемого в Civilization 4. Проблема заключается в том, что после размещения первых нескольких континентов можно выбрать начальное местоположение, окруженное другими континентами, и, следовательно, не будет соответствовать новому. Кроме того, у него есть склонность к появлению континентов слишком близко друг к другу, в результате чего нечто похожее на реку, чем континенты.
Кто-нибудь знает хороший алгоритм для создания реалистичных континентов на сетке, сохраняя контроль над их количеством и относительными размерами?