Ho creato una mappa di altezza casuale e ora voglio creare fiumi. Ho creato un algoritmo basato su un * per far fluire i fiumi dalle vette al mare e ora sono alla ricerca di un algoritmo elegante per renderli.
È un 2D, quadrato, mapgrid. Le celle che il fiume ha un valore intero semplice con questa forma: rivernumber && pointOrder. Vale a dire: 10, 11, 12, 13, 14, 15, 16 ... 1 + N per il primo fiume, 20,21,22,23 ... 2 + N per il secondo, ecc. Questo viene creato nel mappa tempo di generazione della griglia e viene eseguito solo una volta, quando il mondo viene generato.
Volevo trattare ogni fiume come un vettore, ma c'è un problema, se lo stesso fiume ha dei rami (perché metto un po 'di rumore per generare rami), non posso semplicemente collegare i punti in ordine.
La seconda alternativa è quella di generare un algoritmo complesso in cui analizza ogni punto, controlla se il successivo non è un ramo, in tal caso attiva un altro algoritmo che si occupa del ramo, quindi ritorna sul fiume principale, ecc. Molto complesso e inelegante.
Forse esiste una soluzione nell'algoritmo di generazione mondiale o nell'algoritmo di rendering del fiume che viene comunemente usato in questi casi e di cui non sono a conoscenza.
Qualche consiglio? Grazie!!