Wie kann ich Fantasy-Maps programmatisch generieren?

Ich habe diesen Twitter-Bot https://twitter.com/unchartedatlas gefunden , der Karten postet, die aussehen, als kämen sie aus einem Pulp-Fantasy-Roman.

Geben Sie hier die Bildbeschreibung ein

Irgendeine Idee, wie sie gemacht werden?

Antworten (3)

Glücklicherweise hat der Autor, Martin O'Leary, hier eine ziemlich detaillierte Anleitung zum Algorithmus zur Erstellung der Karten veröffentlicht: http://mewo2.com/notes/terrain/ sowie zur Erstellung der Namen hier: http:/ /mewo2.com/notes/naming-language/ .

Eine kurze Zusammenfassung des Algorithmus, der in Martin O'Learys Beitrag behandelt wird:

  • Gitter: Erstellen Sie eine Höhenkarte mit einem Gitter aus zufälligen Punkten. Zufällige Punkte sehen nicht naturalistisch aus, wenden Sie also eine Iteration des Lloyd-Algorithmus auf die Ecken der Voronoi-Polygone an.

  • Grober Umriss: Anwenden einer Reihe von Grundelementen (konstante Neigung, Kegel, Kleckse) und Operationen (normalisieren, runde Hügel, durchschnittliche lokale Höhe, festgelegter Meeresspiegel) können variiert werden, um verschiedene Arten von Landschaften wie Küsten, Inseln usw. zu erzeugen Bergketten.

  • Erosion: Wenden Sie einen konstanten Wasserfluss über die gesamte Karte an und verwenden Sie den Planchon-Darboux-Algorithmus, um die Vertiefungen zu füllen. Berechnen Sie den Wasserfluss, um Flüsse zu erhalten.

  • Gelände rendern: Küstenlinie ist dort, wo die Höhenkarte Null kreuzt. Flüsse basierend auf dem Wasserfluss und einer gewissen Glättung der Punkte. Wenden Sie Schattierung auf die Neigung an.

  • Städte und Grenzen: Stadt in Flussnähe platzieren und Nähe zu anderen Städten und zum Kartenrand bestrafen. Markieren Sie die Region anhand von Entfernung, Neigung, Wasserfluss und Küstenlinien.

Dies ist eine grobe Zusammenfassung von Martin O'Learys Beitrag. Ich empfehle wirklich, den Beitrag zu lesen, da der Autor detailliert auf die programmatische Geländegenerierung eingeht und der Beitrag selbst interaktive Elemente enthält.

In ähnlicher Weise enthält der Beitrag des Autors zum sprachlichen Aspekt der Generierung der Ortsnamen auch interaktive Elemente.

Das Geländekartenprojekt ist Open Source auf Github hier: https://github.com/mewo2/terrain

Das Benennungsprojekt ist Open Source auf Github hier:

https://github.com/mewo2/naming-language

Ein weiterer ausführlicher Artikel zur programmatischen Kartengenerierung: www-cs-students.stanford.edu/~amitp/game-programming/…
Links verrotten. Möchten Sie stattdessen den Prozess in dem Beitrag beschreiben?
@Mast, was in diesen Links steht, wäre eine sehr, sehr, sehr lange Antwort, die noch fehlt ...
Der Hauptfehler bei diesen Programmen ist, dass sie keine vollständige Welt abbilden und es extrem schwierig wäre, sie zusammenzusetzen. Ich wünschte wirklich, jemand hätte eines von denen gemacht, die auf globaler Ebene funktionieren, aber das ist unwahrscheinlich, weil es so schwierig ist, solche Dinge richtig zum Laufen zu bringen.
@Mast Ich stimme dem Link Fäulnis zu, aber wenn Sie sich den Beitrag tatsächlich angesehen haben, ist er (a) lang und (b) interaktiv. Ich vermute, dass jede der Referenzen innerhalb des Beitrags allein eine eigene Diskussion verdienen würde, dh nur der Grid-Abschnitt spricht von Lloyd-Relaxation und Voronoi-Polygonen. Der Autor richtet sich an ein technisches Publikum, aber da er den Code und seinen Denkprozess bereitstellt, dachte ich, es wäre zumindest eine Referenz, die für diese Site geeignet ist.
@Durakken Es wäre besser als das, was es derzeit ist. Wenn die Links jetzt verrotten, kann die gesamte Antwort weggeworfen werden.

Auf der Website des Erstellers ist ziemlich gut dokumentiert, wie sie es gemacht haben.

(Dies wurde im Chat angesprochen, und wir haben OP ermutigt, seine eigene Frage zu beantworten, da dies eine nützliche Ressource ist und es der beste Weg zu sein schien, es für die Community zu dokumentieren.)

Es gibt auch einen wunderbaren Fantasy-Map-Generator unter: https://donjon.bin.sh/fantasy/world/

Außerdem ein wissenschaftlicherer Weltkartengenerator auf derselben Seite - https://donjon.bin.sh/scifi/world/ & auch ein vollständiger Sternensystemgenerator: https://donjon.bin.sh/scifi/system/