Ruský železniční simulátor (RRS): první veřejné vydání

Nastal den, na který jsem čekal, kdy mohu konečně představit tento vývoj. Projekt byl zahájen přesně před rokem, minimálně 1. září 2018 Repozitáře RRS na Gtihub první commit má přesně toto datum.

Osobní vlak na hlavním nádraží Rostov (klikací)

Ruský železniční simulátor (RRS): první veřejné vydání

Co je RRS? Jedná se o otevřený multiplatformní simulátor kolejových vozidel o rozchodu 1520 mm. Čtenář si přirozeně položí otázku: „Promiňte, k čemu tento projekt je, když existuje dostatečný počet železničních simulátorů, komerčních i otevřených?“ Pro odpověď na tuto otázku navrhuji podívat se pod kočku

Historie projektu

Kdysi dávno, v roce 2001, vyšla Microsoft Train Simulator (MSTS), která dala vzniknout obrovské komunitě železničních šmejdů u nás. Během několika let, co tento projekt existoval (dokud ho Microsoft neopustil a nepřešel k zajímavějším věcem, jako je bankrot Nokie atd.), získal projekt spoustu doplňků vytvořených pro něj: trasy, kolejová vozidla, scénáře.

Na základě MSTS následně vznikla řada dalších projektů, jako např OpenRails, RTrainSim (RTS) a další doplňky a odvozeniny. Objevily se i komerční projekty, např. slavný trainz. A všechno by bylo v pořádku, ale řada příznivců železniční dopravy není s těmito produkty spokojena z celkem objektivních důvodů – nijak nereflektují specifika tuzemských kolejových vozidel provozovaných a vyvíjených v postsovětském prostoru. To je zvláště akutní při pohledu na to, jak jsou brzdy vlaků implementovány - žádný z uvedených projektů nemá a nebude mít normální implementaci automatických brzd systému Matrosov.

V ne tak vzdáleném roce 2008 se objevil další projekt - ZDSimulátor, vyvinutý Vjačeslavem Usovem. Projekt je pozoruhodný tím, že zohledňuje a napravuje výše uvedené nedostatky, přičemž se zpočátku zaměřuje na kolejová vozidla ruského rozchodu. Je tu ale jedno velké „ale“ – projekt je proprietární a uzavřený, architektonicky neumožňuje zavedení vlastního vozového parku.

Sám jsem se k železničnímu tématu dostal v roce 2007, kdy jsem začal pracovat v as VELNII, jako vědecký pracovník a po obhajobě doktorské práce v roce 2008 jako vedoucí vědecký pracovník. Tehdy jsem se seznámil s nejnovějšími výdobytky tehdejších železničních simulačních her. A to, co jsem viděl, se mi nelíbilo a projekt ZDSimulator v té době neexistoval. Později, fascinován dynamikou kolejových vozidel, jsem přišel na Rostovskou státní univerzitu dopravní (RGUPS) s tématem doktorské disertační práce o dynamice brzdění nákladního vlaku. Dnes vedu vývoj školicích komplexů železniční dopravy pro naši univerzitu a vyučuji odborné obory na katedře trakčních kolejových vozidel.

V souvislosti se vším výše uvedeným vznikla myšlenka vytvořit simulátor, který by vývojáři jeho doplňku umožnil získat plnou kontrolu nad fyzikálními procesy probíhajícími v kolejových vozidlech. Podobně jako u vesmírného simulátoru Orbiter, ke kterému jsem kdysi vyvíjel přírůstek v podobě rodiny nosných raket na bázi R-7. Před rokem jsem se této práce chopil a vrhl se na ni. 26. prosince 2018 zde spatřilo světlo toto technologické demo.

Mé práce si všimli nadšenci a v kruzích železničních nadšenců známý tvůrce vizuálního obsahu pro ZDsimulator Roman Biryukov (Romych Russian Railways) mi nabídl pomoc a spolupráci při dalším rozvoji projektu. Později se k nám přidal další vývojář - Alexander Mishchenko (Ulovskii2017), tvůrce trasy pro ZDsimulator. Naše spolupráce nás vedla k našemu prvnímu vydání. Video ukazuje přehled toho, jak hra vypadá pro její první vydání

Vlastnosti simulátoru RRS

Především je to otevřená softwarová architektura. Nemluvě o tom, že kód simulátoru je otevřený, je k němu API a SDK zaměřené na vývojáře doplňků třetích stran. Vstupní bariéra je poměrně vysoká - jsou vyžadovány základní vývojové dovednosti v C++. Simulátor je napsán v něm pomocí kompilátoru GCC a jeho varianty MinGW pro operační systém Windows. Kromě toho je vhodné, aby se vývojář seznámil s rámcem Qt, protože mnoho jeho konceptů je základem architektury hry.

S náležitou péčí a touhou však tento projekt otevírá obrovské příležitosti pro vývojáře doplňků. Kolejová vozidla jsou implementována ve formě modulů založených na dynamických knihovnách. Hlavní konstrukční prvek v simulátoru je jednotka kolejových vozidel, nebo mobilní jednotka (MU) - vůz (bez vlastního pohonu nebo jako součást vícejednotkového vlaku) nebo část lokomotivy. API umožňuje nastavit točivý moment aplikovaný na PE dvojkolí v reakci na úhlovou rychlost dvojkolí a také externí parametry, jako je napětí a typ proudu v kontaktní síti. Simulátor nic jiného neví a nechce vědět, což nechává fyziku vnitřního vybavení na svědomí vývojáře konkrétní lokomotivy či vozu.

Není těžké uhodnout, že takový relativně nízkoúrovňový přístup umožňuje implementovat ty nejmenší nuance lokomotivního obvodu. Souprava simulátoru navíc obsahuje sadu standardního vybavení instalovaného na domácích kolejových vozidlech: jeřáb pro strojvedoucího konv. č. 395, stav rozdělovače vzduchu. č. 242, stav ventilu přídavné brzdy. č. 254 a další prvky brzdového zařízení. Vývojáři doplňku stačí tyto prvky pouze zapojit do pneumatického obvodu konkrétní lokomotivy nebo vozu. Kromě toho existuje API pro vytváření vlastních hardwarových jednotek.

Architektonicky je RRS postaveno na interakci dvou hlavních procesů

  • Simulátor — motor fyzické dynamiky vlaku TrainEngine 2. Implementuje fyziku pohybu vlaku, bere v úvahu mnoho vnějších faktorů, bere v úvahu interakci pohybujících se jednotek prostřednictvím spojovacích zařízení, zpracovává data přicházející z externích modulů, které implementují fyziku provozu zařízení kolejových vozidel
  • prohlížečka — grafický subsystém, který zobrazuje pohyb vlaku, postavený na základě grafického enginu OpenSceneGraph

Tyto subsystémy se vzájemně ovlivňují prostřednictvím sdílené paměti implementované na základě třídy QSharedMemory rámce Qt. První ukázky používaly IPC založené na zásuvkách a v budoucnu se plánuje návrat k této technologii s ohledem na zdokonalení některých částí simulátoru a potřeby s ohledem na budoucnost. Přechod na sdílenou paměť byl do jisté míry vynuceným opatřením, které přežilo svou užitečnost.

Nebudu popisovat nuance - mnohé z peripetií vývoje tohoto projektu jsou již nastíněny v mých publikacích o zdroji, zejména mám poměrně rozsáhlé sérii výukových programů o enginu OpenSceneGraph, která vyrostla z praxe práce na tomto projektu.

Ne vše v projektu jde tak hladce, jak bychom si přáli. Zejména grafický subsystém má daleko k dokonalosti, pokud jde o kvalitu vykreslování, a výkon simky ponechává mnoho přání. Toto vydání má jediný cíl – představit projekt komunitě nadšenců železniční dopravy, nastínit jeho možnosti a nakonec 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 milí budoucí uživatelé a vývojáři. Projekt je otevřený a existuje Oficiální internetové stránkyodkud si můžete stáhnout simulátor dokumentace, jejichž složení bude průběžně doplňováno. Existuje форум projekt, VK skupinaA kanál YouTube, kde můžete získat nejpodrobnější rady a pomoc.

Спасибо за внимание!

Zdroj: www.habr.com

Přidat komentář