Russian Railway Simulator (RRS): första offentliga release

Dagen jag har väntat på har kommit då jag äntligen kan presentera denna utveckling. Projektet startades för exakt ett år sedan, åtminstone den 1 september 2018 RRS-förråd på Gtihub den första commit har exakt detta datum.

Persontåg vid Rostovs centralstation (klickbart)

Russian Railway Simulator (RRS): första offentliga release

Vad är RRS? Detta är en öppen plattformssimulator av rullande materiel med en spårvidd på 1520 mm. Läsaren kommer naturligtvis att ställa frågan: "Ursäkta mig, vad är det här projektet till för, om det finns ett tillräckligt antal järnvägssimulatorer, både kommersiella och öppna?" För svaret på denna fråga föreslår jag att du tittar under katten

Projekthistoria

En gång i tiden, 2001, publicerades den Microsoft Train Simulator (MSTS), som gav upphov till ett enormt samhälle av järnvägssuddar i vårt land. Under de många år som detta projekt existerade (tills Microsoft övergav det, gick vidare till mer intressanta saker för det, som Nokias konkurs, etc.), fick projektet en mängd tillägg som skapats för det: rutter, rullande materiel, scenarier.

Utifrån MSTS skapades sedan ett antal andra projekt, som t.ex OpenRails, RTrainSim (RTS) och andra tillägg och derivat. Kommersiella projekt dök också upp, som de berömda trainz. Och allt skulle vara bra, men många fans av järnvägstransporter är inte nöjda med dessa produkter av ganska objektiva skäl - de återspeglar inte på något sätt detaljerna för inhemsk rullande materiel som drivs och utvecklas i det postsovjetiska rymden. Detta är särskilt akut när man tittar på hur tågbromsar implementeras - inget av de listade projekten har eller kommer att ha en normal implementering av automatiska bromsar av Matrosov-systemet.

Under det inte så avlägset år 2008 dök ett annat projekt upp - ZDSimulator, utvecklad av Vyacheslav Usov. Projektet är anmärkningsvärt genom att det tar hänsyn till och korrigerar ovannämnda brister, samtidigt som det initialt fokuserar på rullande materiel med rysk spårvidd. Men det finns ett stort "men" - projektet är proprietärt och stängt, vilket arkitektoniskt inte tillåter introduktion av egen rullande materiel.

Jag kom själv till ämnet järnväg 2007, när jag började arbeta inom JSC VELNII, som forskare, och efter att ha försvarat sin doktorsavhandling 2008, som senior forskare. Det var då jag blev bekant med de senaste landvinningarna inom området för järnvägssimuleringsspel vid den tiden. Och jag gillade inte vad jag såg, och ZDSimulator-projektet fanns inte vid den tiden. Senare, fascinerad av dynamiken i rullande materiel, kom jag till Rostov State University of Transport (RGUPS) med ämnet för en doktorsavhandling om ett godstågs bromsdynamik. Idag leder jag utvecklingen av utbildningskomplex för järnvägstransporter för vårt universitet och undervisar i specialiserade discipliner vid avdelningen för rullande dragkraft.

I samband med allt ovan väcktes idén att skapa en simulator som skulle göra det möjligt för utvecklaren av ett tillägg för att få full kontroll över de fysiska processer som sker i den rullande materielen. Liknar Orbiter-rymdsimulatorn, för vilken jag en gång utvecklade ett tillägg i form av en familj av bärraketer baserade på R-7. För ett år sedan tog jag upp det här arbetet och kastade mig ut i det. Den 26 december 2018 såg ljuset här denna teknikdemo.

Mitt arbete uppmärksammades av entusiaster och välkänd i järnvägssmörkretsarna, skaparen av visuellt innehåll för ZDsimulator Roman Biryukov (Romych Russian Railways) erbjöd mig hjälp och samarbete i vidareutvecklingen av projektet. Senare kom en annan utvecklare till oss - Alexander Mishchenko (Ulovskii 2017), ruttskapare för ZDsimulator. Vårt samarbete ledde oss till vår första release. Videon visar en översikt över hur spelet ser ut för sin första release

Funktioner hos RRS-simulatorn

