realistica distribuzione "random" è spesso fatto usando Perlin Noise, che può essere usato per dare una distribuzione con "grumi" come dici tu. Funziona sommando/combinando più livelli di valori interpolati linearmente da punti di dati casuali. Ogni livello (o "ottava") ha il doppio dei punti dati dell'ultimo e limitato a un intervallo di valori più ristretto. Il risultato è una trama casuale dall'aspetto "realistico".
Ecco una bella dimostrazione di the theory behind Perlin Noise di Hugo Elias.
Ecco la prima cosa che ho trovato su Perlin Noise in C#.
Ciò che si può fare è generare un'immagine Perlin Noise e impostare una "soglia", in cui qualsiasi valore sopra un valore è "on" e tutto quanto sotto è "off". Quello che finirai con è ciuffi dove le cose sono sopra la soglia, che sembrano irregolari e terrificanti. Assegna semplicemente quelli sopra la soglia dove vuoi che sia la tua caratteristica del terreno.
Here is a demonstration se un programma genera una bitmap Perlin Noise e quindi regola la soglia di interruzione nel tempo. Un chiaro "agglomerante" è visibile. Potrebbe essere proprio quello che volevi.
Si noti che, con una soglia alta, pochissimi punti sono sopra di esso, ed è scarso. Ma man mano che la soglia si abbassa, quei punti "crescono" in gruppi (dalla natura del rumore di Perlin), e alcuni di questi ci si uniscono a vicenda, e fondamentalmente creano qualcosa di molto naturale e simile al terreno.
Si noti che è anche possibile impostare il "fattore di clump" o la tendenza delle feature a raggrupparsi, impostando la "turbolenza" della funzione Perlin Noise, che fondamentalmente determina l'accentuazione dei picchi e delle valli della funzione PN. più vicini tra loro.
Ora, dove impostare la soglia? Maggiore è la soglia, minore è la percentuale della feature sulla mappa finale. Più bassa è la soglia, maggiore è la percentuale. Puoi scherzare con loro.Probabilmente potresti ottenere percentuali esatte facendo un po 'di matematica (sembra che la distribuzione dei valori segua uno Normal Distribution; potrei sbagliarmi). Tweak fino a quando non è giusto :)
EDIT Come sottolineato nei commenti, è possibile trovare l'esatta percentuale con la creazione di un istogramma cumulativo (indice di quello% della mappa è sotto di una soglia) e scegliere la soglia ti dà la percentuale di cui hai bisogno.
La cosa più bella qui è che è possibile creare funzionalità che si aggrappano a determinate altre funzionalità (come le caratteristiche della palude) banalmente qui: basta usare la stessa mappa Perlin Noise due volte - la seconda volta, abbassando la soglia. Il primo sarà scomodo e il secondo sarà irregolare intorno alle stesse aree, ma con i grumi ingranditi (fare riferimento all'animazione flash pubblicata in precedenza).
Come per altre caratteristiche come le siepi, è possibile provare a modellare semplici linee random walk che hanno una tendenza più alta a andare dritte rispetto al turno e posizionarle in modo casuale sulla mappa basata su perlin.
campioni
Ecco un 50x50 tegola campione Sparse Forest Mappa. Il sottobosco è di colore marrone e gli alberi sono di colore blu (scusate) per chiarire quale è quale.
Sparse Forest http://img688.imageshack.us/img688/7005/forestmap.png
Per questa mappa non ho fatto soglie precise per abbinare il 50%; Ho impostato solo la soglia al 50% del massimo. Statisticamente, questo si aggirerà intorno al 50% ogni volta. Ma potrebbe non essere abbastanza preciso per i tuoi scopi; vedere la nota precedente per come farlo.
Ecco una demo delle vostre caratteristiche Marsh (esclusi sottobosco, per chiarezza), con poca palude in grigio e profonda palude in retro:
Marshes http://img202.imageshack.us/img202/5092/marshdemo.png
questo è solo 50x50, così ci sono alcuni artefatti da questo, ma puoi vedere con quanta facilità puoi far "crescere" la palude poco profonda dalla profonda palude, semplicemente regolando la soglia sulla stessa mappa di Perlin. Per questo, ho messo a fuoco il livello di soglia per dare i risultati più piacevoli, ma per i tuoi scopi, potresti fare ciò che è stato menzionato prima.
Ecco una mappa palude generato dalla stessa mappa del rumore Perlin, ma si estendeva su 250x250 mappa piastrelle invece:
Marshes 250x250 http://img251.imageshack.us/img251/2867/marshdemo250.png
Queste mappe basate sulla griglia sono? Non mi è chiaro dalla descrizione o dal link. – academicRobot
Sì, basato sulla griglia, probabilmente non inferiore a 20x20 (anche se con maggiore probabilità, intorno a 50x50ish?) – dlras2