Rysslands JÀrnvÀgssimulator (RRS): första offentliga slÀppet

Den dagen jag har lÀngtat efter har Àntligen kommit, nÀr jag kan presentera denna utveckling. Projektet startades exakt ett Är sedan, den 1 september 2018, Ätminstone i RRS-repositoriet pÄ GitHub den första commit har just det datumet.

PassagerartÄg vid stationen Rostov Glavny (klickbart)

Rysslands JÀrnvÀgssimulator (RRS): första offentliga slÀppet

Vad Àr RRS? Det Àr en öppen, plattformsoberoende simulator för rullande materiel med spÄrvidd 1520 mm. LÀsaren stÀller med rÀtta frÄgan: "VÀnta lite, vad Àr syftet med detta projekt, nÀr det finns sÄ mÄnga jÀrnvÀgssimulatorer, bÄde kommersiella och öppna?" För svar pÄ denna frÄga föreslÄr jag att du kollar under kat

Projektets historia

En gÄng för lÀnge sedan, Är 2001, sÄg Microsoft Train Simulator (MSTS), vilket födde en stor gemenskap av jÀrnvÀgssimulerare i vÄrt land. Under de Är som detta projekt existerade (tills Microsoft övergick till mer intressanta projekt för dem, sÄsom att sÀtta Nokia i konkurs osv.) blev projektet bevÀpnat med massor av tillÀgg: rutter, rullande materiel, scenarier.

Baserat pĂ„ MSTS skapades i tur och ordning flera andra projekt, sĂ„som OpenRails, RTrainSim (RTS) och andra tillĂ€gg och derivat. Det uppstod Ă€ven kommersiella projekt, sĂ„som den berömda Trainz.Och allt skulle vara bra, men mĂ„nga tĂ„gtransportentusiaster Ă€r missnöjda med dessa produkter av fullt objektiva skĂ€l – de speglar inte alls specifikationen av den inhemska rullande materielen som anvĂ€nds och utvecklas i det post-sovjetiska rummet. Detta blir sĂ€rskilt tydligt nĂ€r man ser pĂ„ hur tĂ„gbromsar implementeras – ingen av de nĂ€mnda projekten har och kommer att ha en korrekt implementation av de automatiska bromsarna i Matrosov-systemet.

År 2008 dök ett annat projekt upp – ZDSimulator, utvecklad av Vyacheslav Usov. Projektet Ă€r anmĂ€rkningsvĂ€rt för att det beaktar och Ă„tgĂ€rdar de tidigare nĂ€mnda bristerna, och det Ă€r initialt inriktat pĂ„ rullande materiel för den ryska spĂ„rvidden. Men det finns en stor "men" – projektet Ă€r proprietĂ€rt och stĂ€ngt, och arkitektoniskt tillĂ„ter det inte införandet av egen rullande materiel.

SjĂ€lv började jag med jĂ€rnvĂ€gstemat Ă„r 2007 nĂ€r jag började arbeta pĂ„ OAO VELNII, i tjĂ€nst som forskarassistent och efter att ha försvarat min doktorandavhandling 2008 — som senior forskare. Det var dĂ„ jag blev bekant med de senaste framstegen inom jĂ€rnvĂ€gssimulatorspel. Det jag sĂ„g tilltalade mig inte, och projektet ZDSimulator fanns Ă€nnu inte dĂ„. I framtiden, driven av min passion för dynamik i rullande materiel, gick jag till Rostov State Transport University (RGSUPS) med Ă€mnet för min doktorsavhandling om bromsdynamik för godstĂ„g. Idag leder jag utvecklingen av simulatorer för jĂ€rnvĂ€gstransport vid vĂ„rt universitet och undervisar i Ă€mnen pĂ„ avdelningen för "Dragande rullande materiel".

I samband med allt ovanstÄende föddes idén att skapa en simulator som skulle ge utvecklaren av tillÀgg full kontroll över de fysiska processer som pÄgÄr i det rullande materiel. Liknande rymdsimulatorn Orbiter, för vilken jag tidigare utvecklade ett tillÀgg i form av en familj av bÀrraketer baserade pÄ R-7. För ett Är sedan tog jag mig an detta arbete och kastade mig huvudstupa in i det. Den 26 december 2018 sÄg denna tekniska demo vÀrlden.

Mitt arbete blev uppmĂ€rksammat av entusiaster, och den vĂ€lkĂ€nda personen inom jĂ€rnvĂ€gssimulerare, skaparen av visuellt innehĂ„ll för ZDsimulator, Roman Biryukov (Romych RZhDUZ) erbjöd mig hjĂ€lp och samarbete för den fortsatta utvecklingen av projektet. Senare anslöt sig ytterligare en utvecklare till oss — Alexander Mischenko (Ulovskii2017), skaparen av rutter för ZDsimulator. VĂ„rt gemensamma arbete ledde till vĂ„r första release. I videon — en översikt av hur spelet ser ut i sin första release.

Spela video

Funktioner i simulatorn RRS

