Programm: BVE 2
Autor: Mr. Mackoy


Homepage http://mackoy.cool.ne.jp
e-Mail:  
Preis kostenlos

 

Dank der Hilfe von Henning Schäfer ist es uns möglich dieses Streckebau Tutorial auf unseren Seiten anbieten zu können. Ihr wollt weitere Informationen ? Dann besucht seine Homepage !

1. Allgemeine Tipps und organisation eines Projektes

Es empfiehlt sich, vor dem Beginn eines neuen Projektes zunächst einmal einen groben Plan des Streckenverlaufs sowie etwas detailliertere Pläne für die wichtigen Knotenpunkte (Abzweigungen, Bahnhöfe etc.) zu erstellen. Wenn man eine Originalstrecke nachbauen möchte, ist es natürlich am Besten, wenn man die original - Streckenpläne erhalten kann. Da dies jedoch meist nicht möglich ist, genügt auch gute Streckenkenntnis als Passagier (wegen der Szenerie) sowie eine detailreiche Landkarte (Straßenkarte, Vermessungsamt), in der Kurven etc. recht genau eingetragen sind. Von Vorteil ist auch eine kleine Foto - Tour entlang der Strecke, um Ansichten von Gebäuden (grundsätzlich immer frontal von einer Breit- und einer Schmalseite, hier ist ein Shiftobjektiv optimal) und Rundumblicke in den Bahnhöfen etc. zu erstellen. Ganz Optimal wäre natürlich ein Videomitschnitt der Fahrt aus dem Führerstand heraus.

Anschließend sollte man alles Material zentral sammeln und sich anhand der vorliegenden Bilder/Streckenplan einen ersten groben Überblick über die Arbeit verschaffen, die hier zu tun ist. Insbesondere ist auch darauf zu achten, nach Möglichkeit nicht zu detailverliebt an die Gestaltung heranzugehen, da dies zum ersten den Arbeitsaufwand extrem in die Höhe treibt und auf langsamen Rechnern unweigerlich dazu führt, daß die Fahrt aufgrund der geringen Framerate zum Frusterlebnis wird.

Anschließend sollte man überlegen, ob man bestimmte bereits von anderen BVElern entworfene Objekte etc. verwenden kann und sich die Genehmigung einholen, diese in der eigenen Strecke verwenden zu dürfen. Dies sollte aber üblicherweise aufgrund der Freeware - Gesinnung in dieser "Branche" kein größeres Problem darstellen.

Die weitere Vorgehensweise hängt nun völlig vom eigenen Geschmack an. Es besteht zum Beispiel die Möglichkeit, zunächst einmal nur das Grundgerüst der Strecke zu programmieren, und die Szenerie hinterher erst auszuschmücken. Dies bietet den Vorteil, daß man hinterher recht leicht auch "abgespeckte" Versionen der Strecke erstellen kann, in der die Szenerie nicht so komplex ist. Andererseits ist das Format der RW - Dateien nicht unbedingt übersichtlich und erschwert teilweise die Suche nach der richtigen "Stelle" zum Einfügen der Szenerieobjekte erheblich.
Ich empfehle daher, die Strecke Stück-für-Stück fertigzustellen.

Nachdem die anfängliche Planung abgeschlossen ist, fängt die eigentliche Arbeit an. Zunächst sollte man im Unterverzeichnis BVE\railway\objects ein Unterverzeichnis anlegen (zum Beispiel "fsonline"). Dort hinein kommen ALLE (aber wirklich alle, sonst kommt es hinterher bei der Distribution zu Problemen, ich kann ein Lied davon singen ;-) Objekte, die von der Strecke verwendet werden, auch wenn diese im railway\objects - Folder bereits vorhanden sind. Nachdem sich alle b3d- oder csv- Objekte in diesem Unterverzeichnis gelandet sind, geht es in das BVE\railway - Verzeichnis. Dort wird nun als erstes die eigentliche Streckendatei (z.B. "fso.rw") erstellt, die anschließend mit einem Texteditor zu bearbeiten ist. Und dann beginnt die Fleißarbeit....


2. Aufbau der Streckendateien

Das von BVE verwendete RW - Format setzt sich ähnlich wie die Windows - INI - Dateien aus verschiedenen Abschnitten zusammen.
Die ersten paar Zeilen (ich empfehle, hier nicht mehr als 3 zu verwenden) sind für die Beschreibung der Strecke reserviert und erscheinen beim Laden der Strecke im Vorschaufenster unterhalb des TFZ - Bildes. Hier sollte nur eine kurze und aussagekräftige Beschreibung hinein.
Der zweite Abschnitt der Datei sollte die [TRAIN] - Sektion sein. Hier werden verschiedene Daten zum verwendeten Triebfahrzeug sowie anderen noch auf der Strecke befindlichen Züge definiert.
Der Wert "File" gibt an, welches Triebfahrzeug verwendet werden soll. Hier ist der Name des Unterverzeichnisses einzutragen, das die Zugdateien enthält (unterhalb des BVE\Train - Folders).
Der Wert "Velocity" gibt an, wie schnell der vorausfahrende Zug (in km/h) ist. Dies hat direkten Einfluß auf das Verhalten der Blocksignale, die erst freigegeben werden, wenn der vorausfahrende Zug den Blockabschnitt komplett geräumt hat. Bei Strecken, die keine "echte" Signalisierung verwenden oder auf Strecken, auf denen kein Zug vorausfährt ist dieser Wert auf jeden Fall höher als die zulässige Streckenhöchstgeschwindigkeit zu setzen.
Der Wert "Acceleration" gibt den Beschleunigungskoeffizienten des vorausfahrenden Zuges an. Hier ist Experimentieren angesagt, aber letzten Endes ist dieser Wert praktisch nicht maßgeblich für das Verhalten der Signalisierung.
Der Wert "Station" gibt an, an wie vielen Haltestellen der vorausfahrende Zug hält. 0 entspricht keiner, 1 jeder, 2 jeder zweiten etc.
Der Wert "Interval" gibt den Vorsprung des vorausfahrenden Zuges in Metern an.
Der Wert "Gauge" gibt die Spurweite der Strecke in Millimetern an (hat keinen Einfluß auf die visuelle Darstellung). Die europäische Normalspur ist 1435 Millimeter breit.
Nun folgt eine Tabelle mit "Run(i)" - Werten. Hierzu ist eine kleine Erklärung notwendig. Die Programmierer von Triebfahrzeugen haben die Möglichkeit, verschiedene Klangfarben für das Laufgeräusch des Zuges zu programmieren. Mit den "Run(i)" - Anweisungen wird verschiedenen Gleisbettexturen ein unterschiedliches Laufgeräusch zugewiesen. Hierbei entspricht der Wert "i" dem Texturindex des in der [Object] - Sektion eingebundenen Gleisbetts und die Zahl hinter dem Gleichheitszeichen dem Index des Fahrtgeräusches (dieses muß nicht eingebunden werden, da es zusammen mit dem Zug definiert wird). Per Konvention sind die Geräuschindizes wie folgt belegt:
1: veränderter Untergrund (allgemein)
2: Tunnel
3: Brücke
Allen nicht von den "Run(i)" - Befehlen erfaßten Gleisbettexturen wird das Standardlaufgeräusch der Lokomotive zugewiesen.

Beispiel:
<pre>
Dies ist eine Demostrecke. Sie wird ;; Beschreibung
von Führerstand-Online im Zusammenhang ;; Beschreibung
mit dem Streckenbaututorial verwendet. ;; Beschreibung

[Train]
File=db101 ;; Zugdatei aus "BVE\Trains\db101" wird geladen.
Acceleration=2 ;; vorausfahrender Zug beschleunigt um Wert "2"
Velocity=160 ;; Vorausfahrender Zug fährt maximal 160 km/h
Station=0 ;; Vorausfahrender Zug hält an keinem Bahnhof
Interval=5000 ;; Vorausfahrender Zug hat einen Vorsprung von 5 km
Gauge=1435 ;; Standard - Spurweite
Run(2)=2 ;; Textur "2" verwendet Tunnel - Laufgeräusch
Run(4)=3 ;; Textur "4" verwendet Brücken - Laufgeräusch
</pre>


Auf die [Train] - Sektion folgt die Objects - Sektion. In dieser Sektion müssen ALLE in der Strecke verwendeten Objekte, Böschungen, Bahnsteige etc. definiert werden, damit sie im Voraus geladen werden können. Außerdem wird hier jedem Objekt etc. ein eindeutiger Index zugewiesen, mit dem das Objekt anschließend aus der "Railway" - Sektion heraus angesprochen wird. Dieser Abschnitt stellt sich ähnlich dar wie der "Run" - Bereich des "Train" - Abschnitts. Es gibt folgende Anweisungen:

