Я разрабатываю движок 2D-плитки, и в данный момент я работаю над алгоритмами генерации карт.
Я пробовал базовые, обычно участвующие в создании простой генерации, например
- поколение горных пород
- perlin noise
- алмазный квадрат
но я всегда получаю ту же проблему: такие алгоритмы кажутся подходящими при работе с картами плитки, которые также имеют компонент высоты, но это не мой случай.
У меня в основном есть спрайты, такие как трава, море, пустыня и т.д., но они не должны размещаться внутри карты в соответствии с порожденной высотой, но что-то вроде
- все начинается с океана
- острова расположены в середине карты (именно там чаще всего выполнялись алгоритмы, которые я пробовал)
- пустыня (они должны быть похожими на случайные пятна)
- цепи гор и холмов порождаются (они должны быть как змеи).
Какой подход я должен попробовать?
Я решил проблемы с субкомпонентами (например, пустыни, холмы и горы), разработав специализированные алгоритмы для того, чтобы делать то, что мне было нужно (например, гора начинается с точки, а затем идет по направлению с возможностью поворота), но я терпеть неудачу с генерация основных островов (которые можно было бы настраивать, чтобы быть просто пангеей или многими степенями размера).
Просто, чтобы дать вам практическое представление, что я ищу, это что-то вроде алгоритма цивилизации: