Ich programmiere ein auf Kacheln basierendes Spiel und habe einige Grundkacheln (Gras, Dreck usw.), aber ich kann nicht herausfinden, wie ich eine gute Zufallskartengenerierung machen kann, weil ich bei der Auswahl der Kacheln wirklich zufällig bin Sollte Gras / Dreck sein, bekomme ich folgendes:
Ich verstehe, warum dies geschieht, aber ich möchte zufällig zusammenhängende Gras- oder Schmutzflächen schaffen. Etwas, das sinnvoller wäre:
Antworten:
Was Sie tun könnten, ist zufällig eine Voronoi-Karte wie diese zu generieren:
center points
(siehe die schwarzen Punkte) und entscheiden Sie nach dem Zufallsprinzip, ob es sich um Gras oder Schmutz handelt.center point
Schmutz oder Gras liegen.Wenn Sie zuvor für jedes Plättchen (Rauschen) eine Münze geworfen haben, liefert die Erstellung eines Voronoi-Diagramms ein viel besseres Ergebnis.
Sie könnten durch Division des auf diese Verbesserung
center points
inislands
einem Algorithmus , dass:centers points
und bezeichnet sie alsleaders
.quelle
center points
. Dann entscheiden Sie, ob es sich um Gras oder Schmutz handelt. Überfliege nun das Array und entscheide, ob jedes Plättchen einem Schmutzpunkt oder einem Graspunkt am nächsten liegt. Vielleicht sag mir welcher Teil herausfordernd?Sie können Perlin-Rauschen verwenden, das normalerweise zur Erzeugung von Höhenkarten verwendet wird. Perlin-Rauschen in Spielen
Dann könnten Sie die Höhen als Ratgeber verwenden, wie hoch die Wahrscheinlichkeit ist, dass Gras / Schmutz in einer Region der Karte auftritt.
Beispiel (Perlin-Rauschwerte von 0 bis 256): Wenn der Wert über 200 liegt, beträgt die Chance, dass Gras platziert wird, 80% (Schmutz 20%). Wenn der Wert zwischen 100 und 200 liegt, beträgt die Chance, dass Gras platziert wird, 50% (Schmutz ebenfalls 50%). Wenn der Wert unter 100 liegt, beträgt die Chance, dass Gras platziert wird, 20% (Schmutz 80%).
quelle
http://gamedevelopment.tutsplus.com/tutorials/generate-random-cave-levels-using-cellular-automata--gamedev-9664
Hier ist meine Version der zellularen Automatenmethode: Fülle das Gitter mit Zufallszahlen und führe diese kullularen Automatenregeln ein paar Mal aus
und es sieht aus wie eine Höhle
Mit diesem Code kann der Index in die X & Y-Position und zurück konvertiert werden
Ich gebe nur eine Liste von Bools zurück, weil ich diese Liste für viele Dinge benutze: Höhlen, Bäume, Blumen, Gras, Nebel, Wasser. Du kannst sogar mehrere Listen auf verschiedene Arten kombinieren. Hier entferne ich zuerst alle kleineren Höhlen und verbinde dann zwei zufällige Listen
quelle
Wählen Sie einen Punkt auf der Karte. Platzieren Sie den gewünschten Kacheltyp mit einem Basiswert wie 40. Verfolgen Sie, wo Sie die neu gewünschte Kachel platziert haben. Fügen Sie den Startpunkt zu einer Liste hinzu.
Für jeden Punkt in dieser Liste besuchen Sie alle Nachbarn. Solange Sie noch genügend Energie haben (ab 40), fügen Sie ein gewünschtes Plättchen hinzu und fügen Sie es der Liste hinzu, die Sie besuchen möchten. Geben Sie der neuen Kachel weniger Kraft, die Sie bestimmen. Am einfachsten = zufälliges Absenken. Nachdem Sie die Kachel aus der Liste besucht haben, entfernen Sie sie. Beginnen Sie erneut, indem Sie nicht besuchte, aber erstellte Kacheln besuchen.
quelle