Workaround: Fahrzeugpannen

  • Ich vermute, die Fahrzeugpannenberechnung gefunden zu haben. Folgendes findet sich im Script "player.script" im unteren Drittel:



    Das wird unter anderem im Event "mainClock.onMonth" ausgelöst. Interessant ist hier das:


    Code
    $targetCondition = 1.0 / (1.0 + $transportVehicle.travelDistance / (200000.0 * (0.1 + $vehicle.$reliability * 0.9) * (0.1 + $maintenanceLevel * 0.009)));
    $vehicleData["condition"] = $transportVehicle.condition = $vehicleData["condition"] * 0.8 + $targetCondition * 0.2;


    Wenn ich richtig vermute, passiert hier folgendes. Es wird für jede Linie (foreach ($grid.lines.children()) und dort für jedes Fahrzeug (foreach (.getVehicles) so einiges berechnet. Profit, Attraktivität, gefahrene Kilometer und eben auch Zustand.
    Bei jedem Aufruf dieses Events wird der Zustand neu berechnet - aus dem alten Zustand (der ist am Anfang, wenn man das Fahrzeug kauft auf 1 - vermutlich), der gefahrenen Kilometer und der Menge an Wartung, die man investiert.


    Nun gibt mehrere Möglichkeiten, das Ausfallverhalten zu verändern. Entweder man cheatet und setzt "$targetCondition" schlicht auf 1.0. Dadurch sollte das Fahrzeug nicht altern. Oder man ändert die Konstanten.
    Wenn man das in Excel ausprobiert, bekommt man nur minimalste Änderungen des Zustands. Wie z.B. 0,9992529508 bei 10km gefahrener Strecke, einer Verlässlichkeit von 60% (0,6) und einer Wartung von 50% (0,5). Da das aber bei jedem "Tick" weniger wird, kann das schnell weniger werden. Je nachdem wie schnell so ein "timeTick" verstreicht.
    Man könnte einfach eine Null an die 200000 hängen, dann könnte die Ausfallhäufigkeit zehnmal kleiner sein. Oder man dividiert die gefahrenen Kilometer durch 10, das sollte den gleichen Effekt haben.
    Blöderweise lässt sich die Ausfallrate schlecht testen, da das scheinbar zufällig ist. Da müsste man eben mal länger testen. Freiwillige?? :D
    Leider hab ich noch nicht die Logik gefunden, die das Fahrzeug eine Panne haben lässt. Dort könnte man vielleicht einfacher an den Schräubchen drehen.


    Wie immer: Alles nur eine Vermutung - keine Garantie, dass das so funktioniert ;)

  • Spannend. Ich seh schon, du bist im Begriff, eine Dokumentation für den Programmcode zu schreiben ... Der Wiki-Verwalter weist auf das Existieren eines Wikis hin ... ^^

    Aktuelle Ideen und Projekte oder: Was hoffentlich irgendwann mal fertig wird (Update Dezember 2010: Oder auch eher nicht)
    Mehr Konkurrenten | RCT2-Objekte in Locomotion | Gebäude aus Industrien klauen und als Stadtgebäude nutzen | LocoGUI-Klon für Gebäude | Regions-DAT-Tool | MusicChanger 2.0 | Weltraumflüge mit Loco-Maps darstellen (siehe Das Marsprojekt :) )


    The Visual Dictionary

  • Wiki-Einträge gibts nur, wenn die "Funktionsweise" bestätigt ist :D
    Kann ja auch sein, dass der Hersteller das sowieso behebt. Also erstmal den Patch abwarten, denk ich. Aber wer will, kann das ja mal ausprobieren.


    EDIT: Doppelpost
    Ich hab mal bisschen rumprobiert. Ich habe die Konstante 200000 um eine Null erweitert. Dadurch nutzt sich ein Fahrzeug wohl nicht mehr so schnell ab, was aber meinen blöden Bus nicht störte, eine Panne zu bekommen. :cursing:
    Ich vermute nun, dass der Ausfall woanders berechnet wird. Der Zustand des Fahrzeugs ist sicher nur eine weitere Variable, die bestimmt, wann eine Panne eintritt (je abgenutzter, desto wahrscheinlicher). Klar könnte man die Ausfallwahrscheinlichkeiten der Fahrzeuge auf 0 setzen, aber das macht ja dann schon den Spielspaß kaputt und das lehne ich ab. Ich such weiter. :D


    Habe weiter damit gespielt. Ich hab diese genannte Konstannte auf 4000000 (viermillionen) gestellt. Nach 2,5 Jahren hatten meine Fahrzeuge dann einen Zustand von 98%, was bedeutet, dass sich die Fahrzeuge eben nur 20x so langsam abnutzen. Das heißt also, durch diese hohe Konstante wird die Abnutzung extrem eingeschränkt. Pannen gibts dennoch, aber nicht so extrem wie vorher. Ich bin überzeugt, die Pannenwahrscheinlichkeit steigt mit dem Grad der Abnutzung (niedriger Zustand). Die ersten Straßenbahnen, die es gibt (mit 10% Pannenwahrscheinlichkeit) halten recht lange durch, bis es zu Pannen kommt. Allerdings kommen die irgendwann - manchmal auch gehäuft. Dann läufts wieder paar Monate ohne Stress.
    Vielleicht findet einer die interne Logik, die eine Panne auslöst. Ich finde, so kann man das gut spielen. Es gibt noch Pannen, die sich anhand der Anfälligkeit auch entsprechend häufen, aber eben nicht mehr so horrend viel.

  • Hey Bennhardt,


    auch ich habe nun bissl Zeit gefunden die Scripts durch zu schaun. Leider habe ich bisher keine weitere Variablen finden können, die auf die Pannen hinweisen. Werde jetzt erstmal bissl spielen. Hab die letzten Tage nur herum experimentiert :( Nun aber zu meiner bitte damit der Post net ganz belanglos ist. Würdest mir erzählen an welchen Stellen du das Spiel verändert hast damits für dich Balancetechnisch angenehm spielbar ist? Denke wir ticken da ähnlich. Würde aber gerne deine Gedankengänge nachvollziehen um vlcht bei mir noch nach zu justieren. Vielen Dank im voraus.

  • Ich nutze quasi 3 Sachen, die das Spiel verändern.


    1. Die Realismus-Mod, die den Fahrzeugen mehr Sitzplätze, aber höhere Betriebskosten einbringt.
    2. Die Änderung der Verkehrsdichte (siehe passenden Thread hier). Ich habe in der economy.script die Clamp-Zahl auf 0.4 stehen. Somit staut sichs immer noch, aber nicht mehr so nervig.
    3. Die Konstante für die Abnutzung der Fahrzeuge in der player.script. Die hab ich auf viermillionen stehen (von ursprünglich zweihunderttausend). Dadurch bleiben die Fahrzeuge länger frisch. Vielleicht ist das bisschen zu viel - ich hatte mal mit vierhunderttausend rumgespielt, dadurch verloren Busse jedes Jahr ein Prozent an Zustand. Pannen passieren trotzdem, was tierisch nervt, zumal mein 4%-Doppelstockbus öfter die Hufe hochmacht als ein 20%-Bus. Da hat jemand in Stochastik nicht aufgepasst bei den Programmierern von Colossal :D :D


    Somit ist das in meinen Augen gut spielbar und man kann getrost auch mit kleinen Buslinien anfangen. Auch in den 20er Jahren.





  • Hi Bennhardt


    Hallo Leute


    Ich danke für deine Entdeckung. Ich habe rumgetestet und rausgefunden, dass diese (rot dargestellt) Programmierung zur Folge hat, dass die Fahrzeuge nicht altern und daher keine einzige Panne habe. Auch die Attraktivität nimmt weder ab noch zu. Man kann es justieren, indem man die 1.0 niedriger stellt. Ich hab dazu jedoch noch keine Tests gemacht. Die 0.0 würde ich jedoch so belassen. Sind beide Zahlen negativ, nimmt der Wert (Attraktivität und Zustand) ab. Sind beide positiv, nimmt beides zu! (Ja!)


    Deine angesprochenen Ticks sind Monate. Das heißt, die Fahrzeuge werden 1x im Monat (je nach Kauftag) gecheckt.


    Nochmals danke für deine Entdeckungen. Dein Verkehrtipp ist auch grandios!


    Edit: Natürlich gibt es keine negativen Zahlen. Gemeint sind Werte unter 1.

  • Tach auch, ich hab mir da auch schon meine Gedanken über die Pannenmechanik gemacht. Ich denke das ist im Spiel vom Design nicht besonders gut gelöst da es den Spieler letztendlich nur durch die Häufigkeit besonders bei großen Betrieben nervt. Dann wird das ganze auch noch im Ticker öfters wiederholt selbst wenn das Fahrzeug schon wieder unterwegs ist und an der Stelle nix mehr war. Da die Vehikel doch nur kaputt gehen wenn sie eine Haltestelle anfahren, muss doch an dieser Stelle der Pannencheck gemacht werden. Da sollte man dann ansetzten.


    Eine sinnvolle Pannenmechanik sähe meiner Meinung so aus, das nach einer Panne erstmal eine Schonfrist von meinetwegen 2 Monaten+rnd(365) bis zu den nächsten Pannenchecks besteht. Dafür sollten dann aber auch Konsequenzen aus einer Panne gezogen werden, damit sich der Spieler auch dafür interessiert was da passiert ist. Bei den Grafiken gibt es sogar ein Pannensymbol für die Leiste (Petitionpanel), das nicht genutzt wird (Oder wirklich nur dann wenn der Zustand eines Fahrzeugs auf 0% gesunken ist, ich habs zumindest im Spiel noch nicht gesehen). Damit sollte dann eine Nachricht vom Chefmechaniker (passendes Bild unten eingefügt) generiert werden, der uns schön verklickert, 'das $VehicleX der $LinieX an der $Haltestelle zum stehen gekommen wäre. Er könne nun seine Mechaniker losschicken um die Mühle schnell wieder flottzukriegen, aber das würde 100+ rnd(Fahrzeugkosten)/2 Kröten kosten. Alternativ könnte er die Kiste auch in der Werkstatt flottmachen für gerade mal ein viertel des Betrages, dafür ist sie dann auch für rnd(7) Tage nicht verfügbar. So oder so, der Zustand würde sich permanent für rnd(10) verschlechtern.' Zusätzlich sollte die Zeit in der das Fahrzeug den Verkehr blockiert etwas verlängert werden.


    Die Variablen sind natürlich anpassbar, aber ich denke letztendlich würde das ganze System so Sinn machen.

  • Hi Hannibal,


    deine Idee klingt spitze. Ich hab aber keine Ahnung, wie man sowas programmiert :P
    Die Jungs und Mädels von Colossal müssten da schon sämtlichen Quellcode rausrücken - am besten mit einer ordentlichen Dokumentation - oder von mir auch NUR eine ordentliche Doku. Aber welche Softwareschmiede will das schon? Was wir hier machen ist ja schon ein wenig Reverse-Engineering. Aber ohne das gibts kein Modding.
    Ich werde die Idee von Uffty zuherzen nehmen und erstmal die Ausfallzeit runtersetzen oder den Multiplikator für die Happyness der Mechaniker verändern, was ja auch wieder die Ausfallzeit betrifft.


    Die echte Formel für das Triggern einer Panne ist in meinen Augen der Heilige Gral. Mich würde echt die Wahrscheinlichkeitsberechnung interessieren. Welche Faktoren laufen da rein? Mich wurmt, dass mein Bus, der grade eine Panne hatte nach der nächsten Kurve gleich wieder eine hat, obwohl er nur zu 4% anfällig ist. Auf der gleichen Tour fährt aber einer mit 20% Anfälligkeit seit Monaten ohne Defekt. Das hat bei mir dann den Benutze-Kopf-mit-Tisch-Effekt...

  • Mich wurmt, dass mein Bus, der grade eine Panne hatte nach der nächsten Kurve gleich wieder eine hat, obwohl er nur zu 4% anfällig ist. Auf der gleichen Tour fährt aber einer mit 20% Anfälligkeit seit Monaten ohne Defekt. Das hat bei mir dann den Benutze-Kopf-mit-Tisch-Effekt...


    Pannen gibt es unabhängig von der Störungswahrscheinlichkeit. Sie sind abhängig vom Zustand, sonst nichts. Ich hab das aber alles oben erklärt. Neue überliest man wohl gerne :P Spaß.


    Einzig allein der Zustand macht eine Panne. Sinkt der, kann es zu einer Panne kommen. Sinkt der niemals, kommt es niemals (never!) zu einer Panne. Bei einem Zustand von 100% (Neuwagen) kannst du keine Panne haben. Pro Monat vergeht ein "Tick", das heißt der Zustand ändert sich monatlich (im Normalfall nach unten *g*).


    Bsp:


    Wagen A - Zustand 97%, Störungschance 4% hat eher eine Panne als


    Wagen B - Zustand 99%, Störungschance 20%



    Viele werden die Augen rollen, wenn ich sage, dass ich die Pannen deaktiviert habe. Aber probiert es ruhig aus. Das Spiel macht dadurch nicht weniger Spaß. Hat man es erstmal deaktiviert, ist es recht unwahrscheinlich, dass man sich das nochmal gibt. Ohne Pannen sind auch Netzwerke gigantischen Ausmaßes möglich, ohne Frust zu haben. Jeder wie er möchte. :rolleyes:

  • Hab dich keinesfalls überlesen ;)


    Die Pannen würde ich schon gern weiter nutzen. Sonst lohnen sich ja moderne, weniger anfälligere Busse nicht, wenn mein unzuverlässiger, uralter Bus ja auch noch fährt und nie ausfällt. Die Häufigkeit stört mich eben. In meinem Beispiel war der 4%-Bus nagelneu und fiel trotzdem mehrmals hintereinander aus. Der 20%-Bus fuhr aber schon ein Jahr und hatte eben NICHT so oft eine Panne. D.h. deine Vermutung / Rechnung geht nicht auf. Das ist das, was mich stört. Die Pannen allein sind OK, dafür sind ja die Ausgaben für die Mechaniker und die verschiedenen Pannenwahrscheinlichkeiten da. Und die will ich eben haben ;)


    Außerdem soll sich mein Bus auch abnutzen, damit die Beliebtheit runtergeht. Kein Schwein will mit einem 20 Jahre alten Bus mehr fahren. Die Hürde, dass ich nach paar Jahren den Fuhrpark ersetzen MUSS, ist eine Herausforderung, die ich auch nicht missen will.


    Wie gesagt: klar kann man deine Mod benutzen - aber das verringert mir den Spielspaß, weil es eben die Herausforderung senkt. Dasselbe gilt für die Money-Cheats usw. Ich verbiete das keinem Spieler, aber ich verbiete es MIR :D

  • Meine Beobachtung:


    Also es gibt auf jeden Fall einen sehr starken Zusammenhang zwischen Fahrzeugzustand und Pannen. D.h. eh geringer der Zustand desto höher die Pannenquote. Natürlich im Mittel, Ausnahmen gibt es, da entscheidet das Würfelglück oder so ähnlich.


    Die Störungswahrscheinlichkeit beeinflusst sehr stark die Abnutzung der Fahrzeuge. Eine 50%-U-Bahn verliert wesentlich mehr Zustand im Jahr, als eine 15%-U-Bahn. Es kann durchaus sein, dass hier ein Bezeichnungssfehler vorliegt, der Verwirrung stifftet. Abnutzung trifft es hier eher, als Störungswahrscheinlichkeit.


    Ansonsten sehe ich das so wie Bennhardt. Ohne Pannen und Abnutzung macht es keinen Spaß. Allerdings finde ich die Abnutzung im Original als viel zu hoch, weshalb ich den Wert auf 1 Million verfünffacht habe.

  • Kabe, das ist natürlich eine ganz andere superinteressante Sicht mit der Abnutzung statt Anfälligkeit. Werd ich mir demnächst mal angucken. Vielleicht kann man da noch was an den Formeln drehen.


    Das interne Würfelspiel interessiert mich dennoch. Wenn man nur wüsste, WO das ausgeführt wird. grrrrr....
    Es muss ja irgendwo den Auslöser geben, der sagt: JETZT PANNE. Sämtliche andere Trigger und Events sind ja schon gefunden. Ich kann mit der veränderten Pannenrate (Multiplikator im player.script) leben und werd noch die Ausfalldauer eingrenzen, damit eine Panne nicht sooo lange dauert. Dann sollte es in meinen Augen ausgewogen sein.


    Nochwas: Wenn eine Panne eintritt, steigen ja alle Leute aus. Vielleicht ist es Zufall, aber IMMER, wenn eine Panne auftritt, geht bei mir massiv der Kontostand runter. Kanns sein, dass die Fahrgäste ihr Geld wiederbekommen, wenn die pannenbedingt aussteigen? Bei einer vollbesetzten U-Bahn oder Wassertaxi haut das mächtig rein.
    Kann das jemand auch beobachten oder hab ich Halluzinationen?

  • Ob die Fahrgäste das Geld zurückbekommen weiß ich nicht genau, denke aber eher nicht. Was auf jeden Fall abgezogen wird, sind die Käufe für die Ersatzteile der Bahn. Das wird dann in der Finanzübersicht aufgeführt. Da steht dann schonmal z.Bsp. 500 an Käufen im Monat, obwohl man nix weiter gebaut oder gekauft hat.

  • Hallo.


    Hier mal meine Interpretation der Formel zur Abnutzung der Fahrzeuge defakto Pannenwahrscheinlichkeit:


    $targetCondition berechnet sich aus 3 Komponenten die auch im Spiel zu finden sind. Diese wären $transportVehicle.travelDistance Laufstrecke des Fahrzeugs, $vehicle.$reliability Störungswahrscheinlichkeit(völlig falsche Bezeichnung dafür da irreführend) des Fahrzeugs und $maintenanceLevel Unterhaltslevel(Lohn) für Techniker. Diese erste Berechnung ist aber nur ein Teil der endgültigen Berechnung zur Abnutzung des Fahrzeugs. Mit $targetCondition wird nur eine Variable für die Formel zur Abnutzung des Fahrzeugs festgelegt. Um dies zu verdeutlichen habe ich diese farblich unterlegt. Die endgültige Berechnung findet in $vehicleData["condition"] statt. Nähmlich aus $vehicleData der aktuelle Zustand des Fahrzeugs und eben $targetCondition der über die obere Formel berechnet wurde. Das problem um dies 100%ig nachvollziehen zu können liegt in $maintenanceLevel, da ich nicht weiß welche Wertigkeit zb ein grüner Smily beim Techniker hier in der Formel ergibt. Das meine Interpretation dazu. Ihr könnt mich sehr gern wiederlegen da ich´s aus besagten Grund nicht dokumentieren kann das es tatsächlich so ist.


    $targetCondition = 1.0 / (1.0 + $transportVehicle.travelDistance / (200000.0 * (0.1 + $vehicle.$reliability * 0.9) * (0.1 + $maintenanceLevel * 0.009)));
    $vehicleData["condition"] = $transportVehicle.condition = $vehicleData["condition"] * 0.8 + $targetCondition * 0.2;

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!