Як я можу визначити регіональні риси в світі, створеному процедурою?


26

Я будую Острів. Я використовую класичне рішення висотної карти: за допомогою функції побудови пагорба, уникаючи кутів карти, я роблю висоту. Тоді, перліновий шум дає мені кілька кліматичних змінних для обробки біомів. Зараз я зіткнувся з двома проблемами, які певним чином пов'язані між собою:

  • У карликовій фортеці одним із акуратних аспектів світового покоління є те, як гра, схоже, «знає» області та дає їм назви, хоча вони не мають прямокутної форми. Я хотів би мати можливість «розпізнати» свої ліси, свої річки, свої пагорби ... будь-яка ідея, який алгоритм я міг би використати для сканування карти та інтерпретації її ділянок? І як би ви це зберігали? Я використовую базовий графік С ++, зроблений з вектора "об'єкта плитки".

  • Цей Острів слід розділити на політичні райони, а не лише на суто природні регіони. Я міг би використовувати гори та річки для створення "природних кордонів", але моя процедурно створена карта не гарантує, що у мене будуть гарні "анклави", які б формували королівство; Я міг опинитися у гігантських політичних областях, утворених стрічкою, оточених мікро-царствами. Іншою можливістю було б шукати відповідні ділянки для міста чи замку. Тоді "вирощуйте" навколо себе політичну область. Але знову ж таки, я хотів би мати кілька відомих алгоритмів, перш ніж спробувати розробити свій власний.

Це питання можна трактувати як занадто розпливчасте, тому одним із способів перефразовування було б: як розділити (не змінюючи!) Процедурно створений світ на області, придатні для гри? Заздалегідь дякую за вашу допомогу.


Дякую за виправлення, і вибачте за погану якість моєї англійської мови :)
Raveline

Ваша англійська чудова, просто "титул" переважно формулюється як питання на сайтах StackExchange.
dlras2

Відповіді:


21

Амітп пропонує використовувати вододіли для визначення різних регіонів, як пояснив у своєму дописі про генерацію полігональних карт . Вододіли найкраще видно, створивши карту за допомогою його демонстрації . Перевага використання вододілів для підрозділу материків полягає в тому, що він забезпечує межі перпендикулярні до берегової лінії, тоді як гори зазвичай забезпечують паралельні межі.

Якби я підрозділяв географічні регіони, я би використовував поєднання гір, вододілів та виявлення країв різних біомів на своїй карті.

Я також зазначу, що політичні регіони загалом охоплюють багато географічних регіонів. Я б генерувати географічні регіони, а потім привласнити кожен регіон оцінку бажаності (це прибережному? Є золото? Добре сільськогосподарські землі?) І вартість поїздки (пересічена місцевість? Важкі лісу?.) Тоді , використовуючи ваш улюблений алгоритм резервування шляхів , генерувати теплова карта подорожей між бажаними регіонами. Це в кінцевому підсумку стане вашими дорогами, і ви зможете звідти будувати свої політичні кордони. Зазвичай ці межі матимуть багато доріг всередині них і менше доріг між ними.


1
Дякую за твою допомогу. Я вже знав рішення Аміта, і хоч я вважав це досить елегантним, але я не знаю достатньо математики позаду (мені доведеться їх вивчати, що я рано чи пізно робитиму, але не зараз!). Мислення з приводу вододілу, безумовно, може допомогти мені, і налаштування алгоритму генерації річки не повинно бути занадто складним. Мені подобається ваше рішення щодо будівництва доріг та політичних кордонів, я повинен розглянути, як саме я збираюся його втілити, але ідея чудова!
Raveline

@Raveline - Якщо ви використовуєте покоління політичних кордонів, коментуйте тут і повідомте мені! Я хотів би подивитися, як це виходить.
dlras2

13

Щоб додати відповідь Дана Расмуссена :

Однією з головних причин, що я перейшов від Perlin Noise ( цей проект ) до використання полігонів ( цей проект ), є те, що полігони забезпечують певну структуру для присвоєння більших територій (політичні регіони, ліси, пустелі, названі райони, межі тощо). Починати зі структури, а потім генерувати карту схоже на візуалізацію багатокутника - щось досить просто. Почати з карти, а потім виводити структуру схоже на комп’ютерний зір - те, що є відносно важким, але можливим. Я хочу і структуру, і карту, тому я вирішив пройти відносно простий маршрут складання карти вгорі структури (вузли та краї).

Вже тоді я виявив, що хочу більші структури, ніж те, що я створив. Вододільні одиниці були однією спробою побудови цих більших структур, але мені потрібно спробувати більше підходів групування багатокутників разом. Я не знайшов того, з чим я задоволений.

Я не впевнений, як це робить карликова фортеця. З огляду на те, наскільки блискучі ці хлопці, я не здивуюсь, якщо у них є складний алгоритм «комп'ютерного зору».


Я розумію міркування, хоча я не впевнений, що ваш шлях такий простий ... Оскільки мій проект досить скромний, я спробую виправити щось не надто витончене, але без полігонів, оскільки це означало б вивчення набагато більше алгоритмів мається на увазі. (PS: ваш веб-сайт - це дивовижне джерело натхнення, і я люблю це!)
Raveline

3
стаття про генерацію полігональних карт була чудовою.
Дощ

3

Для вашого першого питання найкращим моїм припущенням буде використання алгоритму виявлення країв, щоб знайти межі ваших природних регіонів (ліс, пагорби, ...). Для такої проблеми існує багато алгоритмів.

Для другого питання ви можете використати власну ідею для нересту замку (як правило, на вершині пагорба для гарної оборони та біля прісної води), а потім використати алгоритм вороной, щоб мати регіони навколо кожного замку. Ви можете використовувати шум або обмеження біомів, щоб зробити межі більш реалістичними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.