Russian Railway Simulator (RRS): primo rilascio pubblico

È arrivato quel giorno tanto atteso da me, quando finalmente posso presentare questo sviluppo. Il progetto è stato avviato esattamente un anno fa, il 1° settembre 2018, almeno nel repository RRS su GitHub il primo commit ha proprio questa data.

Treno passeggeri alla stazione di Rostov-Don (cliccabile)

Russian Railway Simulator (RRS): primo rilascio pubblico

Che cos'è RRS? È un simulatore open source multipiattaforma per materiale rotabile con scartamento di 1520 mm. Il lettore si chiederà legittimamente: «Aspetta, a cosa serve questo progetto, se ci sono già molti simulatori ferroviari, sia commerciali che open source?» Per la risposta a questa domanda, ti invito a guardare sotto il tag

Storia del progetto

Tanto tempo fa, nel 2001, è nato Microsoft Train Simulator (MSTS), che ha dato vita a una enorme comunità di ferroviari simulatori nel nostro paese. Nei pochi anni di vita di questo progetto (fino a quando Microsoft lo ha abbandonato, occupandosi di cose a lei più interessanti, come il fallimento della Nokia, ecc.) il progetto ha accumulato una massa di espansioni: percorsi, materiale rotabile, scenari.

Sulla base di MSTS, in seguito, sono stati creati altri progetti, come OpenRails, RTrainSim (RTS) e altri supplementi e derivati. Sono anche apparsi progetti commerciali, come il rinomato Trainz. E tutto ciò sarebbe bello, ma molti appassionati di trasporti ferroviari non sono soddisfatti di questi prodotti per ragioni ben fondate: non riflettono affatto le specificità del materiale rotabile nazionale, utilizzato e sviluppato nello spazio post-sovietico. Questo si manifesta in modo particolarmente acuto quando si guarda a come sono realizzati i freni del treno: nessuno dei progetti elencati ha e avrà una realizzazione normale dei freni automatici del sistema Matrosov.

Nel lontano 2008 è apparso un altro progetto — ZDSimulator, sviluppato da Vyacheslav Usov. Il progetto è notevole perché tiene conto e risolve i suddetti difetti, ed è inizialmente orientato al materiale rotabile a scartamento russo. Ma c'è un grande «ma»: il progetto è proprietario e chiuso, architetturalmente non permette l'integrazione di materiale rotabile personalizzato.

Io stesso mi sono avvicinato al tema ferroviario nel 2007, quando ho iniziato a lavorare in OJSC VELNII, in qualità di ricercatore, e dopo aver difeso la mia tesi di dottorato nel 2008 — come ricercatore senior. È stato allora che ho scoperto gli ultimi sviluppi nel campo dei giochi simulativi ferroviari. E quello che ho visto, non mi è piaciuto, mentre il progetto ZDSimulator non esisteva ancora. In seguito, appassionato dalla dinamica del materiale rotabile, sono entrato all'Università Statale di Rostov per le Ferrovie (РГУПС) con un tema di dottorato sulla dinamica della frenata di un treno merci. Oggi dirigo lo sviluppo di simulatori per il trasporto ferroviario per la nostra università e insegno corsi specializzati nel dipartimento «Materiale rotabile di trazione».

In relazione a tutto quanto sopra, è nata l'idea di creare un simulatore che consentisse allo sviluppatore di un complemento di ottenere il pieno controllo sui processi fisici in corso nel materiale rotabile. Simile al simulatore spaziale Orbiter, per il quale ho sviluppato un tempo un complemento sotto forma di una famiglia di razzi vettori basati sul R-7. Un anno fa mi sono messo al lavoro e mi sono immerso completamente in questo progetto. Il 26 dicembre 2018 è stata pubblicata questa demo tecnologica.

Il mio lavoro è stato notato da appassionati, e un noto nome nei circoli dei simulatori ferroviari, creatore di contenuti visivi per ZDsimulator Roman Biryukov (Romych RZHDUZ) mi ha offerto aiuto e collaborazione per lo sviluppo futuro del progetto. Più tardi si è unito a noi un altro sviluppatore — Alexander Mishchenko (Ulovskii2017), creatore di percorsi per ZDsimulator. Il nostro lavoro insieme ci ha portato al primo rilascio. Nel video — una panoramica di come il gioco appare al suo primo rilascio

