Le jour tant attendu est venu où je peux enfin présenter cette évolution. Le projet a été lancé il y a exactement un an, le 1er septembre 2018, au moins dans
le référentiel RRS sur Gtihub, le premier commit a une telle date.
Train de voyageurs à la gare de Rostov Glavny (cliquable)
Qu'est-ce qu'un RRS? Il s'agit d'un simulateur multiplateforme ouvert de matériel roulant d'une épaisseur de 1520 mm. Le lecteur posera naturellement la question: "Excusez-moi, à quoi sert ce projet, s'il y a suffisamment de simulateurs ferroviaires, à la fois commerciaux et ouverts?" Pour la réponse à cette question, je propose de regarder sous le chat
Historique du projet
Il était une fois, en 2001,
Microsoft Train Simulator (MSTS) a vu le jour, engendrant une énorme communauté de cheminées ferroviaires dans notre pays. Pendant plusieurs années que ce projet a duré (jusqu'à ce que Microsoft l'abandonne, en faisant des choses plus intéressantes pour lui, comme la faillite de Nokia, etc.), le projet est devenu une masse d'ajouts créés pour lui: itinéraires, matériel roulant, scénarios.
Sur la base de MSTS, par la suite, un certain nombre d'autres projets ont été créés, tels que
OpenRails ,
RTrainSim (RTS) et d'autres modules complémentaires et dérivés. Des projets commerciaux sont également apparus, 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 pas du tout les spécificités du matériel roulant national, exploité et développé dans l'espace post-soviétique. Cela est particulièrement aigu lorsque l'on examine la façon dont les freins des trains sont mis en œuvre - dans aucun des projets énumérés, il n'y a et ne sera pas une mise en œuvre normale des freins automatiques du système Matrosov.
Déjà proche en 2008, un autre projet est apparu -
ZDSimulator , développé par Vyacheslav Usov. Le projet est remarquable en ce qu'il prend en compte et corrige les lacunes susmentionnées, tout en se concentrant initialement sur le matériel roulant de la jauge russe. Mais il y a un grand «mais» - le projet est propriétaire et fermé, architecturalement 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 chez
VELNII OJSC en tant que chercheur, et après avoir soutenu ma thèse en 2008, je suis devenu chercheur principal. J'ai ensuite pris connaissance des dernières réalisations de l'époque dans le domaine des jeux de simulation ferroviaire. Et ce que j'ai vu, je n'ai pas aimé, et le projet ZDSimulator à ce moment-là n'était pas là. Plus tard, fasciné par la dynamique du matériel roulant, je suis venu à l'Université des transports de l'État de Rostov (
RGUPS ) avec le sujet d'une thèse de doctorat sur la dynamique de freinage d'un train de marchandises. À ce jour, je dirige le développement de simulateurs de train pour le transport ferroviaire pour notre université et enseigne les disciplines de profil au Département du matériel roulant de traction.
En lien avec tout ce qui précède, l'idée est venue de créer un simulateur qui permettrait au développeur de l'add-on d'avoir un contrôle total sur les processus physiques se déroulant dans le matériel roulant. Similaire au simulateur spatial Orbiter, pour lequel j'ai développé un ajout sous la forme d'une famille de fusées porteuses P-7. Il y a un an, j'ai repris ce travail et j'y suis allé avec ma tête. Le 26 décembre 2018,
cette démo technologique est sortie .
Mon travail a été remarqué par des passionnés, et le célèbre dans les cercles de mijoteurs ferroviaires, le créateur de contenu visuel pour ZDsimulator
Roman Biryukov (Romich RZDUZ) m'a offert aide et coopération dans la poursuite du développement du projet. Plus tard, un autre développeur nous a rejoint -
Alexander Mishchenko (Ulovskii2017 ), le créateur de l'itinéraire pour ZDsimulator. Notre collaboration nous a conduits à la première version. Sur la vidéo - un aperçu de l'apparence du jeu à sa première version
Caractéristiques du simulateur RRS
Tout d'abord, c'est 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. Le seuil d'entrée est assez élevé - vous avez besoin de compétences de base en développement C ++. Le simulateur est écrit spécifiquement dessus, en utilisant le compilateur GCC et sa version de MinGW pour le système d'exploitation Windows. De plus, il est souhaitable d'initier le développeur au framework Qt, car de nombreux concepts de celui-ci sont au cœur de l'architecture du jeu.
Cependant, avec la diligence raisonnable et le désir, ce projet ouvre de grandes 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. L'élément structurel principal du simulateur
est une unité de matériel roulant ou une unité mobile (PE) - une voiture (non automotrice ou faisant partie d'une voiture à moteur) ou une section de locomotive. L'API permet de régler le couple appliqué aux paires de roues du PE, en réponse à la réception de la vitesse angulaire des paires de roues, ainsi que des paramètres externes, tels que la tension et le type de courant dans le réseau de contact. Le simulateur ne sait rien de plus et ne veut pas savoir, ce qui laisse la physique du fonctionnement des équipements internes sur la conscience du développeur d'une locomotive ou d'une voiture particulière.
Il est facile de deviner qu'une telle approche de niveau relativement bas permet de réaliser les moindres nuances du circuit de locomotive. De plus, le kit de simulation comprend un ensemble d'équipements standard installés sur le matériel roulant domestique: grue de train du conducteur conv. N ° 395, conv. N ° 242, valve de frein auxiliaire 254 et autres éléments de l'équipement de freinage. Le développeur additionnel n'a besoin que de connecter ces éléments au circuit pneumatique d'une locomotive ou d'une voiture spécifique. De plus, il existe une API pour créer vos propres blocs d'équipement.
Sur le plan architectural, RRS est construit sur l'interaction de deux processus principaux
- Le simulateur est le moteur physique de la dynamique des trains de TrainEngine 2. Il 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 en mouvement via les coupleurs, il traite les données provenant de modules externes qui mettent en œuvre la physique des équipements du matériel roulant.
- viewer - un sous-système graphique qui implémente la visualisation du mouvement d'un train, construit sur la base du moteur graphique OpenSceneGraph
Ces sous-systèmes interagissent entre eux 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 des sockets, et à l'avenir, il est prévu de revenir à cette technologie, étant donné l'achèvement de certaines parties du simulateur et les besoins en vue de l'avenir. Le passage à la mémoire partagée a été, dans une certaine mesure, une mesure forcée devenue obsolète.
Je ne décrirai pas les nuances - bon nombre des hauts et des bas du développement de ce projet sont déjà décrits dans mes publications sur la ressource, en particulier, j'ai une
série assez étendue
de tutoriels sur le moteur OpenSceneGraph , qui est né de la pratique de travailler sur ce projet.
Dans le projet, tout n'est pas aussi fluide que nous le souhaiterions. En particulier, le sous-système graphique est très loin d'être parfait en termes de qualité de rendu, et les performances de la simulation laissent beaucoup à désirer. Cette version a un objectif: familiariser la communauté des passionnés de transport ferroviaire avec le projet, décrire ses capacités et enfin créer un simulateur ferroviaire ouvert et multiplateforme avec une API avancée pour le développeur du module complémentaire.
Perspectives
Les perspectives sont à vous, nos chers futurs utilisateurs et développeurs. Le projet est ouvert, il y a un
site officiel où vous pouvez télécharger le simulateur, avec une
documentation dont la composition sera mise à jour en permanence. Il existe un
forum de projet,
un groupe VK et
une chaîne YouTube où vous pouvez obtenir les conseils et l'assistance les plus détaillés.
Merci de votre attention!