- "Rail(i)=f": Dem Gleisbett - Texturindex "i" (beginnend bei Null) wird die Textur "f" zugewiesen. "f" muß dabei eine gültige B3D - Datei aus dem Verzeichnis "BVE\Railway\Objects" sein. Falls Unterverzeichnisse verwendet werden (dringend empfohlen!), muß diese in der Form "verzeichnis\datei.b3d" angegeben werden.
- "WallL(i)=f" bzw. "WallR(i)=f": Hiermit können Objekte definiert werden, die links (WallL) oder rechts (WallR) entlang neben dem Gleis herlaufen, z.B. Lärmschutzwände, Brückengeländer, aber auch Tunnelwände arbeiten mit dem "WallL/R" - Befehl. Es müssen immer Wände für beide Seiten der Strecke definiert werden.
TIPP: Wenn man einer dieser Wände eine Waldtextur zuweist, ist es auf die Weise recht einfach möglich, den Zug durch den Wald fahren zu lassen, ohne dabei viele Baumobjekte verwenden zu müssen.
PROFI - TIPP: Die Wall - Objekte werden immer mit ihrem Ursprung DIREKT neben dem Gleis positioniert. Es besteht aber die Möglichkeit, die Objekte weiter vom Gleis wegzuschieben (z.B. den Wald), indem man entweder ein Dummy - Gleis ohne Textur verwendet, oder aber einfach den Ursprung des Objekts innerhalb der B3D - Datei verschiebt.
- "DikeL(i)=f" bzw. "DikeR(i)=f": Hiermit kann einem Gleis eine Böschung zugewiesen werden. Dies ist z.B. immer dann erforderlich, wenn das Gleis mit Hilfe des "height" - Befehls von der Grundplatte abgehoben wird, oder ein anderes Gleis höher liegt als das Hauptgleis. Auch hier müssen immer Dikes für beide Seiten des Gleises angegeben werden.
PROFI - TIPP: Mit Hilfe der Dike - Funktion und einer "flachen" Böschung läßt sich in Bahnhöfen, in denen die Gleise weiter auseinanderliegen, das Durchscheinen unschöner grüner Flecken zwischen den Gleisen vermeiden.
- "Ground(i)=f": Die Ground - Befehle geben die Indizes für die "Grundplatten" der Simulation an. Hier können beliebige B3D - Dateien verwendet werden, allerdings sollten sie groß genug sein, damit man an ihnen nicht "heruntersehen" kann.
- "Back(i)=b": Die Back - Anweisungen legen fest, welches Bild als Hintergrund (Himmel, entfernte Szenerie) angezeigt werden soll. Bei der Datei "b" handelt es sich hierbei allerdings nicht um eine B3D - Datei, sondern um ein Bild im Windows - BMP - Format.
- "FormR/L=f": Diese Anweisungen, die nur einmal pro Datei vorkommen dürfen, legen das Layout der Bahnsteige fest. Die FormL bzw. FormR - Anweisung legt fest, welches Objekt am Anfang eines Bahnsteigs angezeigt wird (jeweils rechts oder links vom Gleis).
- "FormCR/CL=f": Diese Anweisungen legen genau wie die FormR/L - Anweisungen die Stücke des Bahnsteigs fest, die in der Mitte des Bahnsteigs liegen, d.h. die keine Stirnseite haben.
- "RoofR/L/CR/CL": Gleiche Wirkungsweise wie FormR/L/CR/CL, nur daß hier die Bedachung der Bahnsteige festgelegt wird.
- "FreeObj(i)=f": Diese Anweisungen binden frei in der Landschaft platzierbare Objekte ein. Es empfiehlt sich, diese Einträge genauestens zu kommentieren (mit durch zwei Semikola abgetrennten Kommentaren), damit man sie später wiederfindet, und sie nach Kontext zu sortieren.


TIPP: Falls es beim Laden der Objekte zu Fehlermeldungen kommt, kann dies daran liegen, daß vor den Kommentaren Tabstopps verwendet wurden. Diese müssen unbedingt entfernt werden.

Anschließend existiert in manchen Dateien noch eine "Cycle" - Sektion, deren Verwendung mir jedoch unbekannt ist. Angeblich wirkt sich diese Sektion auf das Rotationsverhalten der Hintergrundbilder aus.

Und nun folgt die "wichtigste" Sektion der ganzen Datei, der [RAILWAY] - Abschnitt.
Dieser Abschnitt ist recht einfach aufgebaut. Zunächst beginnt jede Zeile mit einer Zeilennummer (BASIC - Programmierern der ersten Stunde wird dies sehr bekannt vorkommen ;-), die die Position des entsprechenden Befehls in Metern ab dem Ursprung angibt. Anschließend folgen ein oder mehrere Befehle, die jeweils mit einem Klammeraffen (@) eingeleitet werden. Es ist sowohl möglich, mehrere Befehle in eine Zeile zu schreiben (ohne Leerzeichen!), oder aber für jeden Befehl eine separate Zeilennummer (evtl auch mit derselben Meter - Angabe) zu erstellen. Dies hängt ganz vom persönlichen Geschmack ab. Ich verwende persönlich eine Mischform, in der ich verwandte Befehle (z.B. Signalisierungen für mehrere Gleise) in eine Zeile schreibe. Es ist in Ausnahmefällen sogar möglich, Meterangaben wirr durcheinander zu mischen, dies kann jedoch zu unvorhergesehenen Reaktionen im BVE führen, weshalb ich dringend davon abrate. Es ist übrigens nicht unbedingt nötig, eine Strecke bei Meter Null beginnen zu lassen (man hat dann die Möglichkeit, evtl. noch ein Stück davorzusetzen). Die Fahrt beginnt automatisch beim ersten stop() - Befehl. Die Beschreibung der einzelnen Befehle folgt in den einzelnen Abschnitten wie folgt:


