In großen prozeduralen Landschaftsspielen wirkt das Land langweilig, aber das liegt wahrscheinlich daran, dass die reale Welt größtenteils langweilig ist, mit nur begrenzten Orten, an denen die Szenerie dramatisch oder taktisch ist.
Betrachtet man die Weltgeneration unter diesem Gesichtspunkt, muss ein Landschaftsgenerator für ein Spiel (das heißt nicht aus Gründen der Landschaft, sondern aus Gründen des Gameplays) nicht den Regeln der Landschaftsgestaltung folgen, sondern stattdessen einige Regeln, die mit dem geheiratet werden Erwartungen des Spielers. Zum Beispiel könnte es einen Choke-Punkt- / Routengenerator geben, der Hügelschluchten, Flüsse und Berge zwischen Städten erzeugt, anstatt auf natürliche Weise Städte entstehen zu lassen, die auf dem Land verstreut sind, basierend auf Ressourcen oder Bedingungen, die durch die Berge und Niederschlagsmuster erzeugt werden.
Gibt es eine solche Arbeit? Beginnen Sie mit Städten oder Ballungszentren und fügen Sie anschließend Terrain hinzu?
Der Grund, den ich frage, ist, dass ich vorher darüber nachgedacht hatte, vorhandene Karten aus Fantasy-Fiction (meiner eigenen und anderen) zu nehmen, die Informationen als Ausgangspunkt in das System zu übernehmen und dann eine gute Welt zu generieren, in der ich damit spielen kann. Dies scheint durch die vorhandene Technologie abgedeckt zu sein, dh, der Designer gibt alle erforderlichen Informationen wie Stadtbevölkerung, Ressourcen, Biomasse, Straßennetze und Flüsse ein und lässt dann die PCG die Lücken schließen.
Aber jetzt frage ich mich, ob es möglich sein kann, dass ein Inhaltsgenerator auch das gesamte Design generiert. Generieren Sie die Städte und Ballungszentren und gleichen Sie sie so aus, dass ein natürlicher Bedarf an Handel besteht. Generieren Sie dann die Positionen und Verbindungen. Erstellen Sie dann aus der Art der Stadt die Liste der erforderlichen Ressourcen, die in der Nähe vorhanden sein müssen, und geben Sie sie möglicherweise erst dann an Einige Regeln, wie man die Reise zwischen Städten glaubwürdig und interessant macht, generieren den endgültigen Inhalt, einschließlich der Straßen, der Drosselpunkte, der Brücken und Tunnel, der Fähren und des Geländes, einschließlich der Biomedien und der Küste, die notwendig sind.
Wenn dies schon einmal gemacht wurde, würde ich gerne wissen, was schief gelaufen ist und was richtig gelaufen ist.
quelle
Antworten:
Hier ist ein großartiges Beispiel für die prozedurale Geländegenerierung unter Verwendung von Parametern wie Feuchtigkeit, Höhe usw. http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
quelle
Ich glaube, ich habe die letzten drei Tage auf diese Frage zurückgegriffen und mich gefragt, wie die prozedurale Erzeugung von Welten oder sogar Galaxien gleichzeitig deterministisch sein kann (zum Beispiel immer denselben Inhalt aus demselben Samen erzeugen) ), sehen natürlich aus und haben dennoch einzigartige, interessante, ungewöhnliche oder sogar schöne Merkmale in ihrer Landschaft.
Ich gehe immer wieder auf die gleiche generische Antwort zurück, dass dies stark vom Genre des Spiels und seiner eigenen internen konsistenten Geschichte innerhalb der Geschichte abhängt. Zum Beispiel, postapokalyptisches Genre, warum sollte jemand eine Metropole mit massiven Mauern mitten in einem Ödland bauen und alle Menschen in ihr jämmerlich leben lassen? Warum solche Planeten kolonisieren? Warum sollte man eine Stadt auf einer schwimmenden Insel errichten? Warum machen Zwerge Städte innerhalb von Bergen? Und dein böser Feind kommt aus feurigem Land mit aktiven Vulkanen? Regel der Kühle?
Es geht also alles auf Ihre eigene Antwort zurück, bei der Sie Informationen in die PCG eingeben und diese Lücke füllen, sowie auf die andere Antwort zur Erzeugung von Welten, die den Handlungslinien und der gesamten Geschichte entsprechen.
Die Handlung erzeugt also Gameplay-Elemente, die eine geeignete Landschaft erzeugen.
Trotzdem frage ich mich, ob eine Geschichte, die einen Baum von konsistenten Handlungslinien generiert, das gesamte Gameplay-Design hervorbringt, das Sie suchen.
(PS: Die gleichen drei Tage, in denen ich nachdachte, brachten mich zu einer weiteren Antwort auf ein möglicherweise auftretendes Problem: Es sollte ein automatisiertes Testtool geben, mit dem überprüft werden kann, ob das generierte Spieldesign einwandfrei ist, z Zeit, eine erzeugte Festung zu besiegen
quelle
Stachniak und Stürzlingers " Ein Algorithmus für die automatisierte Deformation von fraktalem Terrain " sind nur Artikel, die sich mit ähnlichen Themen befassen, die ich auf Anhieb finden konnte . Es wird davon ausgegangen, dass Sie zuerst das Terrain erstellen und es verformen (oder der Algorithmus wählt die Parameter aus, mit denen es automatisch verformt werden soll), um sie später Ihren Einschränkungen anzupassen, sodass die Frage nicht direkt beantwortet wird. Die darin vorgestellten Methoden könnten sich jedoch für andere mit ähnlichen Problemen als nützlich erweisen.
quelle
Würde ein solcher Algorithmus nicht automatisch mehr "taktisches" Terrain erzeugen, wenn Straßen zwischen Städten erzeugt werden?
Unter der Annahme, dass Straßen nur eine bestimmte Höhenänderung pro Strecke aufweisen können, würde die Geländehöhe an die Höhe der Straße angepasst, was zur Bildung von Engpässen führen würde, wenn eine Straße einen Hügel / eine Schlucht / irgendetwas passiert. Natürlich müsste auch das Ausmaß der Änderung der Geländehöhe begrenzt werden, oder Sie hätten Straßen, die direkt durch die höchsten Gipfel führen.
quelle
Als ich bei Cryptic Studios war, haben wir an so etwas für die Missions- / Questgenerierung gearbeitet. Die Designer haben die Missionsziele etwas abstrakter formuliert und diese mit einer gewissen Zufälligkeit in der "Reihenfolge der Spielerreisen" angeordnet und Wege dazwischen geschnitten.
Eine frühe Version, die mit Star Trek Online als Genesis-Mission ausgeliefert wurde (Archiv) . Zu der Zeit waren wir sehr aufgeregt darüber, aber ich habe keine Ahnung, wie viel es nach meiner Abreise fortgesetzt hat oder ob es in den Foundry-Tools für Endbenutzer verfügbar ist. (Welches war das endgültige Ziel.)
quelle
Ein typischer Ansatz für die prozedurale Geländegenerierung besteht darin, bestimmte Merkmale von Hand zu zeichnen und den Generator zu verwenden, um den Rest auszufüllen. VTerrain hat bestimmt etwas Interessantes zu diesem Thema.
quelle
Lighthouse 3D bietet einen guten Überblick über einige einfache Algorithmen zur Geländegenerierung. Wenn Sie mit einer Karte beginnen, die Städte oder andere interessante Gebiete enthält, können Sie mit einigen dieser Techniken jedes gewünschte Terrain generieren. Die intelligente Verwendung des Fehleralgorithmus kann beispielsweise verwendet werden, um Klippen oder Täler um Ihre Stadt herum zu erstellen, die als Drosselstellen fungieren. Die Verwendung des Kreisalgorithmus wäre auch eine großartige Möglichkeit, Terrian für die Turmplatzierung zu generieren. Dies sind nur einige Beispiele, aber die Verwendung dieser einfachen Algorithmen wäre ein ziemlich einfacher Weg, um ein interessantes Terrain in Ihren Städten zu generieren.
quelle
Vielleicht bin ich zu stark vereinfacht, aber warum sollte man die Tatsache ignorieren, dass Städte auf vorteilhaftem Terrain gebaut sind, oder, aus welchem Grund auch immer, jede Größe eines zivilisierten Gebiets? Vielleicht bietet das Gelände einen taktischen Vorteil für eine militärische Rate oder vielleicht gibt es eine Holzmühle an der Kreuzung eines großen Waldes und eines Flusses, der ein größeres Dorf stromabwärts hat. Sogar "heilige" Orte basieren auf dem Terrain, selbst wenn die einfache Tatsache, dass dieser bestimmte Abschnitt des Landes zu einem bestimmten Zeitpunkt als heilig angesehen wurde, usw. Unabhängig von den Konsequenzen existiert die letzte Ruhestätte der überwiegenden Mehrheit der Zivilisation in einem physischer Ort aus sehr geländebasierten Gründen. Sogar im Fall einer Stadt, die einfach deshalb aufkeimt, weil zwischen zwei größeren Städten genug Handel stattfindet, um einen Mittelsmann zu rechtfertigen, wenn Sie so wollen. Diese Stadtlage würde auf der Grundlage des Weges des geringsten Widerstands gewählt. Es sollte an einem Ort platziert werden, an dem sich gutes, flaches Ackerland für die lokale Nahrungsmittelversorgung und Land für den Bau von Straßen anbietet. Ich bin sicher, Sie haben darüber nachgedacht ...
Wenn Sie also zuerst die Städte bauen wollen, warum nicht? Warum nicht die Stadt, das Dorf, die Siedlung oder was auch immer bauen, zusammen mit einem anständigen Stück von Hand gebautem Gelände, das diese Art von Einrichtung unterstützt?
Nehmen Sie als Beispiel prozedurale Biome. Sie werden normalerweise auf pseudozufällige Karten für Temperatur, Luftfeuchtigkeit und Höhe angewendet. Wenn Sie die Stadt (oder die Holzmühle usw.) bereits entworfen haben, haben Sie wahrscheinlich eine genaue Vorstellung davon, wie das Land aussehen muss. Wenn ich das nicht missverstehe, ist das genau Ihre Sache. Nehmen Sie ein Fantasy-Gebäude wie Orthanc, vollgepackt mit Grundrissen und umgebendem Gelände, das Sie pflichtgemäß nachgebildet haben. Nun, wir wissen, dass Orthanc je nach Zeitachse von einem riesigen Wald umgeben war, der mit Ents (Baumkreaturen) usw. bevölkert war. Wenn Sie versuchen, dies zu replizieren, macht es für mich keinen Sinn, ein zufälliges Terrain anzuwenden. Abgesehen davon, wenn Sie diese Einstellung für den Turm selbst und den umliegenden Wald erstellt haben, was ist dann zwischen Orthanc und Ihrer nächsten Stadt?
Ein einfacher Ansatz könnte darin bestehen, Ihre prozedurale Geländegenerierung zu schreiben, Ihre Einstellungen in einem zufällig generierten Geländesystem zu platzieren und Ihre Höhen um Ihre festgelegte Einstellung und Bratsche zu verschieben.
Ich denke jedoch, dass Sie am besten mit einer Kombination aus Umgebung, Gelände und definiertem Biom zurechtkommen und sicherstellen, dass Orthanc in einem prozedural generierten großen Waldbiom platziert wird. Abhängig davon, wie Sie es codieren, können Sie für jede vordefinierte Einstellung, jedes Gebäude oder jede Stadt, die Sie geformt haben, Min / Max-Biome, Terrain, Luftfeuchtigkeit usw. festlegen. Wäre dies eine kleine Aufgabe in einer vollwertigen fotorealistischen 3D-Welt? Offensichtlich nicht.
Ich denke, wenn ich das versuchen würde, würde ich zuerst die prozeduralen Algorithmen der Küste untersuchen. Fast alle Zivilisationen in der Geschichte sind jeder Küste gefolgt, sei es ein Ozean, ein Meer oder ein großer See. Dies ist der Weg mit dem geringsten Widerstand für das Wachstum, da es wahrscheinlich reichlich Fischfang gibt, Bäume in der Nähe nach Holz und sicherlich schnelleres Reisen, selbst mit rudimentären Wasserfahrzeugen (zumindest in eine Richtung).
Ich würde denken, Sie müssten komplett rückwärts bauen. Denken Sie, pseudozufällige Punkte auf einer Karte, die Zivilisationspunkte darstellen, möglicherweise mit einem Rauschalgorithmus, der die Populationen dieser Zivilisationen bestimmt, bevor etwas anderes bestimmt wird. OK, also 1 Punkt ergibt eine Bevölkerung von 1.000, weitere 2.000.000 (oder was auch immer, natürlich abhängig von Ihrer Weltbevölkerung). Warum? Warum gibt es so viele Einwohner? Eine Bevölkerung von 1.000 könnte die kleine Holzmühlengemeinschaft sein. Vielleicht ist es eine Bergbaugemeinde, wenn sie sich auf der Nordseite der Karte befindet, falls Sie eine kugelförmige 3D-Welt erschaffen. Hier wird es ein bisschen unklar, weil ich nicht weiß, ob Sie in alle Richtungen unendlich weit gehen und NESW bei der Bestimmung von Biomen sinnlos machen oder eine sehr reale "Erde" wollen.
Wenn Sie jedoch Ihre Zivilisationen auf der Grundlage von pseudozufälligen Lärmpopulationen plumpsen, können wir sicher ein paar Regeln annehmen (aber vielleicht keine absoluten) wie ... Je größer die Zivilisation ist, desto wahrscheinlicher ist die Anzahl der nützlichen Ressourcen Hand und das Gelände, um sie zu unterstützen. Wertvolle Mineralien, Hölzer usw. und Übelkeit müssen vorhanden sein oder es muss ein riesiges Handelssystem vorhanden sein, um solch ein riesiges Unternehmen zu unterstützen. Auf dieser Grundlage können Sie Autobahnen von Stadt zu Stadt und Straßen zu den abgelegenen Siedlungen wie z. B. Tiefbauarbeiten generieren. Wählen Sie Zivilisationspunkte aus, die eine gute Küstenlinie formulieren, und lassen Sie die Bevölkerungspunkte vollständig von der Karte verschwinden, auf denen Sie Ihre Straßen füllen müssen Ozeane (oder vielleicht haben Sie Atlantis in Ihrer Welt oder Offshore-Ölbohrer).
Das Wiederauffüllen des dazwischen liegenden Terrains hängt vollständig von Ihrem Biome-Ansatz ab. Wenn Sie eine unendliche Welt in jede Richtung haben, legen Sie Orthanc dort ab, wo es in Bezug auf die Bevölkerung passt, forcieren Sie es in ein Waldbiom und bauen Sie es nach außen, bis Sie auf halbem Weg zu Ihrem nächsten voreingestellten Ziel sind, an dem Ihr Algorithmus die gleiche prozedurale Generierung durchführt um. Lerp / Blend die beiden Terrains zusammen, wenn sie sich treffen und ja, das ist eine offensichtliche Vereinfachung.
Ohne ein wirkliches Wissen darüber, was Sie tatsächlich mechanisch erreichen wollen, kann ich nur Ideen und möglicherweise auch schlechte wegwerfen. Ich denke, Ihr Ansatz hat seine Berechtigung, auch wenn er in der Realität absolut fantastisch ist, denn Sie zielen auf das ab, was in jedem Spiel immer der wichtigste Faktor ist: Hat der Spieler Spaß? Oder erstelle ich eine zufällige Welt, die nicht langweilig ist und daher keinen Spaß macht?
Was würde auch interessant werden, und dies könnte ein Teil der Zivilisationsgeneration in jedem Spiel sein, ob Gelände zuerst oder nicht. Was passiert, wenn Sie zwei große Städte nebeneinander plumpsen? Was heißt das? Führen sie krieg Handelt es sich um massive Handelsgeschäfte zwischen zwei florierenden Nationen? Was für Feinde lauern in den Wäldern dieser Holzmühle?
Ich denke, eines ist sicher, wenn Sie versuchen, Terrain basierend auf "Städten" zu bauen, und das Terrain wird direkt von der Bevölkerung dieser Stadt beeinflusst, sowohl in Bezug auf Landschaft als auch auf natürliche Ressourcen (und vielleicht sogar in Bezug auf Schönheit).
Ich bin mir nicht sicher, ob ich tatsächlich etwas beantwortet habe oder ob dies angemessen war, aber es ist ein sehr interessantes Konzept und ich würde gerne hören, wohin Sie damit gehen.
quelle
Ich würde die Gameplay-Funktionen gleichzeitig als Teil desselben Prozesses generieren. Es gibt eine Reihe von Möglichkeiten, Terrain anhand von Regeln zu erstellen. Dieser YouTube-Vortrag von den Path to Exile-Entwicklern ist ein ziemlich gutes Beispiel: https://www.youtube.com/watch?v=GcM9Ynfzll0 . Für einen weniger vorgefertigten Ansatz sieht dies auch interessant aus: https://www.youtube.com/watch?v=RAtdFKiqs34 . Sie können Perlin-Rauschen verwenden, um Höhen für jeden Voronoi-Scheitelpunkt zu generieren und von dort fortzufahren
quelle