Russian Railway Simulator (RRS): erste Veröffentlichung

Der lang erwartete Tag ist gekommen, an dem ich diese Entwicklung endlich vorstellen kann. Das Projekt wurde vor genau einem Jahr, am 1. September 2018, zumindest im RRS-Repository auf Gtihub gestartet. Das erste Commit hat ein solches Datum.

Personenzug am Bahnhof Rostow Glavny (anklickbar)



Was ist ein RRS? Dies ist ein offener plattformübergreifender Simulator für Fahrzeuge mit einer Spurweite von 1520 mm. Der Leser wird natürlich die Frage stellen: "Entschuldigen Sie, warum wird dieses Projekt benötigt, wenn es genügend kommerzielle und offene Eisenbahnsimulatoren gibt?" Für die Antwort auf diese Frage schlage ich vor, unter die Katze zu schauen

Projektgeschichte


Es war einmal im Jahr 2001, als Microsoft Train Simulator (MSTS) das Licht der Welt erblickte und eine riesige Gemeinschaft von Eisenbahnsimmern in unserem Land hervorbrachte. Während der mehreren Jahre, die dieses Projekt dauerte (bis Microsoft es aufgab und interessantere Dinge dafür tat, wie die Insolvenz von Nokia usw.), entwickelte sich das Projekt zu einer Masse von Ergänzungen, die für dieses Projekt erstellt wurden: Routen, Fahrzeuge, Szenarien.

Basierend auf MSTS wurden anschließend eine Reihe anderer Projekte erstellt, darunter OpenRails , RTrainSim (RTS) und andere Add-Ons und Derivate. Kommerzielle Projekte wie das berühmte Trainz sind ebenfalls erschienen. Und alles wäre in Ordnung, aber viele Eisenbahnverkehrsbegeisterte sind aus ganz objektiven Gründen mit diesen Produkten nicht zufrieden - sie spiegeln überhaupt nicht die Besonderheiten des im postsowjetischen Raum betriebenen und entwickelten inländischen rollenden Materials wider. Dies ist besonders akut, wenn man sich ansieht, wie Zugbremsen implementiert werden - in keinem der aufgeführten Projekte gibt es eine normale Implementierung der automatischen Bremsen des Matrosov-Systems und wird dies auch nicht sein.

Bereits 2008 wurde ein weiteres Projekt veröffentlicht - ZDSimulator , entwickelt von Vyacheslav Usov. Das Projekt ist insofern bemerkenswert, als es die oben genannten Mängel berücksichtigt und korrigiert, während es sich zunächst auf das rollende Material der russischen Spurweite konzentriert. Aber es gibt ein großes „Aber“ - das Projekt ist proprietär und abgeschlossen und erlaubt architektonisch nicht die Einführung eines eigenen rollenden Materials.

Ich selbst kam 2007 zum Thema Eisenbahn, als ich als wissenschaftlicher Mitarbeiter bei VELNII OJSC anfing , und nachdem ich 2008 meine Dissertation verteidigt hatte, wurde ich leitender wissenschaftlicher Mitarbeiter. Dann lernte ich die neuesten Errungenschaften dieser Zeit im Bereich der Eisenbahnsimulationsspiele kennen. Und was ich sah, gefiel mir nicht und das ZDSimulator-Projekt war damals nicht da. Später kam ich, fasziniert von der Dynamik des rollenden Materials, an die Staatliche Verkehrsuniversität Rostow ( RGUPS ) mit dem Thema einer Dissertation über die Dynamik des Bremsens eines Güterzuges. Bisher leite ich die Entwicklung von Zugsimulatoren für den Schienenverkehr für unsere Universität und unterrichte Profildisziplinen am Department of Traction Rolling Stock.

In Verbindung mit all dem entstand die Idee, einen Simulator zu erstellen, der es dem Entwickler des Add-Ons ermöglicht, die volle Kontrolle über die im rollenden Material ablaufenden physikalischen Prozesse zu erlangen. Ähnlich dem Orbiter-Weltraumsimulator, für den ich einmal einen Zusatz in Form einer P-7-basierten Trägerraketenfamilie entwickelt habe. Vor einem Jahr nahm ich diese Arbeit auf und ging mit meinem Kopf darauf ein. Am 26. Dezember 2018 wurde diese technologische Demo veröffentlicht .

Meine Arbeit wurde von Enthusiasten wahrgenommen, und Roman Biryukov (Romich RZDUZ) , der Schöpfer visueller Inhalte für ZDsimulator, der in den Kreisen der Eisenbahnsimmer bekannt war, bot mir Hilfe und Kooperation bei der Weiterentwicklung des Projekts an. Später kam ein weiterer Entwickler zu uns - Alexander Mishchenko (Ulovskii2017 ), der Routenersteller für ZDsimulator. Unsere Zusammenarbeit führte uns zur ersten Veröffentlichung. Auf dem Video - ein Überblick darüber, wie das Spiel bei seiner ersten Veröffentlichung aussieht


RRS-Simulatorfunktionen


