Eine einfache Karte, vier Biome und wie man sie verteilt

16

Hier ist die Grundidee: Ich habe ein Rogue-ish, vielleicht Dwarf Fortress-ish-Spiel, mit einer zufällig generierten Überwelt und mehreren Dungeon-Eingängen, die darauf verstreut sind. Ich habe bereits die Dungeons im Grunde genommen abgedeckt, aber ich stecke in einem Aspekt der Überwelt fest.

Die Überwelt, die als 2D-Karte von Bildschirmen betrachtet wird, sollte eine möglicherweise kleckselartige Verteilung von vier verschiedenen Themen oder Biomen aufweisen - Grasland, Wüste, Schnee und Sumpf, von denen jedes eine eigene Gesamtanzahl von Bildschirmen aufweist. Nehmen wir an, die Karte ist 8x8, was 64 einzigartige Bildschirme ergibt. Die Hälfte davon könnte Grasland sein, ein Viertel Wüste, und Sumpf und Schnee bekommen jeweils ein Viertel:

Modell einer möglichen Weltkarte mit Städten und Startort, aber ohne Dungeoneingänge

Es sieht so aus, als hätte die Reduzierung der Farbpalette dazu geführt, dass der Schnee die gleiche Farbe wie der Sumpf hat. Ursprünglich befanden sich in der unteren Ecke acht Schneeschirme und in der Mitte ein leicht gestaffelter Sumpfbereich mit acht Bildschirmen. Tut mir leid, und bitte ignorieren Sie die Ortsmarkierungen.

Das Beste, was ich bekommen konnte, waren einige Schlangenformen, und oft genug mit unsinnigen Kombinationen wie der Wüste, die sich durch den Schnee schlängelt (oder umgekehrt). Ich kann für mein ganzes Leben nicht herausfinden, wie ich es schön und blobig machen kann, geschweige denn, dass es klimatisch (?) Sinnvoll ist. Wie erstelle ich eine Biome-Karte wie im Modell?

Okay, auf Anfrage: Die Welt ist wirklich nicht viel größer als dieses Beispiel, und ich brauche nur einen Weg, um einige Blobs zu verbreiten, die das thematische Erscheinungsbild bestimmen, mit der zusätzlichen Einschränkung, dass Schnee die Wüste nicht berühren kann. Bildschirme rollen nicht, und wenn ein Bildschirm auf "Wüste" eingestellt ist, ist nirgendwo Gras darauf.

Kawa
quelle
Sind Sie bereit, Bibliotheken von Drittanbietern zu verwenden, oder möchten Sie Ihre eigene Lösung codieren?
William Mariager
Ich würde es vorziehen meine eigenen zu programmieren.
Kawa
Die Biomgrößen sind festgelegt?
kaoD
Könnten Sie den Beitrag mit einer Punkteliste der genauen Regeln bearbeiten, denen die Kartengenerierung folgen soll? Es wäre einfacher für uns, mit dem Problem umzugehen, wenn wir genau wissen, was wir wollen.
William Mariager
Bearbeitet, und die Biomgrößen, na ja, ich ging mit denen zum Beispiel. In einer 16x16-Welt könnte die Wüste immer noch ein Viertel der Fläche sein, aber dies dient hauptsächlich dazu, sicherzustellen, dass bestimmte Bereiche vorhanden sind.
Kawa

Antworten:

8

Es gibt viele Möglichkeiten, diese Katze zu häuten, eines der interessanteren ist jedoch die Verwendung von Zellularautomaten . Beginnen Sie mit Ihrem leeren Gitter und fügen Sie ein paar Startzellen an zufälligen Stellen hinzu. Hierbei sollte es sich um einige nicht gemischte Grundtypen von Biomen handeln. Sprich: Gras, Wüste, Schnee, Ozean.

Basierend auf Wachstumsregeln Ihres eigenen Designs, die eine gewisse Zufälligkeit aufweisen könnten (es ist mir egal, dass dies die Idee von CA technisch bricht, oder?), Haben Sie sie bei jedem Schritt in die Karte aufgenommen. Zusätzliche Regeln können so sein, dass Sie sich in einen Sumpf verwandeln können, wenn Sie Ozean sind und sich neben Gras oder Sumpf befinden. Wenn Sie sich in der Nähe von Schnee befinden, können Sie zu Eis werden. Wenn Sie sich in der Nähe von Wüste befinden, können Sie austrocknen und auch zu Wüste werden.

