Russian Railway Simulator (RRS) : première version publique

Le jour que j'attendais est arrivé où je peux enfin présenter ce développement. Le projet a démarré il y a exactement un an, le 1er septembre 2018, au moins Dépôts RRS sur Gtihub le premier commit a exactement cette date.

Train de voyageurs à la gare principale de Rostov (cliquable)

Russian Railway Simulator (RRS) : première version publique

Qu’est-ce que le RRS ? Il s'agit d'un simulateur multiplateforme ouvert de matériel roulant à écartement de 1520 XNUMX mm. Le lecteur se posera naturellement la question : « Excusez-moi, à quoi sert ce projet, s'il existe un nombre suffisant de simulateurs ferroviaires, tant commerciaux qu'ouverts ? Pour la réponse à cette question, je suggère de regarder sous le chat

Historique du projet

Il était une fois, en 2001, publié Simulateur de train Microsoft (MSTS), ce qui a donné naissance à une immense communauté de simmers ferroviaires dans notre pays. Au fil des années d'existence de ce projet (jusqu'à ce que Microsoft l'abandonne pour passer à des choses plus intéressantes pour lui, comme la faillite de Nokia, etc.), le projet a acquis une masse d'ajouts créés pour lui : itinéraires, matériel roulant, scénarios.

Sur la base du MSTS, un certain nombre d'autres projets ont ensuite été créés, tels que OuvrirRails, RTrainSim (RTS) et autres ajouts et dérivés. Des projets commerciaux apparaissent également, comme le célèbre trainz. Et tout irait bien, mais de nombreux amateurs de transport ferroviaire ne sont pas satisfaits de ces produits pour des raisons tout à fait objectives - ils ne reflètent en aucun cas les spécificités du matériel roulant national exploité et développé dans l'espace post-soviétique. Ceci est particulièrement aigu si l'on considère la manière dont les freins des trains sont mis en œuvre - aucun des projets répertoriés n'a ni n'aura une mise en œuvre normale des freins automatiques du système Matrosov.

En 2008, une année pas si lointaine, un autre projet est apparu - ZDSimulator, développé par Viatcheslav Usov. Le projet est remarquable dans la mesure où il prend en compte et corrige les lacunes mentionnées ci-dessus, tout en se concentrant dans un premier temps sur le matériel roulant à écartement russe. Mais il y a un grand « mais » : le projet est propriétaire et fermé, son architecture ne permettant pas l'introduction de son propre matériel roulant.

J'ai moi-même abordé le sujet ferroviaire en 2007, lorsque j'ai commencé à travailler dans JSC VELNII, en tant que chercheur, et après avoir soutenu sa thèse de doctorat en 2008, en tant que chercheur principal. C'est alors que j'ai pris connaissance des dernières réalisations de l'époque dans le domaine des jeux de simulation ferroviaire. Et je n’ai pas aimé ce que j’ai vu, et le projet ZDSimulator n’existait pas à cette époque. Plus tard, fasciné par la dynamique du matériel roulant, je suis arrivé à l'Université d'État des transports de Rostov (RGUPS) avec le thème d'une thèse de doctorat sur la dynamique de freinage d'un train de marchandises. Aujourd'hui, je dirige le développement de complexes de formation en transport ferroviaire pour notre université et j'enseigne des disciplines spécialisées au Département de Traction Matériel Roulant.

En relation avec tout ce qui précède, l'idée est née de créer un simulateur qui permettrait au développeur d'un module complémentaire d'acquérir un contrôle total sur les processus physiques se produisant dans le matériel roulant. Semblable au simulateur spatial Orbiter, pour lequel j'ai développé un complément sous la forme d'une famille de lanceurs basés sur le R-7. Il y a un an, j'ai repris ce travail et je m'y suis lancé. Le 26 décembre 2018 a vu le jour ici cette démo technologique.

Mon travail a été remarqué par les passionnés, et bien connu dans les cercles des simmers ferroviaires, créateur de contenu visuel pour ZDsimulator Roman Biryukov (Chemins de fer russes Romych) m'a proposé son aide et sa coopération pour le développement ultérieur du projet. Plus tard, un autre développeur nous a rejoint - Alexandre Michchenko (Ulovskii2017), créateur d'itinéraires pour ZDsimulator. Notre collaboration nous a conduit à notre première version. La vidéo montre un aperçu de l'apparence du jeu pour sa première version.

