Russian Railway Simulator (RRS): første offentlige utgivelse

Dagen jeg har ventet på har kommet da jeg endelig kan presentere denne utviklingen. Prosjektet ble startet for nøyaktig et år siden, i hvert fall 1. september 2018 RRS-depoter på Gtihub den første commit har nøyaktig denne datoen.

Persontog på Rostov sentralstasjon (klikkbart)

Russian Railway Simulator (RRS): første offentlige utgivelse

Hva er RRS? Dette er en åpen plattformsimulator av 1520 mm sporvidde rullende materiell. Leseren vil naturlig nok stille spørsmålet: «Unnskyld meg, hva er dette prosjektet til for, hvis det er et tilstrekkelig antall jernbanesimulatorer, både kommersielle og åpne?» For svaret på dette spørsmålet foreslår jeg å se under katten

Prosjekthistorie

En gang i tiden, i 2001, ble den publisert Microsoft Train Simulator (MSTS), som ga opphav til et enormt samfunn av jernbaneulmer i vårt land. I løpet av de mange årene dette prosjektet eksisterte (inntil Microsoft forlot det, og gikk videre til mer interessante ting for det, som Nokias konkurs, etc.), fikk prosjektet en masse tillegg laget for det: ruter, rullende materiell, scenarier.

Basert på MSTS ble det i ettertid opprettet en rekke andre prosjekter, som f.eks OpenRails, RTrainSim (RTS) og andre tillegg og derivater. Kommersielle prosjekter dukket også opp, som de kjente Trainz. Og alt ville være bra, men mange fans av jernbanetransport er ikke fornøyd med disse produktene av ganske objektive grunner - de gjenspeiler på ingen måte spesifikasjonene til innenlandsk rullende materiell som drives og utvikles i det post-sovjetiske rommet. Dette er spesielt akutt når man ser på hvordan togbremser implementeres - ingen av de listede prosjektene har eller vil ha en normal implementering av automatiske bremser av Matrosov-systemet.

I det ikke så fjerne året 2008 dukket et annet prosjekt opp - ZDSimulator, utviklet av Vyacheslav Usov. Prosjektet er bemerkelsesverdig ved at det tar hensyn til og korrigerer de ovennevnte manglene, samtidig som det i første omgang fokuserer på rullende materiell med russisk sporvidde. Men det er ett stort "men" - prosjektet er proprietært og lukket, og arkitektonisk sett tillater det ikke introduksjon av eget rullende materiell.

Selv kom jeg inn på jernbanetemaet i 2007, da jeg begynte å jobbe i JSC VELNII, som stipendiat, og etter å ha forsvart sin doktorgradsavhandling i 2008, som senior stipendiat. Det var da jeg ble kjent med de siste prestasjonene innen jernbanesimuleringsspill på den tiden. Og jeg likte ikke det jeg så, og ZDSimulator-prosjektet eksisterte ikke på den tiden. Senere, fascinert av dynamikken til rullende materiell, kom jeg til Rostov State University of Transport (RGUPS) med tema for en doktorgradsavhandling om bremsedynamikken til et godstog. I dag leder jeg utviklingen av opplæringskomplekser for jernbanetransport for universitetet vårt og underviser i spesialiserte disipliner ved Institutt for trekkmateriell.

I forbindelse med alt det ovennevnte oppsto ideen om å lage en simulator som ville tillate utvikleren av et tillegg for å få full kontroll over de fysiske prosessene som skjer i det rullende materiellet. I likhet med romsimulatoren Orbiter, som jeg en gang utviklet et tillegg til i form av en familie av bæreraketter basert på R-7. For et år siden tok jeg opp dette arbeidet og kastet meg ut i det. 26. desember 2018 så lyset her denne teknologidemoen.

Arbeidet mitt ble lagt merke til av entusiaster, og velkjent i kretsene til jernbanesimler, skaperen av visuelt innhold for ZDsimulator Roman Biryukov (Romych Russian Railways) tilbød meg hjelp og samarbeid i den videre utviklingen av prosjektet. Senere ble en annen utvikler med oss ​​- Alexander Mishchenko (Ulovskii2017), ruteskaper for ZDsimulator. Samarbeidet vårt førte oss til vår første utgivelse. Videoen viser en oversikt over hvordan spillet ser ut for den første utgivelsen

Funksjoner i RRS-simulatoren

Først av alt er det en åpen programvarearkitektur. For ikke å nevne det faktum at simulatorkoden er åpen, det er en API og SDK rettet mot utviklere av tredjeparts tillegg til den. Inngangsbarrieren er ganske høy - grunnleggende C++ utviklingsferdigheter kreves. Simulatoren er skrevet i den ved å bruke GCC-kompilatoren og dens MinGW-variant for Windows-operativsystemet. I tillegg er det tilrådelig for utvikleren å være kjent med Qt-rammeverket, siden mange av konseptene ligger til grunn for spillets arkitektur.

Men med due diligence og ønske åpner dette prosjektet enorme muligheter for tilleggsutvikleren. Rullende materiell implementeres i form av moduler basert på dynamiske biblioteker. Det viktigste strukturelle elementet i simulatoren er en enhet av rullende materiell, eller mobil enhet (MU) - en vogn (ikke-selvgående eller som del av et tog med flere enheter) eller en seksjon av et lokomotiv. API gjør det mulig å stille inn dreiemomentet på PE-hjulsettene, som svar på å motta vinkelhastigheten til hjulsettene, samt eksterne parametere, som spenning og type strøm i kontaktnettverket. Simulatoren vet ikke noe annet og vil ikke vite, noe som overlater fysikken til det interne utstyret til samvittigheten til utvikleren av et bestemt lokomotiv eller en bil.

Det er ikke vanskelig å gjette at en slik tilnærming på relativt lavt nivå gjør det mulig å implementere de minste nyansene i lokomotivkretsen. I tillegg inkluderer simulatorsettet et sett med standardutstyr installert på innenlands rullende materiell: førertogkran konv. nr. 395, luftfordeler tilstand. nr. 242, hjelpebremseventil tilstand. nr. 254 og andre elementer av bremseutstyr. Utvikleren av tillegget trenger bare å koble disse elementene til den pneumatiske kretsen til et spesifikt lokomotiv eller bil. I tillegg er det et API for å lage dine egne maskinvareenheter.

Arkitektonisk er RRS bygget på samspillet mellom to hovedprosesser

  • simulator — fysisk togdynamikkmotor TrainEngine 2. Implementerer fysikken til togbevegelser, tar hensyn til mange eksterne faktorer, tar hensyn til samspillet mellom bevegelige enheter gjennom koplingsenheter, behandler data som kommer fra eksterne moduler som implementerer driftsfysikken til utstyr for rullende materiell
  • viewer — et grafisk delsystem som visualiserer togbevegelse, bygget på grunnlag av en grafikkmotor OpenSceneGraph

Disse undersystemene samhandler med hverandre gjennom delt minne, implementert basert på QSharedMemory-klassen til Qt-rammeverket. De første demoene brukte socket-baserte IPC, og det er planer om å gå tilbake til denne teknologien i fremtiden, tatt i betraktning foredlingen av enkelte deler av simulatoren og behov med et øye for fremtiden. Overgangen til delt hukommelse var til en viss grad et påtvunget tiltak som har overlevd nytten.

Jeg vil ikke beskrive nyansene - mange av omskiftelsene i utviklingen av dette prosjektet er allerede skissert i publikasjonene mine om ressursen, spesielt har jeg en ganske omfattende en serie opplæringsprogrammer på OpenSceneGraph-motoren, som vokste ut av praksisen med å jobbe med dette prosjektet.

Ikke alt i prosjektet er så glatt som vi ønsker. Spesielt er det grafiske undersystemet langt fra perfekt når det gjelder gjengivelseskvalitet, og ytelsen til simen lar mye å være ønsket. Denne utgivelsen har ett mål - å introdusere fellesskapet av jernbanetransportentusiaster til prosjektet, skissere dets evner og til slutt lage en åpen jernbanesimulator på tvers av plattformer med en avansert API for tilleggsutviklere.

Prospekter

Utsiktene avhenger av deg, våre kjære fremtidige brukere og utviklere. Prosjektet er åpent og eksisterer offisiell nettsidehvor du kan laste ned simulatoren fra dokumentasjon, hvis sammensetning vil bli kontinuerlig etterfylt. Finnes forumet prosjekt, VK gruppeOg YouTube-kanal, hvor du kan få de mest detaljerte råd og assistanse.

Takk for din oppmerksomhet!

Kilde: www.habr.com

Legg til en kommentar