Přišel ten dlouho očekávaný den, kdy konečně mohu představit tento projekt. Práce na něm byla zahájena před rokem, 1. září 2018, alespoň v první commit má přesně toto datum.
Osobní vlak na stanici Rostov Hlavní (klikněte zde)
Co je RRS? Je to otevřený multiplatformní simulátor kolejových vozidel s rozchodem 1520 mm. Čtenář se právem ptá: „Proč je tenhle projekt potřeba, když existuje dostatek železničních simulátorů, ať už komerčních či otevřených?“ Odpověď na tuto otázku můžete nalézt pod tímto odstavcem.
Historie projektu
Kdysi dávno, v roce 2001, spatřil světlo světa , který v naší zemi vyvolal obrovské společenství železničních simulátorů. Během několika let, po které projekt existoval (než se Microsoft rozhodl ho opustit, zabývající se zajímavějšími záležitostmi, jako je bankrot Nokie a podobně) se k projektu připojilo mnoho doplňků: tras, vozidel a scénářů.
Na základě MSTS byl v pozdější době vytvořen řada dalších projektů, jako jsou , a další doplňky a deriváty. Objevily se také komerční projekty, jako je slavný . A všechno by bylo v pořádku, ale mnohé milovníky železniční dopravy tyto produkty nespokojily z čistě objektivních důvodů — nikterak neodrážejí specifika domácích vozidel, která jsou provozována a vyvíjena na post-sovětském prostoru. Zvláště to vyvstává v případě, jak jsou implementovány brzdy vlaku — v žádném z uvedených projektů není a nebude normální implementace automatických brzd systému Matrosova.
V roce 2008, který už není tak dávno, se objevil jiný projekt — , vyvinutý Vyacheslavem Usovem. Projekt se vyznačuje tím, že zmiňované nedostatky bere v úvahu a opravuje, přičemž je od začátku orientován na vozidla ruského rozchodu. Ale je tu jedno velké „ale“ — projekt je proprietární a uzavřený, architektonicky neumožňuje integraci vlastních vozidel.
Sám jsem se k železniční tematice dostal v roce 2007, když jsem začal pracovat v , na pozici vědeckého pracovníka, a po obhajobě kandidátské disertace v roce 2008 — jako vedoucí vědecký pracovník. Tehdy jsem se seznámil s nejnovějšími příspěvky v oblasti železničních simulátorových her. To, co jsem viděl, se mi ale nelíbilo, a projekt ZDSimulator v té době ještě neexistoval. Později, fascinován dynamikou kolejových vozidel, jsem přišel na Ruskou státní univerzitu železničních komunikací () s tématem doktorské disertace na téma dynamiky brzdění nákladního vlaku. Dnes vedu vývoj simulačních komplexů železniční dopravy pro naši univerzitu a vyučuji odborné předměty na katedře „Tažná vozidla“.
V návaznosti na výše uvedené se zrodila myšlenka vytvoření simulátoru, který by vývojářům dodatků k němu umožnil mít plnou kontrolu nad fyzikálními procesy probíhajícími v kolejových vozidlech. Podobně jako kosmický simulátor Orbiter, pro který jsem kdysi vyvinul doplněk ve formě rodiny nosných raket na základě R-7. Před rokem jsem se do této práce vrhl naplno a 26. prosince 2018 spatřila světlo světa tato .
Moje práce byla zaznamenána nadšenci a známý v kruzích železničních simulátorů, tvůrce vizuálního obsahu pro ZDsimulator, mi nabídl pomoc a spolupráci na dalším rozvoji projektu. Později se k nám připojil ještě jeden vývojář — ), tvůrce tras pro ZDsimulator. Naše spolupráce nás dovedla k prvnímu vydání. Na videu je některý přehled toho, jak hra vypadá k prvnímu vydání

