Методи генерації карти


27

Я хочу створити просту, "випадкову" генеровану карту для невеликої гри.

Гра складається з виду зверху вниз на світ, з сухопутною масою та океанічними районами. Придумайте, наприклад, просту карту світу.

Найближче, що я можу подумати про те, що я бачив раніше, - це генератор рівнів для старих ігор SimCity або серія Civ , де можна встановити перевагу для одного континенту проти багатьох островів тощо.

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

Спочатку мені не потрібна якась концепція висот, лише дві області - суша та море, хоча я можу розширити її пізніше.


Я думав по лінії покоління, використовуючи якусь функцію перлін-шуму, але не знаю, як дістатися з того, що є по суті 2D-мапі висоти, до набору ліній, що з'єднують усі області на висоті X.
Циліндричний

Відповіді:


21

"Знаменитий" Аміт (з гігантською сторінкою різних тем програмування ігор) має блог ігрового програмування, і він щойно виконав підручник з 3-х частин цікавого методу створення карт. Мені дуже сподобалося читання, і в нижній частині третьої статті є робоча демонстрація, яка є досить зоряною.

"Генерування полігонових карт" частина 1 , частина 2 , частина 3 .

Це може бути техніка, яку ви хочете адаптувати під свої потреби! Принаймні, він згадує алгоритми, які він використовує на кожному етапі процесу: він починає покоління полігонів Вороного , розслаблює їх до більш рівномірного розподілу за допомогою релаксації Ллойда , використовує "просту функцію для поділу світу на землю і воду". , а потім заливки для визначення океанів та озер. Це здається, що ви можете зупинитися там, чи прочитати далі про гори та долини, перетворивши їх у 3D тощо.


2
О, о, я використав посібник Аміта величезну кількість, щоб вивчити A *. Це все одно, що він дивиться мені в голову :) Час отримати тату "<3 Amit" ...
Циліндрик

1
Це справді чудово чудово
Колм

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