Simulator ruske željeznice (RRS): prvo javno izdanje

Došao je dan koji sam čekao kada konačno mogu da predstavim ovaj razvoj događaja. Projekat je započet prije tačno godinu dana, najmanje 1. septembra 2018. godine RRS spremišta na Gtihub-u prvo urezivanje ima upravo ovaj datum.

Putnički voz na glavnoj stanici Rostov (može se kliknuti)

Simulator ruske željeznice (RRS): prvo javno izdanje

Šta je RRS? Ovo je otvoreni simulator unakrsnih platformi željezničkih vozila širine 1520 mm. Čitalac će prirodno postaviti pitanje: „Izvinite, čemu ovaj projekat, ako postoji dovoljan broj željezničkih simulatora, komercijalnih i otvorenih?“ Za odgovor na ovo pitanje predlažem da pogledate ispod mačke

Istorija projekta

Jednom davno, 2001. godine, objavljena je Microsoft Train Simulator (MSTS), što je izrodilo ogromnu zajednicu železničara u našoj zemlji. Tokom nekoliko godina koliko je ovaj projekat postojao (sve dok ga Microsoft nije napustio, prešavši na zanimljivije stvari za njega, poput bankrota Nokije itd.), projekat je dobio masu dodataka kreiranih za njega: rute, vozni park, scenarija.

Na osnovu MSTS-a naknadno je kreiran niz drugih projekata, kao npr OpenRails, RTrainSim (RTS) i drugih dodataka i izvedenica. Pojavili su se i komercijalni projekti, poput čuvenog trainz. I sve bi bilo u redu, ali mnogi ljubitelji željezničkog transporta nisu zadovoljni ovim proizvodima iz sasvim objektivnih razloga - oni ni na koji način ne odražavaju specifičnosti domaćeg voznog parka koji se koristi i razvija na postsovjetskom prostoru. Ovo je posebno akutno kada se pogleda kako se implementiraju kočnice vozova – nijedan od navedenih projekata nema niti će imati normalnu implementaciju automatskih kočnica sistema Matrosov.

Ne tako daleke 2008. godine pojavio se još jedan projekat - ZDSimulator, koji je razvio Vjačeslav Usov. Projekat je izvanredan po tome što uzima u obzir i ispravlja gore navedene nedostatke, a u početku se fokusira na vozni park ruskog koloseka. Ali postoji jedno veliko "ali" - projekat je vlasnički i zatvoren, arhitektonski ne dozvoljava uvođenje vlastitog voznog parka.

I sam sam došao na temu železnice 2007. godine, kada sam počeo da radim JSC VELNII, kao naučni saradnik, a nakon odbrane doktorske teze 2008. godine, kao viši naučni saradnik. Tada sam se upoznao sa najnovijim dostignućima u oblasti igara simulacije železnice tog vremena. I nije mi se svidjelo ono što sam vidio, a projekat ZDSimulator u to vrijeme nije postojao. Kasnije, fasciniran dinamikom voznog parka, došao sam na Rostovski državni univerzitet za transport (RGUPS) sa temom doktorske disertacije o dinamici kočenja teretnog voza. Danas vodim razvoj kompleksa za obuku u željezničkom saobraćaju za naš univerzitet i predajem specijalističke discipline na Katedri za vučna vozila.

U vezi sa svim navedenim, nastala je ideja o kreiranju simulatora koji bi omogućio programeru dodatka za njega da stekne potpunu kontrolu nad fizičkim procesima koji se odvijaju u voznom parku. Slično svemirskom simulatoru Orbiter, za koji sam svojevremeno razvio dodatak u obliku porodice lansirnih vozila baziranih na R-7. Prije godinu dana sam se prihvatio ovog posla i bacio se na njega. 26. decembar 2018. ugledao je svjetlo ovdje ovaj demo tehnologije.

Moj rad su zapazili entuzijasti, i poznati u krugovima željezničara, kreator vizuelnog sadržaja za ZDsimulator Roman Birjukov (Ruske željeznice Romych) ponudio mi pomoć i saradnju u daljem razvoju projekta. Kasnije nam se pridružio još jedan programer - Aleksandar Miščenko (Ulovskii2017), kreator rute za ZDsimulator. Naša suradnja nas je dovela do našeg prvog izdanja. Video prikazuje neki pregled kako igra izgleda za svoje prvo izdanje

Karakteristike RRS Simulatora

Prije svega, to je otvorena softverska arhitektura. Da ne spominjemo činjenicu da je kod simulatora otvoren, postoji API i SDK namijenjen programerima dodataka treće strane za njega. Ulazna barijera je prilično visoka - potrebne su osnovne vještine razvoja C++-a. U njemu je napisan simulator, koristeći GCC kompajler i njegovu MinGW varijantu za Windows operativni sistem. Pored toga, preporučljivo je da programer bude upoznat sa Qt okvirom, pošto mnogi njegovi koncepti leže u osnovi arhitekture igre.

Međutim, uz dužnu pažnju i želju, ovaj projekat otvara ogromne mogućnosti za programera dodataka. Vozni park je implementiran u obliku modula baziranih na dinamičkim bibliotekama. Glavni strukturni element u simulatoru je jedinica voznog parka, ili mobilna jedinica (MU) - automobil (nesamohodni ili kao dio voza sa više jedinica) ili dio lokomotive. API omogućava podešavanje momenta primenjenog na PE garniture točkova, kao odgovor na dobijanje ugaone brzine garnitura točkova, kao i eksternih parametara, kao što su napon i vrsta struje u kontaktnoj mreži. Simulator ništa drugo ne zna i ne želi da zna, što fiziku unutrašnje opreme prepušta savjesti programera određene lokomotive ili automobila.

Nije teško pretpostaviti da takav pristup na relativno niskom nivou omogućava implementaciju najsitnijih nijansi lokomotivskog kruga. Osim toga, komplet za simulator uključuje set standardne opreme instalirane na domaćim voznim parkovima: dizalica za mašinovođu konv. br. 395, stanje razvodnika zraka. br. 242, stanje ventila pomoćne kočnice. br. 254 i ostali elementi kočione opreme. Programer dodatka treba samo da poveže ove elemente u pneumatski krug određene lokomotive ili automobila. Osim toga, postoji API za kreiranje vlastitih hardverskih jedinica.

Arhitektonski, RRS je izgrađen na interakciji dva glavna procesa

  • simulator — motor fizičke dinamike vozova TrainEngine 2. Implementira fiziku kretanja voza, uzimajući u obzir mnoge vanjske faktore, uzimajući u obzir interakciju pokretnih jedinica kroz uređaje za spajanje, obrađuje podatke koji dolaze iz vanjskih modula koji implementiraju fiziku rada opreme željezničkih vozila
  • gledalac — grafički podsistem koji vizualizuje kretanje voza, izgrađen na bazi grafičkog motora OpenSceneGraph

Ovi podsistemi međusobno komuniciraju putem zajedničke memorije, implementirane na osnovu QSharedMemory klase Qt okvira. Prvi demoi su koristili IPC baziran na socket-u, a postoje planovi da se u budućnosti vratimo ovoj tehnologiji, uzimajući u obzir usavršavanje nekih dijelova simulatora i potrebe s pogledom na budućnost. Prelazak na zajedničko pamćenje bio je u određenoj mjeri iznuđena mjera koja je nadživjela svoju korist.

Neću opisivati ​​nijanse - mnoge peripetije razvoja ovog projekta već su navedene u mojim publikacijama na resursu, posebno imam prilično opsežan serija tutorijala o OpenSceneGraph motoru, koji je izrastao iz prakse rada na ovom projektu.

Nije sve u projektu tako glatko kako bismo željeli. Konkretno, grafički podsistem je daleko od savršenog u pogledu kvaliteta renderovanja, a performanse sim-a ostavljaju mnogo da se požele. Ovo izdanje ima jedan cilj - uvesti zajednicu entuzijasta željezničkog transporta u projekat, ocrtati njegove mogućnosti i konačno kreirati otvoreni, višeplatformski željeznički simulator s naprednim API-jem za programere dodataka.

Perspektive

Izgledi zavise od vas, dragi naši budući korisnici i programeri. Projekat je otvoren i postoji službena web stranicaodakle možete preuzeti simulator dokumentaciju, čiji će se sastav kontinuirano dopunjavati. Postoji forum projekat, VK grupai YouTube kanal, gdje možete dobiti najdetaljniji savjet i pomoć.

Spasibo za vnimanie!

izvor: www.habr.com

Dodajte komentar