Spielabsturz ohne fehlermeldung

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Hallo alle zusammen,


    Ich habe seit gestern ein Problem. Das spiel stürzt ab am 26 März ohne fehlermeldung.
    Ich habe schon gesucht ob es eventuell ähnliche Probleme gab, aber nichts gefunden. Nur die ganze sache mit der Industrie zurückentwicklung.


    Mein Errorlog:
    c:\build\transport_fever\steam\transport_fever_release\src\game\urbansim\pathfinder_util.cpp:764: struct PathFactoryOutput __cdecl simulation_util::path_finder::FindPathLines(class transport::PathFinder<struct transport::LineSectionOptimized> &,int,const class ecs::Engine *,const class std::unordered_map<struct transport::NodeId,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > >,struct std::hash<struct transport::NodeId>,struct std::equal_to<struct transport::NodeId>,class std::allocator<struct std::pair<struct transport::NodeId const ,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > > > > > *,const class std::unordered_map<struct std::pair<class ecs::Entity,int>,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > >,struct std::hash<struct std::pair<class ecs::Entity,int> >,struct std::equal_to<struct std::pair<class ecs::Entity,int> >,class std::allocator<struct std::pair<struct std::pair<class ecs::Entity,int> const ,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > > > > > *,const class std::vector<class std::unordered_map<class ecs::Entity,struct ecs::LineCargoInfo,struct std::hash<class ecs::Entity>,struct std::equal_to<class ecs::Entity>,class std::allocator<struct std::pair<class ecs::Entity const ,struct ecs::LineCargoInfo> > >,class std::allocator<class std::unordered_map<class ecs::Entity,struct ecs::LineCargoInfo,struct std::hash<class ecs::Entity>,struct std::equal_to<class ecs::Entity>,class std::allocator<struct std::pair<class ecs::Entity const ,struct ecs::LineCargoInfo> > > > > *,const class std::unordered_map<struct std::pair<class ecs::Entity,int>,class std::vector<int,class std::allocator<int> >,struct std::hash<struct std::pair<class ecs::Entity,int> >,struct std::equal_to<struct std::pair<class ecs::Entity,int> >,class std::allocator<struct std::pair<struct std::pair<class ecs::Entity,int> const ,class std::vector<int,class std::allocator<int> > > > > *,const class std::unordered_map<struct std::pair<class ecs::Entity,int>,int,struct std::hash<struct std::pair<class ecs::Entity,int> >,struct std::equal_to<struct std::pair<class ecs::Entity,int> >,class std::allocator<struct std::pair<struct std::pair<class ecs::Entity,int> const ,int> > > *,const class std::unordered_map<class ecs::Entity,class std::vector<struct std::pair<struct transport::EdgeId,float>,class std::allocator<struct std::pair<struct transport::EdgeId,float> > >,struct std::hash<class ecs::Entity>,struct std::equal_to<class ecs::Entity>,class std::allocator<struct std::pair<class ecs::Entity const ,class std::vector<struct std::pair<struct transport::EdgeId,float>,class std::allocator<struct std::pair<struct transport::EdgeId,float> > > > > > *,const class std::unordered_map<struct transport::EdgeId,class std::vector<struct std::pair<class ecs::Entity,float>,class std::allocator<struct std::pair<class ecs::Entity,float> > >,struct std::hash<struct transport::EdgeId>,struct std::equal_to<struct transport::EdgeId>,class std::allocator<struct std::pair<struct transport::EdgeId const ,class std::vector<struct std::pair<class ecs::Entity,float>,class std::allocator<struct std::pair<class ecs::Entity,float> > > > > > *,int,enum MovePreference,const struct transport::LineOrEdge &,const struct transport::EdgeId &,struct simulation_util::path_finder::LinesExpanderCache &): Assertion `!result.moveEdges.empty()' failed.


    Es sieht aus als würde etwas nicht ganz richtig sein mit einer Factory. Aber es gibt pathfinder errors...oder sehe ich das falsch? Hat Jemand eine Idee was hier falsch ist?

  • Spielst du Vanilla oder mit Mods und wenn ja mit Mods, welche wurde zuletzt hinzugefügt, bzw. hat sich über Steam "automatisch" geändert ?
    Ich glaube nicht das Vanilla mit Industrien und "Vanilla KI-Straßenupgrade" Fehler produziert.

  • Ich spiele mit Mods. Eigentlich fast alle. Die letzten würden gleichzeitig die Elevated Station und Karte vom Ruhrgebiet sein.
    Dieser spielstand ist auch auf der Karte. Angefangen in 1990, gleich mit so einem Elevated Station. Es hat bis 26 März 2006 funktioniert.
    Ob sich eine Mod geändert hat...wie kann man das sehen?

  • Ich glaube, bin mir aber nicht sicher, das die Elevated Station Probleme verursacht. Im Bereich Mods gibt es dazu einen Toppic, einfach mal vorbeischauen und einlesen ob es dich betrifft.
    Der Hinweis ist ja Pathlines und Edges, beides betrifft die Wegführung.


    Mods deinstallieren hilft dir nicht weiter, da dann dein Spielstand nicht weiter gespielt werden kann.


    Den SteamOrdner kannst du mit WindowsExplorer nach geänderten Daten suchen lassen (Eingabe Datum als Zeitraum)



    Nachtrag:(PressLink)


    ELEVATED STAION

  • zsbuum: Yes, I do have the Dresden station. Never had trouble with it in other savegames.


    Speedmaster: Oh man...das sind aber viele. Oder meinst Du die die Ich gebraucht habe auf dieser karte? Wenn ja, dan: Dresden Station, Elevated Station, Schwerin Station, einige von den DMA LKW lade stations, die großen Lokschuppen, DB Schenker Ladehalle und die Karte vom Ruhrgebiet. Es ist ein fast neuer Spielstand.


    Kiwi-NZ: Also...die letzte Mod die sich geändert hat ist die Elevated Station.


    Ich habe grade mal probiert die Elevated Bahnhöfe ab zu brechen. Spiel weiter laufen lassen....kein Resultat, also...wieder absturz. Habe auch schon bei Industrie probiert die strassen ander zu bauen, mit dem Gedanken an die entwiklungs Bugs, aber das hilft auch nicht.

  • @Gilmourish Please trust me! It is the dresden station, I built 2 of them in my one savegame, one of them caused the crash.
    It crashed only if I moved the cursor on the station, but after that it crashed without touching it, at the end of the month.
    I searched for a previous autosave and I found one which was good and I could delete the station.
    I also commented in the Dresden Neustadt forum thread, and I also managed to find out it crash because of the game engine (others told that, Urban Games recently trying to solve the problem), and the station's own underpass road is on a main connection between cities!
    One of the 2 station I built works perfectly after 80+ years, because it is not a main connection. Please check your Dresden Neustadt station in this savegame.
    If not, then sorry!

  • zsbuum: I just tried to delete the Dresden station. And again it crashed...though the crash was a day later.


    So wie Ich sehen kann...es ruckelt am 25. März ganz schwer...dann der absturz am 26. Als Ich jetzt den Dresdener BH abgebrochen habe war da immer noch das ruckeln am 25. aber der absturz am 27. Ist ein bisschen komisch.
    Das abreißen des Bahnhofs ging schwierig, da die Bushalte(die große van DMA) gegenüber stand. Die hatten eine kollision. Vielleicht noch mal probieren alles ab zu reißen...also den Dresdener Bahnhof und die elevated Bahnhöfe.



    EDIT: Na...probiert die Bahnhöfe ab zu reißen. Immer noch absturz. Könnte es etwas zu tun haben mit der Karte?


    Hier mal das letzte Errorlog. Stimmt das, wie Ich es so aus einander gezogen habe?



    c:\build\transport_fever\steam\transport_fever_release\src\game\urbansim\pathfinder_util.cpp:764: struct PathFactoryOutput __cdecl simulation_util::path_finder::FindPathLines(class transport::PathFinder<struct transport::LineSectionOptimized> &,int,const class ecs::Engine


    *,const class std::unordered_map<struct transport::NodeId,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > >,struct std::hash<struct transport::NodeId>,struct std::equal_to<struct transport::NodeId>,class std::allocator<struct std::pair<struct transport::NodeId const ,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > > > > >


    *,const class std::unordered_map<struct std::pair<class ecs::Entity,int>,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > >,struct std::hash<struct std::pair<class ecs::Entity,int> >,struct std::equal_to<struct std::pair<class ecs::Entity,int> >,class std::allocator<struct std::pair<struct std::pair<class ecs::Entity,int> const ,class std::vector<struct std::pair<class ecs::Entity,int>,class std::allocator<struct std::pair<class ecs::Entity,int> > > > > >


    *,const class std::vector<class std::unordered_map<class ecs::Entity,struct ecs::LineCargoInfo,struct std::hash<class ecs::Entity>,struct std::equal_to<class ecs::Entity>,class std::allocator<struct std::pair<class ecs::Entity const ,struct ecs::LineCargoInfo> > >,class std::allocator<class std::unordered_map<class ecs::Entity,struct ecs::LineCargoInfo,struct std::hash<class ecs::Entity>,struct std::equal_to<class ecs::Entity>,class std::allocator<struct std::pair<class ecs::Entity const ,struct ecs::LineCargoInfo> > > > >


    *,const class std::unordered_map<struct std::pair<class ecs::Entity,int>,class std::vector<int,class std::allocator<int> >,struct std::hash<struct std::pair<class ecs::Entity,int> >,struct std::equal_to<struct std::pair<class ecs::Entity,int> >,class std::allocator<struct std::pair<struct std::pair<class ecs::Entity,int> const ,class std::vector<int,class std::allocator<int> > > > >
    *,const class std::unordered_map<struct std::pair<class ecs::Entity,int>,int,struct std::hash<struct std::pair<class ecs::Entity,int> >,struct std::equal_to<struct std::pair<class ecs::Entity,int> >,class std::allocator<struct std::pair<struct std::pair<class ecs::Entity,int> const ,int> > >


    *,const class std::unordered_map<class ecs::Entity,class std::vector<struct std::pair<struct transport::EdgeId,float>,class std::allocator<struct std::pair<struct transport::EdgeId,float> > >,struct std::hash<class ecs::Entity>,struct std::equal_to<class ecs::Entity>,class std::allocator<struct std::pair<class ecs::Entity const ,class std::vector<struct std::pair<struct transport::EdgeId,float>,class std::allocator<struct std::pair<struct transport::EdgeId,float> > > > > >


    *,const class std::unordered_map<struct transport::EdgeId,class std::vector<struct std::pair<class ecs::Entity,float>,class std::allocator<struct std::pair<class ecs::Entity,float> > >,struct std::hash<struct transport::EdgeId>,struct std::equal_to<struct transport::EdgeId>,class std::allocator<struct std::pair<struct transport::EdgeId const ,class std::vector<struct std::pair<class ecs::Entity,float>,class std::allocator<struct std::pair<class ecs::Entity,float> > > > > >


    *,int,enum MovePreference,const struct transport::LineOrEdge &,const struct transport::EdgeId &,struct simulation_util::path_finder::LinesExpanderCache &): Assertion `!result.moveEdges.empty()' failed.

    2 Mal editiert, zuletzt von Gilmourish ()

  • Meiner Meinung nach liegt der Fehler in der Engine.
    Entweder eine Mod funktioniert - oder sie funktioniert nicht und führt gleich beim Bau zum Absturz.


    Hier passieren aber laufend Abstürze erst nach einiger Zeit nach dem Bau eines Bahnhofs.
    Nach dem Bau ändert sich an einem Bahnhof nichts mehr - keine Lanes, keine Straßenanschlüsse, nichts!


    Was sich aber ändert ist das Umfeld des Bahnhofs durch die Engine/KI.
    Die baut laufend irgendetwas um (neue Straßen, alte aufrüsten, usw.) und berechnet Pfade neu.


    Bei obigem Stacktrace ist ein Teil dss Ergebnisses der Funktion "FindPathLines" des Pfadfinders in der
    Auflistung "result.moveEdges" - eine Menge von "Kanten", die irgendwie/irgendwohin bewegt werden sollen/können.
    "empty()" gibt den boolschen Wert "Wahr" zurück, wenn die Menge leer ist, also nichts bewegt werden soll/kann.
    Das !-Zeichen negiert den Ausdruck.


    Die Assertion "!result.moveEdges.empty()" sagt aus, dass die Menge an der Stelle des Codes nie leer sein darf,


    wenn der Algorithmus und die Eingangsdaten korrekt sind und alles so läuft, wie der Programmierer es gerne hätte.
    Sie ist aber doch leer und - unsanfter Abbruch.


    Was da falsch läuft, kann nur UG herausfinden.
    Ob wir bei unseren Mods Fehler machen, wissen wir nicht. Es gibt keine Dokumentation, was wir dürfen und was nicht.
    Wir nutzen nur aus, was uns UG mit der Lua-Schnittstelle in die Hand gegeben hat - und das funktioniert eine
    mehr oder weniger lange Zeit auch!


    Das die Engine Probleme hat, kann man auch hier sehen:
    Tom's Bahnhof-Basteleien...

  • Danke für's reingucken Tom ;)


    Klinkt ja logisch. Nur kann mann also nicht herausfinden wo das Problem entsteht...sehr schade.
    Es ist genau so wie Du schreibst...nicht beim bau des BH's aber nach längerer Zeit. Die Mod Bahnhöfe habe Ich in circa 1991 gebaut und in 2006 ist der Absturz. Da zwischen habe ich keine Mod Bahnhöfe gebraucht.
    Mann würde ja sagen, wenn mann die BH abreißt und die Straßen in der nähe, das kein Fehler mehr auftreten sollte, aber alles was Ich probiere gibt das selbe Resultat...Absturz. Komisch :S
    Könnte es auch ein Fehler sein mit einem Vanilla Bahnhof?


    Also...eigentlich ist da nichts zu machen um diesen Spielstand zu retten.


    Würde gut sein wenn UG mal den hinter liegenden Code für den Algorithmus frei gibt. Dann könntet Ihr Modder ja auch mal was neues probieren und/oder Fehler entdecken.

  • Entweder eine Mod funktioniert - oder sie funktioniert nicht und führt gleich beim Bau zum Absturz.

    Nun - ich hatte ja auch mein Problem mit dem modernen Bahnhof von @eis_os - das aber auch nur in einer bestimmten Konfiguration des Bahnhofs und auch nur, wenn - soweit ich es erkennen konnte - die Einwohner versuchten, auf einen von den Lanes her nicht erreichbaren Bahnsteig zu gelangen.


    Zum Glück konnte das Problem gelöst werden - aber es wäre schon schön, wenn sich das frühzeitiger testen lassen könnte, sprich in allen möglichen Konfigurationen...

  • die Einwohner versuchten, auf einen von den Lanes her nicht erreichbaren Bahnsteig zu gelangen.

    Kann mir schwer vorstellen, dass eine unterbrochene Lane zu einem Absturz führt. Der Bahnsteig ist dann einfach nicht erreichbar,
    da kommt halt kein Sim hin. Genau wie ein Bahnhof nicht genutzt wird, wenn sein Straßenanschluss nicht mit dem Straßennetz verbunden ist.


    Ob das Problem durch den modernen Bahnhof wirklich gelöst ist? Warum der Absturz erst nach längerer Zeit, während der der
    Bahnhof ohne Absturz funktioniert hat - bis auf den Bahnsteig. Habe da so meine Zweifel...

  • In dem Moment, wo ein Einwohner versucht, den Bahnsteig zu erreichen, schmiert TPF ab (Ok - mit ner Fehlermeldung und nicht direkt ohne alles).


    Wenn man jetzt überlegt, dass offensichtlich die Zielerstellung für die Einwohner nicht linear verläuft (und sich somit nicht jeder SIM nach Neuladen eines Spielstands an der gleichen Stelle nach einiger Zeit befindet), so wird klar, dass dies unter oben genannter Bedingung auch nicht immer zum gleichen Zeitpunkt stattfindet (sonst hätte ich den auslösenden SIM frühzeitiger ausmachen können).


    Wird der Bahnhof nicht ins Liniennetz eingebunden, so schmiert in meinem Fall TPF nicht ab. Ich denke, das wird in dem betreffenden Thread letztendlich auch klar...

  • In dem Moment, wo ein Einwohner versucht, den Bahnsteig zu erreichen, schmiert TPF ab

    Bist Du dir da 100% sicher? Wie hast Du den Einwohner ausgemacht?
    Wieso soll ein Einwohner versuchen einen Bahnsteig zu erreichen, den er nicht erreichen kann?
    Was für eine Assertion stand denn in deiner stdout.txt?


    Das ergibt alles keinen Sinn...

  • Gut - ich gebe mal 99%. ;) Folgende Screenshots dazu:



    Zunächst läuft der Zug in Bochum ein. 4 Passagiere wollen auf den neuralgischen Bahnsteig des Bahnhofs Wattenscheid.



    Der Zug ist kurz vor dem Halt in Wattenscheid. Das Spiel funktioniert noch.



    Der Zug hat angehalten - TPF läuft immer noch (ich habe bei den Passagieren zwischen Details und Übersicht gewechselt).



    Game over - das Spiel stürzt im nächsten Moment ab.


    Fazit: Der Zug hat den Bahnhof bereits mehrfach passiert - ich konnte keine Passagiere ausmachen, welche versucht haben, den 2. Bahnsteig von Wattenscheid zu erreichen. Daher gehe ich davon aus, dass in diesem Fall das Aussteigen der Passagiere auf den Bahnsteig zum Absturz führt, da sie von da aus nicht weiterkommen (fehlende Lanes)...

  • @Tom


    Du redest gerade von TpF, was macht dort Sinn?


    Fakt ist, ein Bahnhof muss alle Bahnsteige irgendwie am Straßennetz angebunden haben, da TpF beim Abladen von Waren/Passagieren sonst einen Crash macht.
    Dabei ist es unerheblich welchen Bahnsteig der Zug genommen hat, also der genutzte Bahnsteig sehr wohl angeschlossen ist.
    Die Berechnungen werden nicht gemacht wenn der Bahnhof gar nicht am Straßennetz hängt. Da ist ein Logikfehler im Spiel, der Zustand "Teilangeschlossen" wird nicht berücksichtigt. Ich hab das jetzt mehrmals getestet und reproduzierbare Crashs. Warum es da Wechselwirkungen gibt keine Ahnung.


    TPF hat auch ein Limit an Bahnsteigen. Man kann also einen Bahnhof bauen, der X Segmente hat, die man nicht an die Schienen Nodes bindet, aber ab einer bestimmten Menge crasht das Spiel auch.
    Es gibt also im Code keinen Check ob das Bahnsteig Limit erreicht wird und dann eine Warnung. (Beim Testen von Ascii Designs ohne Gleise kam dieses Problem zum Vorschein).


    Für die beiden Fälle gibt es keinen Log Eintrag!


    Des weiteren Crash das Spiel wenn ein Straßenanschluss-Edge zu kurz ist, TPF verursacht einen Crash wenn es den Übergang zwischen den Straßenteilen errechnen möchte. Das führt normalerweise zu einem Log Eintrag.

BlueBrixx