Metodi per generare una mappa


27

Sto cercando di creare una semplice mappa "generata casualmente" per un piccolo gioco.

Il gioco consiste in una vista dall'alto verso il basso di un mondo, con aree di massa terrestre e oceaniche. Pensa ad una semplice mappa muta del mondo per esempio.

La cosa più vicina che mi viene in mente di aver visto prima era il generatore di livelli per i vecchi giochi SimCity , o la serie Civ , in cui è possibile impostare una preferenza per il singolo continente rispetto a molte isole, ecc.

Quale tipo di algoritmo sarebbe adatto? La mappa dovrà essere moderatamente ingrandibile, quindi posso avere una vista "tutto il mondo" e anche una vista locale più ingrandita, ma penso che lo risolverò più tardi.

Inizialmente non ho bisogno di alcun concetto di altezze, solo due aree: terra e mare, anche se potrei estenderlo in seguito.


Stavo pensando lungo le linee della generazione usando una funzione perlin-noise di qualche tipo, ma non sono sicuro di come arrivare da quella che è essenzialmente una mappa di altezza 2D, a un insieme di linee che collegano tutte le aree all'altezza X.
Cylindric

Risposte:


21

Il "famoso" Amit (con la pagina gigante di vari argomenti di programmazione del gioco) ha un blog di programmazione del gioco, e ha appena completato un tutorial in 3 parti di un interessante metodo di generazione delle mappe. Mi sono piaciute molto le letture, e c'è una demo funzionante in fondo al terzo articolo che è piuttosto stellare.

"Generazione di mappe poligonali" parte 1 , parte 2 , parte 3 .

Questa potrebbe essere una tecnica che desideri adattare alle tue esigenze! Per lo meno, menziona gli algoritmi che usa in ogni fase del processo: inizia dalla generazione di poligoni Voronoi , li rilassa in una distribuzione più uniforme usando il rilassamento Lloyd , usa "una semplice funzione per dividere il mondo in terra e acqua" , quindi si riempie di inondazioni per determinare oceani e laghi. Sembra che tu possa fermarti qui, o leggere per le montagne e le valli e trasformarlo in 3D e così via.


2
Oh wow, ho usato una guida enorme di Amit per imparare A *. È come se mi guardasse nella testa :) È ora di farmi quel tatuaggio "<3 Amit" ...
Cilindrico,

1
Sono davvero fantastici
Colm,

Voronoi, carino. :)
user712092
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.