This site in english here
Ce site en français ici
ActivityChanger als Zufallsgenerator für Gegenverkehr
Dies ist eine kleine bebilderte Dokumentation für ActivityChanger. Sie beschreibt, wie man zufallsgenerierten
computergesteuerten Verkehr erzeugen kann.
ActivityChanger gibt es bei: msts.Juliane-und-Torben.de
eMail für Fragen und Anmerkungen: Torben Spiegler
Schritt für Schritt Anleitung
Beispiel 1: Einfacher Gegenverkehr mit zufälliger Zugwahl
Beispiel 2: Gegenverkehr auf teilweise dreigleisiger Strecke
Beispiel 3: Gegenverkehr nach Typ: ICE, Lokalzug und Güter mischen
Beispiel 4: Teilweise eingleisige Strecke
Bekannte Probleme
Schritt 1: Die Auswahl der Activitiy
Bevor wir loslegen, bitte die Activity laden, für die der Gegenverkehr generiert werden soll.
Aus dieser werden dann alle Daten bis auf den computergesteuerten Verkehr entnommen. Abgestellte (passive)
Fahrzeuge bleiben ebenso erhalten wie Ereignisse (Meldungen etc.). Es ändert sich an der Activity somit
nur der computergesteuerte Verkehr.
Nun den entsprechenden Menüpunkt aufrufen:
Schritt 2: Die Auswahl der Services
Im angezeigten Dialogfenster kann man nun alle Daten für computergesteuerten Verkehr
festlegen. Wir fangen im ServiceSet 1 mit den Services an. Hier kann man einen oder mehrere Services wählen, die im
Gegenverkehr enthalten sein sollen. Durch klicken auf Choose Services kommt man zur Dialogbox:
Alle die Services, die man hier aus auswählt, werden stets nacheinander gestartet. Diese Services
können also nicht gleichzeitg starten. Der Zufall bestimmt, in welcher Reihenfolge
sie gestartet werden. Durch Klicken auf Select none werden keine Services ausgewählt.
Schritt 3: Entscheidung, ob auch die Zug-Consists zufällig sein sollen
ActivityChanger kann entweder die im Service festgelegten Zugdaten nehmen oder aus den im Consists-Verzeichnis
vorhandenen Zugdaten auswählen. In der zweiten Karteikarte der Dialogbox kann man festlegen, welche
Consists genommen werden sollen. Durch Anklicken von Choose Consists gelangt man zu Schritt 3a, wo man die Consists
auswählen kann. Möchte man die original Consists verwenden, dann lässt man an dieser Stelle einfach
alles leer und geht zu Schritt Schritt 4.
Schritt 3a: Auswahl der Zugdaten
In diesem Fenster können beliebig viele Zugdaten (Consists) gewählt werden. Diese werden jedesmal
vollkommen zufällig für die oben gewählten Services benutzt.
Schritt 3b: Sollen die Consist mit unterschiedlicher Wahrscheinlichkeit auftreten?
Hier wird festgelegt, ob man für die unter Schritt 3a gewählten Züge unterschiedliche
Wahrscheinlichkeiten angeben möchte. Dies kann sinnvoll sein, wenn man beispielsweise einen ICE, einen Lokalzug
und einen Güterzug ausgesucht hat. Der Lokalzug soll ja wesentlich häufiger fahren als der ICE. Klickt man also
auf YES so gelangt man weiter zu Schritt 3c, ansonsten geht es gleich weiter mit Schritt 4.
Schritt 3c: Festlegen der Wahrscheinlichkeiten
Für jeden in Schritt 3a ausgewählt Zug wird nun die Auftrittswahrscheinlichkeit
abgefragt. Diese Zahlen sind vollkommen frei wählbar, am einfachsten ist, man stellt sich das gleich
als Prozent vor: Wir haben zum Beispiel drei Züge: ICE, Lokal und Güter. Für den ICE setzen wir den Wert auf
20, Güter auf 30 und Lokal auf 50. Somit hätten wir 100% erreicht und als Ergebnis: Etwas weniger ICE
als Güterzüge und ungefähr doppelt so viele Lokalzüge. Man muss hier aber
nicht darauf achten, dass 100% herauskommt, da ActivityChanger am Ende alles auf 100% skaliert.
Man kann also mit gleichem Ergebnis auch einfach die Zahlen 2, 3 und 5 eingeben! Wenn man auf Abbrechen bzw. Cancel
klickt, dann wird der Wert auf 10 gesetzt. Wie gesagt, am Ende werden alle eingegeben Zahlen zu 100% skaliert.
Schritt 4: Abstand zwischen den Zügen
In diesem Fenster kann festgelegt werden, wieviel Minuten Abstand zwischen den Zügen ist. Je kleiner
die Zahl, desto dichter fahren die Züge. Werte unter 5 Minuten führen häufig zu Verklemmungen und
der gesamte Gegenverkehr steht überall vor roten Signalen.
Schritt 5: Wann startet der erste Gegenzug
Wenn auf einer zweigleisigen Strecke der Verkehr auf dem Gegengleis auch schon kurz nach dem Start des Spielers
auftauchen soll, muss er ja viel früher abfahren (nämlich in etwa die Zeit früher, die er
fürs Abfahren der Strecke braucht). Hier kann somit eingestellt werden, wann der erste Zug losfahren soll.
Erreicht der Spieler erst viel später überhaupt einen Punkt, wo er auf diese Gegenzüge treffen
kann, dann kann man auch entsprechend später starten. (before player: startet Zug die angegebene Zeit
vor dem Spieler, after player entsprechend nach dem Spieler.)
Schritt 6: Weiteren Service-Set?
Die ab Schritt 2 gemachten Einsellungen kann man noch für weitere Services
vornehmen.
Was soll dass denn jetzt? Man kann doch schon in Schritt 2 mehrere Services auswählen!
Das stimmt natürlich. Gedacht ist die Auswahl weiterer Services zum Beispiel für ein zeitweise vorhandenes drittes Gleis. Die
Züge auf diesem dritten Gleis können ja unabhängig von den anderen Gegenzügen starten.
Oder es handelt sich um ein S-Bahn Gleis (wie beispielsweise auf der Berlin-Stettin Strecke). Auf diesem
sollen dann ja nur S-Bahnen verkehren und das unanhängig vom restlichen Gegenverkehr und mit viel dichteren
Zugabständen. Es gibt hunderte
Möglichkeiten diese Services zu kombinieren und variieren...
Schritt 7: Fertig
Zum Schluss klickt man auf Start AI generation now.
Es wird nach Generierung des Gegenverkehrs angezeigt, wieviele Züge erzeugt wurden.
Achtung: Dies kann unter Umständen etwas länger dauern und bei langen
Activities mit kurzen Zugabständen können auch schon mal 300 Gegenzüge generiert werden...
Also solange warten, bis die Meldung erscheint.
Die Activity dann wie gewohnt in MSTS laden und abspielen. Viel Spass!
(Die original Activity kann (wie immer) wiederhergestellt werden!)
Beispiel 1: Einfacher Gegenverkehr mit zufälliger Zugwahl
Für die meisten Anwendungen reicht es vollkommen aus, wenn man auf einer zweigleisigen Strecke
einfach nur Gegenverkehr bekommt, für den die Zugart (Consist) zufällig gewählt wird. Dazu
folgendes Vorgehen: Es muss eine Activity für den Spieler vorhanden sein. Die kann man entweder selbst
anlegen oder man nimmt eine von MSTS vorgegebene. Man sollte wissen, von wo nach wo diese führt. Nehmen
wir mal an, der Spieler soll von A-Dorf nach B-Stadt fahren. Der Gegenverkehr soll demnach von B-Stadt nach
A-Dort fahren. Es muss also vorhanden sein: Eine Activity, die den Spieler von A nach B führt. Damit der
Gegenverkehr generiert werden kann, muss ein Service vorhanden sein, der einen beliebigen Zug von B nach A bringt.
Meistens gibt es solche schon vorgegeben und man kann aus dem Namen erkennen, welche es sind. Oder eben im
MSTS Activity Editor einen solchen Service anlegen.
Vorgehen bei der Erzeugung:
- In Schritt 1 wird die Activity A-Dorf nach B-Stadt in ActivityChanger geladen.
- Anschließend in Schritt 2 nur den Service B-Stadt nach A-Dorf markieren.
- Schritt 3 auf Choose consists klicken, damit zufällige Züge generiert werden
- Diese Züge (Consists) in Schritt 3a dann wählen. Es können wieder mehrere Dateien gewählt werden, damit
nicht immer der gleiche Zug entgegenkommt. Es sollte also wie auf dem Bild oben aussehen, mehrere Dateien markiert,
zum Beispiel ICE, Regionalzug und ein paar Güterzüge
- Nun in Schritt 4 angeben, in welchem Zeitabstand die Züge entgegenkommen sollen.
Vorgegeben ist zehn Minuten, einen Wert geringer als 5 Minuten führt häufig zu Verklemmungen, so dass
der gesamte Gegenverkehr vor roten Signalen steht.
Die Züge starten dann ungefähr in diesem Abstand, aber
der Zufall spielt hier auch noch eine Rolle. Es sind also nur ungefähr diese Abstände!
- Schritt 5 bestimmt, wann der erste Gegenzug startet. Nehmen wir also an, wir brauchen mit
unserem Zug etwa 35 Minuten bis zum Zielbahnhof. Also benötigt der Gegenverkehr in etwas auch so lange. Damit
auch gleich zu Anfang Gegenverkehr vorhanden ist, wählen wir also 40 Minuten.
- Jetzt sind wir mit den Eingaben fertig und deshalb Start AI generation now aus.
ActivityChanger generiert nun zufälligen Gegenverkehr und präsentiert uns in
- Schritt 7 das Ergebnis. Jetzt einfach MSTS starten, die Activity auswählen und starten.
Beispiel 2: Gegenverkehr auf teilweise dreigleisiger Strecke
Wir bauen Beispiel 1 ein wenig aus. Nehmen wir an, man fährt von A-Dorf nach B-Stadt über C-Stadt, welches
somit zwischen A und B liegt. In C-Stadt liegt ein paar Kilometer lang ein drittes Gleis parallel, auf dem die S-Bahn
verkehrt. Auf diesem Gleis sollen nun auch S-Bahn Züge fahren. Dazu ist das Vorgehen:
- Zunächst alle Schritte 1-5 genauso wie unter Beispiel 1 gezeigt ausführen.
- Wichtig: In Schritt 6 ServiceSet 2 wählen. Man landet dann automatisch erneut bei
- Schritt 2. Hier wählt man nun einen Service aus, der auf dem dritten Gleis fährt und
für den schon in MSTS ein S-Bahnzug eingestellt ist.
- Da auf diese Gleis nur der voreingestellte Zug verkehren soll, überspringen wir Schritt 3
aus und kommen zu
- Schritt 4. Hier gilt das gleiche, wie oben schon gesagt: Nicht zu dichte Abstände!
- Da wir C-Stadt erst nach etwa 20 Minuten erreichen, macht es keinen Sinn, dass dort vorher schon Gegenzüge
herumfahren (und somit Rechenpower des PCs fordern, ohne zu sehen zu sein). Also stellen wir in
Schritt 5 ein, dass der erste Zug etwa 20 Minuten nach Start des Spielers generiert werden
soll.
- Anschliessend in Schritt 6 auf NO klicken und der Gegenverkehr wird generiert.
Beispiel 3: Gegenverkehr nach Typ: ICE, Lokalzug und Güter mischen
In diesem Beispiel geht es darum, etwas realitischer im Bezug auf Fahrplan und Haltepunkte zu werden. Wie schon
in den Beispielen zuvor, soll der Spieler von A-Dorf über C-Stadt nach B-Stadt fahren. Im Gegenverkehr sollen
ICE, Lokalzug und Güterzüge vorkommen. Die Activity für den Spieler ist wie schon oben vorgegeben
von A nach B. Der Gegenzug ICE (genannt ServiceICE) hält nur in B-Stadt und fährt dann nach C-Stadt,
wo er aber nicht hält, sondern an einem Abzweiger die Sichtweite des Spielers
verlässt und somit gar nicht an A-Dorf vorbeikommt. Der erste Lokalzug ist ein kleiner Triebwagen
(genannt ServiceTriebwagen) und fährt von B-Stadt über C-Stadt nach A-Dorf. Er hält an
jedem Bahnhof. Der zweite Lokalzug ist eine Lok mit drei Silberlingen (genannt ServiceSilber). Dieser fährt die
gleiche Strecke wie der Triebwagen und hält auch an fast jedem Bahnhof. Zuletzt der Güterzug
(genannt ServiceGueter). Dieser fährt auch die Strecke von B nach A wie die Lokalzüge. Er
hält aber an keinem Bahnhof.
Bevor wir beginnen, müssen die genannten Services (ServiceICE, ServiceTriebwagen, ServiceSilber und
ServiceGueter) mit dem normalen Editor von MSTS angelegt werden! Wenn man nicht weiss, wie das geht, dann bitte
in den im Internet verfügbaren Tutorials nachschauen. Diese Services müssen einfach nur vorhanden sein,
sie brauchen nicht in irgendwelchen Verkehr oder in irgendeine Acticity eingebaut sein!
Vorgehen bei der Erzeugung:
- In Schritt 1 wird die Activity A-Dorf nach B-Stadt in ActivityChanger geladen.
- Anschließend in Schritt 2 die vier Services (ServiceICE, ServiceTriebwagen, ServiceSilber und
ServiceGueter) auswählen.
- Schritt 3 überspringen (keine Consists wählen), damit nicht plötzlich ein ICE den Lokalverkehr
übernimmt.
- Nun in Schritt 4 angeben, in welchem Zeitabstand die Züge entgegenkommen sollen.
Vorgegeben ist zehn Minuten, einen Wert geringer als 5 Minuten führt häufig zu Verklemmungen, so dass
der gesamte Gegenverkehr vor roten Signalen steht. Wir nehmen also die vorgegebenen 10 Minuten. Dies bedeutet
in diesem Fall, das in etwa alle zehn Minuten (plusminus etwas Zufall) einer der Services ICE, Triebwagen, Silber oder Gueter
gestartet wird. Welcher Dienst als erstes gestartet wird und welcher anschliessend, ist vollkommen zufällig.
Es kann auch sein, das sowohl der erste, als auch der zwei Zug ein Güterzug ist etc..
- In Schritt 5 wird nun bestimmt, wann der erste Gegenzug startet. Nehmen wir also an, wir brauchen mit
unserem Zug etwa 35 Minuten bis zum Zielbahnhof. Also benötigt der Gegenverkehr in etwas auch so lange. Damit
auch gleich zu Anfang Gegenverkehr vorhanden ist, wählen wir also 40 Minuten.
- Jetzt sind wir mit den Eingaben fertig und wählen deshalb Start AI generation now aus.
ActivityChanger generiert nun zufälligen Gegenverkehr und präsentiert uns in
- Schritt 7 das Ergebnis. Jetzt einfach MSTS starten und die Activity auswählen.
Beispiel 4: Teilweise eingleisige Strecke
Für dieses Beispiel nehmen wir an, dass die Strecke in einem Teilabschnitt nur eingleisig verläuft. Von
A-Stadt geht es zweigleisig nach B-Stadt, dann eingleisig nach C-Stadt und von dort zweigleisig nach D-Stadt. Die
Strecke ist also nur zwischen B und C eingleisig. Um jetzt einigermassen verklemmungsfreien Verkehr zu erzeugen,
benötigen wir die Activityvorlage für den Spieler und mindestens zwei Services: Der erste Service führt
von B nach A und der zweite Service von D nach C.
Vorgehen bei der Erzeugung:
- In Schritt 1 wird die Activity A-Stadt nach D-Stadt mit ActivityChanger geladen.
- Anschließend in Schritt 2 nur den/die Services B-Stadt nach A-Stadt markieren.
- Schritt 3 auf Choose consists klicken, damit zufällige Züge generiert werden.
- Diese Züge (Consists) in Schritt 3a dann wählen.
- Nun in Schritt 4 angeben, in welchem Zeitabstand die Züge entgegenkommen sollen.
- Schritt 5 bestimmt, wann der erste Gegenzug startet. Nehmen wir also an, wir brauchen mit
unserem Zug etwa 15 Minuten bis zu B-Stadt. Also benötigt der Gegenverkehr in etwas auch so lange. Damit
auch gleich zu Anfang Gegenverkehr vorhanden ist, wählen wir also 20 Minuten.
- Jetzt sind wir mit den Eingaben für den ersten zweigleisigen Abschnitt fertig und wählen
anschliessend ServiceSet2 aus, damit wir noch den Gegenverkehr für den Teilabschnitt
zwischen D-Stadt und C-Stadt konfigurieren können.
- Also in Schritt 2 nun den/die Services D-Stadt nach C-Stadt markieren und mit den Schritten
3-5 wie oben fortsetzen und mittels Start AI generation now loslegen, da wir ja nun allen Gegenverkehr
konfiguriert haben.
- Schritt 7 Stellt nun das Ergebnis da. Jetzt einfach MSTS starten und die Activity laden.
In beiden zweigleisigen Teilabschnitten sollten nun Gegenzüge vorhanden sein.
Bekannte Probleme:
Fehlermeldung "Zugverband Soundso wurde über Zugverband Sowieso gestartet":
Dies tritt meist dann auf,
wenn der Zugabstand zu gering ist. Der zuvor gestartete Zug ist noch nicht losgefahren, da wird schon der nächste
gestartet. Einfach die Zugabstände grösser wählen.
Es ist auch möglich, dass Züge auf abgestellten Waggons gestartet werden. Bitte dann entweder die
abgestellten Waggons (passive trains) der original Activity vorher löschen oder den entsprechenden Service nicht
benutzen (siehe Fehlermeldung von MSTS, da steht etwas verschlüsselt der original Servicename)
Nur rote Signale, es passiert nichts...
ActivityChanger kann nicht kontrollieren, ob die generierten Gegenzüge Verklemmungen verursachen. Man sollte
also ungefähr wissen, wie die Service aussehen, die man dem Zufallsgenerator zuführt. Insbesondere sollte
kein Gegenverkehr auf eingleisigen Strecken erzeugt werden, dies führt fast immer zu unendlich rote Signalen...
Jedesmal, wenn ich eine generierte Zufalls Activity starte, passiert as gleiche. Wo ist der Zufall?
MSTS kann keine zufälligen Activities verwalten. Das Prinzip ist hier anders: Der Erzeugen der Activity
erfolgt zufallsgesteuert, nicht während der Simulation selbst! Wenn es also langweilig wird, einfach
ActivityChanger starten und eine neue Activity generieren.
erstellt von Torben Spiegler, 2002