![]()  | 
| 
 Patch: Rainfall River Generator - Druckversion +- TT-MS Headquarters (https://www.tt-ms.de/forum) +-- Forum: Allgemeines rund um Transport Tycoon (/forumdisplay.php?fid=71) +--- Forum: Allgemeines zu OpenTTD (/forumdisplay.php?fid=20) +--- Thema: Patch: Rainfall River Generator (/showthread.php?tid=6424)  | 
Patch: Rainfall River Generator - ic111 - 30.11.2014 20:53 Ich hab da grade was releast... ![]() 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  
RE: Patch: Rainfall River Generator - officercrockey - 01.12.2014 09:11 Sieht sehr cool aus! Wird es auch möglich sein, es schon auf bestehende Karten "regnen" zu lassen? RE: Patch: Rainfall River Generator - Bernhard - 01.12.2014 10:25 Schaut gut aus! RE: Patch: Rainfall River Generator - Auge - 01.12.2014 13:14 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 RE: Patch: Rainfall River Generator - officercrockey - 01.12.2014 13:16 (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. RE: Patch: Rainfall River Generator - Auge - 01.12.2014 18:13 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? Du meinst bei einer schon generierten und gespeicherten Karte? Tja, das ist eine Frage an ic111. Tschö, Auge edit: Typo RE: Patch: Rainfall River Generator - ic111 - 01.12.2014 20:38 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. RE: Patch: Rainfall River Generator - ic111 - 08.12.2014 12:29 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=33&t=71970&start=20#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. RE: Patch: Rainfall River Generator - officercrockey - 08.12.2014 13:52 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. RE: Patch: Rainfall River Generator - Bernhard - 08.12.2014 14:52 +1 RE: Patch: Rainfall River Generator - Eddi - 09.12.2014 00:29 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) RE: Patch: Rainfall River Generator - ic111 - 11.12.2014 23:43 (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 {Dazukommen wird noch was für die Flachheit des Geländes und die absolute Höhe. RE: Patch: Rainfall River Generator - ic111 - 13.12.2014 18:51 So, das wär jetzt auch implementiert. http://www.tt-forums.net/viewtopic.php?f=33&t=71970&p=1138651#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. RE: Patch: Rainfall River Generator - jarodv83 - 27.01.2016 11:15 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  
RE: Patch: Rainfall River Generator - ic111 - 30.01.2016 19:05 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. RE: Patch: Rainfall River Generator - jarodv83 - 31.01.2016 10:42 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  
 |