Russian Railway Simulator (RRS): primer llançament públic

Ha arribat el dia que esperava en què per fi puc presentar aquest desenvolupament. El projecte es va iniciar fa exactament un any, almenys l'1 de setembre de 2018 Repositoris RRS a Gtihub el primer commit té exactament aquesta data.

Tren de passatgers a l'estació principal de Rostov (s'hi pot fer clic)

Russian Railway Simulator (RRS): primer llançament públic

Què és RRS? Es tracta d'un simulador obert multiplataforma de material mòbil d'ample de 1520 mm. El lector es plantejarà, naturalment, la pregunta: "Perdoneu, per a què serveix aquest projecte, si hi ha un nombre suficient de simuladors ferroviaris, tant comercials com oberts?" Per a la resposta a aquesta pregunta, suggereixo mirar sota el gat

Historial del projecte

Hi havia una vegada, l'any 2001, es va publicar Microsoft Train Simulator (MSTS), que va donar lloc a una enorme comunitat de ferrocarrils a foc lent al nostre país. Al llarg dels anys que va existir aquest projecte (fins que Microsoft el va abandonar i va passar a coses més interessants per a ell, com la fallida de Nokia, etc.), el projecte va adquirir una gran quantitat d'addicions creades per a ell: rutes, material mòbil, escenaris.

A partir de MSTS, es van crear posteriorment una sèrie d'altres projectes, com ara OpenRails, RTrainSim (RTS) i altres addicions i derivats. També van aparèixer projectes comercials, com el famós Trenz. I tot aniria bé, però molts aficionats al transport ferroviari no estan satisfets amb aquests productes per raons bastant objectives: de cap manera reflecteixen les especificitats del material mòbil domèstic operat i desenvolupat a l'espai postsoviètic. Això és especialment greu quan es mira com s'implementen els frens dels trens: cap dels projectes enumerats té ni tindrà una implementació normal de frens automàtics del sistema Matrosov.

L'any no tan llunyà del 2008, va aparèixer un altre projecte: ZDSimulator, desenvolupat per Vyacheslav Usov. El projecte és destacable perquè té en compte i corregeix les mancances esmentades anteriorment, alhora que es centra inicialment en el material mòbil d'ample rus. Però hi ha un gran "però": el projecte és propietari i tancat, arquitectònicament no permet la introducció del seu propi material mòbil.

Jo mateix vaig arribar al tema del ferrocarril l'any 2007, quan vaig començar a treballar-hi JSC VELNII, com a investigador, i després de defensar la seva tesi doctoral l'any 2008, com a investigador sènior. Va ser llavors quan em vaig familiaritzar amb els darrers assoliments en el camp dels jocs de simulació de ferrocarrils en aquell moment. I no em va agradar el que vaig veure, i el projecte ZDSimulator no existia en aquell moment. Més tard, fascinat per la dinàmica del material mòbil, vaig arribar a la Universitat Estatal de Transport de Rostov (RGUPS) amb el tema d'una tesi doctoral sobre la dinàmica de frenada d'un tren de mercaderies. Avui lidero el desenvolupament de complexos formatius de transport ferroviari per a la nostra universitat i imparteixo disciplines especialitzades al Departament de Tracció Material Rodant.

En relació amb tot l'anterior, va sorgir la idea de crear un simulador que permetés al desenvolupador d'un complement per aconseguir el control total dels processos físics que es produeixen al material mòbil. Similar al simulador espacial Orbiter, per al qual una vegada vaig desenvolupar una addició en forma d'una família de vehicles de llançament basats en l'R-7. Fa un any vaig agafar aquesta feina i m'hi vaig llançar. El 26 de desembre de 2018 va veure la llum aquí aquesta demostració de tecnologia.

El meu treball va ser notat pels entusiastes, i conegut en els cercles dels ferrocarrils a foc lent, el creador de contingut visual per a ZDsimulator Roman Biryukov (Romych Russian Railways) em va oferir ajuda i col·laboració en el desenvolupament posterior del projecte. Més tard, un altre desenvolupador es va unir a nosaltres - Alexander Mishchenko (Ulovskii2017), creador de rutes per a ZDsimulator. La nostra col·laboració ens va portar al nostre primer llançament. El vídeo mostra una visió general de com es veu el joc per al seu primer llançament

