Elérkezett az a rég vágyott nap, amikor végre bemutathatom ezt a fejlesztést. A projekt pontosan egy évvel ezelőtt, 2018. szeptember 1-jén indult, legalábbis a az első elkötelezettség éppen ekkor történt.
Személyvonat a Rostov Glavnyi állomáson (kattintható)
Mi az az RRS? Ez egy nyílt forráskódú, platformfüggetlen 1520 mm-es nyomvonalú járműszimulátor. A kedves olvasónak jogosan felmerül a kérdés: "Engedje meg, mire is jó ez a projekt, ha annyi kereskedelmi és nyílt vasúti tematikájú szimulátor létezik?" A kérdés megválaszolásához nézzük meg a részleteket.
A projekt története
Réges-régen, 2001-ben látta meg a napvilágot a , amely hatalmas közösséget teremtett a vasút-szimulátorok kedvelőiből hazánkban. Az évek során, amíg ez a projekt fennállt (amíg a Microsoft el nem hanyagolta, hogy érdekesebb dolgokkal foglalkozzon, például a Nokia csődbe juttatásával, stb.), a projekt számos kiegészítést kapott: útvonalakat, járműveket és forgatókönyveket.
Az MSTS alapján később számos más projekt is született, mint például , és egyéb kiegészítők és származékok. Megjelentek kereskedelmi projektek is, mint a híres És mindez szép és jó, de sok vasúti járművek iránt érdeklődő nem elégedett ezekkel a termékekkel, érthető okokból — nem tükrözik a posztszovjet térségben üzemelő és tervezett járművek sajátosságait. Különösen éles figyelmet kap, hogy a vonat fékezése hogyan van megvalósítva — a felsorolt projektek egyikében sincs normál megvalósítása a Matrosov rendszer automatikus fékeinek.
2008-ban egy másik projekt is megjelent — , amelyet Vjacseszlav Usov fejlesztett ki. A projekt abban kiemelkedő, hogy figyelembe veszi és javítja a fent említett hiányosságokat, miközben eredetileg a orosz nyomvonalú járművekre van orientálva. De van egy nagy "de" — a projekt tulajdonosi és zárt, architektúrája nem teszi lehetővé saját járművek integrálását.
Én magam 2007-ben kerültem a vasúti tematikához, amikor elkezdtem dolgozni a , tudományos munkatárs pozícióban, majd 2008-ban a doktori disszertációm védése után – főmunkatársként. Ekkor ismerkedtem meg a vasúti szimulátorok legújabb fejlesztéseivel. Az, amit láttam, nem tetszett, és akkor még nem létezett a ZDSimulator projekt. Később, a mozgó járművek dinamikája iránti lelkesedésem miatt a Rosztovi Állami Közlekedési Egyetemhez jöttem.) a tehervonatok fékezési dinamikájáról szóló doktori disszertáció témájával. Jelenleg a közlekedési szimulátorok fejlesztését irányítom egyetemünk számára, és szakterületi tantárgyakat tanítok a „Meghajtó járművek” tanszéken.
A fentiek fényében felmerült a szimulátor létrehozásának ötlete, amely lehetővé teszi a kiegészítő fejlesztő számára, hogy teljes kontrollt szerezzen a mozgó járműveken zajló fizikai folyamatok felett. Hasonlóan a Orbiter űrszimulátorhoz, amelyhez korábban kifejlesztettem egy kiegészítést a R-7 alapú rakétacsalád formájában. Egy évvel ezelőtt hozzáfogtam ehhez a munkához, és teljesen belemerültem. 2018. december 26-án megjelent ez .
A munkámat észrevették az önkéntesek, és a vasúti szimulátorok körében ismert, a ZDsimulator vizuális tartalmának készítője, felajánlotta segítségét és együttműködést a projekt jövőbeni fejlesztésében. Később hozzánk csatlakozott egy másik fejlesztő – ), a ZDsimulator útvonalainak készítője. Közös munkánkhoz eljutottunk az első kiadásig. A videón egy rövid áttekintést láthatunk arról, hogyan néz ki a játék az első kiadásakor.

