Ruský železničný simulátor (RRS): prvé verejné vydanie

Nastal deň, na ktorý som čakal, kedy môžem konečne predstaviť tento vývoj. Projekt bol spustený presne pred rokom, minimálne 1. septembra 2018 Repozitáre RRS na Gtihub prvý commit má presne tento dátum.

Osobný vlak na hlavnej stanici v Rostove (kliknite naň)

Ruský železničný simulátor (RRS): prvé verejné vydanie

Čo je RRS? Toto je otvorený multiplatformový simulátor koľajových vozidiel s rozchodom 1520 mm. Čitateľ si prirodzene položí otázku: „Prepáčte, na čo je tento projekt, ak existuje dostatočný počet železničných simulátorov, komerčných aj otvorených?“ Pre odpoveď na túto otázku navrhujem pozrieť sa pod mačku

História projektu

Kedysi, v roku 2001, vyšla Microsoft Train Simulator (MSTS), čo dalo vzniknúť obrovskej komunite železničných simerov u nás. Počas niekoľkých rokov existencie tohto projektu (kým ho Microsoft neopustil a neprešiel na pre neho zaujímavejšie veci, ako napríklad bankrot Nokie atď.), projekt získal množstvo doplnkov, ktoré boli preň vytvorené: trasy, koľajové vozidlá, scenárov.

Na základe MSTS následne vzniklo množstvo ďalších projektov ako napr OpenRails, RTrainSim (RTS) a iné doplnky a deriváty. Objavili sa aj komerčné projekty, ako napr trainz. A všetko by bolo v poriadku, ale mnohí priaznivci železničnej dopravy nie sú s týmito produktmi spokojní z celkom objektívnych dôvodov - v žiadnom prípade neodrážajú špecifiká domácich koľajových vozidiel prevádzkovaných a vyvíjaných v postsovietskom priestore. Toto je obzvlášť akútne pri pohľade na spôsob implementácie bŕzd vlakov - žiadny z uvedených projektov nemá alebo nebude mať normálnu implementáciu automatických bŕzd systému Matrosov.

V nie tak vzdialenom roku 2008 sa objavil ďalší projekt - ZDSimulator, vyvinutý Vyacheslavom Usovom. Projekt je pozoruhodný tým, že zohľadňuje a koriguje vyššie uvedené nedostatky, pričom sa spočiatku zameriava na koľajové vozidlá s ruským rozchodom. Je tu však jedno veľké „ale“ – projekt je proprietárny a uzavretý, architektonicky neumožňuje zavedenie vlastného vozového parku.

Ja sám som sa k téme železnice dostal v roku 2007, keď som začal pracovať v r as VELNII, ako vedecký pracovník a po obhajobe doktorandskej práce v roku 2008 ako vedúci vedecký pracovník. Vtedy som sa zoznámil s najnovšími výdobytkami v oblasti železničných simulačných hier tej doby. A to, čo som videl, sa mi nepáčilo a projekt ZDSimulator v tom čase neexistoval. Neskôr, fascinovaný dynamikou koľajových vozidiel, som prišiel na Rostovskú štátnu univerzitu dopravy (RGUPS) s témou doktorandskej dizertačnej práce o dynamike brzdenia nákladného vlaku. Dnes vediem vývoj školiacich komplexov železničnej dopravy pre našu univerzitu a vyučujem odborné disciplíny na Katedre trakčných koľajových vozidiel.

V súvislosti so všetkým vyššie uvedeným vznikla myšlienka vytvoriť simulátor, ktorý by vývojárovi jeho nadstavby umožnil získať plnú kontrolu nad fyzikálnymi procesmi vyskytujúcimi sa v koľajových vozidlách. Podobne ako pri vesmírnom simulátore Orbiter, ku ktorému som kedysi vyvinul prírastok v podobe rodiny nosných rakiet na báze R-7. Pred rokom som sa chopil tejto práce a vrhol som sa na ňu. 26. december 2018 tu uzrel svetlo toto technologické demo.

Moju prácu si všimli nadšenci a v kruhoch železničných nadšencov známy tvorca vizuálneho obsahu pre ZDsimulator Roman Biryukov (Romych Russian Railways) mi ponúkol pomoc a spoluprácu pri ďalšom rozvoji projektu. Neskôr sa k nám pridal ďalší vývojár - Alexander Mishchenko (Ulovskii2017), tvorca trasy pre ZDsimulator. Naša spolupráca nás priviedla k nášmu prvému vydaniu. Video ukazuje prehľad toho, ako hra vyzerá pri svojom prvom vydaní