Caractéristiques du simulateur RRS

Tout d’abord, il s’agit d’une architecture logicielle ouverte. Sans parler du fait que le code du simulateur est ouvert, il existe une API et un SDK destinés aux développeurs de modules complémentaires tiers. La barrière à l’entrée est assez élevée – des compétences de base en développement C++ sont requises. Le simulateur y est écrit, à l'aide du compilateur GCC et de sa variante MinGW pour le système d'exploitation Windows. De plus, il est conseillé au développeur de se familiariser avec le framework Qt, puisque nombre de ses concepts sous-tendent l'architecture du jeu.

Cependant, avec la diligence et la volonté nécessaires, ce projet ouvre d'énormes opportunités pour le développeur de modules complémentaires. Le matériel roulant est implémenté sous forme de modules basés sur des bibliothèques dynamiques. Le principal élément structurel du simulateur est une unité de matériel roulant, ou unité mobile (MU) - une voiture (non automotrice ou faisant partie d'un train à unités multiples) ou une section de locomotive. L'API permet de régler le couple appliqué aux essieux PE, en recevant en réponse la vitesse angulaire des essieux, ainsi que des paramètres externes, tels que la tension et le type de courant dans le réseau de contacts. Le simulateur ne sait rien d’autre et ne veut pas savoir, ce qui laisse la physique des équipements internes à la conscience du développeur d’une locomotive ou d’un wagon particulier.

Il n'est pas difficile de deviner qu'une approche aussi simple permet de mettre en œuvre les moindres nuances du circuit locomoteur. De plus, le kit de simulation comprend un ensemble d'équipements standards installés sur le matériel roulant national : conv. N° 395, état du distributeur d'air. N° 242, état du robinet de frein auxiliaire. N° 254 et autres éléments de l'équipement de freinage. Le développeur du module complémentaire n'a besoin que de connecter ces éléments au circuit pneumatique d'une locomotive ou d'un wagon spécifique. De plus, il existe une API pour créer vos propres unités matérielles.

Sur le plan architectural, RRS repose sur l'interaction de deux processus principaux

  • simulateur — moteur de dynamique physique des trains TrainEngine 2. Met en œuvre la physique du mouvement des trains, en tenant compte de nombreux facteurs externes, en tenant compte de l'interaction des unités mobiles via des dispositifs de couplage, traite les données provenant de modules externes qui mettent en œuvre la physique de fonctionnement des équipements du matériel roulant
  • téléspectateur — un sous-système graphique qui visualise le mouvement du train, construit sur la base d'un moteur graphique OpenSceneGraph

Ces sous-systèmes interagissent les uns avec les autres via une mémoire partagée, implémentée sur la base de la classe QSharedMemory du framework Qt. Les premières démos utilisaient l'IPC basé sur socket, et il est prévu de revenir à cette technologie à l'avenir, en tenant compte du raffinement de certaines parties du simulateur et des besoins en vue de l'avenir. Le passage à la mémoire partagée était dans une certaine mesure une mesure forcée qui n’est plus utile.

Je ne décrirai pas les nuances - bon nombre des vicissitudes du développement de ce projet sont déjà décrites dans mes publications sur la ressource, en particulier, j'ai une assez vaste une série de tutoriels sur le moteur OpenSceneGraph, né de la pratique de travailler sur ce projet.

Tout dans le projet ne se déroule pas aussi bien que nous le souhaiterions. En particulier, le sous-système graphique est loin d'être parfait en termes de qualité de rendu, et les performances de la simulation laissent beaucoup à désirer. Cette version a un seul objectif : présenter le projet à la communauté des passionnés du transport ferroviaire, décrire ses capacités et enfin créer un simulateur ferroviaire ouvert et multiplateforme avec une API avancée pour les développeurs de modules complémentaires.

Perspectives

Les perspectives dépendent de vous, nos chers futurs utilisateurs et développeurs. Le projet est ouvert et existe site officieloù vous pouvez télécharger le simulateur, depuis Documentation, dont la composition sera continuellement reconstituée. Existe forum projet, Groupe VKEt Chaîne Youtube, où vous pourrez obtenir les conseils et l'assistance les plus détaillés.

Je vous remercie!

Source: habr.com

Ajouter un commentaire