cityrules.tab - Neue Version - Druckversion +- Deutsches Simutransforum (https://simutrans-forum.de/mybb) +-- Forum: Simutrans (https://simutrans-forum.de/mybb/forumdisplay.php?fid=3) +--- Forum: Wie spiele ich Simutrans? (https://simutrans-forum.de/mybb/forumdisplay.php?fid=6) +--- Thema: cityrules.tab - Neue Version (/showthread.php?tid=2390) |
cityrules.tab - Neue Version - S_K - 03-06-2007 Hi, ich habe mich mal rangemacht, die cityrules.tab so zu modifizieren, dass die Städte mir besser gefallen. Das wichtigste ist dabei der Strassenbau gefolgt vom Häuserbau. Es gibt jetzt mehr Strassen und grössere Häuserblöcke. Probiert es einfach mal aus und erstellt ein paar grosse Städte damit, einfach die cityrules.tab sichern und mit dem Text unten ersetzen. Wenn sich einer damit auskennt, kann er ja mal drüberschauen und das ganze etwas optimieren. Falls mir jemand sagen kann, wie die "chance" funktioniert wäre ich sehr dankbar, dann könnte die Erzeugung von bestimmten Blöckgrössen in der Stadt wesentlich besser gesteuert werden. Code: # cityrules.tab - Alexander Brose - 03-06-2007 Nach ersten Tests: Sieht recht gut aus. Kommt meinem "Stil" (wenn ich die Straßen vorbaue) recht nahe. Leider treffen sich die Straßen nicht immer. Insgesamt aber besser als vorher, denke ich. Die Städte sind nun klarer, was dem StraBa- und Bus-Einsatz entgegenkommt. - S_K - 03-06-2007 Das mit dem Treffen der Strassen könnte verbessert werden, wenn einer rausfindet, wie man sicherstellt, dass die Muster, welche Strassen zusammenführen mit höchster Wahrscheinlichkeit ausgeführt werden und insgesamt noch mehr Strassen im Verhältnis zu den Häusern gebaut werden. - Oliver - 03-06-2007 Mir gefällts recht gut. Schaunwer mal, wie es aussieht, wenn das Gelände etwas unwegsamer wird. - S_K - 08-06-2007 Mal ein paar Vorschläge: Wenn ich es recht verstanden habe, werden verschiedene Quadrate der Stadt zufällig ausgewählt und überprüft, ob man da eine Strasse bzw. ein Haus bauen kann nach einer der Bauregeln. 1) Jetzt könnte man es doch so machen, dass zufällig ein Quadrat gewählt wird, zufällig eine Regel gewählt wird und diese überprüft. Wenn sie das bauen erlaubt, dann gibt es eine Wahrscheinlichkeit, dass hier wirklich gebaut wird. Die Wahrscheinlichkeit ist eine Zahl zwischen 0 (nie) und 1 (immer). Dann wäre das mit chance, die jetzt von minus undefiniert bis plus undefiniert ist kein Problem mehr. Zusätzlich bauen sich kleine Städte anders als grosse Städte. Bzw. es gibt grundsätzlich unterschiedliche Stadttypen. 2) Die Stadttypen könnten durch verschiedene cityrules_1.tab, cityrules_2.tab etc. erzeugt werden. 3) Für die Stadtgrösse könnte bei den Regeln eine .size_min und eine .size_max eingeführt werden, was die Wirksamkeit der Regeln nach Stadtgrösse begrenzt. Damit könnten dann kleine Städte bis 1000 Einwohner im Kern stark verästelt sein und wenige lange Strassen erzeugen. Mittlere Städte bis 5000 Einwohner bauen dann 2x2 Häuserblöcke und lassen noch viel Freiräume und grosse Städte bauen noch grössere Häuserblöcke und füllen die Lücken. Für die Implementierung sollte 1) kein Problem sein, da lediglich chance von int auf float wechselt und die cityrules.tab neu geschrieben werden muss. Die Bauwahrscheinlichkeit ergibt sich einfach durch if( (Zufallszahl von 0 bis 1)<(chance) ). Bei 2) kommt es darauf an, wie das mit den cityrules implementiert ist, kann einfach sein oder Probleme bereiten. Für 3) sollte es auch kein Problem sein, zwei neue Felder einzulesen und mit Vergleichsoperationen auszuwerten. - prissi - 08-06-2007 Ziemlich genau so wie du beschrieben funktioniert es. Außer, dass eben die Chancen in 16,67% Schritten nur einstellbar sind. - S_K - 09-06-2007 Welche Zahl von Chance entspricht welcher Wahrscheinlichkeit? Kann man da nicht auch Kommazahlen angeben? ( Ich nehme an, dass momentan die Zufallszahl als int mit modulus erzeugt wird, das könnte man einfach ändern, indem man eine Fliesskommazahl mit entsprechendem Wertebereich erzeugt. Dann müsste nirgendwo sonst im Code oder den Daten etwas geändert werden, ausser dass halt statt ints floats eingelesen werden.) - S_K - 09-06-2007 Warum nicht einfach mal in den Quelltext schauen... Also soweit ich das sehe funktioniert das mit der chance so: Prüfe wenn (randint % (chance+8)) == 0 und baue wenn ok. Es wird also bei chance=-8 immer gebaut. Und ansonsten geht die Wahrscheinlichkeit mit 1/(chance+7) runter. Das ist ausreichend, da mit einer grossen Zahl, z.B. 93 die 1% Bauwahrscheinlichkeit erreicht werden kann. Dann wäre das Problem von 1) schon ausreichend gelöst. 2) und vor allem 3) wären schön, wenn das die Codemeister implementieren *liebguck* - S_K - 09-06-2007 Ich habe jetzt mal ein bisschen rumgespielt. Und dabei ein paar Änderungen im Code in cityrules.cc gemacht. Dazu gehört die Einführung von "u" in cityrules.tab was anzeigen soll, wenn ein stück Hang unbebaubar für die Strasse ist. Die Anzahl der durchzusuchenden Teile ist von 30 auf 100 hochgesetzt. Die Renovierungswahrscheinlichkeit von 3/8 auf 1/10 runtergesetzt. Das ganze ist noch Geschmackssache, zeigt aber meiner Meinung nach in die richtige Richtung. - prissi - 09-06-2007 Hast du auch mal geschaut, wiviel mehr Rechnezeit das braucht? Städte benötigen auch so schon eine halbe Ewigkeit beim Start. |