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:


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:



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:



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:



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