In diesem RPG.SE-Beitrag wird eine lange verlorene Seite mit mehreren Online-Generatoren erwähnt.
Ich bin besonders neugierig auf die Art und Weise, wie Städte entstanden sind. Nehmen Sie dieses Bild zum Beispiel:
Obwohl viele Dinge grafisch verbessert werden konnten, war es angesichts der damals verfügbaren Tools (Mitte bis Ende der 90er Jahre) sehr gut:
- Das Straßenlayout scheint ziemlich organisch zu sein (auch wenn alle Straßen orthogonal angeordnet sind).
- Nicht alle Straßen sind notwendigerweise miteinander verbunden, aber es fühlt sich richtig an .
- Gebäude werden an glaubwürdigen Stellen platziert.
- Sogar Bäume scheinen an logischen Stellen platziert zu sein .
Ich denke, es würde Spaß machen, es zu versuchen und es selbst zu versuchen. Zumal meine vorherigen Versuche zu "blockig" waren:
Sie werden feststellen, dass ich viele der Eigenschaften mit nicht ganz messbaren Adjektiven beschreibe ( scheint , fühlt , glaubwürdig usw.), so dass es mir schwer fällt, sie in Anweisungen und letztendlich in einen Algorithmus zu übersetzen.
Gibt es bewährte Algorithmen für die Stadterzeugung?
Ich verstehe, dass dies zu weit gefasst zu sein scheint. Bedenken Sie Folgendes: Wenn ich nach einem Algorithmus zum Generieren von Karten kontinentaler Landmassen fragen würde, würde ich sofort Verweise auf Perlin und andere Rauschalgorithmen erhalten. dicht gefolgt von Voronoi.
Ich habe Fragen wie diese gesehen, aber sie scheinen bereits eine konkretere Idee zu haben (dh: 2x2 Häuser, feste Anzahl von Häusern, Einschränkungen bei der Platzierung von Kanälen und Straßen).
Was ich gerne hätte, ist etwas weniger eingeschränkt. Außer vielleicht für das Rasterlayout, das für einen ersten Versuch viel einfacher sein sollte als beispielsweise das L-System.
quelle
Antworten:
Introversion Software hat einen wirklich beeindruckenden Stadtgenerator für das auf unbestimmte Zeit
abgesagteProjekt Subversion erstellt :Der Algorithmus wurde entwickelt, um große, moderne Metropolen zu generieren. Dieselben Techniken können jedoch verwendet werden, um mehr ländliche Siedlungen zu schaffen.
Es handelt sich um einen Top-Down-Algorithmus, der zuerst die groben Umrisse generiert und dann immer mehr Details generiert, die in diese passen (für den entgegengesetzten Bottom-Up-Ansatz zur prozeduralen Generierung überprüfen Sie die Antwort von uliwitness). Hier ist ein Video, das den laufenden Algorithmus visualisiert .
Der Algorithmus scheint wie folgt zu funktionieren (leicht vereinfacht):
In Bezug auf die Platzierung von Bäumen: Mein erster Ansatz wäre, diese in den Algorithmus zur Gebäudegenerierung zu integrieren. Ein Gebäude muss sein Grundstück nicht vollständig ausfüllen. Sie können den freien Raum mit geeigneten Dekorationsgegenständen füllen.
Das Problem beim Top-Down-Ansatz besteht darin, dass zwar eine plausible Stadt generiert wird, jedoch möglicherweise keine plausible Stadt mit allem, was Sie möchten . Nehmen wir an, jede Stadt in Ihrem Spiel benötigt einen Waffenladen, einen Rüstungsladen, einen Trankladen und ein Gasthaus. Der obige Algorithmus wählt Gebäude basierend auf den Anforderungen des Grundstücks aus, sodass Sie möglicherweise 12 Rüstungsgeschäfte haben, aber kein einziges Gasthaus. Ich würde dieses Problem in der Phase der Gebäudeerzeugung angehen. Bevor Sie zufällig Gebäude erstellen, gehen Sie Ihre Liste der Gebäude durch, die Sie haben müssen, und wählen Sie für jedes Gebäude das am besten geeignete aus. Dann füllen Sie die restlichen Grundstücke mit zufälligen Gebäuden.
Ich freue mich darauf, die prozedural erzeugten Städte in Ihrem Spiel zu erkunden.
quelle
Holen Sie sich Einschränkungen aus dem wirklichen Leben
Oft beginnt die Antwort darauf, wie man den richtigen Algorithmus findet, damit, wie diese Dinge im wirklichen Leben passieren. Hast du dir das angeschaut? Auf den ersten Blick fällt mir Folgendes ein:
Wenden Sie sie auf Ihre Topographie an
Sobald Sie diese Einschränkungen haben, können Sie versuchen, einen Algorithmus darum herum zu erstellen. Generieren Sie beispielsweise Ihre Topografie und verteilen Sie die benötigten Ressourcen auf der Karte (behalten Sie möglicherweise kleine Ablagerungen der wichtigsten Ressourcen im Startbereich im Auge, dann größere Ablagerungen weiter voneinander entfernt). Hier kommen natürlich die Bedürfnisse und die Mechanik Ihres Spiels ins Spiel, aber Sie werden wahrscheinlich auch ein zufälliges Element hinzufügen.
Bauen Sie dann Unternehmen (und ihre Wohngebäude) in der Nähe der Ressourcen, die sie nutzen. ZB ein Steinbruch neben einem großen Berg. Fügen Sie dann die von ihnen benötigte Infrastruktur hinzu. ZB ein Handelsposten mit Post und Taverne, wo sie Geschäfte machen und ihr Produkt verkaufen können, eine Schmiede, um Werkzeuge usw. bereitzustellen.
Um zu entscheiden, was wohin geht, teilen Sie die Karte mithilfe einer Gewichtungsfunktion in Kacheln auf, in denen Sie für jede Kachel eine Zahl berechnen, wie wünschenswert sie für einen bestimmten Zweck ist. Legen Sie die Gebäude in die begehrtesten Fliesen für diese Art von Gebäude. Fügen Sie Regeln wie "Ein Handelsposten kann 50 Unternehmen oder 100 Häuser verwalten" hinzu, die die Wahrscheinlichkeit erhöhen, einen weiteren Handelsposten hinzuzufügen, wenn eine Stadt eine bestimmte Größe erreicht.
Sobald Sie dies haben, sollten Sie einige ziemlich anständige Karten bekommen. Wenn Sie feststellen, dass Karten alle als unnatürliche Formen enden, fügen Sie Ihren Gewichtungsfunktionen für diese Formen Strafen hinzu, z. B. "Wenn meine Straße direkt neben einer anderen Straße endet, -100 Erwünschtheit" oder "Wenn sich meine Straße selbst kreuzt, -100." Erwünschtheit "usw. Sie können jederzeit ein zufälliges Element hinzufügen, um ein ausgefalleneres Gefühl zu erzielen, oder andere Mechaniken wie" Wenn eine Kreuzung mehr als N Gebäude mit ihren Straßen verbunden hat, verwandeln Sie sie in einen Kreisverkehr ".
Sie können diese Einschränkungen sogar verwenden, um verschiedenen Karten ein anderes Gefühl zu verleihen, z. B. wenn ein bestimmtes Land mehr Berge in seiner Topographie hat oder wenn eine bestimmte Kultur mehr kurvenreiche Straßen baut und eine andere gerade Straßen usw. bevorzugt, indem Sie einfach eine Ihrer Karten ändern Gewichtungsfunktionen.
Vereinfachen
Natürlich ist dieser Ansatz zu komplex für Spiele, die keine Handelssimulationen sind, aber arbeiten Sie dies trotzdem aus und sehen Sie, welche Arten von Gebäuden für Ihr Spiel sinnvoll sind, und beseitigen Sie die nicht benötigten. Überlegen Sie sich dann vereinfachte Regeln wie "Städte in der Nähe eines Flusses, eines Berges oder eines guten Bodens platzieren. 1 Gebäude pro 100 Ressourcen, Unternehmen nach Ressourcentyp, 10 Wohngebäude für jeden vollständigen Satz von Lebensmitteln / Handwerksressourcen ... oder einfach". 1 m Fluss / 1 m 2 Boden können 10 Wohngebäude tragen ... was auch immer für ein Spiel sinnvoll ist. Wenn Sie jedoch wissen, wie viel Fläche Sie haben (z. B. keine Gebäude an steilen Berghängen) und wie viele Gebäude die Fläche tragen kann, platzieren Sie einfach mehrere Gebäude in dieser Fläche, bis sie voll ist (z. B. 1 Geschäftsgebäude, 10 Wohngebäude) , 3 Infrastruktur oder was auch immer) und verbinden sie mit Straßen.
quelle
Have you looked into that?
Ich habe. Nun, irgendwie (ich konnte mir nicht viele "echte Regeln" vorstellen). Aber dies ist im Vergleich zu meinen vorherigen Versuchen ein ziemlicher Augenöffner: Ich konnte keine Ressourcen erkennen, die ich möglicherweise nicht zeichne (dh es gibt einen Wald im Osten ... unabhängig davon, ob ich ihn zeichne oder nicht).