Assertion Failure: Assertion `!m_types[iindex].name.empty()` failed

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


  • Sehr geehrte Community,


    folgendes Problem lässt mich nicht mehr in Ruhe schlafen.

    Es gibt zwar schon diverse Beiträge zum Thema "Assertion Failure", aber auf die genaue Bezeichnung die bei mir zutrifft, bin ich bislang noch nicht gestoßen.

    Aber erstmal zum Problem:


    Ich habe mir einen Spielstand herunter geladen und möchte diesen nun Laden.

    Alle benötigten Mods sind soweit installiert und werden auch vom Spiel erkannt.

    Beim Laden des Spielstandes stürzt das Spiel dann immer bei ca. 70% Ladefortschritt ab und spuckt folgende Crashmeldung aus:



    Inzwischen habe ich TPF2 sogar schon komplett deinstalliert und einmal neu aufgespielt, leider ohne Erfolg.

    Durch das Auslesen der Stdout-Datei bin ich auch nicht schlauer geworden.

    Ich hoffe daher hier Hilfe zu finden und würde mich über jede Antwort freuen.


    Grüße


    JiProud

    Dateien

    • stdout.txt

      (40,98 kB, 87 Mal heruntergeladen, zuletzt: )
  • Deine Fehlermeldung bedeutet das dass "Object 87522" in dem Savegame fehlerhaft ist. Auf einer neuen Karte ohne Mods wird dieser Fehler wohl auch nicht so auftreten.


    Dazu musste schon das fehlerhafte savegame ohne Mods laden wie vacuumtube geschrieben hat. Wobei ich nicht glaube das dass funktionieren wird. Einige Mods können nicht deaktiviert werden.


    Die stdout gibt aber noch den Hinweis das es mit Tracktypen Probleme gibt, schalte also mal alles Mods aus die dem spiel Gleise hinzufügen.

    z.b.:
    rheingold_db_gleisset_mod/1 (1) (DB Gleisset)

    ETH_inv_track/1 (1) (Unsichtbares Gleis)

  • Ah, dafür steht das also.


    Bei dem Spielstand handelt es sich konkret um Dresden und Umgebung, falls das noch von Nutzen ist.

    Der lässt sich leider nicht ohne aktivierte Mods laden.

    Habe es mal ohne DB Gleisset und ohne Unsichtbares Gleis versucht, nun geht es um das Objekt 105201, statt 87552.


    Lässt sich da rausfinden, was das genau für ein Objekt ist?

  • Hmm Mist, dann wird das wohl kompliziert.

    Per Ausschlussverfahren konnte ich zuminest feststellen, dass der DB Gleissetmod wohl das fehlende Objekt 87552 verursacht.

    Aber ich habe jetzt noch keinen Lösungsansatz vor Augen.

    Hatte den ja gerade erst neu gedownloadet und entsprechend der Videoanleitung zum Spielstand die fehlenden Gleise hinzugefügt.


    Auch wenn der Mod raus ist, kommt es ja zu neuen fehlenden "Entities".

    Gibt es dafür gar keine Methode, um das nach und nach Auszuschließen?

  • Langsam gehen die Ideen aus. Normalerweise sollten bei Gleismods die man deaktiviert die Gleise automtisch ersetzt werden durch vanaillagleise (hat bei mir jedenfalls immer funktioniert) Poast mal die stdput nachdem du beide Gleismods deaktiviert hast. Du hast ja gesagt es ist dann eine andere Entitity.

  • Das ist sehr komisch. Technisch sollte es nie passieren das im Spiel ein TrackType genutzt wird, aber im TrackTypeRep ein Gleis ohne Dateinamen auftritt. :/
    (Deswegen bricht der Code ab)


    Technisch sollte UG im Spielstand alle Daten für nicht vorhandene TrackTypes speichern und diese dann ersetzen.


    !m_types[iindex].name.empty()


    m_types ist ein std::vector (Array) aus einem Paar von std::string Name (der Dateiname) und einem Zeiger auf die TrackType Daten (Speicherstruktur der eingelesenen config oder alternativ der internen Sicherungskopie sofern vorhanden)


    Also das was man in der Konsole bekommt, Beispiel:

    >> api.res.trackTypeRep.getAll()

    {

    [0] = "high_speed.lua",

    [1] = "standard.lua",

    [2] = "eis_os_1000mm.lua",

    [3] = "eis_os_1000mm_5_5m.lua",

    [4] = "eis_os_750mm.lua",

    }

    Code
    struct std_pair_string_TrackType
    {
        std::string name;
        TrackType *trackptr;
    };
    
    struct TrackTypeRep {
        ...
        std::vector<std_pair_string_TrackType> m_types;
    };


    Schalte ich nun mal mein Gleisset ab, erhalte ich in der stdout.txt:


    eis_os_1000mm.lua not found in res/config/streets but was saved with savegame

    eis_os_1000mm_5_5m.lua not found in res/config/streets but was saved with savegame

    eis_os_750mm.lua not found in res/config/streets but was saved with savegame


    Aber ich habe weiterhin, alle TrackTypes (durch UGs Sicherung),

    beim Laden werden die Daten dann eingelesen und die Modelle mit "placeholders/missing_generic.mdl" ersetzt, d.h. man hat ne Menge Würfel.


    -edit-

    Streckennetz, Dresden und Umgebung angeblich gibt es im Video eine Lösungsbeschreibung (Warum macht man so etwas in Videos?) laut Kommentaren.

  • Poast mal die stdput nachdem du beide Gleismods deaktiviert hast. Du hast ja gesagt es ist dann eine andere Entitity.

    Hab Sie dir mit angehangen.

    Technisch sollte UG im Spielstand alle Daten für nicht vorhandene TrackTypes speichern und diese dann ersetzen.

    Da stellt sich ja die Frage, warum das gerade bei diesem Spielstand nicht funktioniert.

    Liegt das am Spielstand selbst oder an TransportFever?

    Weil entweder verhindert ja das savegame den Zufriff auf diese Rückfallebene oder diese ist im Spielverzeichnis gar nicht auffindbar.


    Achso zum Lösungsansatz aus dem Video.

    Da geht es darum, dem DB Gleismod noch zusätzliche Geschwindigkeiten hinzuzufügen.

    Das habe ich auch wie dort beschrieben ausgeführt, aber der Fehler scheint ja woanders zu liegen.

    Dateien

    • stdout.txt

      (50,56 kB, 63 Mal heruntergeladen, zuletzt: )
  • Nochmals, ich hab dir den Code da oben aufgedröselt, den gibt es an X stellen in TPF2, aber es kommt immer auf das Gleiche raus:


    Ein Entity will ein Gleistype benutzen, schaut in im TrackType Repo nach, da ist aber nix. -> Fehler. Die Lösung kann also eigentlich nicht sein, weniger Gleismods zu laden, sondern eher mehr Gleise zu laden...


    (Das Savegame ist ggf. zu alt und daher hat TPF2 da noch keine Sicherungskopien der Gleisdaten gespeichert)

  • Sorry, das klingt bestimmt blöd, aber dafür reicht mein Verständnis über das Game noch nicht.

    Also dass der Gleistype gesucht wird und nicht gefunden wird, das schon, aber wo ich da jetzt ansetzen kann um das Problem zu lösen, da hab ich immernoch tausend Fragezeichen

  • Code
    savegame version 296

    Das kommt mir doch etwas alt vor. Da wurden noch keine Gleisinformationen ins Savegame gespeichert. Daher funktioniert der Fallback nicht.


    Ich habe in Erinnerung dass es da nach dem Update in dem das Fallback eingebaut wurde eine Änderung gab. Früher wurden bei fehlendem Straßen/Gleistyp eine nützliche Fehlermeldung gegeben wie

    Zitat

    3 resource(s) are missing!

    street/street1.lua

    track/standard_70.lua

    ...

    So konnte man andere Savegames zumindest mit trial and error laden und wusste welche Dateien fehlen bzw. nach welchen Mods man etwa suchen musste.

    Lädt man nach diesem Spielupdate alte Savegames, die noch nicht die Informationen drin haben, kann der Fallback nicht durchgeführt werden. Die Fehlermeldung ist, wenn ich mich richtig erinnere, bei Gleisen aber nicht mehr wie oben, sondern besagte ResTypeRep.h:142 Assertion. Da steht dann leider kein Dateiname drin.


    Meine Vermutung daher: Eine Construction verwendet einen Gleistsyp der nicht geladen ist.

    Daher nicht weniger Gleismods laden, sondern den fehlenden aktivieren! Oder möglicherweise musst du wie in der Anleitung dann Gleisdateien hinzufügen.

    Bitte jedenfalls nicht auf die Idee kommen, Mods zu deaktivieren, in denen diese Construction mit abhängigem Gleis sein könnte! Die Daten zum Verweis auf den Gleistyp sind schon fest im Savegame gespeichert.

BlueBrixx