Guarda il video

Caratteristiche del simulatore RRS

Prima di tutto, questa è un'architettura software aperta. Senza contare che il codice del simulatore è aperto, c'è un API e un SDK orientati agli sviluppatori di complementi di terze parti. La barriera d'ingresso è piuttosto alta — sono necessarie competenze di base nello sviluppo in C++. Il simulatore è scritto proprio in questo linguaggio, utilizzando il compilatore GCC e la sua variante MinGW per il sistema operativo Windows. Inoltre, è consigliabile che lo sviluppatore abbia familiarità con il framework Qt, poiché molte delle sue concezioni sono alla base dell'architettura del gioco.

Tuttavia, con la dovuta diligenza e volontà, questo progetto offre agli sviluppatori di moduli enormi possibilità. Il materiale rotabile è realizzato in forma di moduli basati su librerie dinamiche. L'elemento strutturale principale nel simulatore è l'unità di materiale rotabile, o unità mobile (UM) – carro (non motorizzato o in composizione con un treno automotrice) o sezione di locomotiva. L'API consente di impostare il momento torcentale applicato agli assi dell'UM, ricevendo in risposta la velocità angolare degli assi, oltre a parametri esterni, come la tensione e il tipo di corrente nella rete a contatto. Il simulatore non conosce altro e non vuole conoscere, lasciando la fisica del funzionamento delle apparecchiature interne alla responsabilità dello sviluppatore della specifica locomotiva o carro.

Non è difficile immaginare che un approccio relativamente a basso livello consenta di realizzare i più piccoli dettagli del schema della locomotiva. Inoltre, il pacchetto del simulatore include un set di attrezzature standard, installate sui materiali rotabili nazionali: la gru del macchinista n. 395, il distributore d'aria n. 242, la valvola del freno ausiliario n. 254 e altri elementi dell'attrezzatura frenante. Per lo sviluppatore del modulo è sufficiente connettere questi elementi in uno schema pneumatico di una specifica locomotiva o carro. Inoltre, è disponibile un'API per creare blocchi di attrezzature personalizzati.

Architettonicamente, l'RRS è costruito sull'interazione di due processi principali

  • simulator — motore fisico della dinamica del treno TrainEngine 2. Realizza la fisica del movimento del treno tenendo conto di numerosi fattori esterni, gestendo interazioni tra unità mobili tramite dispositivi di accoppiamento e elaborando dati provenienti da moduli esterni, che realizzano la fisica del funzionamento delle apparecchiature del materiale rotabile
  • viewer — sottosistema grafico che esegue la visualizzazione del movimento del treno, costruito sul motore grafico OpenSceneGraph

Questi sottosistemi interagiscono tra loro attraverso una memoria condivisa, realizzata sulla base della classe QSharedMemory del framework Qt. Le prime versioni demo utilizzavano IPC basato su socket, e in seguito è previsto un ritorno a questa tecnologia, considerando il perfezionamento di alcune parti del simulatore e le esigenze in vista del futuro. La transizione alla memoria condivisa è stata in qualche modo una misura necessaria, che ha esaurito la sua utilità.

Non entrerò nei dettagli — molte delle peripezie nello sviluppo di questo progetto sono già state esposte nelle mie pubblicazioni sul sito, in particolare ho un ciclo di tutorial piuttosto ampio sul motore OpenSceneGraph, nato proprio dalla pratica lavorativa su questo progetto.

Nel progetto non tutto è così fluido come si vorrebbe. In particolare, il sottosistema grafico è piuttosto lontano dalla perfezione in termini di qualità di rendering, e anche le prestazioni del simulatore lasciano a desiderare. Questo rilascio ha un unico scopo: introdurre la comunità di appassionati di trasporto ferroviario al progetto, delineare le sue possibilità e infine creare un simulatore ferroviario aperto e multipiattaforma con un API avanzata per gli sviluppatori di add-on.

Prospettive

Le prospettive dipendono da voi, nostri cari futuri utilizzatori e sviluppatori. Il progetto è aperto, esiste sito ufficiale, dove è possibile scaricare il simulatore, con documentazione, un elenco che sarà continuamente aggiornato. Esiste forum del progetto, un gruppo VK, e un canale YouTube, dove è possibile ricevere consulenze e aiuto dettagliati.

Grazie per l'attenzione!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster