Deutsches Simutransforum

Normale Version: Maximale laenge einer Transportverbindung?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo....


Ich spiele Simutrans 0.84.8.0 auf Linux 2.6.0... Ich spiele mit maximaler Kartengroesse und moechte zwei meiner Staedte per Zug verbinden. Die Staedte sind zufaelligerweise jeweils auf einem entgegengesetzten ende der Karte. Bahnhoefe, E-leitungen sind alle gelegt und die Strecke ist ohne luecken.

Jedoch faehrt der Zug zu einem Bahnhof hin, laedt Passagiere ein und Simutrans meldet mir "can`t find a route"

Gibt es eine begrenzung fuer Streckenlaengen? Bei Strassenverbindungen der Groesse tritt das Problem auch auf Sad
Hm, es gab mal ein Problem, das zu einem Absturz führen konnte. Wenn zwei Haltestellen über 500 Quadrate entfernt waren, gab es Probleme. Das Problem wurde zwar behoben, aber es kann natürlich sein, daß nicht alles fehlerfrei ist.
Versuch es mal mit einem Bahnhof dazwischen, weniger als 500 Tiles von einem anderen entfernt. Wenn es dann läuft, könnte es mit dem alten Problem zusammenhängen.
Richtig, allerdings ist entscheidend wie lang der "Block" ist. Ein Block liegt zwischen einer beliebigen Kombination von Haltestelle und Signal.

Ein Block sollte immer noch nicht länger als 500 Elemente/KM/Squares/wasauchimmer sein. 8)


Hendrik
Zitat:Ein Block sollte immer noch nicht länger als 500 Elemente/KM/Squares/wasauchimmer sein.

Außerdem ist das ja auch völlig unrealistisch, 500 Teile zwischen 2 Signalen zu haben Wink

Technische Frage, wie kommts zu genau diesen 500?
hat bestimmt irgendwas mit dem routen zu tun. Wahrscheinlich ein Balancewert zwischen Schnelligkeit und Effektivität.
Zitat:Original von dariok
Hm, es gab mal ein Problem, das zu einem Absturz führen konnte. Wenn zwei Haltestellen über 500 Quadrate entfernt waren, gab es Probleme. Das Problem wurde zwar behoben, aber es kann natürlich sein, daß nicht alles fehlerfrei ist.
Versuch es mal mit einem Bahnhof dazwischen, weniger als 500 Tiles von einem anderen entfernt. Wenn es dann läuft, könnte es mit dem alten Problem zusammenhängen.


Wenn ich da was zwischenpacke (bahnhof) und den zug mal kurz da haltenlasse klappt das.

Hajo

Zitat:Original von dariok
Technische Frage, wie kommts zu genau diesen 500?

Die Entscheidung ist recht alt, und heute vielleicht nicht merh Zeitgemäss. Damals war ein Eckpunkt, dass Simutrans mit 16MB Ram laufen sollte, und deshalb wollte ich speicher sparen.

Ein Eintrag in der Route kostst 6 byte. In den alten Fahrzeugen hatte jedes Fahrzeugs eine eigene Route (also alle Waggons eines Zugs!).

500*6 = 3KB

Bei 10 Zügen zu 10 Waggons waren das bereits 300KB, d.h. es braucht sehr schnell sehr viel Speicher.

Mehr als 500 Einträge schienen auch nicht sinnvoll, die Karten waren damals max. 256x256.

Heute braucht ein Zug nur noch eine Tabelle, d.h. statt der 30K im Beispiel oben für einen Zug, nur noch 3K

Bei LKW sammelt sich aber immer noch schnell ein ganz schöner Speicherbedarf an ...

Also, ich würde das vorerst mal bei 500 Einträgen lassen. Das ist immerhin auch bei 1024x1024er Karten fast eine halbe Karte, und bei der Standrad 256x256 Karte zweimal die Kartenbreite.

Es sieht allerdings so aus, als müsste ich für bessere Signale mehr information in der Route speichern, d.h. vermutlich wächst demnächst ein Eintrag von 6 auf 8 bytes ...

Smile Das erinnert mich an die Aussage eines unserer Profs hier in der Informatik I - Vorlesung. "Sie könnten sich Gedanken machen, wie viel Speicher sie brauchen. Aber heute hat ja jeder so viel davon, das lohnt sich nicht!"

So, wie Du's schreibst erscheint mir das auch sinnvoll. Außerdem denke ich auch, daß das Problem nur in wenigen Fällen, wie Ultralangvebindungen auftritt. Und einen Bahnhof dazwischen zu bauen sollte das geringere Problem sein, wenn man's weiß.

Von daher würde ich das nicht unbedingt sofort ändern, vor allem, wenn die Sache mit den Signalen mehr Platz braucht - wer weiß, was noch alles kommt...

Hajo

Zitat:Original von dariok
Smile Das erinnert mich an die Aussage eines unserer Profs hier in der Informatik I - Vorlesung. "Sie könnten sich Gedanken machen, wie viel Speicher sie brauchen. Aber heute hat ja jeder so viel davon, das lohnt sich nicht!"

Es lohnt sich manchmal schon, Speicher zu sparen. Der Cache ist meist nicht sehr groß, und man sollte darauf achten, dass zumindest die häufig benutzen Daten in den Cache passen.

Insgesamt haben wir in Simutrans recht große Anstrengungen unternommen, möglichst wenig Speicher zu verbrauchen, aber das OO Design läßt manche Tricks die man in traditionell programmierten Spielen nutzen kann einfach nicht zu (Polymorphie geht in C++ nur über Pointer und ein Pointer braucht nun mal 4 Bytes. Wenn man auf jedem Feld einer 256x256er Karte einen Pointer auf ein Objekt hat, dann brauchen allein schon die Pointer 256KB Speicher, d.h. noch ganz ohne Karte und Objekte ist das schon ein Riesenbrocken. Und ein Objekt pro Feld reicht ja fast nie ...

Der Title dieses Threads ist "Maximale Länge einer Transportverbindung". Das Limit von 500 Feldern besteht zwischen zwei Haltestellen oder Wegpunkten. Die Gesamtlänge einer Transportzverbindung ist nicht begrenzt, man kann sie aus beliebig vielen 500er Stücken zusammsetzen!
Hallo...

Ich habe mir seit langem mal wieder Simutrans heruntergeladen. Version 88.06.3 auf einem Linux 2.6.16.

Kann es sein das die Transportwege weiter verkuerzt wurden? Ich will ein Erzwerk von einem Ende der Karte mit einem Stahlwerk via Schienentransport verbinden. Das Stahlwerk akzeptiert das Erz laut Registerfenster.

Nun kommt der Zug bis zum ersten Segment und findet dann keine route mehr, obwohl in unmittelbarer naehe der naechte Zwischenschritt ist.
Seiten: 1 2