Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
güterverkehr mit speedbonus in pak64
#1
Vorweck: ich weis nicht ob das hier rein passt oder ob es ins bugs und probleme forum gehört.

folgendes Problem von FrankP und mir:

Der Speedbonus in Pak64 wird ,je moderner das Spiel wird, und damit je schneller die züge/flugzeuge etc werden, immer von einer höheren grund geschwindigkeit ab gerechnet.

ohne timeline bei schiene z.B.: 80kmh
1980 116 kmh, 1999 124kmh und 2025 dann schon 202 km/h (das kommt dadurch, dass langsamere züge veralten und die neuen immer schneller werden und die grundgeschwindigkeit des bonus wohl irgendwie aus den aktuell vorhandenem fuhrpark errechnet wird)

güterwagen gibt es aber nur eine version jeweils und da ist keiner schneller als 160 kmh
dh irgendwann hat man zwar schnellere loks, aber diese bringen nichts, da der waggen die geschwindigkeit kappt.
dh je moderner ein spiel, wird desto weniger gewinn macht ein güterzug (da durch den boni güter immer weniger einbringen)
so ist es zb unmöglich 1980 oder später einen gewinnbringenden autozug fahren zu haben (dort haben wir es durchprobiert und durchgerechnet)

genauso liegt durch die einführung der concorde die grundgeschwindigkeit in der luft bei 1176 kmh rum, alle flieger ausser der concorde sind aber langsamer und bekommen nur noch 11 cent pro passagier. die tristar und die 747 können gerade noch gewinn machen, die 707 hat das doppelte an betriebskosten dessen was ihr ein voller flug einbringt.
für kleinere fluglinien mit weniger aufkommen gibt es so keinen flieger mehr. (dies betrifft den zeitraum 1971 bis 2003) dannach liegt der luftboni bei 682 kmh.

ich will hiermit nur auf die problematik aufmerksam machen, eine lösung, ausser einer änderung des speedboni systems sehe ich nicht. zb das er immer ab einer festen grundgeschwindigkeit ab gerechnet wird und diese nicht davon abhängt welche fahrzeuge man zur verfügung hat) das wäre dann doch vom durchplanen eines paksets her einfacher. da mann dann immer weis, wieviel gewinn ein zug abwirft unabhängig von der jahreszahl des spiels.

so das wars eigentlich.
Zitieren
#2
Wie wäre es, den Bonus als Zeitbonus zu realisieren.

Ab dem Moment, wo die Ware an die Station übergeben wird, läuft die Zeit. Vermutlich müssen einige Wareneinheiten zusammengefasst werden, da sonst der Zählaufwand recht hoch wird. Hier liese sich der Kapazitäts-Grundlevel von 32 verwenden.

Die maximale Zeit für den Transport von A nach B bestimmt das langsamste Fahrzeug, das für die Ware zur Verfügung steht.
Dies kann uU unabhängig vom Verkehrsträger geschehen.

Da die Beladezeit dann mit zählt, verlieren schnelle Fahrzeuge ihren Vorteil, wenn diese lange auf die Beladung warten.

Auch Umwege bewirken Nachteile, da diese ja Zeit kosten.
Zitieren
#3
franks idee aufgegriffen:

es muss einfach bei einer fracht eine weitere variable St geben (St=starttime:= Zeitpunkt an dem die ware erzeugt wurde, bzw sie eine station erreicht hat)
gibt es fuer ein ziel bereits ware, berechnet sich St folgender massen:
St=(N_(schon da)*St+N_neu*jetzt)/(N_(schon da)+N_neu);

ereicht eine ware ihr (zwischen)ziel bekommt man einnahmen die sich aus Frachtfaktor*Distanz/(St-jetzt) berechnen.
dies ist nur eine mögliche gewichtung der zeit.
Zitieren
#4
So ist das bei TTD gelöst. Ist aber unter programmtechnischer Sicht ein Albtraum: Tausend Passagiere nach xyz sind nun nur ein einzelenes Paket. Die könnten dann auf bis zu tausend Pakete anwachsen. Als Folge würde das dann bis zu 1000x mehr Speicher (und auch mehr Rechnezeit brauchen).

Und für Stückgut gibt es schnelle Güterwagen, und im pak64 ist in deren Kosten der Bonus eingerechnet. Wenn man mit denen 120 fährt gibt es etwas weniger als für die alten; fährt man 160 gibt es deutlich mehr. Ansonsten kann man durchaus für einige Waren schneelen Wagen ab 2020 vorsehen. (Und Schüttgut hat es doch eh nie eilig.)
Zitieren
#5
Zitat:Original von prissi
So ist das bei TTD gelöst.
Das geht dort natürlich, weil es pro Wagon nur eine Herkunftsangabe gibt, und es dem Inhalt fast egal ist, wo er abgeladen wird.

Zitat:Ist aber unter programmtechnischer Sicht ein Albtraum: Tausend Passagiere nach xyz sind nun nur ein einzelenes Paket. Die könnten dann auf bis zu tausend Pakete anwachsen. Als Folge würde das dann bis zu 1000x mehr Speicher (und auch mehr Rechnezeit brauchen).
Ich hatte schon mal (woanders) eine Idee mit 'durchschnittlichem Alter' (oder durchschnittlicher Erzeugungszeit) beschrieben, d.h. eine weitere Variable für ein Paket (und beim Umbündeln muss sie neu berechnet werden, natürlich mit Gewichtung nach Anzahl Einheiten im Paket).
Zitieren
#6
@ prissi: du hast meinen vorschlag missverstanden, ich benutze die pakete, bisher gibt es fuer jedes ziel und ware ein paket, und wenn ein weiteres paket ankam mit ware zum selben ziel wurden diese zusammengefasst.

bei meiner formel ging es darum wie sich St berechnet wenn man 2 pakete zusammenlegt.

dadurch liegen nicht 2 pakete am bahnhof sondern ein paket mit einem St das sich aus dem schon vorhanden waren und ihrer zeit, und den neu dazukommenden waren berechnet,
bisher wird wohl einfach zusammen gelegt, dh eine addition und eine zuweisung der variable,

nun kommt ein funktionsaufruf (pro bus/zug etc nicht pro paket) 2 multiplikationen 1 additionen und eine disvision hinzu.
als platzbedarf nur eine variable St pro paket.

@whoami, ja so meinte ich das.
Zitieren
#7
Zitat:Original von Kasei
@whoami, ja so meinte ich das.
Ah, da hatte ich Dich ebenso missverstanden. (Die Formel hatte mich etwas verwirrt - es sollte wohl St_neu=... heißen.)

Ein Nebeneffekt dieser Rechenmethode würde sein, daß es nur noch am eigentlichen Ziel Geld gibt.
Zitieren
#8
das wäre komplizierter dann müsste man auch fuer jedes paket die bisher zurueckgelegte strecke speichern.

du kannst auch an einem zwischenhalt abrechnen und beim eintreffen zum weiterrechnen die aktuelle zeit benutzen. (so war meine formel auch gemeint)
Zitieren
#9
Zitat:Original von Kasei
das wäre komplizierter dann müsste man auch fuer jedes paket die bisher zurueckgelegte strecke speichern.
Hmm; durchschnittliche (x,y)-Koordinate? ;-)

Zitat:du kannst auch an einem zwischenhalt abrechnen und beim eintreffen zum weiterrechnen die aktuelle zeit benutzen. (so war meine formel auch gemeint)
Dann bleibt es doch weiter möglich, auf großen Umwegen mehr Geld einzusammeln, als es bei der kürzesten Verbindung der Fall wäre, nicht wahr?

Modifizierter Ansatz:
- zu Beginn der Reise wird aus der Entfernung zum Zielpunkt der Fahrpreis berechnet => Variable im Paket
- dieser Fahrpreis verfällt mit der Zeit (Neuberechnung an jedem Stationshalt; zwangsläufig exponentiell fallend)
=> Zug muß noch den vorigen Halt und dessen Zeitpunkt kennen
EDIT^4: das ist eigentlich optional, bzw. nur für Speedbonus sinnvoll
- gewichtete Summe beim Umbündeln
- Auszahlung am Ziel

Prissi begründete das jetzige Verhalten im anderen Forum u.a. damit, daß man bei der Bahn auch bei nicht gewollten Umwegen die gefahrene Strecke bezahlen muß, nicht die Distanz. Das ist schon richtig, aber die Entscheidung über die genutzte Verbindung (Zug oder nicht) wird in ST nicht nach der (erwarteten) Fahrzeit getroffen.
Zitieren
#10
durchschnittliche x/y koordinate wird nicht gehen, zumindest ist mir nicht auf anhieb eingefallen wie da folgendes problem:

4 bahnhöfe.

A bei 0,0
B bei 50,0
C bei 100,0
D,bei 50,100

linien a: ABCB
linie b: BD
legst du nun bei B die kooridinaten von A und C zusammen hebt sich diese strecke auf.
also ist es nicht so einfach.

durch dne einbau der zeit würde der speedbonus ja wegfallen. denn je schneller der zug desto kleiner die gebrauchte zeit und desto höher die einnahmen.

eine idee wäre um das durch umwege mehr gewinn machen zu unterbinden folgendes:

es gibt eine zusätzliche Distanzvariable D im frachtpaket.

prinzip: bewegt sich fracht auf ihr ziel zu wird D größer, entfernt sie sich, wird D wieder kleiner.

es gibt 3 koordinaten.

sx,sy von wo das packet auf die reise ging (kooridinaten des vorigen halts)
x,y koordinaten des aktuellen halts.
zx,zy koordinaten des zielhalts.

dx=x-sx
dy=y-sy

Dx=zx-sx
Dy=zy-sy

zeigt dx in die selbe richtung wie Dx (selbes vorzeichen) wird D um |dx| erhöht sonst um |dx| reduziert oder um eine zahl kleiner als dx erhöht (zb umweg bringt nur 50%, abziehen wäre ja vll doch ein bischen hart).
genauso mit dy verfahren.

dh nähert sich ein frachtpaket ihrem ziel wird D größer sonst kleiner. beim zusammenlegen kann man D_neu genauso berechnen wie St_neu
also: D_neu=(D1*N1+D2*N2)/(N1+N2);
man könnte um kleine umwege zu erlauben auch einbauen wenn |dx|<|x*DX| wird dx nicht abgezogen, oder es wird D nur um x*|dx| geändert (-1<x<1),

Das ist eine möglichkeit auch die distanz mit nur einer variablen in einem paket zu speichern, und diese bei der vereinigung von paketen zu vermitteln.
allerdings macht das das ganze nicht realitischer, es nimmt einem nur die möglichkeit größere umwege fahren zu können. bzw bestraft diese je nach gewichtung des faktors x.
Zitieren


Gehe zu:


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