Я строю остров. Я использую классическое решение карты высот: с помощью функции построения холмов, избегая углов карты, я делаю высоту. Затем шум перлина дает мне некоторые климатические переменные для работы с биомами. Теперь я сталкиваюсь с двумя проблемами, которые каким-то образом связаны:
В Dwarf Fortress, один из аккуратных аспектов мирового поколения - это то, как игра «узнает» области и дает им названия, хотя они не имеют прямоугольной формы. Я хотел бы иметь возможность "распознавать" мои леса, мои реки, мои холмы ... есть идеи, какой алгоритм я мог бы использовать для сканирования моей карты и интерпретации ее областей? И как бы вы это сохранили? Я использую базовый граф C ++, сделанный из вектора вектора «объекта плиток».
Этот остров должен быть разделен на политические районы, а не только чисто природные регионы. Я мог бы использовать горы и реки, чтобы сделать «естественные границы», но моя процедурно сгенерированная карта не гарантирует, что у меня будут хорошие «анклавы», которые сформируют королевство; Я мог оказаться в гигантских «ленточных» политических зонах, окруженных микро-королевствами. Другой возможностью было бы искать подходящие районы для города или замка. Затем «вырастить» политическую область вокруг него. Но опять же, я хотел бы иметь несколько известных алгоритмов, прежде чем пытаться разработать свой собственный.
Этот вопрос может быть истолкован как слишком расплывчатый, поэтому один из его способов перефразировать: как разделить (без изменений!) Процедурно сгенерированный мир на области, подходящие для игрового процесса? Заранее спасибо за вашу помощь.