Schneller Laden, weniger Stuerze - Workflow fuer Entwickler & "Wale"...

  • Workflow Beschreibung.


    Wobei dies hilft:


    1. Erst-Laden des Spieles (nicht einzelner Strecken/Szenarien) in 5-10 Sekunden, egal welche Hardware! (Kein Scherz!)


    2. Keine De-/Re-Installationen mehr noetig. (Alle Strecken, alle Assets, alle Lokos, etc., bleiben permanent auf den Platten).


    3. Abstuerze wegen fehlerhafter/korrupter Szenarios schneller finden und isolieren.


    4. Methode mit der man schneller laden kann als mit der schnellsten (PCI-)SSD (.. auch kein Scherz!)




    Die grundlegende Idee ist folgende: den Ordner "Route" von Railworks.exe verstecken und einzelne Routen (und/oder Szenarien) via MS JUNCTIONS (Symbolische Links) an das Spiel anbinden!



    A) Alles installieren. Komplett alles. Assets, Routen, Lokos, Reskins. (Bei mir sind das derzeit circa 500 GB an Assets(!) und circa 400 Routen).


    B) Abhaengig von HDD/SSD's muessen alle Routen und Assets nicht auf derselben Platte installiert sein! (Assets: Kuju auf HDD1, ChrisTrains auf HDD2, DTG auf SSD2, etc, etc... - einzelne Routen 0000-0000-... genauso.


    C) Im Ordner Railworks/Assets und Railworks/Content/Route alle Assets und Routes herausziehen und/oder Ordner "Assets" und "Route" umbennen (sodass Railworks.exe beide nicht findet).


    D) Leere Ordner "Assets" und "Route" in Railworks bzw Railworks/Content/ erstellen.


    E) Nun, einzelne Routen oder Assets Unterordner via Junction Link 'einbinden'.


    Mit dieser Methode kann man die notwendigen Assets/Route Ordner auf ein Minimum reduzieren! Die Erstladezeit ist tatsaechlich reduzierbar auf 5-10 Sekunden! (= abhaengig davon, wieviele Routen, insbesondere Szenarios(!), beim Erststart in die SDBCache.bin Datenbank eingelesen werden muss).


    Diese Methode hilft leider NICHT dabei, wenn man einzelne Szenarios ladet. Es gibt einen Command Line Parameter der Daten in einen Ordner "PreCache" speichert, welcher beim Neustart der Route benutzt werden kann. Ich habe keine messbaren(!) Geschwindigkeitsvorteile dabei entdeckt.


    Warum diese Methode - Junctions - nuetzlich ist, habe ich oben beschrieben. MS Junctions basiert auf Microsofts Mark Russinovich, den manche von uns aelteren Windows 1.0 Usern von SystInternals noch kennen. Er hat so alle nuetzlichen UNIX Tools fuer Windows portiert. Falls ich hier jemanden etwas "Lebenszeit" ersparen kann, dann habe ich meine Aufgabe erfuellt. Insbesondere bei Route-/Szenario Entwicklern sind gelegentliche Abstuerze mit dieser 10+ Jahre alten Game Engine nicht vermeidbar. "Schmale Installationen" helfen. Man muss dafuer keine Zweitinstallation anlegen. Oder Dinge staendig de-/re-installieren. Sogenannte Spiele-"Wale" (Engl. "Whales"), also Spieler, welche JEDE erdenkliche DLC besitzen und Tausende von Euros in das Spiel gesteckt haben, koennen sich ebenfalls Zeit ersparen und oder fehlerhafte Szenarios schneller finden.


    (zu 4.)


    Was Train Simulator fehlt, in meinen Augen, ist ein partieller, konfigurierbarer "Loader", wie der "SceneryConfigEditor" fuer Microsoft Flight Simulator bzw Prepar3D, von Andrew Thornton.





    Die Idee ist ein Freeware Tool, welches via UI die Frage stellt "Welche Route(n) moechtest Du heute fahren?" und man gibt eine Vorauswahl ein. Diese Routen werden dann - mitsamt den Szenarios und abhaengigen Assets - auf eine freie (PCI-)SSD Platte geschubst, sodass nicht 150-500GB permanent von Train Simulator 'besetzt' werden muessen.


    Was 10x so schnell wie die schnellste SSD Festplatte ist, nennt sich RAM-Disk!!! Fuer diejenigen unter uns, welche 32GB Systemspeicher oder eventuell schon 64GB System RAM ihr eigen nennen. Davon laesst sich ein Stueck 'abschneiden' und als 'virtuelles Laufwerk' in Memory benutzen.


    DDR4 schlaegt SSD.


    So konnte man die notwendigen Daten hin-und-herschubsen, waehrend Railsimulator/TSxxxx keine Ahnung hat, was um ihn herum geschieht. Dateiordner werden via Links eingebunden und geloescht. TS Unterordner koennen so auf beliebig viele Festplatten platziert werden.


    Ich selber bin zu faul, sowas zu schreiben. Stattdessen laufe ich mit dieser Idee seit Jahren schwanger herum. Vielleicht, moechte ja jemand diese Idee aufgreifen, bevor ich mich doch noch dazu zwinge.


    Hilfreiche Literatur und Links:


    Originaler Microsoft Developer Beitrag uber MS Junctions von Mark Russinovich: https://technet.microsoft.com/…ysinternals/bb896768.aspx
    Hilfreiches Freeware-Tool welches MS Junctions in den Kontext-Menu der rechten Maustaste installiert. Freeware von Hermann Schinagl :http://schinagl.priv.at/nt/har…t/linkshellextension.html
    Methode zum Auffinden fehlerhafter/korrupter Szenarios welche zum Crash/TempDump beim Spielestart fuehren:
    Methode zum Auffinden fehlerhafter/korrupter Szenarios, welche zum Crash (TempDump) beim Spielstart fuehren:

  • Ich weiß... Leichenschändung, aber EGAL....


    Die Sache ist die: Es funktioniert und zwar echt gut. Ich verwende es zwar etwas anders, und zwar habe ich meinen TS auf inzwischen ZWEI SSDs verteilt und habe so OHNE Raid und Gefahr von totalem Datenverlust einen Großen TS auf zwei Festplatten. Also, wem der Speicher ausgeht auf der Platte kann sich so eine zweite einfach an den TS "Dran nageln".
    Habe dabei nur den Teil mit den symbolischen links verwendet und kein Modmanager in Verwendung.


    mfg


    FabiaLP

  • Hallo Adam,


    erst Mal Danke fuer diese geniale Methode!

    Ich habe ein paar Fragen:

    - lagerst Du nur Ordner "Routes" aus, oder auch die Ordner "Assets" und "Scenarios"?

    - wie erstellst Du Hardlinks fuer die benoetigten Assets einer Route?

    - Fuer jedes Asset ein Hardlink? Ich denke, das waere dann ein rieseiger Aufwand.

    -Oder erstellst Du einen Hardlink, in dem die Route und alle benoetigten Assets / Scenarien enthalten sind?

    - Ist es ein grosser Unterschied fuer den TS, wenn man nur die Routes auslagert, anstelle Routes, Assets, und Scenarios?


    Vielleicht koenntest Du mal anhand eines Beispiels aufzeigen, wie Du die Ordner und Hardlinks strukturierst.


    VIelen Dank

    Peter

  • pebe du hast schon mitbekommen, das der Thread-Ersteller hier schon 5-Jahre nicht mehr aktiv war und der letzte Beitrag 3 J. alt ist.

    Hier wird nix mehr passieren.

    Mein System: Win 11 Pro CPU: AMD Ryzen 7 5800X3D 4.5GHz RAM: 32GB DDR4 3200MHz GraKa: AsusI RX 6700XT 12GB , TSC auf 1TB M.2 SSD, Win11Pro auf 500GB M2.SSD.

  • pebe also ich habe mir die Strecken grob in geographische Regionen aufgeteilt, und jeweils in einen eigenen Ordner (habe derzeit drei) verschoben. Dazu ein kleines Powershell Script, welches vor dem Start ausgeführt werden muss, wenn ich die Region wechseln möchte. Diese legt dann eine Junction des Regionsordners zu dem Routes Ordner an.

    Assets habe ich nicht so bearbeitet, denke da wäre auch nicht so einfach lösbar und komplexer im Script abzubilden. Auf Rollmaterial beschränkt wäre es wohl einigermassen machbar, würde wohl beim Erstellen mit dem Consist Edtor die Sache beschleunigen.


    Fall Du Interesse an dem Script hast, ich würde es teilen :)


    Viele Grüsse


    Thorsten

  • Fall Du Interesse an dem Script hast, ich würde es teilen :)


    Viele Grüsse


    Thorsten

    Das waere sehr nett.


    Du hast also den Assets und Scenario Ordner im Railworks Ordner belasssen?

    2 Mal editiert, zuletzt von Thor () aus folgendem Grund: Vollzitat bearbeitet auf relevanten Teil

  • pebe ich stelle es gleich ein, Assets habe ich gelassen wo sie sind wie gesagt. Die Szenarien Ordner sind in den jeweiligen Streckenordnern enthalten. Du siehst also nur Szenarien, die in der jeweiligen "Sammlung" auch vorhanden sind. Vor einer Installation einer Strecke musst Du dann auch vorher den passenden Regionsordner mit der Junction bereitstellen.

  • Ich stelle mir so vor, dass Du drei Ordner erstellt hast:


    - Region1/Routes

    - Region2/Routes

    - Region3/Routes


    um zB Region1 zu benutzen, verlinkst Du den Ordner Routes im Ordner Region3 in den Railworks Ordner


    Stimmt das?

  • pebe

    Genau, so ist es. Habe wie ich sehe sogar drei Scripts und diese dann als Shortcut auf dem Desktop abgelegt. Und wie ich sehe habe ich den ganzen Contentordner kopiert / neu angelegt und jeweils abgefüllt, weiss ehrlich gesagt nicht mehr warum - es sollte der jeweilige "Routes" Ordner genügen.

    Bin nicht so der begnadete Scripter, man kann es sicher auch ein einem zusammenfassen 8o .

    Sieh dann als Beispiel so aus für eine Region:

    Code
    #Starten von TSEU Routen
    $TSPath="D:\Program Files (x86)\Steam\SteamApps\common\RailWorks"
    cmd /c rmdir $TSPath\content
    cmd /c mklink /J $TSPath\content $TSPath\contenteu

    So sieht es im Railworks Ordner dann aus: