Russian Railway Simulator (RRS): erste öffentliche Veröffentlichung

Der Tag, auf den ich gewartet habe, ist gekommen, an dem ich diese Entwicklung endlich präsentieren kann. Das Projekt wurde vor genau einem Jahr, also am 1. September 2018, gestartet RRS-Repositorys auf Gtihub Der erste Commit hat genau dieses Datum.

Personenzug am Rostower Hauptbahnhof (anklickbar)

Russian Railway Simulator (RRS): erste öffentliche Veröffentlichung

Was ist RRS? Dabei handelt es sich um einen offenen plattformübergreifenden Simulator für Schienenfahrzeuge der Spurweite 1520 mm. Der Leser wird natürlich die Frage stellen: „Entschuldigung, wozu dient dieses Projekt, wenn es genügend kommerzielle und offene Eisenbahnsimulatoren gibt?“ Für die Antwort auf diese Frage schlage ich vor, einen Blick unter die Katze zu werfen

Projekthistorie

Es war einmal, im Jahr 2001, es wurde veröffentlicht Microsoft Train Simulator (MSTS), wodurch in unserem Land eine riesige Gemeinschaft von Eisenbahnsimmern entstand. Im Laufe der Jahre, in denen dieses Projekt existierte (bis Microsoft es aufgab und sich interessanteren Dingen zuwandte, wie der Insolvenz von Nokia usw.), erwarb das Projekt eine Menge Ergänzungen, die dafür geschaffen wurden: Strecken, Fahrzeuge, Szenarien.

Basierend auf MSTS wurden in der Folge eine Reihe weiterer Projekte erstellt, wie z OpenRails, RTrainSim (RTS) und andere Ergänzungen und Derivate. Es erschienen auch kommerzielle Projekte wie das berühmte trainz. Und alles wäre gut, aber viele Fans des Schienenverkehrs sind aus ganz objektiven Gründen mit diesen Produkten nicht zufrieden – sie spiegeln in keiner Weise die Besonderheiten der im postsowjetischen Raum betriebenen und entwickelten inländischen Schienenfahrzeuge wider. Dies ist besonders deutlich, wenn man sich ansieht, wie Zugbremsen implementiert werden – keines der aufgeführten Projekte hat oder wird eine normale Implementierung automatischer Bremsen des Matrosov-Systems haben.

Im nicht allzu fernen Jahr 2008 erschien ein weiteres Projekt - ZDSimulator, entwickelt von Vyacheslav Usov. Das Besondere an dem Projekt ist, dass es die oben genannten Mängel berücksichtigt und behebt, wobei der Schwerpunkt zunächst auf Schienenfahrzeugen mit russischer Spurweite liegt. Aber es gibt ein großes „Aber“: Das Projekt ist proprietär und geschlossen und erlaubt architektonisch nicht die Einführung eigener Fahrzeuge.

Ich selbst bin 2007 zum Thema Eisenbahn gekommen, als ich angefangen habe, dort zu arbeiten JSC VELNII, als wissenschaftlicher Mitarbeiter und nach der Verteidigung seiner Doktorarbeit im Jahr 2008 als leitender wissenschaftlicher Mitarbeiter. Damals lernte ich die neuesten Errungenschaften auf dem Gebiet der Eisenbahnsimulationsspiele kennen. Und mir gefiel nicht, was ich sah, und das ZDSimulator-Projekt existierte zu diesem Zeitpunkt noch nicht. Später, fasziniert von der Dynamik von Schienenfahrzeugen, kam ich an die Staatliche Verkehrsuniversität Rostow (RGUPS) mit dem Thema einer Doktorarbeit über die Bremsdynamik eines Güterzuges. Heute leite ich die Entwicklung von Ausbildungskomplexen für den Schienenverkehr an unserer Universität und unterrichte Fachdisziplinen am Lehrstuhl für Traktionsfahrzeuge.

Im Zusammenhang mit all dem entstand die Idee, einen Simulator zu schaffen, der es dem Entwickler eines Add-ons ermöglichen würde, die volle Kontrolle über die physikalischen Prozesse zu erlangen, die im Rollmaterial ablaufen. Ähnlich dem Weltraumsimulator Orbiter, für den ich einst eine Ergänzung in Form einer Familie von Trägerraketen auf Basis der R-7 entwickelt habe. Vor einem Jahr habe ich diese Arbeit aufgenommen und mich darauf gestürzt. Der 26. Dezember 2018 erblickte hier das Licht diese Technologiedemo.

Meine Arbeit wurde von Enthusiasten wahrgenommen und ist in den Kreisen von Eisenbahnfahrern und Erstellern visueller Inhalte für ZDsimulator bekannt Roman Biryukov (Romych Russian Railways) bot mir Hilfe und Mitarbeit bei der Weiterentwicklung des Projekts an. Später kam ein weiterer Entwickler zu uns – Alexander Mishchenko (Ulovskii2017), Routenersteller für ZDsimulator. Unsere Zusammenarbeit führte uns zu unserer ersten Veröffentlichung. Das Video zeigt einen Überblick darüber, wie das Spiel nach seiner ersten Veröffentlichung aussehen wird

Funktionen des RRS-Simulators

