Metody generowania mapy


27

Chcę stworzyć prostą, „losowo” generowaną mapę dla małej gry.

Gra składa się z widoku z góry na świat, z masą lądową i obszarami oceanicznymi. Pomyśl na przykład o prostej zarysie mapy świata.

Najbliższą rzeczą, jaką widziałem wcześniej, był generator poziomów dla starych gier SimCity lub serii Civ , w której możesz ustawić preferencje dla pojedynczego kontynentu względem wielu wysp itp.

Jaki rodzaj algorytmu byłby odpowiedni? Mapa będzie musiała być umiarkowanie powiększalna, więc mogę mieć widok „całego świata”, a także bardziej przybliżony widok lokalny, ale myślę, że rozwiążę to później.

Początkowo nie potrzebuję żadnej koncepcji wysokości, tylko dwa obszary - lądowy i morski, chociaż mogę ją później rozszerzyć.


Myślałem wzdłuż linii generacji, używając pewnego rodzaju funkcji perlin-hałas, ale nie jestem pewien, jak przejść z mapy wysokości 2D do zestawu linii łączących wszystkie obszary na wysokości X.
Cylindryczny

Odpowiedzi:


21

„Słynny” Amit (z ogromną stroną różnych tematów związanych z programowaniem gier) ma bloga poświęconego programowaniu gier i właśnie ukończył 3-częściowy samouczek interesującej metody generowania map. Naprawdę podobały mi się lektury, a na dole trzeciego artykułu znajduje się działające demo, które jest dość gwiezdne.

„Generowanie mapy wielokątów” część 1 , część 2 , część 3 .

Może to być technika, którą chcesz dostosować do swoich potrzeb! Przynajmniej wspomina algorytmy, których używa na każdym etapie procesu: zaczyna od generacji wieloboków Voronoi , rozluźnia je do bardziej równomiernej dystrybucji za pomocą relaksacji Lloyda , używa „prostej funkcji dzielenia świata na ziemię i wodę” , a następnie wypełnia powodzie, aby określić oceany i jeziora. Wygląda na to, że możesz się tam zatrzymać lub poczytać o górach i dolinach i zmienić go w 3D i tak dalej.


2
Och, wow, skorzystałem z przewodnika Amita, aby nauczyć się A *. To tak, jakby patrzył mi w głowę :) Czas na tatuaż „<3 Amit” ...
Cylindric

1
To naprawdę cholernie świetne
Colm,

Voronoi, miło. :)
user712092
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.