Característiques del simulador RRS

En primer lloc, és una arquitectura de programari obert. Per no parlar del fet que el codi del simulador està obert, hi ha una API i un SDK dirigits als desenvolupadors de complements de tercers. La barrera d'entrada és bastant alta: es requereixen habilitats bàsiques de desenvolupament de C++. El simulador està escrit en ell, utilitzant el compilador GCC i la seva variant MinGW per al sistema operatiu Windows. A més, és recomanable que el desenvolupador estigui familiaritzat amb el framework Qt, ja que molts dels seus conceptes són la base de l'arquitectura del joc.

Tanmateix, amb la deguda diligència i el desig, aquest projecte obre enormes oportunitats per al desenvolupador de complements. El material mòbil s'implementa en forma de mòduls basats en biblioteques dinàmiques. El principal element estructural del simulador és una unitat de material mòbil, o unitat mòbil (MU): un cotxe (no autopropulsat o com a part d'un tren d'unitats múltiples) o una secció d'una locomotora. L'API permet establir el parell aplicat als jocs de rodes PE, com a resposta rebent la velocitat angular dels jocs de rodes, així com paràmetres externs, com la tensió i el tipus de corrent a la xarxa de contacte. El simulador no sap res més i no vol saber-ho, la qual cosa deixa la física de l'equip intern a la consciència del desenvolupador d'una locomotora o cotxe en particular.

No és difícil endevinar que un enfocament de nivell relativament baix permet implementar els matisos més petits del circuit de locomotores. A més, el kit del simulador inclou un conjunt d'equips estàndard instal·lats en material mòbil domèstic: conv. Núm. 395, estat distribuïdor d'aire. Núm. 242, estat de la vàlvula de fre auxiliar. núm. 254 i altres elements de l'equip de fre. El desenvolupador del complement només necessita connectar aquests elements al circuit pneumàtic d'una locomotora o cotxe específic. A més, hi ha una API per crear les vostres pròpies unitats de maquinari.

Arquitectònicament, RRS es basa en la interacció de dos processos principals

  • simulador — motor de dinàmica del tren físic TrainEngine 2. Implementa la física del moviment del tren tenint en compte molts factors externs, tenint en compte la interacció d'unitats en moviment mitjançant dispositius d'acoblament, processa dades procedents de mòduls externs que implementen la física de funcionament dels equips de material rodant.
  • espectador — un subsistema gràfic que visualitza el moviment del tren, construït a partir d'un motor gràfic OpenSceneGraph

Aquests subsistemes interactuen entre ells mitjançant la memòria compartida, implementada a partir de la classe QSharedMemory del framework Qt. Les primeres demostracions utilitzaven IPC basat en socket, i hi ha plans per tornar a aquesta tecnologia en el futur, tenint en compte el perfeccionament d'algunes parts del simulador i les necessitats amb vista al futur. La transició a la memòria compartida va ser fins a cert punt una mesura forçada que ha sobreviscut la seva utilitat.

No descriuré els matisos: moltes de les vicissituds del desenvolupament d'aquest projecte ja es descriuen a les meves publicacions sobre el recurs, en particular, tinc un ampli una sèrie de tutorials sobre el motor OpenSceneGraph, que va sorgir de la pràctica de treballar en aquest projecte.

No tot en el projecte és tan fluid com voldríem. En particular, el subsistema gràfic està molt lluny de ser perfecte pel que fa a la qualitat de renderització, i el rendiment del sim deixa molt a desitjar. Aquest llançament té un objectiu: presentar el projecte a la comunitat d'entusiastes del transport ferroviari, descriure les seves capacitats i, finalment, crear un simulador de ferrocarril obert i multiplataforma amb una API avançada per a desenvolupadors de complements.

Perspectives

Les perspectives depenen de vosaltres, els nostres estimats futurs usuaris i desenvolupadors. El projecte és obert i existeix lloc web oficialdes d'on podeu descarregar el simulador documentació, la composició del qual es reomplirà contínuament. Existeix el fòrum projecte, Grup VKI Canal de YouTube, on podràs obtenir l'assessorament i l'assistència més detallats.

Gràcies!

Font: www.habr.com

Afegeix comentari