Russischer Eisenbahnsimulator (RRS): erste öffentliche Veröffentlichung

Endlich ist der Tag gekommen, auf den ich so lange gewartet habe, an dem ich diese Entwicklung endlich vorstellen kann. Das Projekt wurde genau vor einem Jahr, am 1. September 2018, in dem RRS-Repository auf GitHub der erste Commit hat genau dieses Datum.

Der Personenzug am Bahnhof Rostow Hauptbahnhof (klickbar)

Russischer Eisenbahnsimulator (RRS): erste öffentliche Veröffentlichung

Was ist RRS? Es ist ein plattformübergreifender Open-Source-Simulator für Schienenfahrzeuge mit einem Spurweitenmaß von 1520 mm. Der Leser wird sich zwangsläufig fragen: „Wozu braucht man dieses Projekt, wenn es schon genug Eisenbahnsimulatoren gibt, sowohl kommerzielle als auch Open Source?“ Um eine Antwort auf diese Frage zu erhalten, lade ich Sie ein, unter den Schnitt zu schauen.

Die Geschichte des Projekts

Vor langer Zeit, im Jahr 2001, erblickte Microsoft Train Simulator (MSTS), das in unserem Land eine riesige Gemeinschaft von Eisenbahnsimulationsspielern hervorgebracht hat. In den wenigen Jahren, in denen dieses Projekt existierte (bis Microsoft es aufgab, um sich mit interessanteren Dingen zu befassen, wie dem Bankrott von Nokia usw.), enriqueció el proyecto con einer Vielzahl von Ergänzungen: Strecken, Fahrzeuge, Szenarien.

Basierend auf MSTS wurden später eine Reihe anderer Projekte geschaffen, wie zum Beispiel OpenRails, RTrainSim (RTS) und andere Ergänzungen und Ableitungen. Es entstanden auch kommerzielle Projekte wie das berühmte Trainz. Und das wäre alles gut und schön, aber viele Liebhaber der Eisenbahntechnik sind mit diesen Produkten aus durchaus objektiven Gründen unzufrieden — sie spiegeln in keiner Weise die Spezifikationen der heimischen Fahrzeuge wider, die im post-sowjetischen Raum betrieben und entwickelt werden. Besonders deutlich wird dies, wenn man sich ansieht, wie die Bremsen des Zuges umgesetzt werden — in keinem der genannten Projekte gibt es eine ordentliche Implementierung der automatischen Bremsen des Matrosov-Systems.

Im bereits nicht mehr nahen Jahr 2008 entstand ein anderes Projekt — ZDSimulator, entwickelt von Wjatscheslaw Usow. Das Projekt ist bemerkenswert, da es die oben genannten Mängel berücksichtigt und behebt, wobei es ursprünglich auf die russische Spurweite ausgerichtet ist. Aber es gibt ein großes „Aber“ — das Projekt ist proprietär und geschlossen, sodass keine eigenen Fahrzeuge darin integriert werden können.

Selbst bin ich 2007 zur Eisenbahnthematik gekommen, als ich begann, bei OAO WELNII zu arbeiten, in der Position eines wissenschaftlichen Mitarbeiters, und nach der Verteidigung der Doktorarbeit im Jahr 2008 - als leitender wissenschaftlicher Mitarbeiter. Zu dieser Zeit habe ich die damaligen Errungenschaften im Bereich der Eisenbahn-Simulationsspiele kennengelernt. Und das, was ich gesehen habe, hat mir nicht gefallen, und das Projekt ZDSimulator existierte zu diesem Zeitpunkt noch nicht. In der Folge kam ich, fasziniert von der Dynamik des Fahrzeugs, an die Südliche Landesuniversität für Verkehr (RGSUPS) mit dem Thema der Doktorarbeit über die Bremsdynamik von Güterzügen. Heute leite ich die Entwicklung von Trainingssimulatoren für den Eisenbahnverkehr an unserer Universität und unterrichte spezifische Fächer am Lehrstuhl "Zugfahrzeug".

In Anbetracht all dessen entstand die Idee, einen Simulator zu schaffen, der es dem Entwickler eines Add-ons ermöglichen würde, die vollständige Kontrolle über die physikalischen Prozesse zu haben, die im Fahrzeug ablaufen. Ähnlich dem Raumfahrtsimulator Orbiter, für den ich einst ein Add-on in Form einer Familie von Trägerraketen basierend auf der R-7 entwickelt habe. Vor einem Jahr begann ich mit dieser Arbeit und tauchte vollständig ein. Am 26. Dezember 2018 wurde diese technologische Demo.

meine Arbeit wurde von Enthusiasten wahrgenommen, und der in Eisenbahnspielerkreisen bekannte Entwickelter visueller Inhalte für ZDSimulator Roman Biryukov (Romych RŽDUZ) bot mir Hilfe und Zusammenarbeit bei der weiteren Entwicklung des Projekts an. Später gesellte sich ein weiterer Entwickler zu uns - Alexander Mishchenko (Ulovskii2017), der Routen für ZDSimulator erstellt. Unsere gemeinsame Arbeit führte uns zur ersten Veröffentlichung. Im Video sehen Sie eine Übersicht darüber, wie das Spiel zur ersten Veröffentlichung aussieht.

Video abspielen

Besonderheiten des RRS-Simulators

Zunächst einmal ist dies eine offene Software-Architektur. Ganz zu schweigen davon, dass der Code des Simulators offen ist, gibt es eine API und ein SDK, das auf Entwickler von Drittanbieter-Erweiterungen ausgerichtet ist. Die Einstiegsschwelle ist ziemlich hoch - grundlegende Entwicklungskenntnisse in C++ sind erforderlich. Der Simulator wurde genau in dieser Sprache geschrieben, unter Verwendung des Compilers GCC und seiner Version MinGW für das Betriebssystem Windows. Darüber hinaus ist es wünschenswert, dass der Entwickler mit dem Qt-Framework vertraut ist, da viele Konzepte daraus die Architektur des Spiels bilden.

Doch bei entsprechendem Fleiß und Wunsch eröffnet dieses Projekt dem Entwickler von Erweiterungen riesige Möglichkeiten. Der Bewegungsumfang wird in Form von Modulen auf der Basis dynamischer Bibliotheken umgesetzt. Das Hauptelement im Simulator ist die Einheit des Bewegungsumfangs, oder bewegliche Einheit (BE) – ein Wagen (nicht selbstfahrend oder in einem Triebwagen-Zug) oder ein Abschnitt einer Lokomotive. Die API ermöglicht es, das Drehmoment, das auf die Radsätze der BE angewendet wird, anzugeben und erhält im Gegenzug die Winkelgeschwindigkeit der Radsätze sowie externe Parameter wie Spannung und Art des Stroms im Kontaktnetz. Über die Physik der inneren Ausrüstung möchte der Simulator nichts wissen und auch nichts wissen, was die physikalische Funktionsweise der spezifischen Lokomotive oder des Wagens dem Entwickler überlässt.

Es ist nicht schwer zu erraten, dass solch ein relativ niedriger Ansatz die Möglichkeit eröffnet, die kleinsten Nuancen des Lokomotivschemas zu realisieren. Darüber hinaus enthält das Simulationspaket eine Reihe von Standardgeräten, die auf dem heimischen Bewegungsumfang installiert werden: die Lokführer-Eisenbahnkran Nr. 395, der Luftverteiler Nr. 242, der Kran der Hilbremse Nr. 254 und andere Elemente der Bremsausrüstung. Es genügt dem Entwickler der Erweiterung, diese Elemente in das pneumatische Schema einer bestimmten Lokomotive oder eines Wagens zu integrieren. Außerdem gibt es eine API zur Erstellung eigener Geräteblöcke.

Architektonisch basiert RRS auf der Interaktion von zwei Hauptprozessen

  • simulator – dem physischen Motor der Zugdynamik TrainEngine 2. Er implementiert die Physik der Zugbewegung unter Berücksichtigung vieler externer Faktoren, berücksichtigt die Wechselwirkung beweglicher Einheiten über Kupplungsgeräte, bearbeitet Daten von externen Modulen, die die Physik der Funktionsweise der Ausrüstung des beweglichen Umfangs implementieren.
  • viewer – das grafische Subsystem, das die Visualisierung der Zugbewegung durch die Verwendung der Grafik-Engine OpenSceneGraph realisiert.

Diese Teilsysteme interagieren miteinander über einen gemeinsamen Speicher, der auf der Klasse QSharedMemory des Qt-Frameworks basiert. Die ersten Demoversionen verwendeten IPC auf Basis von Sockets, und in Zukunft ist eine Rückkehr zu dieser Technologie geplant, angesichts der Überarbeitung einiger Teile des Simulators und der zukünftigen Anforderungen. Der Übergang zu gemeinsamem Speicher war in gewissem Maße eine Notmaßnahme, die ihren Zweck erfüllt hat.

Ich werde die Nuancen nicht beschreiben — viele der Wendungen in der Entwicklung dieses Projekts sind bereits in meinen Veröffentlichungen auf der Plattform dargelegt, insbesondere habe ich einen ziemlich umfangreichen Kurs von Tutorials zur OpenSceneGraph-Engine, der gerade aus der Praxiserfahrung in diesem Projekt gewachsen ist.

Im Projekt läuft nicht alles so reibungslos, wie man sich wünschen würde. Insbesondere ist das grafische Teilsystem in Bezug auf die Rendering-Qualität noch weit entfernt von der Perfektion, und die Leistung des Simulators lässt zu wünschen übrig. Dieses Release hat ein Ziel — die Gemeinschaft der Liebhaber von Schienentransport mit dem Projekt vertraut zu machen, seine Möglichkeiten abzustecken und endlich einen offenen, plattformübergreifenden Eisenbahnsimulator mit einer fortschrittlichen API für Entwickler von Erweiterungen zu schaffen.

Aussichten

Die Perspektiven hängen von Ihnen ab, unseren geschätzten zukünftigen Benutzern und Entwicklern. Das Projekt ist offen und es gibt Offizielle Website, wo man den Simulator herunterladen kann, mit Dokumentation, dessen Inhalt kontinuierlich erweitert wird. Es gibt Forum des Projekts, eine VK-Gruppe, und YouTube-Kanal, in der man die detaillierteste Beratung und Unterstützung erhalten kann.

Vielen Dank für Ihre Aufmerksamkeit!

Quelle: habr.com

60GB SSD 8Gb DDR4