Russian Railway Simulator (RRS): prima versione pubblica

È arrivato il giorno che stavo aspettando in cui potrò finalmente presentare questo sviluppo. Il progetto è iniziato esattamente un anno fa, almeno il 1 settembre 2018 Repository RRS su Gtihub il primo commit ha esattamente questa data.

Treno passeggeri alla stazione centrale di Rostov (cliccabile)

Russian Railway Simulator (RRS): prima versione pubblica

Cos'è la RRS? Si tratta di un simulatore multipiattaforma aperto di materiale rotabile con scartamento 1520 mm. Il lettore si porrà naturalmente la domanda: “Scusate, a cosa serve questo progetto, se esiste un numero sufficiente di simulatori ferroviari, sia commerciali che aperti?” Per la risposta a questa domanda, suggerisco di guardare sotto il gatto

La storia del progetto

C'era una volta, nel 2001, veniva pubblicato Microsoft Train Simulator (MSTS), che ha dato origine a un'enorme comunità di ferrovieri nel nostro Paese. Nel corso degli anni in cui questo progetto è esistito (fino a quando Microsoft lo ha abbandonato, passando a cose più interessanti per esso, come il fallimento di Nokia, ecc.), il progetto ha acquisito una massa di aggiunte create per esso: percorsi, materiale rotabile, scenari.

Sulla base di MSTS sono stati successivamente creati numerosi altri progetti, come ad esempio OpenRails, RTrainSim (RTS) e altre aggiunte e derivati. Apparvero anche progetti commerciali, come il famoso trainz. E tutto andrebbe bene, ma molti appassionati del trasporto ferroviario non sono soddisfatti di questi prodotti per ragioni abbastanza oggettive: non riflettono in alcun modo le specificità del materiale rotabile domestico gestito e sviluppato nello spazio post-sovietico. Ciò è particolarmente acuto se si considera come vengono implementati i freni dei treni: nessuno dei progetti elencati ha o avrà una normale implementazione dei freni automatici del sistema Matrosov.

Nell'anno non così lontano del 2008, è apparso un altro progetto: ZDSimulator, sviluppato da Vyacheslav Usov. Il progetto è notevole in quanto tiene conto e corregge le carenze sopra menzionate, concentrandosi inizialmente sul materiale rotabile a scartamento russo. Ma c'è un grande "ma": il progetto è proprietario e chiuso, dal punto di vista architettonico non consente l'introduzione del proprio materiale rotabile.

Io stesso sono arrivato al tema ferroviario nel 2007, quando ho iniziato a lavorare in JSC VELNII, come ricercatore, e dopo aver discusso la sua tesi di dottorato nel 2008, come ricercatore senior. Fu allora che conobbi le ultime scoperte nel campo dei giochi di simulazione ferroviaria dell'epoca. E quello che ho visto non mi è piaciuto e il progetto ZDSimulator non esisteva in quel momento. Successivamente, affascinato dalla dinamica del materiale rotabile, sono arrivato all'Università statale dei trasporti di Rostov (RGUP) con l'argomento di una tesi di dottorato sulla dinamica di frenatura di un treno merci. Oggi guido lo sviluppo di complessi di formazione sul trasporto ferroviario per la nostra università e insegno discipline specializzate presso il Dipartimento di materiale rotabile di trazione.

In relazione a tutto quanto sopra, è nata l'idea di creare un simulatore che consentisse allo sviluppatore di un componente aggiuntivo di ottenere il pieno controllo sui processi fisici che si verificano nel materiale rotabile. Simile al simulatore spaziale Orbiter, per il quale una volta ho sviluppato un'aggiunta sotto forma di una famiglia di veicoli di lancio basati sull'R-7. Un anno fa ho iniziato questo lavoro e mi sono buttato dentro. Il 26 dicembre 2018 ha visto la luce qui questa demo tecnologica.

Il mio lavoro è stato notato dagli appassionati e ben noto nei circoli dei simulatori ferroviari, il creatore di contenuti visivi per ZDsimulator Roman Biryukov (Ferrovie Russe Romych) mi ha offerto aiuto e collaborazione per l'ulteriore sviluppo del progetto. Successivamente un altro sviluppatore si è unito a noi: Alexander Mishchenko (Ulovskii2017), creatore di percorsi per ZDsimulator. La nostra collaborazione ci ha portato alla nostra prima uscita. Il video mostra una panoramica di come appare il gioco alla sua prima uscita