Dasselbe könnte für andere Mischungen gelten, und theoretisch sogar für Untermischungen wie gefrorener Sumpf oder Tundra oder Dschungel, die aus großen Wäldern sprießen, die aus großen Graslandflächen gewachsen sind.

Die Möglichkeiten sind endlos und können auch kontinuierlich sein. Da diese Regeln alle einfach sind, können Sie Umgebungen implementieren, die sich im Laufe der Zeit ändern. In Kombination mit Höheninformationen und Regeln, die diese berücksichtigen, können Sie Seen und Flüsse anbauen, das Wachstum von Wäldern über Bergen und anderen ausgefallenen Dingen blockieren.

Diese Höhenkarte kann das Ergebnis von Perlinrauschen, Diamantquadraten oder sogar ganzen anderen CA-Modellen sein. Tatsächlich können Sie diese Karte im Laufe der Zeit auch modifizieren, indem Sie die Plattentektonik modellieren, Berge hochschieben, Gräben ausheben und sogar Flüsse die Landschaft senken lassen, um Canyons zu erzeugen.

Dieses Kaninchenbau erstreckt sich für immer.

DampeS8N
quelle
Upvoting für den CA-Vorschlag. Es passt gut zu Valmonds Kommentar.
Kawa
Sie wären überrascht, wie einfach eine CA-Lösung für dieses Problem sein kann. Einfache Regeln und eine zufällige Startkarte können bemerkenswert detaillierte und "realistisch" aussehende Landschaften erzeugen.
DampeS8N
Ging mit dem CA-Prinzip. Es ist noch nicht ganz richtig, da das Einzige, was Wüste und Schnee voneinander trennt, einige absolute Positionsregeln sind, aber es ist vorerst gut.
Kawa
1
Eine optionale Lösung für das Schnee- / Wüstenproblem besteht darin, eine Regel zu verwenden, um eine andere Art von Biom zu erstellen, bei der Schnee auf Wüste trifft. Sag mal, Sumpf. Dann kann der Sumpf normal weiter wachsen. Möglicherweise haben Sie noch Schnee- / Wüstenränder, aber in Wirklichkeit ist das etwas natürlich. Tatsächlich ist der größte Teil der Wüste der Erde mit Schnee bedeckt. - Kurz gesagt, der Schnee könnte die Regel haben, dass wenn ein Nachbar Wüste ist, er sich in Sumpf verwandelt.
DampeS8N
11

Kurze Antwort, aber Sie sollten diesen Artikel unbedingt lesen. unbedingt lesen. Es wird ein Algorithmus zur Erzeugung der zufälligen Erzeugung von trockenem Land und Biomes erläutert basierend auf bestimmten Luftfeuchtigkeitszonen und Höhenregionen. In Ihrem Fall legen Sie jedoch einfach Ihre eigenen Werte für die gewünschte Verteilung fest.

(große Bearbeitung) Ich werde dies viel klarer machen, für welche Konzepte der Kartengenerierung Sie sich bewerben müssen. Verwenden Sie ein Koordinatensystem mit 1 Einheit pro Bildschirm in Gleitkommawerten. Erzeugen Sie eine kleine zufällige Menge von Punkten innerhalb dieser Koordinaten, als würden Sie ein Voronoi-Diagramm erstellen, aber die zufälligen Formen werden nicht erstellt. Stattdessen wird das Diagramm durch die Karte impliziert und angenähert, nachdem die Biome festgelegt wurden.

Jeder Punkt ist das Zentrum für jeden Biombereich. Stellen Sie Ihre eigenen Regeln ein, um einen Punkt mit einem Biom zu verknüpfen. Wenn Sie beispielsweise eine Wüste im Osten und nicht zu weit im Süden oder Norden haben möchten, werden alle Punkte, die größer als ein bestimmter X-Wert und in einem bestimmten Y-Bereich sind, von einer Wüste umgeben.

Verknüpfen Sie jeden Bildschirm mit einem dieser Punkte. Nehmen Sie dazu die Bildschirmmitte in XY-Koordinaten (z. B. 4.5, 8.5) und geben Sie den Punkt zurück, der der Bildschirmmitte am nächsten liegt.

Hier ist eine grobe Zeichnung eines Formdiagramms im Raster der Bildschirme. Wir beschäftigen uns nicht wirklich mit den Linien, die die Formen umgeben, aber sie sollen veranschaulichen, wie die Bildschirme beginnen, sich den Formbereichen anzunähern.

Voronoi-Gitter

Wiederholen Sie diesen Vorgang für jeden Bildschirm und geben Sie jedem einen eigenen Hintergrund.

ChrisC
quelle
Ich habe das schon einmal gesehen, und es ist ein bisschen zu Panzerfaust auf einer Mücke für meinen Geschmack.
Kawa
Na gut, das ist milde ausgedrückt. Es ist sehr Panzerfaust auf einer Mücke. Das 8x8-Beispiel war nicht nur ein Beispiel - die Welt wird nicht groß genug sein, um diese Lösung zu rechtfertigen.
Kawa
Okay, ich verstehe jetzt. Sie müssen die Biome wirklich nicht auf jeder einzelnen Kachel der Karte unterscheiden. Auch das vorgeschlagene Konzept des Artikels scheint auf den Autor zugeschnitten zu sein, aber einige Teile können herausgegriffen werden. Ich bearbeite meine Antwort, um sie klarer zu machen.
ChrisC
Eine noch zu komplexe Lösung. Hier gibt es keine Höhe oder Luftfeuchtigkeit. Alles was ich brauche, alles worum ich bitten wollte, war eine Art "Ausbreiten" von Wüsten-, Sumpf- und Schneeklumpen bis zu den erforderlichen Mengen, wobei einige zusätzliche Regeln befolgt wurden, wie "Schnee kann der Wüste nicht zu nahe kommen". .
Kawa
@ Kawa: Scheint, als ob Sie bereit sind, Ihre eigene Lösung zu entwickeln und zu schreiben! Nach allem, was ich sagen kann, haben Sie alles im Kopf, machen Sie es einfach! :) Denken Sie daran, dass es nicht der ultimative Kartengenerator der Welt sein muss, solange es so aussieht, wie es ist. ;)
Zolomon
1

Antwort 1:

Schnee und Wüste wachsen lassen, dann die (verbotenen) Kreuzungen aufsuchen und dort (mehr oder weniger große) Sümpfe wachsen lassen.

Rince und wiederhole.

Antwort 2:

Für den 'Blob'-Teil habe ich meinen Kommentar (wie gewünscht) in den Beitrag verschoben:

Wenn Sie durch Iteration herumwachsen, dh. Setze 1 Punkt Wüste aus und wachse dann zufällig um einen beliebigen Wüstenpunkt (nimm jedes Mal zufällig einen der vorhandenen Wüstenpunkte und addiere 1 Punkt auf eine seiner Seiten (wo es noch nichts gibt)), dann solltest du einen Blobby-Effekt bekommen ( keine langen Schlangen zum Beispiel).

Sie können auch eine Regel hinzufügen, damit Sie kein Wüstenplättchen erstellen können, wenn sich Schnee auf einem Plättchen in der Nähe befindet.

Valmond
quelle
Das hilft nicht gerade bei dem blödsinnigen Aspekt des Problems.
Kawa
2
wenn Sie durch Iteration herumwachsen, dh. Setze 1 Punkt Wüste aus und wachse dann zufällig um einen beliebigen Wüstenpunkt (nimm jedes Mal zufällig einen der vorhandenen Wüstenpunkte und addiere 1 Punkt auf eine seiner Seiten (wo es noch nichts gibt)), dann solltest du einen Blobby-Effekt bekommen ( keine langen Schlangen zum Beispiel).
Valmond
Sie können auch eine Regel hinzufügen, damit Sie kein Wüstenplättchen erstellen können, wenn sich Schnee auf einem Plättchen in der Nähe befindet.
Valmond
Valmond, gib eine Antwort.
Kawa