Erstens handelt es sich um eine offene Softwarearchitektur. Ganz zu schweigen von der Tatsache, dass der Simulatorcode offen ist. Es gibt eine API und ein SDK, die sich an Entwickler von Add-ons von Drittanbietern richten. Die Einstiegshürde ist recht hoch – grundlegende C++-Entwicklungskenntnisse sind erforderlich. Darin ist der Simulator geschrieben, der den GCC-Compiler und seine MinGW-Variante für das Windows-Betriebssystem verwendet. Darüber hinaus ist es für den Entwickler ratsam, mit dem Qt-Framework vertraut zu sein, da viele seiner Konzepte der Architektur des Spiels zugrunde liegen.

Mit der nötigen Sorgfalt und Lust eröffnet dieses Projekt jedoch enorme Möglichkeiten für den Add-on-Entwickler. Rollmaterial wird in Form von Modulen implementiert, die auf dynamischen Bibliotheken basieren. Das Hauptstrukturelement im Simulator ist eine Einheit für rollendes Materialoder mobile Einheit (MU) – ein Wagen (ohne Eigenantrieb oder als Teil eines Triebzuges) oder ein Teil einer Lokomotive. Die API ermöglicht es, das auf die PE-Radsätze ausgeübte Drehmoment einzustellen und als Reaktion darauf die Winkelgeschwindigkeit der Radsätze sowie externe Parameter wie Spannung und Stromart im Kontaktnetzwerk zu empfangen. Der Simulator weiß nichts anderes und will es auch nicht wissen, sodass die Physik der internen Ausrüstung dem Gewissen des Entwicklers einer bestimmten Lokomotive oder eines bestimmten Wagens überlassen bleibt.

Es ist nicht schwer zu erraten, dass ein solch relativ niedrigstufiger Ansatz es ermöglicht, die kleinsten Nuancen der Lokomotivschaltung umzusetzen. Darüber hinaus enthält der Simulatorbausatz eine Reihe von Standardausrüstungen, die in inländischen Schienenfahrzeugen installiert sind: einen Führerzug, einen Kranumbau. Nr. 395, Zustand des Luftverteilers. Nr. 242, Zustand des Hilfsbremsventils. Nr. 254 und andere Elemente der Bremsausrüstung. Der Entwickler des Add-ons muss diese Elemente lediglich in den Pneumatikkreislauf einer bestimmten Lokomotive oder eines bestimmten Wagens einbinden. Darüber hinaus gibt es eine API zum Erstellen eigener Hardware-Einheiten.

Architektonisch basiert RRS auf dem Zusammenspiel zweier Hauptprozesse

  • Simulator — physische Zugdynamik-Engine TrainEngine 2. Implementiert die Physik der Zugbewegung unter Berücksichtigung vieler externer Faktoren, unter Berücksichtigung der Interaktion beweglicher Einheiten durch Kopplungsvorrichtungen, verarbeitet Daten von externen Modulen, die die Betriebsphysik von Schienenfahrzeugausrüstungen implementieren
  • Zuschauer — ein grafisches Subsystem, das die Zugbewegung visualisiert und auf der Grundlage einer Grafik-Engine aufgebaut ist OpenSceneGraph

Diese Subsysteme interagieren miteinander über einen gemeinsamen Speicher, der auf der Grundlage der QSharedMemory-Klasse des Qt-Frameworks implementiert wird. Die ersten Demos nutzten Socket-basierte IPCs, und es gibt Pläne, in Zukunft zu dieser Technologie zurückzukehren, wobei die Verfeinerung einiger Teile des Simulators und Anforderungen mit Blick auf die Zukunft berücksichtigt werden. Der Übergang zum Shared Memory war gewissermaßen eine erzwungene Maßnahme, die ihren Nutzen verloren hat.

Ich werde die Nuancen nicht beschreiben – viele der Wechselfälle bei der Entwicklung dieses Projekts sind bereits in meinen Veröffentlichungen zu der Ressource beschrieben, insbesondere habe ich eine ziemlich umfangreiche eine Reihe von Tutorials zur OpenSceneGraph-Engine, das aus der Praxis der Arbeit an diesem Projekt hervorgegangen ist.

Nicht alles im Projekt läuft so reibungslos, wie wir es gerne hätten. Insbesondere das Grafiksubsystem ist hinsichtlich der Renderqualität alles andere als perfekt und die Leistung der Simulation lässt zu wünschen übrig. Diese Veröffentlichung hat ein Ziel: der Community von Eisenbahntransportbegeisterten das Projekt vorzustellen, seine Fähigkeiten zu skizzieren und schließlich einen offenen, plattformübergreifenden Eisenbahnsimulator mit einer erweiterten API für Add-on-Entwickler zu erstellen.

Chancen

Die Aussichten hängen von Ihnen ab, unseren lieben zukünftigen Benutzern und Entwicklern. Das Projekt ist offen und existiert offizielle websitewo Sie den Simulator herunterladen können Dokumentation, dessen Zusammensetzung kontinuierlich ergänzt wird. Existiert Forum Projekt VK GruppeUnd Youtube Kanal, wo Sie die ausführlichste Beratung und Unterstützung erhalten.

Danke!

Source: habr.com

Kommentar hinzufügen