Först och frĂ€mst Ă€r det — en öppen programvaruarkitektur. För att inte ens nĂ€mna att koden för simulatorn Ă€r öppen, finns det en API och SDK inriktad pĂ„ utvecklare av tredjeparts tillĂ€gg till den. IntrĂ€deströskeln Ă€r ganska hög — grundlĂ€ggande fĂ€rdigheter i C++ krĂ€vs. Simulatorn Ă€r skriven just i det, med anvĂ€ndning av kompilatorn GCC och dess variant MinGW för Windows-operativsystemet. Dessutom Ă€r det önskvĂ€rt att utvecklaren Ă€r bekant med Qt-ramverket, eftersom mĂ„nga koncept frĂ„n det ligger till grund för spelets arkitektur.

Men med rĂ€tt flit och vilja öppnar detta projekt enorma möjligheter för tillĂ€ggsutvecklare. Rullande utrustning implementeras i form av moduler baserade pĂ„ dynamiska bibliotek. Den huvudsakliga strukturella enheten i simulatorn Ă€r rullande enhet, eller rullande enhet (RE) – vagn (icke-motoriserad eller i en motorvagnstĂ„g) eller sektion av lokomotiv. API:et ger möjlighet att stĂ€lla in det vridmoment som appliceras pĂ„ hjulaxlarna för RE, och i svar fĂ„r man hjulaxlarnas vinkelhastighet samt externa parametrar, sĂ„som spĂ€nning och typ av ström i kontaktledningen. Simulatorn kĂ€nner inte till nĂ„got annat och vill inte veta nĂ„got mer, vilket lĂ€mnar fysiken för det interna utrustningens arbete till utvecklaren av det specifika lokomotivet eller vagnen.

Det Àr inte svÄrt att lista ut att ett sÄdant relativt lÄgnivÄ tillvÀgagÄngssÀtt möjliggör att realisera Àven de minsta nyanserna i lokomotivets schema. Dessutom ingÄr en uppsÀttning standardutrustning i simulatorn, som installeras pÄ inhemsk rullande utrustning: lokförarens tÄgkran nr 395, luftfördelare nr 242, kran för hjÀlpbromsen nr 254 och andra komponenter av bromsutrustningen. Utvecklaren av tillÀgget behöver bara koppla dessa komponenter i det pneumatiska schemat för det specifika lokomotivet eller vagnen. Dessutom finns det ett API för att skapa egna utrustningsblock.

Arkitektoniskt Àr RRS byggt pÄ interaktionen mellan tvÄ huvudsakliga processer

  • simulator – en fysisk motor för tĂ„gdynamik TrainEngine 2. Den realiserar fysiken för tĂ„gtransporten med hĂ€nsyn till mĂ€ngder av externa faktorer, inklusive interaktionen mellan rullande enheter via kopplingsutrustning, och hanterar data som kommer frĂ„n externa moduler som implementerar fysiken för rullande utrustningens arbete
  • viewer – ett grafiskt subsystem som utför visualisering av tĂ„gets rörelse, byggt pĂ„ en grafisk motor OpenSceneGraph

Dessa delsystem Ă€r i interaktion med varandra via delat minne, som implementeras med klassen QSharedMemory frĂ„n Qt-ramverket. De första demoversionerna anvĂ€nde IPC baserat pĂ„ sockets, och i framtiden planeras en Ă„tergĂ„ng till denna teknik, med tanke pĂ„ att vissa delar av simuleringen behöver förbĂ€ttras och framtida behov. ÖvergĂ„ngen till delat minne var pĂ„ ett sĂ€tt en nödvĂ€ndig Ă„tgĂ€rd som nu Ă€r förĂ„ldrad.

Jag kommer inte att beskriva detaljerna - mÄnga av de dramatik som prÀglat utvecklingen av detta projekt har redan beskrivits i mina publikationer pÄ resursen, sÀrskilt har jag ett ganska omfattande tutoriell cykel om OpenSceneGraph-motorn, som just har vÀxt fram ur praktiken av att arbeta med detta projekt.

I projektet Àr inte allt sÄ smidigt som man önskat. Specifikt Àr den grafiska delsystemet lÄngt ifrÄn perfekt nÀr det kommer till renderingens kvalitet, och dessutom lÀmnar simuleringens prestanda mycket att önska. Denna version har ett mÄl - att introducera gemenskapen av jÀrnvÀgsentusiaster för projektet, skissa pÄ dess möjligheter och Àntligen skapa en öppen, plattformsoberoende jÀrnvÀgssimulator med ett avancerat API för utvecklare av tillÀgg.

Framtidsutsikter

Framtiden beror pÄ er, vÄra kÀra framtida anvÀndare och utvecklare. Projektet Àr öppet, det finns den officiella webbplatsen, var man kan ladda ner simulatorn, med dokumentationen, vars samling kontinuerligt kommer att utökas. Det finns forum projektet, VK-gruppen, och YouTube-kanal, dÀr man kan fÄ den mest detaljerade rÄdgivningen och hjÀlpen.

Tack för uppmÀrksamheten!

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster