Probleme mit mangelhaften MODs (case sensitive filesystems)

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


  • Es gibt ja durchaus Programmierphilosohpien die absichtlich nicht jeden erdenklichen Fehler abfangen wollen, weil das einfach immer schwieriger wird (erst recht mit modding). Und solange sprachen try/catch unterstützen ist man da eigentlich recht flexibel in der umgehensweise mit Fehlern. TPF war da in der Vergangenheit leider sehr empfindlich. Jeder noch so kleine Pupsfehler führte unnötigerweise sofort zum Absturz zurück auf den Desktop. Meistens ist das heute leider immer noch so.

  • Hallo

    TPF war da in der Vergangenheit leider sehr empfindlich. Jeder noch so kleine Pupsfehler führte unnötigerweise sofort zum Absturz zurück auf den Desktop. Meistens ist das heute leider immer noch so.

    TF war da ja noch um einiges empfindlicher. Es war doch TF, bei dem bei einer neuen Version die Prüfung von Dateien auf die UTF-8-Kodierung nachgereicht wurde und sich danach die Anzahl der Meldungen zu Abstürzen bemerkbar verringerte, oder? Für mich war das ein Aha-Erlebnis (kleine Ursache => große Wirkung).


    Dass Dateinamen in allen anderen als Windows-Betriebssystemen case-sensitive sind, war auch schon bei TF-Mods immer wieder ein Thema. Das sollten zumindest die altgedienten Modder kennen und verinnerlicht haben. Für Nicht-Windows-Nutzer ist ein Mod mit entsprechendem Fehler einfach kaputt. Wem das passiert, sollte das natürlich auch melden, damit es behoben werden kann. Eine Einstellung a la "Auf die paar Hanseln mit den exotischen Betriebssystemen lässt sich auch verzichten." finde ich allerdings enttäuschend.


    Dass die Prüfung auf korrekte Pfadangaben, die der realen Verzeichnisstruktur entsprechen, beim Spielstart illusorisch ist, wurde ja schon mehrfach konstatiert. Sollte solch eine Prüfung (per eingeständigem Skript?) auf Autorenseite für jeweils einen Mod nicht doch machbar sein? Ich stelle mir das so vor: Prüfe einen Mod und vergleiche die reale Struktur von Verzeichnis- und Dateinamen mit der in den Skripten referenzierten Verzeichnis- und Dateinamen (natürlich case-sensitive) und liste Unterschiede zwischen den beiden Ergebnismengen auf. So ließen sich Dateien finden, die eine andere Schreibung haben, als ihre Referenzen und auch solche, die nirgends benutzt werden (wäre ja ein positiver Nebeneffekt).


    Tschö, Auge

  • Es sollte eigentlich ne simple "Konvention" ala nur Kleinbuchstaben, Unterstriche statt Leerzeichen und keine Umlaute, genügen um sich den ganzen Ärger zu sparen. Das mit den Unterstrichen scheint ja jeder irgendwie intuitiv richtig zu machen, nur warum man sich mit klein- und groß durcheinander bringt oder gar mit Umlauten anfängt... ^^ Also bspw ein Mod der mein maßloses ÖBB paket heißt oder so. Paket plötzlich klein geschrieben, wird bestimmt irgendwo dann mal groß geschrieben, Leerzeichen drin und eben son olles ß und Ö. Ein simples mein_massloses_obb_paket und alles is tutti ^^


    Also jetzt nicht falsch verstehen. Was man nicht weiß, kann man nicht beachten. Sagt keiner was. Ich hab auch grad keinen Schimmer, was ich für TPFMM-Kompatibilität beachten muss, brauch ich ned das Ding, hab ich ned und will ich ned ^^ Nich weils Mist wäre oder ich es verteufel, einfach weil ich gefühlt ohne besser zurecht komm. Zumal ich eh so gut wie nie Mods nutze >< Aber dadurch hab ich damit halt keinerlei Erfahrung. Aber das is sicherlich wie mit dieser kleinen Konvention: Eigentlich total simpel ^^

  • nur muss man halt auch daran denken.


    Wenn ich auf Win kein Problem mit ß, ö, Leerzeichen, etc habe, und es von anderen Programmen wie etwa Word, Excel, AutoCAD gewohnt bin, dass Dateinamen auch ß, ö, ... haben können, (wir benennen unsere .dwgs in der Firma zB nach Projektname, und wenn da ein -straße vorkommt, gibts im Dateinamen auch -straße), dann tu ich mir schon schwer, plötzlich mein Benennungssystem umzustellen. Macht der Gewohnheit.


    Wenn man ständig x macht und plötzlich soll man y machen, tut man sich schwer. Speziell wenn man abends nach Uni/Arbeit noch bisschen Code macht etc. und nicht mehr ganz fit ist bzw noch gedanklich in der Arbeit davor gefangen...


    Es ist rein menschlich, dass man das tut, was sich bewährt hat, was funktioniert, und da der Großteil eben WIN-User sind, tut man das, was auf Windows läuft und funktioniert.

    MfG, die Licaon

  • Umlaute können unter MacOSX ein Problem sein, müssen aber nicht. Das ist dann abhängig ob das Endpackprogramm ob die Dateinamen konvertiert/berichtigt.
    Das bedeutet auch das es bei einem Mac Nutzer funktioniert, beim anderen dann auf einmal nicht, oder es aus unerklärlichen Gründen nach einem Update immer noch eine alte Datei nutzt. Dieses ist dann erst recht schwer zu debuggen.


    Es ist nur mein Rat damit umzugehen und ist kein muss, aber die Zeit zum finden solcher Fehler kann man besser in die Erweiterung eines Mod investieren.
    (Der Mac Nutzer Anteil ist gefühlt noch weniger als bei CIM)


    PS: Das Wochende hat mir der (alte) MS C++ Compiler und C++ Templates versaut, deswegen kann ich auch noch keine Aussage machen, ob ich in Zukunft eine Warnung wegen UTF8 in Dateinamen bzw. Gross und Kleinschreibung mit der CommonAPI anbieten kann.

  • Auch Windowsnutzer haben u.U. Probleme mit Umlauten, nämlich alle die den deutschen Zeichensatz nicht installiert haben, also so ungefähr 95% der Weltbevölkerung (wobei die sicher nicht alle TPF spielen :D )

  • nämlich alle die den deutschen Zeichensatz nicht installiert haben, also so ungefähr 95% der Weltbevölkerung

    unterstützt Windoof (bzw dessen Dateisysteme) immernoch kein Unicode?


    Das Problem (mit falsch benannten Dateien) scheint bei TPF2 weg zu sein. Hat hier der Hersteller nachgebessert, oder sind jetzt alle Modder so diszipüliniert?

    Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

    Linux version 5.14.21-150400.24.60-default (geeko@buildhost) (gcc (SUSE Linux) 7.5.0, GNU ld (GNU Binutils; SUSE Linux Enterprise 15) 2.39.0.20220810-150100.7.40) #1 SMP PREEMPT_DYNAMIC Wed Apr 12 12:13:32 UTC 2023 (93dbe2e)

  • Hallo

    unterstützt Windoof (bzw dessen Dateisysteme) immernoch kein Unicode?

    Nö, das sollte schon lange kein Problem sein. Windows arbeitet intern mit UTF16. Das Problem waren (mit Ausnahme von bestimmten MAC-Systemen (wie es eis_os weiter oben beschrieben hat)) auch nie die Umlaute, sondern die von den realen Namen abweichende Groß- und Kleinschreibung in irgendwelchen Konfigurationsdateien (Datei heißt "HasselDiggelDu.txt", in der Konfiguration wird aber auf "hasseldiggeldu.txt" verwiesen).


    Tschö, Auge

  • Mein Vorschlag wäre irgendeine Routine die das abfängt.. Exception handling on file not found, um dann die richtige datei (nur Gross-/Kleinschreibung falsch) doch zu laden.. sollte programmiertechnisch eigentlich simpel umsetzbar sein und würde all die fehlerhaften mods gangfähig machen..
    Besser wären natürlich saubere Mods.. aber das ist wohl eher illusorisch..

    schade, dass es fast fünf jahre später immernoch dieses Problem gibt :-(

    Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

    Linux version 5.14.21-150400.24.60-default (geeko@buildhost) (gcc (SUSE Linux) 7.5.0, GNU ld (GNU Binutils; SUSE Linux Enterprise 15) 2.39.0.20220810-150100.7.40) #1 SMP PREEMPT_DYNAMIC Wed Apr 12 12:13:32 UTC 2023 (93dbe2e)

  • Ja finde ich auch echt schade das es die Typen die Linux programmieren es immer noch nicht hinbekommen haben das die Datei trotzdem gelesen wird und stattdessen einen Programmabbruch provozieren.

  • Weil du unter Unix zwei Dateien haben kannst: Bla.txt und bla.txt mit verschiedenen Inhalten. Das ist aber auf Mac auch so. Nur weil euch der Explorer anlügt, das das nicht geht, heißt das das unterliegende Betriebssystem nicht kann. Schreibt doch einfach alles klein und ohne Umlaute, dann habt ihr das Problem nicht.


    PS: Bei Umlauten ist da noch ein anderes Problem MacOS kodiert diese anders, als Windows & Linux, das kommt dann auf das Entpackprogramm an, wie die Datei auf der "Platte" landet!

    Sprich auch wenn du als Mod Ersteller alles richtig gemacht hast, bringt die das Entpackprogramm des Nutzers einen Fehler rein.

    Schlechte Fehlermeldungen durch UG musst du aber doch langsam dran gewöhnt sein, oder?

  • Ja finde ich auch echt schade das es die Typen die Linux programmieren es immer noch nicht hinbekommen haben das die Datei trotzdem gelesen wird und stattdessen einen Programmabbruch provozieren.

    das würde ich eher UG in die Schuhe schieben. Dass die Dateisysteme case-sensitive sind, hat seine Berechtigung

    Wenn es ginge, nen exception-handler mod zu schreiben, würde ich das sofort tun.
    gerade dabei das spiel versuchen mit 4900 mods zum laufen zu bringen. dann nach ner knappen stunde ein fehler, weil ne datei nicht gefunden wird...

    Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

    Linux version 5.14.21-150400.24.60-default (geeko@buildhost) (gcc (SUSE Linux) 7.5.0, GNU ld (GNU Binutils; SUSE Linux Enterprise 15) 2.39.0.20220810-150100.7.40) #1 SMP PREEMPT_DYNAMIC Wed Apr 12 12:13:32 UTC 2023 (93dbe2e)

    Einmal editiert, zuletzt von tsilaicosneknurd ()

  • wIE bItTE solL dAS deNn fUnKTIoNIEren? SolL dAs SpiEL vEILeiCHt aLLe KoMBinaTIonen von GROss- Und KleINSchreibuNG durchProbiEREN? Bis es eine Datei findet?


    Linux ist nun mal case sensitive wenn du es nutzen willst wirst dich wohl damit abfinden müssen.

  • wIE bItTE solL dAS deNn fUnKTIoNIEren? SolL dAs SpiEL vEILeiCHt aLLe KoMBinaTIonen von GROss- Und KleINSchreibuNG durchProbiEREN? Bis es eine Datei findet?


    Linux ist nun mal case sensitive wenn du es nutzen willst wirst dich wohl damit abfinden müssen.

    im prinzip:

    on exception file not found {

    korrekter_name=`find dateipfad -iname "DateiNamewiEauchImmer"`

    retry
    }

    Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

    Linux version 5.14.21-150400.24.60-default (geeko@buildhost) (gcc (SUSE Linux) 7.5.0, GNU ld (GNU Binutils; SUSE Linux Enterprise 15) 2.39.0.20220810-150100.7.40) #1 SMP PREEMPT_DYNAMIC Wed Apr 12 12:13:32 UTC 2023 (93dbe2e)

  • So funktioniert das aber nicht. Das Problem ist ja das TPF2 gar nicht weiß wie der richtige Dateiname ist, wenn es beim OS nach einem bestimmten Dateinamen fragt kommt von Linux nur zurück "Sorry diesen Dateinamen kenne ich nicht!"


    Also was macht man?

    Als Beispiel in der mdl steht: Hallo ich brauche die Datei "maikc_br015_lod_0\maikc_br015_lod_0_details_pumpen_kohle.msh", dummerweise heißt die Datei aber "MaikC_BR015_Lod_0\MaikC_BR015_Lod_0_Details_Pumpen_Kohle.msh". Also kommt zurück "kenne ich nicht" und nicht: "Ich hätte stadtdessen aber folgende Datei die so ähnlich klingt." So intelligent ist das OS nicht. Es weiß nicht das maikc_br015_lod_0_details_pumpen_kohle = MaikC_BR015_Lod_0_Details_Pumpen_Kohle weil es case sensitive ist, für Linux sind das 2 völlig verschiedene Datein(amen). Im Unterschied zu Windows, dem ist es nämlich wurscht, es liefert dann die Datei welche die gleichen Zeichen hat ohne Rücksicht auf Groß- und Kleinschreibung.


    Also was könnten wir machen? Wir fragen nach

    Maikc_br015_lod_0_details_pumpen_kohle --> kennt es nicht

    mAikc_br015_lod_0_details_pumpen_kohle--> kennt es nicht
    maIkc_br015_lod_0_details_pumpen_kohle--> kennt es nicht

    maiKc_br015_lod_0_details_pumpen_kohle--> kennt es nicht

    usw.

    Das ergibt 56² (3136) Möglichkeiten welche Buchstaben denn nun groß oder klein sind. Das Modell hat 4 Lods und je 104 Dateien das ergibt 997.248 Möglichkeiten. Insgesamt eher etwas weniger da in den höheren Lods weniger Dateien sind und er ja auch eher auf die "Lösung" kommt, sagen wir also mal 850.000 Möglichkeiten

    Dazu kommt dann noch 4 mtl + und 4 Texturen wo ebenfalls Groß- und Kleinschreibung nicht beachtet wurde. 850.000 + 500.000 = 1.350.000 Möglichkeiten für eine Lok (mdl). Es gibt 10 Loks und für jede eine Fakelok, das macht dann 27.000.000 Möglichkeiten die er durchprobieren muss wenn er den einen Mod laden will.

    Da nicht all zuviele Leute Zugriff auf einen NASArechner haben dürfte das imho eine unmögliche Aufgabe sein.

  • Und zudem liegt das Problem nicht am "dummen" Spiel sondern an den Moddern, denen jegliche Einsicht auf sowas zu achten fehlt.

    ich schreibe zumindest immer konsequent an im steam-workshop. Sollte mal ne Vorlage erstellen ;-)

    So funktioniert das aber nicht. Das Problem ist ja das TPF2 gar nicht weiß wie der richtige Dateiname ist, wenn es beim OS nach einem bestimmten Dateinamen fragt kommt von Linux nur zurück "Sorry diesen Dateinamen kenne ich nicht!"

    dafür gibt es ja z.B. das kommando "find -iname" (wie ich in meinem beispiel verwendet habe), sucht nach der datei unabhängig von der gross/kleinschreibung, und gibt alle möglichen dateien zurück.
    ist es nur eine, dann sollte die genommen werden. sind es mehrere->abbruch, da unklar welche datei

    Dell Precision T7600, 2 x Intel(R) Xeon(R) CPU E5-2665 (8 cores per CPU, 2 threads per core, 20MB L3 cache, 2.4/3.1GHz) (⁼32 logische CPUs), 512 GiB DDR3 ECC registered 1600 MT/s, NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (11GB GDDR5X 352 bit), SAS Hardware RAID Level 1

    Linux version 5.14.21-150400.24.60-default (geeko@buildhost) (gcc (SUSE Linux) 7.5.0, GNU ld (GNU Binutils; SUSE Linux Enterprise 15) 2.39.0.20220810-150100.7.40) #1 SMP PREEMPT_DYNAMIC Wed Apr 12 12:13:32 UTC 2023 (93dbe2e)

BlueBrixx