Erstens ist es eine offene Softwarearchitektur. Ganz zu schweigen von der Tatsache, dass der Simulatorcode geöffnet ist, gibt es eine API und ein SDK, die sich an Entwickler von Add-Ons von Drittanbietern richten. Die Einstiegsschwelle ist ziemlich hoch - Sie benötigen grundlegende C ++ - Entwicklungsfähigkeiten. Der Simulator ist speziell darauf geschrieben und verwendet den GCC-Compiler und seine Version von MinGW für das Windows-Betriebssystem. Darüber hinaus ist es wünschenswert, den Entwickler in das Qt-Framework einzuführen, da viele der daraus resultierenden Konzepte den Kern der Spielarchitektur bilden.

Mit der gebotenen Sorgfalt und dem Wunsch eröffnet dieses Projekt dem Add-On-Entwickler jedoch große Chancen. Fahrzeuge werden in Form von Modulen implementiert, die auf dynamischen Bibliotheken basieren. Das Hauptstrukturelement im Simulator ist eine Fahrzeugeinheit oder eine bewegliche Einheit (PE) - ein Wagen (nicht selbstfahrend oder als Teil eines Triebwagens) oder ein Lokomotivabschnitt. Die API ermöglicht es, das auf die Radpaare des PE ausgeübte Drehmoment als Reaktion auf den Empfang der Winkelgeschwindigkeit der Radpaare sowie externer Parameter wie Spannung und Stromart im Kontaktnetz einzustellen. Der Simulator weiß nichts mehr und will es nicht wissen, was die Physik des Betriebs interner Geräte dem Gewissen des Entwicklers einer bestimmten Lokomotive oder eines bestimmten Autos überlässt.

Es ist leicht zu erraten, dass ein derart relativ niedriger Ansatz es ermöglicht, die kleinsten Nuancen des Lokomotivkreises zu realisieren. Darüber hinaus enthält das Simulator-Kit eine Reihe von Standardausrüstungen, die auf dem inländischen Fahrzeug installiert sind: Zugkran des Fahrerkonv. Nr. 395, Luftverteiler konv. Nr. 242, Hilfsbremsventil Nr. 254 und andere Elemente der Bremsausrüstung. Der Add-On-Entwickler muss diese Elemente nur an den Pneumatikkreis einer bestimmten Lokomotive oder eines bestimmten Fahrzeugs anschließen. Darüber hinaus gibt es eine API zum Erstellen eigener Geräteblöcke.

Architektonisch basiert RRS auf dem Zusammenspiel zweier Hauptprozesse

  • Der Simulator ist eine Physik-Engine der TrainEngine 2-Zugdynamik. Er implementiert die Physik der Zugbewegung unter Berücksichtigung vieler externer Faktoren, berücksichtigt das Zusammenspiel beweglicher Einheiten durch Koppler und verarbeitet Daten von externen Modulen, die die Physik von Schienenfahrzeugen implementieren
  • Viewer - ein grafisches Subsystem, das die Visualisierung der Bewegung eines Zuges implementiert und auf der Basis der Grafik-Engine OpenSceneGraph erstellt wurde

Diese Subsysteme interagieren miteinander über einen gemeinsam genutzten Speicher, der auf der Grundlage der QSharedMemory-Klasse des Qt-Frameworks implementiert wird. Bei den ersten Demos wurde IPC basierend auf Sockets verwendet. In Zukunft ist geplant, auf diese Technologie zurückzugreifen, da einige Teile des Simulators fertiggestellt sind und die Anforderungen mit Blick auf die Zukunft erfüllt werden. Der Übergang zum gemeinsamen Gedächtnis war bis zu einem gewissen Grad eine erzwungene Maßnahme, die überholt ist.

Ich werde die Nuancen nicht beschreiben - viele der Höhen und Tiefen der Entwicklung dieses Projekts sind bereits in meinen Veröffentlichungen zur Ressource beschrieben, insbesondere habe ich eine ziemlich umfangreiche Reihe von Tutorials zur OpenSceneGraph-Engine , die nur durch die Arbeit an diesem Projekt entstanden ist.

Im Projekt ist nicht alles so reibungslos, wie wir es uns wünschen. Insbesondere das Grafik-Subsystem ist in Bezug auf die Renderqualität alles andere als perfekt, und die Leistung der Sim lässt zu wünschen übrig. Diese Version hat ein Ziel: die Community der Eisenbahnverkehrsbegeisterten mit dem Projekt vertraut zu machen, seine Fähigkeiten zu skizzieren und schließlich einen offenen, plattformübergreifenden Eisenbahnsimulator mit einer erweiterten API für den Add-On-Entwickler zu erstellen.

Perspektiven


Die Aussichten liegen bei Ihnen, unseren lieben zukünftigen Anwendern und Entwicklern. Das Projekt ist offen, es gibt eine offizielle Seite, auf der Sie den Simulator mit Dokumentation herunterladen können, deren Zusammensetzung kontinuierlich aktualisiert wird. Es gibt ein Projektforum, eine VK-Gruppe und einen YouTube-Kanal, auf dem Sie die detailliertesten Ratschläge und Unterstützung erhalten.

Vielen Dank für Ihre Aufmerksamkeit!

Source: https://habr.com/ru/post/de465689/


All Articles