Tutorial: Ampeln mit Nachtschaltung

Das Forum befindet sich im reduzierten Betrieb. Die Addon- und Supportforen bleiben weiterhin verfügbar.
Bitte beachte, dass OMSI nicht mehr weiterentwickelt wird. Ein Teil der Entwickler widmet sich inzwischen der Entwicklung eines neuen Simulators. Weitere Informationen zum LOTUS-Simulator findest Du hier.
  • Vorwort/Idee:
    Nach dem bisherigen Kenntnisstand war es nicht möglich, Ampeln nachts abzuschalten. Man könnte Ampeln zwar ähnlich wie Gebäuden eine Nachttextur geben, die sie abschaltet, das hätte aber keinen Einfluss auf die Verkehrsregeln. Einerseits weiß eine Kreuzung also nicht, wie spät es ist und andererseits weiß die Kreuzung nicht, was sie mit dieser Information anfangen soll. DVB6422 hatte dazu aber eine bahnbrechende Idee! Die einzige Einwirkmöglichkeit auf eine Kreuzung ist die Prüfung auf Annäherung, zum Beispiel für verkehrsabhängige Phasen oder ÖPNV-Priorisierung. Damit können wir der Kreuzung über Umwege mitteilen, wie spät es ist. Die Kreuzung kann prüfen, ob sich ein Fahrzeug nähert. Mit Fahrplänen können wir dafür sorgen, dass um eine bestimmte Uhrzeit ein KI-Bus kommt und zu anderen Uhrzeiten nicht. Weiterer Vorteil dieser Lösung ist, dass für jede Kreuzung einzeln die "Nacht" definiert werden kann, sogar wochentagsabhängig. Auf die gleiche Weise kann auch eine besondere Berufsverkehrsschaltung eingebaut werden.
    Ist das ganze kompliziert? Das könnt ihr selbst einschätzen, ihr seht, wie lang die Anleitung ist.


    Dateiverwaltung:
    Ihr benötigt das inoffizielle SDK bzw. den Download dazu. Das müsst ihr an der richtigen Stelle installieren. Wenn sich der Kreuzungseditor öffnen lässt und ihr eine Kreuzung laden könnt, habt ihr alles richtig gemacht. Ich empfehle euch, nur mit kopierten Kreuzungen zu arbeiten, nicht mit dem Original. Die Kopie sollte nicht im Original-Ordner liegen, sondern z.B. in "Kreuzungen fuer Ampelenien", damit klar ist, dass nicht M+R diese Kreuzung gebaut haben. Zugehörige Model- und Texturdateien müssen mitkopiert werden (im Zweifel den ganzen Ordner). In den ersten Zeilen der .sco-Datei wird zudem festgelegt, wie die Datei im Editor angezeigt wird, auch das sollte aus Gründen der Übersichtlichkeit modifiziert werden. Ein Muss ist das Ganze aber nicht, wenn ihr nur für euch selbst modifiziert.


    Basis-Nachtabschaltung:
    Häufig wird gewünscht, dass Ampeln nachts abgeschaltet sind. Für das Tutorial betrachten wir eine simple Spandauer Kreuzung, nämlich ...\Kreuz_MC\Einm_See_Paewesiner.sco.


    Jetzt möchte ich euch zeigen, wie ihr jede Ampel auf jeder Map so modifizieren könnt, dass sie nachts abgeschaltet ist. Als erster Schritt muss die Umlaufzeit (Complete periode) um 2 Sekunden verlängert werden. Dann müssen die einzelnen Phasen angepasst werden, sodass alle Ampeln in den letzten Sekunden aus sind (der alte Teil sollte genauso aussehen wie zuvor). Bei Kfz-Ampeln, die nicht Vorfahrt haben, ist es vorgeschrieben, sie blinken zu lassen. Dazu stellen wir in der ersten Zusatzsekunde gelb und in der zweiten off ein. Die Blinkfrequenz kann in der Realität davon abweichen. Außerdem kreieren wir eine neue Ampelphase Nummer 5, z.B. mit dem Namen "Nachtschaltung". Diese lassen wir durchgehend grün oder aus. Zu dieser Phase wird es später keine passende Ampel geben, sie ist aber für die internen Entscheidungen nötig.
    Jetzt wird es etwas komplizierter. Wir möchten in der Kreuzung neue Pfade verlegen, also das Schaltungsfenster erst mal wieder schließen. Jetzt könnt ihr 3 gerade Straßenstücke mit 10m Länge legen, die nicht mit dem Rest der Kreuzung verbunden und abseits liegen sollen (siehe Bild), dazu gebt ihr die Koordinaten des Startpunktes am besten von Hand ein. Setzt die Höhe (z-Koordinate) auf -10 Meter, damit ein eventuell darauf fahrendes Fahrzeug nicht sichtbar ist. Grundsätzlich gibt es aber verschiedene Varianten, dafür zu sorgen, dass immer ein Bus eine Anmeldung stellt.


    Als nächstes wird der Ampel beigebracht, dass es keinen langen Umlauf gibt, sondern zwei getrennte Signalprogramme, die je nach einer Bedingung ausgewählt werden sollen. Dazu erzeugen wir einen neuen Stop/Jump:


    Ein zweiter Sprung führt das Gegenteil aus, also von 74 auf 72 ohne Haken bei "no approach". So wird die linke "Seite" des Signalprogramms immer dann ausgeführt, wenn kein Bus da ist (=tagsüber) und nur der rechte Teil nachts.
    Nach Speichern und Schließen muss die .sco-Datei geöffnet werden. Sucht die Phase Nachtabschaltung und editiert bzw. ergänzt den Befehl [approachdist] 50. Jetzt brauchen wir noch einen Fahrplan, darauf gehe ich nicht im Detail ein, weil es nichts mit Ampelprogrammierung zu tun hat. Ich empfehle euch, im mittleren der drei Zusatzpfade einen Haltestellenwürfel zu platzieren. Dann braucht ihr Track/Trip vom Anfang bis zum Würfel und vom Würfel bis zum Ende. Die erste Fahrt des Umlaufs setzt ihr zur Startzeit (z.B. 22:00 Uhr) und die zweite Fahrt zum Ende (z.B. 6:00 Uhr). Während der "Wendezeit" wartet der Bus vor der Kreuzung und übermittelt so die Information, welche Tageszeit gerade herrscht. Als Bustyp reicht für den Anfang ein Standarddoppeldecker. Bei mehreren Kreuzungen sollte man aber performancefreundlichere oder gar unsichtbare Fahrzeuge nehmen.
    Im Mapeditor müsst ihr außerdem noch die Originalkreuzung gegen eure Kopie tauschen. Die neuen Pfade müssen außerdem auf "no unscheduled traffic" gesetzt werden. Könnt ihr die Pfade unter der Kreuzung nicht bearbeiten, könnt ihr die ganze Kreuzung anheben, bearbeiten und dann wieder zurücksetzen. Schaltet ihr eine Ampel teilweise aus, so müsst ihr normalerweise auch die Vorfahrtsregeln anpassen, da die Kreuzung auch ohne Ampelbetrieb funktionieren muss.
    ==========Ende des Tutorials für Anfänger==========


    Erweiterungen:
    Grüne Welle: Auf den meisten Karten braucht ihr euch keine Gedanken darüber zu machen, dass eine verkehrsabhängige Steuerung eine Grüne Welle zerschießen kann, denn es gibt keine. Hierbei müssen beide "Hälften" des Signalprogramms gleich groß sein, also muss die Nachtschaltung länger als im obigen Beispiel sein. Nach jedem kompletten Umlauf soll dann geprüft werden, ob die Schaltung gewechselt werden soll.
    HVZ-Schaltung: Ihr könnt den Blind-Bus auch so fahren lassen, dass er bspw. nur Mo-Fr 15-18 Uhr fährt und die Ampel dann anders schalten soll. Das Grundprinzip ist aber immer das gleiche: Baut zwei Schaltprogramme "nebeneinander" und macht dann die beiden Sprünge, die sicherstellen, dass die Ampel in der jeweiligen Hälfte verbleiben kann. Der Phantasie sind da keine Grenzen gesetzt, es können auch verkehrsabhängige mit "zeitabhängigen" Komponenten gemixt werden, sodass "normale Busse" nur nachts eine Priorisierung erfahren. Oder mehrere zeitabhängige Schaltungen. Möchte man mehrere Bedingungen auf einmal prüfen, wird das mit den Sprüngen sehr kompliziert, für den Anfang solltet ihr davon eher Abstand nehmen.
    Fail-safe: Eine Ampel soll störungssicher programmiert sein. Eine mögliche Störung ist, dass je nach Grafikeinstellungen der Ampelbus nicht geladen wird. Es sollte nicht passieren, dass durch solch eine Störung die Ampel tagsüber ausgeschaltet wird. Hingegen ist es ungefährlich, wenn eine Ampel nachts versehentlich anbleibt. Das erreicht ihr, indem ihr immer eine Normalschaltung habt für den Fall, dass kein Bus kommt.
    Fußgängerampeln abschalten: Ein Scriptfehler erlaubt es nicht, dass Fußgängerampeln den Befehl "off" verarbeiten, sie bleiben im abgeschalteten Zustand also rot. Das zugehörige Script kann bei Bedarf mit wenig Vorkenntnissen angepasst werden.
    Ein- und Ausschaltprogramme: Reale Ampeln haben sogenannte Ein- und Ausschaltprogramme, die die Sicherheit beim Wechsel gewährleisten. Eine vereinfachte Variante (2sek ausschalten, 6sek einschalten) könnte so aussehen:



    Ich habe das Tutorial selber nicht komplett im Editor getestet, aber eine andere Ampel umgebaut. Dies sind zumindest die theoretischen Grundlagen.. In Teltow v5 soll es dann neben echter ÖPNV-Priorisierung auch solche Nachtschaltungen geben. Zwar bleiben in Berlin nachts die Ampeln an, dafür sind in Brandenburg aber einige aus. Jedenfalls werde ich mich demnächst an einigen Ampelschaltungen versuchen. Möglicherweise finde ich einige Tipps erst später, aber ich wollte euch diese bahnbrechende Idee einfach nicht länger als nötig vorenthalten!

  • In Omsi 2 funktioniert die Nachtabschaltung nur noch eingeschränkt. Die Ampel kann durchaus einen Umlauf brauchen, um zu "bemerken", dass die Nachtabschaltung aktiviert werden soll. Da in Omsi 2 die Ampeln erst mit den Kacheln dynamisch erzeugt werden, ist die Zeit zwischen Objekterstellung und Erreichen der Ampel (bei Tempo 50) oft kürzer als ein Umlauf. Die Folge: Die Ampel schaltet erst ab, wenn man sie bereits passiert hat.

  • Da in Omsi 2 die Ampeln erst mit den Kacheln dynamisch erzeugt werden, ist die Zeit zwischen Objekterstellung und Erreichen der Ampel (bei Tempo 50) oft kürzer als ein Umlauf. Die Folge: Die Ampel schaltet erst ab, wenn man sie bereits passiert hat.

    Musst die Nachtphase einfach nach vorne verlegen, dann klappts auf jeden Fall bei mir!


    Edit: Man braucht allerdings 2 Jump Phasen:


    Wenn du dann immer noch keine Nachschaltung hast, bau einen dritten Jump mitten in den normalen Umlauf ein, der falls der Auslöserbus dann da ist zur Nachtschaltung gewechselt wird.


    Zitat: Fußgängerampeln abschalten: Ein Scriptfehler erlaubt es nicht, dass Fußgängerampeln den Befehl "off" verarbeiten, sie bleiben im abgeschalteten Zustand also rot. Das zugehörige Script kann bei Bedarf mit wenig Vorkenntnissen angepasst werden.
    Hab keine Ahnung wie ich das machen soll! Kann mir da jemand helfen?

  • Ich hatte auch mal daran gedacht, den Nachtteil an den Anfang zu legen. Das würde aber nur funktionieren, wenn der Bus bereits zur Sekunde 0 geladen wäre und das dürfte nicht immer klappen. Den Zusatzjump mitten im Umlauf kann man als Notlösung (besonders bei langen Umläufen bzw. schneller Annäherung) durchaus machen. Ich glaube aber, dass seit einem Patch die Ampel sich schon sortiert, wenn sie sich in der "unsichtbaren Zusatzkachel" befindet. Es sollte also meistens normal funktionieren.


    Bzgl. Script: