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

Dagen jeg har ventet på er kommet, hvor jeg endelig kan præsentere denne udvikling. Projektet blev startet for præcis et år siden, i hvert fald 1. september 2018 RRS-depoter på Gtihub den første commit har præcis denne dato.

Passagertog på Rostov Hovedbanegård (klikbart)

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

Hvad er RRS? Dette er en åben cross-platform simulator af 1520 mm sporvidde rullende materiel. Læseren vil naturligvis stille spørgsmålet: "Undskyld mig, hvad er dette projekt til formål, hvis der er et tilstrækkeligt antal jernbanesimulatorer, både kommercielle og åbne?" For svaret på dette spørgsmål foreslår jeg at kigge under katten

Projektets historie

Engang, i 2001, udkom den Microsoft Train Simulator (MSTS), som gav anledning til et kæmpe samfund af jernbanesimler i vort land. I løbet af de mange år, dette projekt eksisterede (indtil Microsoft opgav det, gik videre til mere interessante ting for det, såsom Nokias konkurs osv.), fik projektet en masse tilføjelser skabt til det: ruter, rullende materiel, scenarier.

Med udgangspunkt i MSTS blev der efterfølgende oprettet en række andre projekter, som f.eks OpenRails, RTrainSim (RTS) og andre tilføjelser og derivater. Kommercielle projekter dukkede også op, såsom de berømte trainz. Og alt ville være fint, men mange fans af jernbanetransport er ikke tilfredse med disse produkter af ret objektive grunde - de afspejler på ingen måde detaljerne for indenlandsk rullende materiel, der drives og udvikles i det post-sovjetiske rum. Dette er især akut, når man ser på, hvordan togbremser implementeres - ingen af ​​de anførte projekter har eller vil have en normal implementering af automatiske bremser af Matrosov-systemet.

I det ikke så fjerne år 2008 dukkede et andet projekt op - ZDSimulator, udviklet af Vyacheslav Usov. Projektet er bemærkelsesværdigt ved, at det tager højde for og korrigerer de ovennævnte mangler, samtidig med at det i første omgang fokuserer på russisk sporvidde materiel. Men der er et stort "men" - projektet er proprietært og lukket, arkitektonisk tillader det ikke introduktionen af ​​sit eget rullende materiel.

Jeg kom selv til emnet jernbane i 2007, da jeg begyndte at arbejde i JSC VELNII, som forskningsstipendiat, og efter at have forsvaret sin ph.d.-afhandling i 2008, som seniorforsker. Det var da, jeg stiftede bekendtskab med de seneste resultater inden for jernbanesimuleringsspil på det tidspunkt. Og jeg kunne ikke lide, hvad jeg så, og ZDSimulator-projektet eksisterede ikke på det tidspunkt. Senere, fascineret af dynamikken i rullende materiel, kom jeg til Rostov State University of Transport (RGUPS) med emnet for en doktorafhandling om et godstogs bremsedynamik. I dag leder jeg udviklingen af ​​uddannelseskomplekser for jernbanetransport til vores universitet og underviser i specialiserede discipliner ved Institut for Traction Rolling Materiel.

I forbindelse med alt det ovenstående opstod ideen om at skabe en simulator, der ville give udvikleren af ​​en add-on til den at få fuld kontrol over de fysiske processer, der foregår i det rullende materiel. Svarende til Orbiter-rumsimulatoren, som jeg engang udviklede en tilføjelse til i form af en familie af løfteraketter baseret på R-7. For et år siden tog jeg fat på dette arbejde og kastede mig ud i det. 26. december 2018 så lyset her denne teknologidemo.

Mit arbejde blev bemærket af entusiaster og velkendt i kredse af jernbanesimmere, skaberen af ​​visuelt indhold til ZDsimulator Roman Biryukov (Romych Russian Railways) tilbød mig hjælp og samarbejde i den videre udvikling af projektet. Senere sluttede en anden udvikler sig til os - Alexander Mishchenko (Ulovskii 2017), ruteopretter til ZDsimulator. Vores samarbejde førte os til vores første udgivelse. Videoen viser et overblik over, hvordan spillet ser ud til dets første udgivelse

Funktioner i RRS-simulatoren

Først og fremmest er det en åben softwarearkitektur. For ikke at nævne det faktum, at simulatorkoden er åben, er der en API og SDK rettet mod udviklere af tredjeparts-tilføjelser til den. Adgangsbarrieren er ret høj - grundlæggende C++ udviklingsfærdigheder er påkrævet. Simulatoren er skrevet i den ved hjælp af GCC-kompileren og dens MinGW-variant til Windows-operativsystemet. Derudover er det tilrådeligt for udvikleren at være bekendt med Qt-rammerne, da mange af dets koncepter ligger til grund for spillets arkitektur.

Men med rettidig omhu og ønske åbner dette projekt enorme muligheder for tilføjelsesudvikleren. Rullende materiel implementeres i form af moduler baseret på dynamiske biblioteker. Det vigtigste strukturelle element i simulatoren er en enhed af rullende materiel, eller mobil enhed (MU) - en vogn (ikke-selvkørende eller som del af et tog med flere enheder) eller en sektion af et lokomotiv. API'en gør det muligt at indstille det drejningsmoment, der påføres PE-hjulsættene, som svar på at modtage hjulsættenes vinkelhastighed, såvel som eksterne parametre, såsom spænding og strømtype i kontaktnettet. Simulatoren ved ikke andet og vil ikke vide, hvilket overlader fysikken i det interne udstyr til samvittigheden hos udvikleren af ​​et bestemt lokomotiv eller en bestemt bil.

Det er ikke svært at gætte, at en sådan relativt lav-niveau tilgang gør det muligt at implementere de mindste nuancer af lokomotivkredsløbet. Derudover inkluderer simulatorsættet et sæt standardudstyr installeret på indenlandsk rullende materiel: førertogkran konv. nr. 395, luftfordeler stand. nr. 242, hjælpebremseventil tilstand. nr. 254 og andre dele af bremseudstyr. Udvikleren af ​​tilføjelsen behøver kun at forbinde disse elementer til det pneumatiske kredsløb af et specifikt lokomotiv eller en vogn. Derudover er der en API til at lave dine egne hardwareenheder.

Arkitektonisk er RRS bygget på samspillet mellem to hovedprocesser

  • simulator — fysisk togdynamikmotor TrainEngine 2. Implementerer togbevægelsens fysik under hensyntagen til mange eksterne faktorer, idet der tages højde for interaktionen mellem bevægelige enheder gennem koblingsanordninger, behandler data, der kommer fra eksterne moduler, der implementerer driftsfysikken for udstyr i rullende materiel
  • seeren — et grafisk delsystem, der visualiserer togbevægelser, bygget på basis af en grafisk motor OpenSceneGraph

Disse undersystemer interagerer med hinanden gennem delt hukommelse, implementeret baseret på QSharedMemory-klassen i Qt-rammeværket. De første demoer brugte socket-baseret IPC, og der er planer om at vende tilbage til denne teknologi i fremtiden under hensyntagen til forfining af nogle dele af simulatoren og behov med henblik på fremtiden. Overgangen til fælles hukommelse var til en vis grad en påtvunget foranstaltning, der har udlevet sin brugbarhed.

Jeg vil ikke beskrive nuancerne - mange af omskiftelserne i udviklingen af ​​dette projekt er allerede beskrevet i mine publikationer om ressourcen, især jeg har en ret omfattende en række tutorials om OpenSceneGraph-motoren, som voksede ud af praksis med at arbejde på dette projekt.

Ikke alt i projektet er så glat, som vi gerne ville. Især det grafiske undersystem er langt fra perfekt med hensyn til gengivelseskvalitet, og simmens ydeevne lader meget tilbage at ønske. Denne udgivelse har ét mål - at introducere fællesskabet af jernbanetransportentusiaster til projektet, skitsere dets muligheder og endelig skabe en åben jernbanesimulator på tværs af platforme med en avanceret API til tilføjelsesudviklere.

Udsigterne

Udsigterne afhænger af dig, vores kære fremtidige brugere og udviklere. Projektet er åbent og eksisterer officielle hjemmesidehvor du kan downloade simulatoren, fra dokumentation, hvis sammensætning løbende vil blive genopfyldt. Eksisterer forummet projekt, VK-gruppeOg youtube kanal, hvor du kan få den mest detaljerede rådgivning og assistance.

Tak for din opmærksomhed!

Kilde: www.habr.com

Tilføj en kommentar