Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Problem - 120.1.3] Änderung Linienfahrplan
#11
prissi,'index.php?page=Thread&postID=112167#post112167' schrieb:....

Der kleine Unterschied, nur dann einen Wegsuche aufzurufen, wenn sich das Ziel geändert hat, wäre auch schnell programmiert.

Leider ändert sich nicht immer das Ziel.

Vor allem bei Straßenfahrzeugen. Wenn Staus entstehen und man Entlastungs-/Umgehungsstrecken baut ändert sich das Ziel selber nicht. Aber mit anstoßen der Routensuche wird dann der neue/bessere Weg genommen.
Zitieren
#12
Dann kann man auch ein Wagen anhalten (Fahrplan öffnen) den davor umdrehen und dann die Straße ein Tile löschen. Alls Wagen, die dort ankommen, werden eine neue Route suchen. Oder einfach ein Haltsucheschild an die Stelle bauen, das ruft (sofern es mehr als einen Zielhalt gibt) auch die Wegsuche auf.
Zitieren
#13
Vielleicht könnte man zusätzlich zu den Fahrzeugen in einem veränderten Bereich auch für alle Fahrzeuge der Linie die zu diesem Zeitpunkt stehen (warten auf freie Wege) die Wegsuche aufrufen.
Das wird unter Umständen aber wieder dazu führen, dass für sehr viele Fahrzeuge die Wegsuche aufgerufen wird.
Alternativ, und ich glaube auch besser, wäre da tatsächlich ein refresh Button, der explizit für alle Fahrzeuge der Linie die Wegfindung aufruft. Den Button wird man aber wohl eher nicht so häufig benötigen.
Die Wegsuche sollte auch nicht gleich für alle Fahrzeuge gleichzeitig aufgerufen werden, sondern es sollten alle solche Wegsuche Anfragen in eine Schlange eingereiht werden, die nach und nach abgearbeitet wird. Sollte der Server laggen, wird die Abarbeitungsrate verringert, läuft der Server hingegen zügig und laggt nicht, kann diese wieder etwas erhöht werden.
Das hätte gegenüber der aktuellen "Random Warteschlange", die implizit dadurch existiert, dass immer am nächsten Wegpunkt geupdated wird und die Züge hintereinander fahren den Vorteil, dass diese auch funktioniert, wenn sich z.B. aufgrund eines im Fahrplan falsch gewählten Gleises ein Stau gebildet hat. Außerdem würden dadurch die Wegsuche Aufrufe gleichmäßiger und kontrollierter verteilt. Aktuell kann es durchaus vorkommen, dass bei einer langen Linie an 10 unterschiedlichen Halten Fahrzeuge einfahren.


Btw. Habe ich das bei der Wegfindung richtig verstanden, dass jedes Mal wenn ein Fahrzeug an einem Wegpunkt ankommt der Weg neu berechnet wird?
Man könnte dann wieder einiges an Ressourcen sparen (insbesondere bei Schiffen) indem man sich die gefundene Route merkt. Ein Fahrzeug was an einem Wegpunkt ankommt müsste dann nur prüfen, ob es diese Route nutzen kann, was potenziell deutlich weniger Aufwand als eine Wegsuche ist. Einziger (mir spontan einfallender) Nachteil: Neue, kürzere Wege würden nicht entdeckt werden, es sei denn der alte Weg fällt weg.
Ich hätte so spontan eine Idee wie Linien beim Bau neuer Linien direkt erkennen könnten, dass es ggf. einen besseren Weg gibt, aber ich vermute das wäre nur mit sehr großen Änderungen umsetzbar.
Dazu müsste das Spiel sowohl das gesamte Streckennetz als Graphen kennen. Ein Knoten ist darin immer ein Abzweig und eine Kante repräsentiert den Streckenabschnitt dazwischen.
Außerdem müsste das Spiel zu allen Linien wissen welche Streckenabschnitte in welche Reihenfolge befahren werden.
Ist das der Fall, könnte das Spiel auch erkennen, wenn ein neuer Abzweig (Knoten) entsteht, könnte dann anhand dem Streckenabschnitt (der Kante) feststellen welche Linien dort alle fahren und zwischen welchen Wegpunkten dieser Linie die Änderung liegt und dann die Wegfindung für dieses Stück neu aufrufen.
Aber wie gesagt. Ich vermute das wäre sehr viel Aufwand für eine recht kleine Funktion.
Auf der anderen Seite hätte man dann wieder die Möglichkeit diese Kanten zu gewichten (anhand der maximal fahrbaren Geschwindigkeit z.B.) und so die Routenfindung der Passagiere etwas verbessern. Aktuell scheint es denen ja ziemlich egal zu sein wie wit die fahren um ans Ziel zu kommen, Hauptsache es gibt keine andere Route bei der sie weniger umsteigen müssen.
Ich hatte da schon Passagiere die auf unserer Europa Map von Moskau nach Paris gefahren sind, um nach Athen zu kommen nur, weil sie auf der Strecke nur ein Mal in Paris umsteigen mussten anstatt einmal in Bukarest und nochmals in Skopje...

Insbesondere für Schiffe sollte man aber mal überlegen die Routen zwischenzuspeichern und ggf. nur für jedes 10. Fahrzeug, anhand einer festen Zeitspanne oder bei jedem Fahrzeug aber maximal einmal pro n Sekunden die Wegsuche aufzurufen. Mir ist es auf meinem Server mit 4k schon ein paar mal passiert, dass der Server abgestürzt ist weil jemand meinte er müsste eine Schiffsroute quer über die Map komplett ohne Wegpunkte schicken und zu allem Überfluss gleich mal so pauschal 100 Schiffe auf die Reise geschickt hat. Zugegebenermaßen ist das für den Server ziemlich brutal aber wenn dieser anstelle von 100 erfolglosen Wegsuchen genau eine durchgeführt hätte, wäre der Server vermuutlich freidlich weiter gelaufen und hätte nur alle n Sekunden erneut einen Weg gesucht. (Anstatt fast permanent für alle 100 Schiffe)
Zitieren
#14
prissi,'index.php?page=Thread&postID=112173#post112173' schrieb:Dann kann man auch ein Wagen anhalten (Fahrplan öffnen) den davor umdrehen und dann die Straße ein Tile löschen. Alls Wagen, die dort ankommen, werden eine neue Route suchen. ...

Was dazu führt, das alle im Stau stehenden Fahrzeuge neu geroutet werden egal zu wem die gehören. Es ist nicht gesagt das alle Fahrzeuge zur gleichen Linie und zum gleichen Spieler gehören.

Hinzu kommt, das man erst mal Zugang zum Feld haben muss. Fremde Straßen kann man bekanntlich nicht abreißen.

Zitat:... Oder einfach ein Haltsucheschild an die Stelle bauen, das ruft (sofern es mehr als einen Zielhalt gibt) auch die Wegsuche auf.

Genau der Punkt der bei mir sehr oft nicht gegeben ist, da ich sparsam baue. Vor allem reine Entladestationen bestehen bei mir sehr häufig nur aus einem Halt.
Zitieren


Gehe zu:


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