Vlastnosti simulátora rekonfigurovateľného rádiového systému

V prvom rade je to otvorená softvérová architektúra. Nehovoriac o tom, že kód simulátora je otvorený, existuje k nemu API a SDK zamerané na vývojárov doplnkov tretích strán. Vstupná bariéra je pomerne vysoká – vyžadujú sa základné vývojové zručnosti v C++. Simulátor je napísaný v ňom pomocou kompilátora GCC a jeho variantu MinGW pre operačný systém Windows. Okrem toho je vhodné, aby vývojár poznal rámec Qt, pretože mnohé z jeho konceptov sú základom architektúry hry.

S náležitou starostlivosťou a túžbou však tento projekt otvára obrovské príležitosti pre vývojára doplnkov. Koľajové vozidlá sú implementované vo forme modulov založených na dynamických knižniciach. Hlavný konštrukčný prvok v simulátore je jednotka koľajových vozidiel, alebo pojazdná jednotka (MU) - automobil (bez vlastného pohonu alebo ako súčasť súpravu vlaku) alebo časť lokomotívy. API umožňuje nastaviť krútiaci moment aplikovaný na PE dvojkolesia v reakcii na uhlovú rýchlosť dvojkolesia, ako aj externé parametre, ako je napätie a typ prúdu v kontaktnej sieti. Simulátor nič iné nevie a nechce vedieť, čím fyziku vnútorného vybavenia ponecháva na svedomí vývojára konkrétnej lokomotívy či auta.

Nie je ťažké uhádnuť, že takýto relatívne nízkoúrovňový prístup umožňuje implementovať najmenšie nuansy lokomotívneho okruhu. Okrem toho súprava simulátora obsahuje sadu štandardného vybavenia inštalovaného na domácich železničných koľajových vozidlách: žeriav pre vodiča konv. č.395, stav rozdeľovača vzduchu. č.242, stav ventilu pomocnej brzdy. č.254 a ďalšie prvky brzdovej výbavy. Vývojárovi doplnku stačí tieto prvky zapojiť do pneumatického obvodu konkrétnej lokomotívy alebo auta. Okrem toho existuje API na vytváranie vlastných hardvérových jednotiek.

Architektonicky je RRS postavené na interakcii dvoch hlavných procesov

  • Simulátor — motor fyzickej dynamiky vlaku TrainEngine 2. Implementuje fyziku pohybu vlaku, pričom zohľadňuje mnohé vonkajšie faktory, berie do úvahy interakciu pohybujúcich sa jednotiek prostredníctvom spojovacích zariadení, spracováva údaje prichádzajúce z externých modulov, ktoré implementujú fyziku prevádzky zariadení koľajových vozidiel.
  • divák — grafický subsystém, ktorý zobrazuje pohyb vlaku, vytvorený na základe grafického motora OpenSceneGraph

Tieto subsystémy navzájom interagujú prostredníctvom zdieľanej pamäte implementovanej na základe triedy QSharedMemory rámca Qt. Prvé ukážky používali IPC založené na zásuvkách a v budúcnosti sa plánuje návrat k tejto technológii, berúc do úvahy zdokonalenie niektorých častí simulátora a potreby s ohľadom na budúcnosť. Prechod na zdieľanú pamäť bol do istej miery vynúteným opatrením, ktoré prežilo svoju užitočnosť.

Nebudem popisovať nuansy - mnohé z peripetií vývoja tohto projektu sú už načrtnuté v mojich publikáciách o zdroji, najmä mám pomerne rozsiahly sériu návodov na engine OpenSceneGraph, ktorá vyrástla z praxe práce na tomto projekte.

Nie všetko v projekte ide tak hladko, ako by sme chceli. Najmä grafický subsystém má ďaleko od dokonalosti, pokiaľ ide o kvalitu vykresľovania, a výkon sim je veľmi želaný. Toto vydanie má jediný cieľ – predstaviť komunite nadšencov železničnej dopravy projekt, načrtnúť jeho možnosti a nakoniec vytvoriť otvorený multiplatformový železničný simulátor s pokročilým API pre vývojárov doplnkov.

Vyhliadky

Vyhliadky závisia od vás, našich milých budúcich používateľov a vývojárov. Projekt je otvorený a existuje Oficiálne stránkyodkiaľ si môžete stiahnuť simulátor dokumentáciu, ktorých zloženie bude priebežne dopĺňané. Existuje форум projekt, skupina VKA kanál YouTube, kde môžete získať najpodrobnejšie rady a pomoc.

Ďakujem vám za pozornosť!

Zdroj: hab.com

Pridať komentár