Dieses Forum nutzt Cookies
Dieses Forum nutzt Cookies um Anmeldeinformationen (keine Passwörter) zu speichern. Dabei werden diese Informationen als kleine Textdateien auf deinem Endgerät abgelegt. Sie können nur durch dieses Forum ausgelesen werden und stellen kein Sicherheitsrisiko dar. Neben deinem letzten Login wird auch abgespeichert, welche Themen du bereits gelesen hast.

Zudem wird ein Cookie angelegt, in dem abgespeichert wird, ob du diesen Hinweis gelesen hast. Damit wird er nicht jedes mal angezeigt.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Patch: Rainfall River Generator
Verfasser Nachricht
ic111
Gleisarbeiter
*

Beiträge: 87
Registriert seit: Oct 2010
Beitrag #1
Patch: Rainfall River Generator
Ich hab da grade was releast... Zwinkern

Siehe http://www.tt-forums.net/viewtopic.php?f=33&t=71970

Kurz gesagt ein Flußgenerator, der endlich mal richtige Flüsse in sowas wie eine Alpen-Heightmap reinbringen kann.

- Jedes Tile kriegt eine Einheit Wasser von oben
- Wasser fliesst abwärts, summiert sich dadurch in den Tälern auf
- Wenn mehr als ein konfigurierbarer Schwellwert an Wasser da ist, gibts einen Fluß
- Wenn noch deutlich mehr da ist gibts optional auch einen breiteren Fluß, z.B. Breite 2 oder 3.
- Da so ein Fluß in einem engen Tal doch erheblich Platz wegnimmt gibts optional auch die Möglichkeit, Flußtäler automatisch breiter zu machen, Erosion quasi
- Seen gibts da wo Senken sind, von denen generiert sowohl tgp als auch der Heightmap-Lade-Code tendenziell genug, sodass ich bisher nicht die Veranlassung gesehen habe das im Generator auch selber herbeizuführen, könnte ich aber machen
- Ein detailliertes Konfigurationsfenster.

Handbuch und Patch gibts unter dem Link im englischen Forum, die Liste oben ist auch nur eine knappe Übersicht um was es geht, für mehr Details bitte dort weiterlesen oder hier fragen Zwinkern
(Dieser Beitrag wurde zuletzt bearbeitet: 30.11.2014 20:59 von ic111.)
30.11.2014 20:53
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #2
RE: Patch: Rainfall River Generator
Sieht sehr cool aus! Wird es auch möglich sein, es schon auf bestehende Karten "regnen" zu lassen?

DACH Trains
01.12.2014 09:11
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Bernhard
Forum-Team
*****

Beiträge: 9.370
Registriert seit: Jan 2004
Beitrag #3
RE: Patch: Rainfall River Generator
Schaut gut aus!

"Das Böse triumphiert alleine dadurch, daß gute Menschen nichts unternehmen!" Edward Burke, 1729-1797

"Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont!" Konrad Adenauer, 1876-1976 Zwinkern
01.12.2014 10:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Auge
Geschäftsführer
***

Beiträge: 847
Registriert seit: Mar 2009
Beitrag #4
RE: Patch: Rainfall River Generator
Hallo

(01.12.2014 09:11)officercrockey schrieb:  Sieht sehr cool aus! Wird es auch möglich sein, es schon auf bestehende Karten "regnen" zu lassen?

Wie sollen Fluss- oder See-Tiles hinzukommen, wenn der Spieler sie selbst während des Spiels nicht hinzufügen kann?

Tschö, Auge

My Little Forum 1, Forum und Board in PHP
01.12.2014 13:14
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #5
RE: Patch: Rainfall River Generator
(01.12.2014 13:14)Auge schrieb:  Wie sollen Fluss- oder See-Tiles hinzukommen, wenn der Spiele sie selbst während des Spiels nicht hinzufügen kann?

Ich meinte eher im Szenario-Editor bei schon bestehenden Karten.

DACH Trains
01.12.2014 13:16
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Auge
Geschäftsführer
***

Beiträge: 847
Registriert seit: Mar 2009
Beitrag #6
RE: Patch: Rainfall River Generator
Hallo

(01.12.2014 13:16)officercrockey schrieb:  
(01.12.2014 13:14)Auge schrieb:  Wie sollen Fluss- oder See-Tiles hinzukommen, wenn der Spiele sie selbst während des Spiels nicht hinzufügen kann?

Ich meinte eher im Szenario-Editor bei schon bestehenden Karten.

Du meinst bei einer schon generierten und gespeicherten Karte? Tja, das ist eine Frage an ic111.

Tschö, Auge

edit: Typo

My Little Forum 1, Forum und Board in PHP
(Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2014 10:15 von Auge.)
01.12.2014 18:13
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
ic111
Gleisarbeiter
*

Beiträge: 87
Registriert seit: Oct 2010
Beitrag #7
RE: Patch: Rainfall River Generator
So direkt können Flüsse meines Wissens nach nicht einzeln generiert werden.

Der Szenarien-Editor kann eine Heightmap exportieren (gibt zumindest den Menüpunkt, ausprobiert hab ich selber den noch nie), damit könnte man eine existierende Landschaft mit Flüssen nochmal generieren. Auf dem Weg hab ich auch das Patch getestet, mein Standard-Testfall war eine Heightmap von Tirol und angrenzenden Gebieten in 1024x1024.

Aber sobald mal Städte etc. auf der Karte drauf sind ist sie eh nicht mehr so einfach für den Generator geeignet, dann würden auch so Probleme auftreten wie das Terraforming auch mal fehlschlagen kann, ich glaub das wäre nix halbes und nix ganzes darauf einen Flußgenerator loszulassen.
01.12.2014 20:38
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
ic111
Gleisarbeiter
*

Beiträge: 87
Registriert seit: Oct 2010
Beitrag #8
RE: Patch: Rainfall River Generator
So, ich hoffe dem Generator jetzt noch etliche Kinderkrankheiten abgewöhnt zu haben.

Die Fortschrittsanzeige ist jetzt deutlich flüssiger als in der Originalversion, die Generierung der Seen ist deutlich schneller geworden (weil man viel weniger Daten durch die Gegend schieben muss wenn man immer den kleineren See in dern größeren reinsteckt, als oft umgekehrt), etliche Bugs die bei mir zu keinen negativen Auswirkungen geführt haben aber bei anderen Leuten zum Absturz wurden behoben.

http://www.tt-forums.net/viewtopic.php?f...0#p1138311

Worüber ich gerade auch nachdenke ist ob ich als Nachverarbeitungsschritt gleich noch Städte generieren soll. Wie ich auf die Idee komme:

Der Algorithmus der auswählt wo die Städte platziert werden ist auf bergigen Karten nunja schon manchmal etwas überfordert: Da steht die Großstadt auf der Bergspitze, das Tal sieht fast keinen Ort, ob eine Stadt wie in der Realität oft an einem Fluss zu liegen kommt ist eh Glückssache.

Und in meinen Datenstrukturen für die Flussgenerierung steckt diesbezüglich eigentlich schon einiges an nützlichen Informationen drin: Ich kann Flüsse von Seen unterscheiden, ich weiß welcher Fluss groß ist indem ich einfach eine Integer-Variable inspiziere (und muss nicht in höherer Magie generierte Wasser-Tiles in einem Bereich zählen um mich der Frage zu nähern), ich weiß dass da wo meine Flüsse sind das Tal ist, etc.

Also eigentlich könnte ich da mit ein bißchen Heuristik relativ einfach gleich die Stadtpositionen festlegen, und dann per durchpropagaiertem Rückgabewert dem normalen Städtegenerator mitteilen dass er nix mehr zu tun hat.
08.12.2014 12:29
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #9
RE: Patch: Rainfall River Generator
Darüber hab ich letztens auch nachgedacht als ich von deinem Patch gelesen habe. Also ich denke auch, dass das da ganz gut mit reinpasst.

DACH Trains
08.12.2014 13:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Bernhard
Forum-Team
*****

Beiträge: 9.370
Registriert seit: Jan 2004
Beitrag #10
RE: Patch: Rainfall River Generator
+1

"Das Böse triumphiert alleine dadurch, daß gute Menschen nichts unternehmen!" Edward Burke, 1729-1797

"Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont!" Konrad Adenauer, 1876-1976 Zwinkern
08.12.2014 14:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Registriert seit: Aug 2008
Beitrag #11
RE: Patch: Rainfall River Generator
Projekt höherer Ordnung: den Stadtnamengenerator um einen Fluß- und Bergnamengenerator erweitern, bzw. Prefixe und Suffixe um ein "In der Nähe eines Flusses"-Bit erweitern. (bei letzterer Variante kann man schlechter ausschließen, daß Städte am selben Fluß unterschiedliche Flußnamen verwenden)
09.12.2014 00:29
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
ic111
Gleisarbeiter
*

Beiträge: 87
Registriert seit: Oct 2010
Beitrag #12
RE: Patch: Rainfall River Generator
(08.12.2014 12:29)ic111 schrieb:  Worüber ich gerade auch nachdenke ist ob ich als Nachverarbeitungsschritt gleich noch Städte generieren soll. Wie ich auf die Idee komme:

Ich denk ich werd das so machen:

- Erstmal für jedes 16x16 (oder evtl. 32x32-Grid) auf der Karte ein paar Kennzahlen ausrechnen, für Flussgröße, Flußverzweigungen, Anteil Wasser, Flachheit des Geländes, absolute Höhe des Geländes, etc., skaliert jeweils auf den Bereich 0...1000
- Daraus kann man dann ablesen wie geeignet die Umgebung für eine Stadt ist.
river_size_score = 800, river_end_score = 800, water_amount_score = 500 würde zum Beispiel nahelegen, dass da eine große Flussmündung irgendwo in der Nähe ist, wenn dann noch das Gelände eben ist ist das kein schlechter Standort für eine größere Stadt.
- Dann wie gehabt zufällige Positionen auf der Karte überprüfen, und wenn sie im Sinne der Kennzahlen passen eine Stadt dort anlegen.

Zusätzlich am Beginn der Generierung vielleicht noch ein paar größere zusammenhängende Bereiche die gut für Städte geeignet sind zusammensuchen und zum Ballungsraum erklären.

Die ersten paar Kennzahlen die ich schon implementiert hab:
Code:
struct CityScore {
    /** The maximum river flow in the grid divided by the maximum river flow on the map,
     *  scaled on a range 0...1000
     */
    int river_size_score;

    /** The maximum value (flow_one / flow_two) * (branch_flow / maximum_map_flow) for any
     *  river branch (where two or more rivers join in a tile) in the grid, scaled to a range
     *  0...1000.
     *  flow_one and flow_two are the flows of the incoming rivers (switched such that flow_one <= flow_two),
     *  if more than two rivers merge the two biggest flows, branch_flow is the first flow of the merged river,
     *  maximum_map_flow is the maximum river flow on the map.
     *
     *  The idea is that this value is the bigger the more flow the merging rivers have, and the more
     *  equal-sized the two rivers are.
     */
    int river_branch_score;

    /** The percentage of lake or ocean in the grid, scaled to a range 0...1000
     */
    int water_amount_score;

    /** The size of the biggest lake intersecting the grid, divided by the size of the biggest lake on map.
     */
    int lake_size_score;

    /** The flow of the biggest river ending up in a lake or the ocean, divided by the maximum river flow on
     *  map, scaled on a range 0...1000
     */
    int river_end_score;
};

Dazukommen wird noch was für die Flachheit des Geländes und die absolute Höhe.
11.12.2014 23:43
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
ic111
Gleisarbeiter
*

Beiträge: 87
Registriert seit: Oct 2010
Beitrag #13
RE: Patch: Rainfall River Generator
So, das wär jetzt auch implementiert.

http://www.tt-forums.net/viewtopic.php?f...1#p1138651

Zumindest mal in einer Version mit hartkodierter Konfiguration, das tippen des entsprechenden Konfigurations-Fensters ist nix für dieses Wochenende.

Das was ich jetzt an Konfiguration eingetippt habe dürfte am besten auf bergigen Heightmaps, mit eher wenigen Seen oder Meeren funktionieren.

Im Prinzip folge ich dem oben beschriebenen Ansatz, erstmal ein paar Kennzahlen für alle 16x16-Sektionen der Karte ausrechnen, und dann mit bestimmter Wahrscheinlichkeit verschiedene TownPlacer drauf loslassen, die jeweils nach einer bestimmten Geländeformation in der Nähe (erkennbar an den Kennzahlen) suchen. D.h. wenn der river_size_score 700 ist dann weiß ich, da ist ein großer Fluss irgendwo in dem 16x16-Bereich, dann wähl ich mir irgendein Tile in diesem Bereich zufällig, ob das dann direkt am Ufer ist oder 5 Tiles entfernt ist dann wieder egal, die Stadt belegt ja auch eine Fläche.

Eine Frage würde ich gerne erneuern: Hab ich eine Chance, Konfigurations-Optionen für die Kartengenerierung neu einzubauen, ohne die Savegame-Kompatibilität zu brechen, d.h. ohne eine neue Versionsnummer des Savegame-Formats zu verbraten?

Ich finde es halt nicht ganz glücklich, dass ich jetzt Karten generiere ausschließlich auf Basis längst vorhandener Features des Spiels, die alleine deswegen inkompatibel sind (zu späteren Trunk-Ständen) weil der Generierungs-Algorithmus neu ist.
13.12.2014 18:51
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
jarodv83
Gleisarbeiter
*

Beiträge: 24
Registriert seit: Apr 2014
Beitrag #14
RE: Patch: Rainfall River Generator
Ich stecke leider nicht ganz in der Materie, verzeih mir, wenn die Frage stupid sein sollte.

Ist es möglich in Dein Script (oder allgemein über ein Script/andere Funktion in OpenTTD) etwas zu integrieren,
sodass man auf Mauskllicks hin, alle umliegenden Kacheln als Fluss/Gewässer "einfärbt"/umwandelt, insofern die Kacheln natürlich flach sind und auch ohne Höhenunterschied aneinander hängen.

Noch besser, um "Überflutungen" zu vermeiden (Kacheln werden eingefärbt, die nicht mehr zum See/Fluss gehören) könnte man, auf den Mausklick hin, ein Gebiet von 10x10 Kacheln maximal "einfärben".

Das bedeutet dann zwar noch einige Mausklicks auf einer Karte und etwas Retuschierarbeit (die sich so denke ich in Grenzen hält), aber man kann realistische Karten mit viel Gewässern recht schnell zufriedenstellend "bewässern".
(Insofern man seine Heighmap entsprechend gut vorbereitet hat, aber das ist machbar)

Nur so als Frage, vielleicht kann mich ic111 oder jemand anderes aufklären, was so möglich ist?

Danke Lächeln
27.01.2016 11:15
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
ic111
Gleisarbeiter
*

Beiträge: 87
Registriert seit: Oct 2010
Beitrag #15
RE: Patch: Rainfall River Generator
Könnte man dem Szenarieneditor schon beibringen.

Es würde allerdings denke ich schnell an Grenzen stossen. Wenn in OpenTTD zum Beispiel eine Ebene ist, legt mein Patch da einen Fluß irgendwie durch (ein Abfluss auf niedrigeres Terrain vorausgesetzt), diese Funktion würde die Ebene in einen großen See verwandeln.

Also ja, man könnte mit einigen Funktionen in dem Stil das manuelle Erzeugen von Flüssen schon vereinfachen, Wunder würde ich persönlich mir aber nicht erwarten.
30.01.2016 19:05
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
jarodv83
Gleisarbeiter
*

Beiträge: 24
Registriert seit: Apr 2014
Beitrag #16
RE: Patch: Rainfall River Generator
Naja meine Idee war ja nicht alles füllen zu lassen,sondern:
Per Vorgabe ein Feld von 10 x 10 Kacheln "bewässern" WENN keine Steigungskacheln angrenzen, dann wird diese Kachel weggelassen...

Ergebnis wäre also: Ich klicke in einem grossem See und es wird ein 10x10 Feld "bewässert" das mache ich solange bis der ganze See "gefüllt" ist.
Bei einem Fluss mit, sagen wir einer Breite von 2 Kacheln, der, nehmen wir an schnurgerade ist entsteht bei einem Mausklick ein 2x10 großes Wasserfeld.

Die Idee dahinter (ich bin dabei eine 2048er Schweiz Karte zu machen mit einigen großen Seen, und vielen Flüssen),
dass man sich mit der Maus einfach durch die Karte (gut vorbereitete Heighmap vorausgesetzt) klickt um all die Gewässer zu erstellen. Das würde einem ne Menge Zeit sparen großes Grinsen
31.01.2016 10:42
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  River.grf sirmes 10 5.281 31.03.2008 13:51
Letzter Beitrag: Timmaexx

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste