Algoritmo di generazione di tessere mappa 2D casuale

Qualcuno può dirmi un modo per generare strutture isolane o strutture collinari come in Minecraft?

Sto solo cercando una TEORIA appropriata per quella generazione casuale, ma dovrebbe mantenere un modello di base definito.

come: isole schould arrotondate ma variate per forma e scala (larghezza min / max e altezza).

oppure: i fiumi non potrebbero essere linee rette, dovrebbero avere curve e una larghezza casuale.

o anche: generando una sorta di foresta, dove gli alberi sono posizionati in modo che l’utente possa ancora camminare attraverso la foresta (è semplice, credo che solo alcuni blocchi attorno ad un albero debbano rimanere vuoti, se il codice cerca di mettere più alberi intorno all’ultimo)

Che tipo di matematica posso usare per fare queste cose?

Sarei felice per alcuni link per tutorial o riferimenti. Ho cercato in tutto il Web per ore, ma tutto quello che ho potuto trovare sono stati alcuni libri da acquistare come “matematica del gioco” o qualcosa del genere, ma il mio budget è impostato su zero.

MODIFICARE:

Prima di tutto, mi dispiace per il mio cattivo inglese.

Secondario Voglio ringraziare tutti voi per le vostre risposte. Queste sono ottime referenze e passerò molto tempo per approfondire ciò.

Consiglio vivamente di guardare le Informazioni sulla programmazione del gioco di Amit e altri post del blog da lui. Aveva un’intera serie sulla creazione di mappe dall’aspetto realistico con fiumi, coste, ecc.

Costruire mondi

Sebbene la generazione di mappe procedurali possa essere applicata a mondi non grigliati, è più spesso utilizzata con le griglie. Visto in un singolo punto nel tempo, le mappe di gioco generate sono raramente belle come mondi fatti a mano. Tuttavia, hanno tre vantaggi: (1) costo inferiore per mondo se ci sono molti mondi da fare, (2) più valore di replay perché la prossima volta attraverso il mondo è diverso, e (3) potenziale per il mondo che si evolve mentre il il gioco avanza.

  • Amit’s World Map Generator
  • Generazione di contenuti procedurali: generazione di terreno, città, edifici
  • Generazione di Dungeon in Unangband
  • Generare mondi di gioco con una struttura lock-and-key in modo che alcune stanze richiedano oggetti da altre stanze
  • Algoritmo per la costruzione di fiumi
  • Aggiunta di fiumi a terreni generati casualmente
  • L’algoritmo Rogue originale per generare dungeon
  • 11 Maze Generating Algorithms con demo e codice
  • Usando le funzioni di rumore per generare caverne come quelle di Terraria e Minecraft
  • Stanze irregolari, algoritmo semplice
  • Regolabili aree della stanza interna
  • Algoritmo Tunneler per scavare sotterranei in DungeonMaker
  • Guida alle tecniche casuali di generazione del terreno
  • Guida Wiki alla generazione di contenuti procedurali
  • Simulazione di grandi mondi virtuali

La Poligonale Generazione di mappe di Amit per i giochi (il primo elemento in elenco) è un articolo straordinariamente impressionante che parla della logica di creare coste sensibili, isole, fiumi, montagne, ecc. Un lavoro davvero impressionante!

Un metodo per i fiumi “in crescita” in un mondo generato casualmente [incluso nell’elenco precedente] algoritmo abbastanza semplice per generare il percorso di un fiume in base alle altre “tessere” nella mappa, ad esempio il loro tipo e l’elevazione.

Una volta ho trovato un ottimo sito per la teoria quando ho realizzato un rougelike. Dai un’occhiata .

Molto spesso le mappe vengono suddivise logicamente in strati / sovrapposizioni come “altezza del terreno di base”, “livello d’acqua”, “altopiani”, “alberi”, “abitazioni” ecc.

Quindi per ogni livello viene eseguito un diverso tipo di generatore. Molto spesso i frattali vengono utilizzati perché tendono a generare forms interessanti e difficili da prevedere. Ma viene utilizzata solo una parte del frattale. L’utilizzo di un intero esporrebbe immediatamente la struttura (i frattali di livello superiore sono molto ripetitivi) e gli spettatori lo noterebbero. Quindi, il frattale generato viene quindi distorto / modificato / filtrato / tagliato in modo da non risultare ovvio. Ad esempio, puoi generare il livello del terreno di base con un semplice oscillatore trigonometrico XY, quindi sumrlo con una parte dell’immagine del tuo frattale, limitata ad alcuni valori min-max, e otterrai un terreno irregolare con colline e gocce evidenti ..

Per tutti gli altri livelli, di solito non si può “sumre”, perché gli strati diversi dal terreno non sono “altezza” o “densità”, ma piuttosto sono 0/1 – posizionare l’albero qui o no per posizionare l’albero qui? Ma di nuovo, lo esegui in modo simile: generi un’immagine (forse di nuovo un frattale), poi ispeziona i numeri e imposta un valore di soglia: ovunque il numero sia più alto / più basso di X, tu metti / nascondi la cosa. Puoi anche filtrarlo o diramarlo: per esempio se un albero colpirebbe una posizione sott’acqua, posizionare un pesce lì o non posizionarlo affatto.

Sono sorpreso che non potresti trovare risorse su di esso. Pochi anni fa, googling per “algoritmi di generazione del terreno” avrebbe restituito molti risultati!