Caratteristiche del simulatore RRS

Innanzitutto si tratta di un’architettura software aperta. Per non parlare del fatto che il codice del simulatore è aperto, sono presenti API e SDK destinati agli sviluppatori di componenti aggiuntivi di terze parti. La barriera all'ingresso è piuttosto elevata: sono richieste competenze di base di sviluppo C++. Il simulatore è scritto al suo interno, 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é molti dei suoi concetti sono alla base dell'architettura del gioco.

Tuttavia, con la dovuta diligenza e desiderio, questo progetto apre enormi opportunità per lo sviluppatore di componenti aggiuntivi. Il materiale rotabile è implementato sotto forma di moduli basati su librerie dinamiche. L'elemento strutturale principale nel simulatore è un'unità di materiale rotabile, o unità mobile (MU) - un'auto (non semovente o come parte di un treno a più unità) o una sezione di una locomotiva. L'API consente di impostare la coppia applicata alle sale montate PE, ricevendo in risposta la velocità angolare delle sale montate, nonché parametri esterni, come tensione e tipo di corrente nella rete di contatto. Il simulatore non sa e non vuole sapere nient'altro, il che lascia la fisica dell'equipaggiamento interno alla coscienza dello sviluppatore di una particolare locomotiva o automobile.

Non è difficile intuire che un approccio così relativamente basso consenta di implementare le più piccole sfumature del circuito della locomotiva. Inoltre, il kit simulatore comprende una serie di equipaggiamenti standard installati sul materiale rotabile nazionale: gru macchinista conv. N. 395, condizioni del distributore d'aria. N. 242, condizione della valvola del freno ausiliario. N. 254 e altri elementi dell'attrezzatura frenante. Lo sviluppatore dell'add-on deve solo collegare questi elementi al circuito pneumatico di una locomotiva o di un'auto specifica. Inoltre, esiste un'API per creare le proprie unità hardware.

Dal punto di vista architettonico, RRS si basa sull'interazione di due processi principali

  • simulatore — motore fisico della dinamica del treno TrainEngine 2. Implementa la fisica del movimento del treno, tenendo conto di molti fattori esterni, tenendo conto dell'interazione delle unità mobili attraverso dispositivi di accoppiamento, elabora i dati provenienti da moduli esterni che implementano la fisica del funzionamento delle apparecchiature del materiale rotabile
  • spettatore — un sottosistema grafico che visualizza il movimento del treno, costruito sulla base di un motore grafico ApriSceneGraph

Questi sottosistemi interagiscono tra loro attraverso la memoria condivisa, implementata sulla base della classe QSharedMemory del framework Qt. Le prime demo utilizzavano IPC basato su socket e si prevede di ritornare a questa tecnologia in futuro, tenendo conto del perfezionamento di alcune parti del simulatore e delle esigenze con uno sguardo al futuro. Il passaggio alla memoria condivisa è stato in una certa misura una misura forzata che ha esaurito la sua utilità.

Non descriverò le sfumature: molte delle vicissitudini dello sviluppo di questo progetto sono già delineate nelle mie pubblicazioni sulla risorsa, in particolare ho una conoscenza abbastanza ampia una serie di tutorial sul motore OpenSceneGraph, che è nato dalla pratica di lavorare su questo progetto.

Non tutto nel progetto va liscio come vorremmo. In particolare, il sottosistema grafico è ben lungi dall'essere perfetto in termini di qualità del rendering, e le prestazioni della simulazione lasciano molto a desiderare. Questa versione ha un obiettivo: presentare il progetto alla comunità di appassionati del trasporto ferroviario, delinearne le capacità e infine creare un simulatore ferroviario aperto e multipiattaforma con un'API avanzata per sviluppatori aggiuntivi.

prospettive

Le prospettive dipendono da voi, nostri cari futuri utenti e sviluppatori. Il progetto è aperto ed esiste sito ufficialeda dove puoi scaricare il simulatore documentazione, la cui composizione verrà continuamente reintegrata. Esiste foro del progetto, Gruppo VKE Canale Youtube, dove potrai ottenere la consulenza e l'assistenza più dettagliate.

Grazie!

Fonte: habr.com

Aggiungi un commento