Az RRS szimulátor jellemzői
Elsősorban nyílt programozási architektúra. Még ha azt nem is említjük, hogy a szimulátor kódja nyitott, létezik egy API és SDK, amely a harmadik fél kiegészítőinek fejlesztőire orientálódik. A belépési küszöb meglehetősen magas – alapvető C++ fejlesztési ismeretek szükségesek. A szimulátor kifejezetten ezen nyelven készült, a GCC fordító és annak MinGW változatának használatával Windows operációs rendszeren. Ezenkívül kívánatos, hogy a fejlesztő ismerje a Qt keretrendszert, mivel sok koncepció ezen alapul a játék architektúrájában.
Azonban a kellő szorgalommal és kívánsággal ez a projekt hatalmas lehetőségeket nyújt a kiegészítő programok fejlesztőinek. A mozdonyt képző egységek dinamikus könyvtárakra épülő modulok formájában valósulnak meg. Az alapvető struktúraelem a szimulátorban a mozdonyegység, vagy mozdonyegység (ME) – vagon (nem motoros vagy motorvonat részeként) vagy a mozdony szekciója. Az API lehetőséget ad a ME kerékpárjaira alkalmazott nyomaték beállítására, válaszul pedig megkapjuk a kerékpárok szögsebességét, valamint külső paramétereket, mint például a feszültséget és az áram típusát a kontakt hálózatban. A szimulátor másról nem tud és nem is akar tudni, ami a belső berendezések működésének fizikáját a konkrét mozdony vagy vagon fejlesztőjére bízza.
Nem nehéz kitalálni, hogy ez a viszonylag alacsony szintű megközelítés lehetőséget ad a mozdony diagramjának legapróbb részleteinek megvalósítására. Ezen kívül a szimulátorhoz tartozik egy normál berendezéseket tartalmazó csomag, amelyet a helyi mozdonyokra telepítenek: a vezető vonatszinpadról üzemeltetett daru, 395-ös számú légosztályozó, 242-es számú segédfékező szelep és egyéb fékberendezések. A kiegészítő fejlesztőnek elegendő csak ezeket az elemeket összekapcsolnia egy adott mozdony vagy vagon pneumatikus rendszerében. Emellett van API saját berendezésblokkok létrehozására.
Architekturálisan az RRS két fő folyamat interakciójára épül
- szimulátor — a TrainEngine 2 vonatdinamikai fizikai motorja. Figyelembe veszi a vonat mozgásának fizikáját számos külső tényező szempontjából, figyelembe véve a mozdonyegységek közötti kölcsönhatást a vonófejeken keresztül, és kezeli a külső modulokból érkező adatokat, amelyek a mozdonyegység berendezéseinek működésének fizikáját valósítják meg
- néző — grafikai alrendszer, amely a vonat mozgásának vizualizálásához készült, grafikai motorra alapozva
Ezek a rendszerek kölcsönösen interakcióba lépnek egy közös memórián keresztül, amelyet a Qt keretrendszer QSharedMemory osztálya valósít meg. Az első demóverziók socket-alapú IPC-t használtak, és a jövőben tervezik a visszatérést erre a technológiára, figyelembe véve a szimulátor egyes részeinek fejlesztését és a jövőbeli igényeket. A közös memóriára való áttérés részben kényszerintézkedés volt, amely már elavult.
Nem szeretném részletezni a finomságokat — a projekt fejlődésének számos fordulópontját már leírtam a publikációimban az oldalon, különösen van egy meglehetősen kiterjedt , amely éppen ebből a projektből adódott.
A projekt nem olyan zökkenőmentes, mint szeretnénk. Különösen a grafikai alrendszer messze van a tökéletességtől a renderelés minősége tekintetében, és a szimulátor teljesítménye is hagy kívánni valót maga után. Ennek a kiadásnak egyetlen célja van — megismertetni a vasúti közlekedés szerelmeseivel a projektet, körvonalazni a lehetőségeit, és végre létrehozni egy nyílt, multiplatformos vasúti szimulátort, amely fejlett API-t kínál a bővítmények fejlesztőinek.
Kilátások
A jövő lehetőségei rajtatok múlnak, kedves leendő felhasználóink és fejlesztőink. A projekt nyitott, létezik , ahol letölthető a szimulátor, folyamatosan bővülő , amelynek tartalma folyamatosan frissül. Létezik projektet, , és a , ahol a legátfogóbb tanácsokat és segítséget kaphatjátok.
Köszönöm a figyelmet!
Forrás: habr.com