Vlastnosti simulátoru RRS
Především jde o otevřenou softwarovou architekturu. Nehledě na to, že kód simulátoru je otevřený, existuje API a SDK zaměřené na vývojáře externích doplňků. Prahová úroveň vstupu je poměrně vysoká — jsou zapotřebí základní dovednosti programování v jazyce C++. Simulátor je napsán právě v něm s použitím kompilátoru GCC a jeho varianty MinGW pro operační systém Windows. Kromě toho je žádoucí, aby vývojář byl obeznámen s frameworkem Qt, protože mnoho konceptů z něj leží v základu architektury hry.
Při dostatečném úsilí a přání tento projekt otevírá pro vývojáře pluginů obrovské možnosti. Pohyblivý objekt je realizován ve formě modulů na základě dynamických knihoven. Hlavním strukturálním prvkem v simulátoru je jednotka pohyblivého ústrojí, nebo pohyblivá jednotka (PÚ) — vůz (nebo vůbec motorový v soupravě motorového vlaku) nebo sekce lokomotivy. API umožňuje definovat točivý moment aplikovaný na nápravové páry PÚ a jako odpověď získat úhlovou rychlost těchto párových kol, stejně jako externí parametry, jako je napětí a typ proudu v trolejovém vedení. Simulátor již nic jiného neví a nechce vědět, což ponechává fyziku fungování interního vybavení na bedrech vývojáře konkrétní lokomotivy nebo vozu.
Není těžké uhádnout, že takto relativně nízkoúrovňový přístup umožňuje realizovat nejmenší detaily schématu lokomotivy. Kromě toho sada simulátoru obsahuje standardní vybavení, které je instalováno na domácí pohyblivý majetek: vlakový jeřáb strojvedoucího č. 395, vzduchový distributor č. 242, jeřáb pomocné brzdy č. 254 a další prvky brzdového zařízení. Pro vývojáře pluginu je dostatečné pouze spojit tyto prvky do pneumatického schématu konkrétní lokomotivy nebo vozu. Navíc je k dispozici API pro vytváření vlastních bloků zařízení.
Architektonicky je RRS postaven na interakci dvou hlavních procesů
- simulator — fyzický engine dynamiky vlaku TrainEngine 2. Realizuje fyziku pohybu vlaku s ohledem na množství externích faktorů, zohledňuje interakci pohyblivých jednotek prostřednictvím spřahovacích zařízení, zpracovává data přicházející z externích modulů, které realizují fyziku fungování zařízení pohyblivého ústrojí
- viewer — grafická podsystém, který vykonává vizualizaci pohybu vlaku, postavený na základě grafického engine
Tyto subsystémy spolu komunikují prostřednictvím sdílené paměti, která je realizována na základě třídy QSharedMemory rámce Qt. První demo verze používaly IPC na bázi soketů a v budoucnu se plánuje návrat k této technologii, s ohledem na další úpravy některých částí simulátoru a potřeby do budoucna. Přechod na sdílenou paměť byl do určité míry nezbytným opatřením, které se ukázalo jako zastaralé.
Nebudu popisovat nuance — mnohé z peripetií vývoje tohoto projektu již byly vyloženy v mých publikacích na tomto zdroji, konkrétně mám docela rozsáhlý , který vznikl právě na základě praktické práce na tomto projektu.
V projektu to není tak hladké, jak bych si přál. Zejména grafický subsystém je daleko od dokonalosti z hlediska kvality rendrování, a výkonnost simulátoru by mohla být lepší. Tento release má jeden cíl — seznámit komunitu milovníků železniční dopravy s projektem, vytyčit jeho možnosti a konečně vytvořit otevřený, multiplatformní železniční simulátor s pokročilým API pro vývojáře doplňků.
Vyhlídky
Vyhlídky závisí na vás, naši drazí budoucí uživatelé a vývojáři. Projekt je otevřený, existuje , kde si můžete stáhnout simulátor, spolu s , jejíž obsah bude průběžně doplňován. Existuje projektu, , a , kde můžete získat nejpodrobnější konzultaci a pomoc.
Děkujeme za pozornost!
Zdroj: habr.com