3. Schienenstränge

Das wichtigste an jeder Eisenbahnlinie sind selbstverständlich die Schienen selbst. Aber die Befehle für die Gleisverwaltung in BVE können noch mehr als nur einfach Eisenstücke zu verlegen.

BVE organisiert die Gleise auf eine simple, jedoch teilweise etwas unübersichtliche Weise. Das Gleis, das immer befahren wird, hat die Indexnummer "0". Dieses Gleis kann nie enden oder verlassen werden. Soll ein "Gleiswechsel" stattfinden, so muß dies mit Kurvenbefehlen etc. simuliert werden, was in den meisten Fällen äußerst diffizil ist und nicht die erste Arbeit eines Anfängers sein sollte. Als Nebengleise stehen die Indizes 1 bis 7 zur Verfügung (in BVE lassen sich derzeit maximal 8 Gleise gleichzeitig verlegen). Man sollte sich vor dem Beginn der Programmierung Gedanken darüber machen, wie man die Gleisnummerierungen am besten Handhabt. Ich empfehle, gerade Indizes für Gleise links des Hauptgleises zu verwenden, während Gleise rechts des Hauptgleises die ungeraden Indizes erhalten.
In BVE gibt es im übrigen keine Möglichkeit zur Gestaltung von Böschungen o.ä. (wenn man von der umständlichen Methode über den "Wall" - Befehl mit speziellen B3D - Dateien absieht). Hierzu kann man jedoch recht einfach ein Gleis mit Gras- oder Dummytextur verwenden, dem man mit Hilfe von "Dike" eine entsprechende Böschung zuweist. Deshalb empfehle ich zusätzlich, die Gleistexturindizes 6 und 7 mit Grastextur und Dike zu versehen, um auf diese Weise eine einfache Möglichkeit zu erhalten, Böschungen zu erstellen.

Alle Positionsangaben in BVE beziehen sich im Übrigen auf den Abstand des jeweiligen Objektursprungs bzw. -mittelpunkts vom Mittelpunkt des Hauptgleises. Hierbei bedeuten negative Abstände eine Position links vom Gleis, während positive Abstände eine Position rechts vom Hauptgleis darstellen.

Zur Gestaltung von Gleisen gibt es die folgenden Befehle:

@railstart(i,x,y,t)
Dieser Befehl beginnt ein neues Gleis mit dem Gleisindex "i" {1..7}, dem horizontalen Abstand "x", dem vertikalen Abstand "y" sowie der Gleisbettextur "t". Die Gleisbettextur "t" entspricht dem Index des Gleisbetts, das in der [Object] - Sektion mit Hilfe der "Rail(i)" - Anweisungen festgelegt wurde.

@rail(i,x,y)
Dieser Befehl verschiebt ein Nebengleis relativ zum Hauptgleis. Die Parameter geben folgende Werte an: "i" = Index des zu verschiebenden Gleises {1..7}, "x" = Neuer seitlicher Abstand vom Hauptgleis, "y" neue Höhendifferenz zum Hauptgleis

@railtype(i,t)
Dieser Befehl weist dem Gleis mit dem Index "i" {0..7} die neue Gleisbettextur "t" zu (hierbei gilt das gleiche wie beim railstart - Befehl).

@railend(i,x,y)
Die Parameter entsprechen denen des Rail - Befehls. Nach Verschieben des Gleises läuft dieses jedoch nicht weiter, sondern endet an der angegebenen Position. TIPP: Dieser Befehl sollte die gleichen Abstands- und Höhenwerte aufweisen wie der zuletzt verwendete Rail - Befehl, da es sonst zu Fehldarstellungen des Gleises kommen kann.

@curve(r,u)
Dieser Befehl "verbiegt" sämtliche Gleise sowie die Bodenplatte zu einem Bogen mit dem Radius "r". Der Zug neigt sich dabei um den Wert "u" nach innen. Der Wert "u" sollte hierbei experimentiell ermittelt werden, für normale Strecken eignen sich Werte zwischen 10 und 30. Auch bei diesem Befehl gilt, daß eine Kurve bzw. Neigung nach links negatives Vorzeichen hat. Die Kurve dauert so lange, bis der Befehl @curve(0,0) folgt.

@pitch(p)
Dieser Befehl verpaßt sämtlichen Gleisen einen Anstieg von "p" Promille. Ein Gefälle ist durch einen negativen Wert anzugeben. Steigung/Gefälle dauert so lange an, bis @pitch(0) folgt.

@height(y)
Dieser Befehl hebt sämtliche Gleise auf ein Niveau von "y" Metern über der Grundplatte an.

@turn(q)
Dieser Befehl (ich empfehle seinen Einsatz ausdrücklich nicht) knickt das Hauptgleis (und auch die Nebengleise) um den Faktor q ab. Hierbei macht der Zug jedoch unschöne Schlenker, zur Vereinfachung eines Gleiswechsels ist der Befehl jedoch eingeschränkt geeignet. Der Quotient "q" gibt hierbei das Verhältnis des Knicks ab. Bei q=1 knickt das Gleis beispielsweise um 45° nach rechts ab, bei q=0.5 um 22,5° etc.

TIPPS:

- Gleisabstand: Der Gleisabstand eines Gleispaars (Haupt- und Gegenspur) sollte 4 Meter betragen. Gleise, die zusätzlich Oberleitungsmasten dazwischen liegen haben, sollten 6 Meter Abstand haben. In Bahnhöfen ist ein Abstand von 8 Metern für Gleise angebracht, die einen Bahnsteig zwischen sich liegen haben.
Soll der Abstand eines Gleises relativ zum Hauptgleis geändert werden, empfehle ich eine Verschiebung des Gleises alle 25 Meter um einen, maximal um 2 Meter, da es in allen anderen Fällen zu häßlichen Sprüngen und Knicken im Gleis kommen kann. Das gleiche gilt für den height - Befehl.

- Kurven: Eine Kurve auf einer Hauptstrecke (befahrbar mit 100 oder 120 km/h sollte minimal einen Radius von 700 oder 900 Metern haben. Insgesamt sollte ein Radius von 500 Metern nicht unterschritten werden, da sich sonst häßliche Lücken im Gleis bilden. Die Gleisüberhöhung ist der Geschwindigkeit und dem Kurvenradius anzupassen.

- Weichen: In BVE gibt es keine Weichen im herkömmlichen Sinn, da keine Gleiswechsel möglich sind. Man kann Einmündungen eines Nebengleises etc. jedoch ganz einfach dadurch simulieren, indem man das Gleis ganz einfach in das Hauptgleis überleitet und dort enden läßt. Dabei wird automatisch ein entsprechendes Rumpeln abgespielt. Beispiel:

<pre>
;; Angenommen, es läge das Gleis Drei 4 Meter rechts vom Hauptgleis
;; und es sei eine Verbindung von Gleis 3 auf das Hauptgleis gewünscht:

100@railstart(1,4,0,0) ;; Gleis 1 "auf" Gleis 3 (Abstand 4) erzeugen mit Texturindex 0 (Standardgleisbett)
125@rail(1,3,0) ;; Gleis 1 langsam ans Hauptgleis annähern
150@rail(1,1,0) ;; Gleis 1 weiter annähern
175@rail(1,0,0) ;; ...und das Gleis komplett ins Hauptgleis hinein überführen
175@railend(1,0,0) ;; ...und Gleis 1 komplett enden lassen.
</pre>

PROFI - TIPP: Es ist nicht möglich, das Hauptgleis 0 mit Hilfe des railend - Befehls z.B. in einem Sackbahnhof oder auf einer Abfuhr enden zu lassen. Soll das Gleis dennoch z.B. hinter einem Prellbock enden, so kann man es mit Hilfe des railtype - Befehls und einer leeren Textur einfach ausblenden.

4. Bahnhöfe und -Gestaltung

Bahnhöfe bzw. Haltepunkte etc. setzen sich in BVE aus einem Szenerie - Teil (den Bahnsteigen etc.) sowie einem "Steuerungsteil", der maßgeblich für den Fahrplan des Zuges verantwortlich ist, zusammen. Beide Teile können
unabhängig voneinander innerhalb der Strecke verwendet werden, wodurch Bahnhöfe ohne Halt möglich werden. Außerdem läßt sich durch das "Verschieben" des Startbahnhofs eine Menge Zeit bei der Kontrolle des Streckendesigns sparen. Ein Bahnhof, der als fahrplanmäßiger Halt vorgesehen wird, muß sowohl einen Station- als auch einen Stop - Befehl enthalten. Bei Bahnhöfen, die zur Durchfahrt gekennzeichnet sind, kann ein Station- Befehl stehen, der Bahnhof erscheint unter BVE 2 jedoch nicht mehr im Fahrplan, sehr wohl jedoch in BVE 1.

Steuerbefehle für Haltepunkte:

@station(s,an,ab,h,c,f)
Dieser Befehl setzt einen Halte- oder Durchfahrtsbahnhof im Fahrplan fest. "s" ist hierbei eine Zeichenkette, die den Bahnhofsnamen festlegt, der sowohl im Fahrplan als auch bei der Einfahrt in den Bahnhof erscheinen soll. "an" stellt die Ankunftszeit im Zeitformat HH:MMSS (z.B. 8:4430 für acht Uhr vierundvierzig und 30 Sekunden), "ab" die Abfahrtszeit im gleichen Format dar. "h" ist ein Wahrheitswert, der angibt, ob an diesem Bahnhof gehalten wird. "1" bedeutet hierbei "Halten", 0 bedeutet "Durchfahren". Zur Kennzeichnung des Endbahnhofes sollte sowohl bei "ab" als auch bei "h" ein Gleichheitszeichen eingesetzt werden. Der Parameter
"c" kann die Werte "ATS" "ATS-P" und "ATC" annehmen und legt das Sicherungssystem für den Zug fest. Am Endbahnhof kann der Zug mit Hilfe des Wertes "0" für den Parameter "c" ausgeschaltet werden. Der Parameter "f" stellt eine (optionale) Sounddatei dar, die bei der Einfahrt in den Bahnhof abgespielt werden soll. Wie alle Sounddateien in BVE muß diese im Format PCM, 11,25 KHz, 8 Bit Mono vorliegen und im Unterverzeichnis "Sound" des Railway - Verzeichnisses gespeichert sein.
TIPP: Auch beim Anfangsbahnhof muß der Wert "Ankunkft" gesetzt werden. Der Zeitwert gibt dann aber an, um wieviel Uhr die Simulation "gestartet" wird. Wenn der Ankunftswert beispielsweise 8:4400 beträgt und der Abfahrtswert 8:4500, so dauert es nach dem Laden der Strecke noch genau eine Minute, bis der Abfahrauftrag gegeben wird.

@stop(d)
Dieser Befehl setzt den Haltepunkt des Zuges im Bahnhof fest. Der Zug muß innerhalb von einer Toleranz von +/- 5 Metern an diesem Punkt anhalten. Der Wert "d" legt fest, ob eine Haltetafel links (-1) oder rechts (1) vom Gleis oder gar nicht (0) angezeigt werden soll.
TIPP: Wie bei allen Funktionsbefehlen, bei denen die Anzeige des entsprechenden Signals (Haltetafel, Geschwindigkeitsbegrenzung etc.) ausgeblendet wurde, kann mit Hilfe eines frei platzierbaren Objekts eine eigene Tafel gesetzt werden.

Szenerieoptionen für Bahnhöfe:

@form(g1,g2,d)
Dieser Befehl setzt einen Bahnsteig der Länge 25 Meter zwischen die Gleise mit den Indizes "g1" und "g2". Hierbei ist die Reihenfolge der Gleise unbedingt zu beachten, "g1" muß links von "g2" liegen, da es sonst zu Darstellungsproblemen kommt. "d" ist ein Wahrheitswert und gibt an, ob der Bahnsteig überdacht (1) oder ohne Bedachung (0) sein soll.
TIPP: Um einen längeren Bahnsteig zu bauen, sind mehrere form - Befehle in Abständen von 25 Metern hintereinander zu setzen.
Wenn der Bahnsteig nur an einem Gleis "befestigt" werden soll, so ist der Wert für das zweite Gleis auf 9 (für einen Bahnsteig rechts vom Gleis) oder auf -9 (links vom Gleis) gesetzt werden.

Andere Bahnsteigelemente, Personen, Fahrplanständer etc. können mit Hilfe der freeobj - Funktion hinzugefügt werden.

Beispiel:
<pre>
;; wir nehmen an, Gleis 1 liefe um 8 Meter nach rechts versetzt neben dem Hauptgleis her
200 @form(0,1,0) ;; nicht überdachter Bahnsteig zwischen Gleis 0 und 1
200 @form(0,-9,1) ;; überdachtes Bahnsteigelement links vom Hauptgleis
225 @form(0,1,0) ;; Fortführung des Bahnsteigs zwischen Gleis 0 und 1
225 @form(0,-9,1) ;; dto.
250 @form(0,1,1) ;; Bahnsteig zwischen Gl. 0 und 1 jetzt überdacht, links von Gleis 0 endet hier
275 @form(0,1,1) ;; Noch mal 25 Meter Bahnsteig...
300 @station(Rauenberg,14:3300,14:3330,1,ATC)
;; Bahnhof Rauenberg, Ankunft 14:33'00, Abfahrt 14:33'30, Halt und Zugbeeinflussung ATC
300 @stop(0) ;; Haltepunkt ohne Haltetafel
300 @form(0,1,1) ;; Und noch ein Bahnsteigelement.
</pre>

5. Fahrbetrieb und -beschränkungen

BVE bietet verschiedene Befehle zur Steuerung des Fahrbetriebs, die teilweise jedoch nur optische Auswirkungen haben.

Geschwindigkeitsbeschränkungen:

@limit(g,s,p)
Dieser Befehl setzt eine neue Streckenhöchstgeschwindigkeit. Der Parameter "g" gibt die neue Geschwindigkeit in km/h an. Der Parameter "s" legt fest, ob und wo eine Signaltafel aufgestellt wird (0: keine Tafel, 1: Tafel rechts vom Gleis, -1: Tafel links vom Gleis). Auch hier existiert wieder die Möglichkeit, mit freeobj eine eigene Tafel aufzustellen. Der optionale Parameter "p" legt fest, ob auf der Signaltafel Pfeile angegeben werden sollen, für welches Gleis die Beschränkung gilt (0: keine Pfeile, 1: rechtes Gleis, -1: linkes Gleis).

Fahrdrahtmasten:

Die Fahrdrahtmasten haben keinerlei Auswirkung auf das Verhalten von elektrisch betriebenen Loks. Diese bleiben leider nicht stehen, wenn man versucht, mit ihnen über die Grenze des Fahrdrahtes hinauszufahren. Auch wird zwischen zwei Masten kein Fahrdraht gespannt. Es besteht jedoch die Möglichkeit, den Fahrdraht in die Gleisbettextur mit aufzunehmen. Falls dies der Fall ist, sollte man jedoch erhöhte Vorsicht beim Setzen der Masten walten lassen, damit sich keine optisch unschönen Effekte einschleichen .

@pole(g,b,s,a)
Dieser Befehl beginnt das setzen von (BVE Standard-) Fahrdrahtmasten. "g" gibt hierbei das Gleis an, an welchem die Masten verankert werden sollen, "b" die Anzahl der Gleise RECHTS von dem betreffenden Gleis, die überspannt werden sollen (hierbei zählt das Gleis "g" als ein Gleis mit, BVE geht von einem Standard - Gleisabstand von 4 Metern aus). "s" gibt an, auf welcher Seite die Pfähle, die die Masten halten, in den Boden gerammt werden. Bei einer Breite von mehr als 1 überspannten Gleis (b >= 2) sollte nur der Wert "0" (beidseitig) verwendet werden, an sonsten entweder "1" (rechts vom Gleis) oder "-1" (links vom Gleis). Der Parameter "a" gibt schließlich an, in welchem Intervall die Masten entlang des Gleises gesetzt werden sollen. Ich empfehle hier einen Abstand von 50 oder 75 Metern.

@poleend(g)
Dieser Befehl beendet das Setzen von Fahrdrahtmasten entlang des Gleises "g".

TIPP: Wenn ein "bemastetes" Gleis mit Hilfe des railend - Befehls gelöscht wurde, und es später mit einem erneuten railstart - Befehl wieder erzeugt wird, bleibt die Bemastung auf dem neu angelegten Gleis weiterhin bestehen. Dies kann insbesondere bei Dummy - Gleisen oder Lärmschutzwällen zu ungerwünschten Effekten führen. Daher sollte bei jedem "railend" - Befehl gleichzeitig auch der "poleend" - Befehl ausgeführt werden.

PROFI - TIPP: Der Pole - Befehl beherrscht nur das Setzen von BVE - Standardmasten. Sollen aber z.B. Länderspezifische Masten entlang der Strecke gesetzt werden, so ist dies nur mit Hilfe des freeobj - Befehls möglich. Da dies jedoch insbesondere bei längeren Strecken zu einer drastisch verringerten Performance sowie zu einem stark erhöhten Programmieraufwand führt, empfehle ich dies nur für kürzere Streckenabschnitte, auf denen nicht allzu schnell gefahren wird.

Signalisierung:

Die Signalisierung in BVE ist eine Wissenschaft für sich. Auch nach längerem Experimentieren konnte ich hinter den verschiedenen Signaltypen und ihrer Schaltung kein wirkliches System entdecken. Offensichtlich fungieren jedoch die Signale in BVE ausschließlich als Blocksignale, d.h. es besteht scheinbar nicht die Möglichkeit, ein Signal (z.B. vor einem Gleiswechsel) auf die Stellungen "Halt" und "Langsamfahrt" zu beschränken, obwohl ein entsprechendes Signal vorhanden ist.

@signal(t,b,x,s)
Dieser Befehl setzt ein BVE - Standardsignal neben dem Hauptgleis auf. Der Parameter "t" gibt an, welchen Befehl das Signal zeigen soll. Es bestehen offenbar folgende Möglichkeiten, die Stellung die zuerst genannt wird, entspricht der Stellung, wenn das Signal vollständig "geöffnet" ist.
2: Signal "Langsamfahrt" oder "Halt"
-2: (Vor-)Signal "Fahrt" oder "Langsamfahrt erwarten"
-4: Kombinationssignal "Fahrt", "Langsamfahrt", "Halt" + Vorsignal (4 Lampen)
3/-3: Hauptsignal "Fahrt", "Langsamfahrt", "Halt"
5/-5: Kobinationssignal "Fahrt" "Langsamfahrt" "Halt" + Vorsignal (5 Lampen)
Bei der Auswahl der Signaltypen ist ein wenig Experimentieren gefragt.
Der Parameter "b" bestimmt die Bezeichnung des Signals (z.B. B11 für das Signal B in Block 11). Diese wird unterhalb des Signalbildes im Führerstand angezeigt. Der Parameter "x" legt fest, mit welchem Abstand das Signal vom Gleis aufgestellt werden soll. Der Parameter "s" schließlich bestimmt, auf welcher Seite das Signal aufgestellt werden soll (-1: links, 1: rechts).

@relay(x,y)
Dieser Befehl setzt einen Standard - BVE - Vorsignalwiederholer auf. Dieser bezieht sich jeweils auf die Stellung des vorangegangenen Signals. Der Parameter "x" gibt an welchen seitlichen Abstand das Signal haben soll (positive Werte = rechts vom Gleis, negative = links vom Gleis), der Parameter y gibt die Höhe des Signals in Metern an.

6. Tunnels

Spezielle Befehle zur Erzeugung von Tunnels in BVE existieren eigentlich nicht. Mit Hilfe der Befehle zum Setzen von Wänden, freien Szenerieobjekten und zum Verändern der Gleisbettextur läßt sich aber ein Tunneleffekt nachbilden. Hierbei ist jedoch einiges zu beachten.

Zunächst benötigt man geeignete Tunnelwände, eine rechte und eine linke Wand, die in der [Objects] - Sektion der Datei mit Hilfe der WallL und WallR - Befehle eingebunden wurden. Diese Wände müssen jedoch auch gleichzeitig die Decke enthalten. Ich empfehle allen angehenden Streckenbauern, zunächst auf die Tunnelwände einer bestehenden Strecke zurückzugreifen. Nehmen wir beispielsweise an, die betreffenden Wände seien mit Hilfe der WallL(10) und WallR(10) - Befehle eingebunden worden. Am Tunneleingang muß nun mit Hilfe des Befehls @wall(0,1,10) die rechte und mit @wall(2,-1,10) die linke Wand setzen (sofern das Gleis 2 das Gegengleis zum Gleis 1 ist). Wenn man diesen Streckenabschnitt befährt, wird man aber feststellen, daß der Eingang zum Tunnel seltsam wirkt, da kein wirkliches Tunnelportal vorhanden ist. Mit Hilfe einer als freiem Objekt an genau der Stelle platzierten Tunnelportal (einfach eine flache Wand mit einer Portal - Textur und transparentem Eingang) wirkt der Tunnel schon viel echter. Um den Tunnel wieder enden zu lassen, kann man einfach die Tunnelwände durch @wallend - Befehle wieder beenden. Bei einer weiteren Probefahrt treten dann Probleme zu tage, die nicht mehr so einfach zu lösen sind. Aufgrund der geringen Darstellungstiefe in BVE fährt man nämlich nicht in einem wirklichen Tunnel, sondern immer in so einer seltsamen Röhre, die am Ende offen ist. Diesen Effekt kann man unterdrücken, indem man am Tunneleingang einen @back - Befehl zum Ändern des Hintergrundbildes setzt. Hierbei sollte man einen Index verwenden, der auf eine einfache schwarze Bitmap verweist. Das Problem ist nur, daß man rechtzeitig vor Ende des Tunnels wieder die ursprüngliche Textur setzen muß, damit die Tunnelausfahrt nicht so wirkt, als trieben schwere Gewitterwolken ihr Unwesen dahinter. Was die richtige Platzierung des zweiten @back - Befehels angeht, rate ich zu ein wenig Experimentierfreude, da dies je nach Streckengeschwindigkeit etc. variieren kann. Standardmäßig ist ein Wert von 400 Metern angebracht.

Beispiel:
<pre>
;; Wir nehmen an, daß die Wand "10" die Tunnelwand ist,
;; das Objekt "20" unser TUnnelportal und der
;; Hintergrund "5" unser schwarzes Hintergrundbild ist.
;; Außer dem Hauptgleis liegt auch noch Gleis 2 als Gegengleis links vom Hauptgleis.

400@freeobj(0,20,0,0,0) ;; Tunnelportal
400@wall(0,1,10)@wall(2,-1,10) ;; Tunnelwände beginn
400@back(5)
;; ... hier folgt alles was sich im Tunnel abspielt
1000@back(0) ;; Hintergrundbild zurücksetzen
1400@wallend(0)@wallend(2) ;; Tunnelwände zuende
;; auf diese Weise haben wir einen 1 km langen Tunnel erzeugt.
</pre>

7. Landschaftsgestaltung

8. Sonstiges

- Wetter (@adhesion, Gewitter)

Weiter zu den BVE-Download's ...