Problem:
Während der Fahrt friert der MSTS ein und stürzt ab.
Ursache:
Das Problem tritt in der Regel auf, wenn ein KI-Zug in Sicht- und Hörweite kommt.
Als der MSTS entwickelt wurde, spielten Systeme, die mehr als eine CPU enthielten, im Privatbereich keine Rolle. Der MSTS geht also davon aus, auf einem System mit genau einer CPU zu laufen. Auf Grund der CPU-nahen Programmierung kommt es auf den heute üblichen Mehrkernprozessoren zu Schwierigkeiten.
Wird ein Programm, wie der MSTS ausgeführt, so läuft es nicht kontinuierlich. Das Programm muss sich ja mit allen anderen laufenden Programmen die CPU teilen. Dazu wird einem Programm eine gewisse CPU-Zeit eingeräumt. Ist diese abgelaufen, wird es in eine Warteschlange gestellt und das nächste Programm ist an der Reihe (Taxistand-Prinzip).
Stehen mehrere CPUs (wie in den heute üblichen Mehrkernprozessen vorhanden) zur Verfügung, wird dem "vorne in der Schlange" wartenden Programm der nächste freie CPU-Kern zugewiesen. Das ist wie bei einer gemeinsamen Warteschlange vor einer Reihe von Bank- oder Flughafenschaltern.
Da diese Vorgänge in sehr kurzen Zeitintervallen geschehen, sieht es so aus, als ob sich ein Programm auf mehrere CPU-Kerne gleichmäßig verteilt. Tatsächlich belegt es aber einen Kern zu 100%, geht dann in die Warteschlange und belegt dann zufällig den gleichen oder einen anderen Kern wieder zu 100%. Dann geht es wieder in die Warteschlange usw. usw.
Genaugenommen läuft ein Programm als sog. Prozess. Ein Prozess kann sich, wenn es der Programmierer des Programms so eingebaut hat, in mehrere Threads (Ausführungsstränge) aufteilen. Diese Threads können dann parallel und unabhängig voneinander auf mehreren Kernen gleichzeitig bearbeitet werden. Die Kunst des Programmierers besteht darin, die Threads auf die Reise zu schicken und die Ergebnisse, die zu völlig unterschiedlichen Zeiten und in unterschiedlicher Reihenfolge wieder eintreffen, wieder zusammenzuführen.
Der MSTS ist eine sog. Single-Thread-Anwendung, besitzt also nur einen Thread. Daher kann der MSTS nur einen einzigen Kern pro Zeiteinheit nutzen - Mehrkernprozessoren sind für ihn wertlos. Tatsächlich hat der MSTS Probleme damit, dass er während seines Ablaufs mal auf den einen und mal auf den anderen Kern geschickt wird.
Lösung:
Um das "Springen" über die CPU-Kerne zu verhindern, kann man unter Windows einem Prozess einen (oder mehrere) bestimmte Kerne zuweisen. Der Prozess läuft dann ausschließlich auf diesen zugewiesenen Kernen.
Es kursieren diverse Programme und Verfahren durch das Internet, wie man dies bewerkstelligen kann. Zusätzliche Programme belegen Resourcen. Warum also nicht mit Windows-Bordmitteln?
Ich empfehle hier folgendes, etwas versteckte Mittel:
- Klicke mit der rechten Maustaste auf die Verknüpfung zum MS Train Simulator
- Wähle im Kontextmenü den Punkt "Eigenschaften" aus
- In dem Dialogfeld bitte den Reiter "Verknüpfung" öffnen
- In der Zeile "Ziel:" steht etwas wie "X:\...\launcher.exe -rungame" oder "X:\...\train.exe" (X:\...\ steht hier stellvertretend für den Installationspfad)
- Ändere das "Ziel" wie folgt ab (ACHTUNG: Anführungszeichen bitte genau beachten und alles in eine Zeile!!!) und bestätige mit "OK"
C:\Windows\System32\cmd.exe /c start /high /affinity 0x01 "MSTS auf CPU-0" "X:\...\train.exe" -mem:2048
Bitte X:\...\ durch den Installationspfad ersetzen, der schon vorher dort stand!
Sollte Windows nicht in
C:\Windows\ installiert sein, bitte den Pfad entsprechend ändern.
Hinter
-mem2048 können bei Bedarf noch weitere Parameter ergänzt werden. Mit Zeitbeschleunigung sähe dies dann so aus:
-mem2048 -timeacceleration
Der Parameter
/high sorgt übrigens dafür, dass der Train Simulator mit hoher Priorität läuft. Dies kann Performanz-Gewinne auf nicht ganz so leistungsstarken Systemen bringen.
Wird der MSTS künftig über diese Verknüpfung gestartet, läuft er ausschließlich auf dem ersten Kern, auf dem sich der MSTS "heimisch" fühlt. Überprüfen kann man den Erfolg sehr gut im Resourcenmonitor (Reiter CPU) von Windows.
Train Store:
Für den Start aus dem Train Store heraus, muss die obige Befehlszeile zweigeteilt werden. Dazu muss im Train Store über das Menü
Tools -->
Optionen -->
MSTS Starteinstellungen... der Dialog zum Setzen der Startparameter aufgerufen werden.
Über diesen Dialog wird dem Train Store nun die
cmd.exe als MSTS "untergeschoben" und die Parameter der
cmd.exe als MSTS-Parameter:
(Als Parameter bitte den kompletten rechten Teil der obigen Befehlszeile ab
/c (einschließlich) eingeben!)