Först och främst är det en öppen mjukvaruarkitektur. För att inte tala om det faktum att simulatorkoden är öppen, det finns ett API och SDK riktat till utvecklare av tredjepartstillägg till den. Inträdesbarriären är ganska hög - grundläggande C++-utvecklingsfärdigheter krävs. Simulatorn är skriven i den med hjälp av GCC-kompilatorn och dess MinGW-variant för Windows-operativsystemet. Dessutom är det tillrådligt för utvecklaren att vara bekant med Qt-ramverket, eftersom många av dess koncept ligger till grund för spelets arkitektur.

Men med due diligence och önskan öppnar detta projekt enorma möjligheter för tilläggsutvecklaren. Rullande materiel implementeras i form av moduler baserade på dynamiska bibliotek. Det huvudsakliga strukturella elementet i simulatorn är en enhet av rullande materiel, eller mobil enhet (MU) - en vagn (icke-självgående eller som del av ett tåg med flera enheter) eller en sektion av ett lokomotiv. API gör det möjligt att ställa in vridmomentet som appliceras på PE-hjuluppsättningarna, som svar på att ta emot hjuluppsättningarnas vinkelhastighet, såväl som externa parametrar, såsom spänning och typ av ström i kontaktnätet. Simulatorn vet inget annat och vill inte veta, vilket överlåter fysiken för den interna utrustningen till samvetet hos utvecklaren av ett visst lokomotiv eller en viss bil.

Det är inte svårt att gissa att en sådan relativt låg nivå gör det möjligt att implementera de minsta nyanserna i lokomotivkretsen. Dessutom innehåller simulatorsatsen en uppsättning standardutrustning installerad på inhemsk rullande materiel: förartågkran konv. nr 395, luftfördelare skick. nr 242, hjälpbromsventil skick. nr 254 och andra delar av bromsutrustning. Utvecklaren av tillägget behöver bara ansluta dessa element till den pneumatiska kretsen för ett specifikt lok eller bil. Dessutom finns det ett API för att skapa dina egna hårdvaruenheter.

Arkitektoniskt bygger RRS på samspelet mellan två huvudprocesser

  • Simulatorn — Fysisk tågdynamikmotor TrainEngine 2. Implementerar fysik för tågrörelser, med hänsyn till många externa faktorer, med beaktande av interaktionen mellan rörliga enheter genom kopplingsanordningar, bearbetar data som kommer från externa moduler som implementerar arbetsfysiken för utrustning för rullande materiel
  • tittaren — ett grafiskt delsystem som visualiserar tågrörelser, byggt på en grafisk motor OpenSceneGraph

Dessa delsystem interagerar med varandra genom delat minne, implementerat baserat på QSharedMemory-klassen i Qt-ramverket. De första demos använde socket-baserad IPC, och det finns planer på att återvända till denna teknik i framtiden, med hänsyn till förfining av vissa delar av simulatorn och behov med sikte på framtiden. Övergången till delat minne var till viss del en påtvingad åtgärd som har överlevt sin användbarhet.

Jag kommer inte att beskriva nyanserna - många av växlingarna i utvecklingen av detta projekt beskrivs redan i mina publikationer om resursen, i synnerhet har jag en ganska omfattande en serie tutorials om OpenSceneGraph-motorn, som växte fram ur praktiken att arbeta med detta projekt.

Allt i projektet är inte så smidigt som vi skulle vilja. I synnerhet är det grafiska undersystemet långt ifrån perfekt när det gäller renderingskvalitet, och simmens prestanda lämnar mycket övrigt att önska. Den här utgåvan har ett mål - att introducera gemenskapen av järnvägstransportentusiaster till projektet, beskriva dess kapacitet och slutligen skapa en öppen, plattformsoberoende järnvägssimulator med ett avancerat API för tilläggsutvecklare.

Utsikter

Utsikterna beror på er, våra kära framtida användare och utvecklare. Projektet är öppet och existerar officiell hemsidavarifrån du kan ladda ner simulatorn dokumentation, vars sammansättning kommer att fyllas på kontinuerligt. Existerar forumet projekt, VK-gruppOch Youtube-kanal, där du kan få de mest detaljerade råd och hjälp.

Tack för din uppmärksamhet!

Källa: will.com

Lägg en kommentar