Simulatori i hekurudhave ruse (RRS): publikimi i parë publik

Dita që kam pritur ka ardhur kur më në fund mund të prezantoj këtë zhvillim. Projekti ka nisur pikërisht një vit më parë, të paktën më 1 shtator 2018 Depot e RRS në Gtihub kryerja e parë ka pikërisht këtë datë.

Treni i pasagjerëve në stacionin kryesor të Rostovit (i klikuar)

Simulatori i hekurudhave ruse (RRS): publikimi i parë publik

Çfarë është RRS? Ky është një simulator i hapur ndër-platformë i mjeteve lëvizëse me matës 1520 mm. Lexuesi natyrshëm do të bëjë pyetjen: "Më falni, për çfarë është ky projekt, nëse ka një numër të mjaftueshëm simulatorësh hekurudhor, komercial dhe të hapur?" Për përgjigjen e kësaj pyetjeje, unë sugjeroj të shikoni nën mace

Historia e projektit

Një herë e një kohë, në vitin 2001, u botua Microsoft Train Simulator (MSTS), gjë që shkaktoi një bashkësi të madhe hekurudhore që ziejnë në vendin tonë. Gjatë disa viteve që ekzistonte ky projekt (derisa Microsoft e braktisi atë, duke kaluar në gjëra më interesante për të, si falimentimi i Nokia-s, etj.), projekti fitoi një masë shtesash të krijuara për të: rrugë, mjete lëvizëse, skenarë.

Bazuar në MSTS, më pas u krijuan një sërë projektesh të tjera, si p.sh Open Rails, RTrainSim (RTS) dhe shtesa dhe derivate të tjera. U shfaqën edhe projekte komerciale, si të famshmit Trainz. Dhe gjithçka do të ishte mirë, por shumë tifozë të transportit hekurudhor nuk janë të kënaqur me këto produkte për arsye mjaft objektive - ato në asnjë mënyrë nuk pasqyrojnë specifikat e mjeteve lëvizëse vendase të operuara dhe të zhvilluara në hapësirën post-sovjetike. Kjo është veçanërisht e mprehtë kur shikoni se si zbatohen frenat e trenit - asnjë nga projektet e listuara nuk ka ose do të ketë një zbatim normal të frenave automatike të sistemit Matrosov.

Në vitin jo aq të largët 2008, u shfaq një projekt tjetër - ZDSimulator, zhvilluar nga Vyacheslav Usov. Projekti është i jashtëzakonshëm në atë që merr parasysh dhe korrigjon mangësitë e lartpërmendura, duke u fokusuar fillimisht në mjetet lëvizëse ruse me matës. Por ka një "por" të madh - projekti është i pronarit dhe i mbyllur, arkitektonikisht nuk lejon futjen e mjeteve të tij lëvizëse.

Unë vetë erdha në temën e hekurudhave në vitin 2007, kur fillova të punoja SHA VELNII, si hulumtues, dhe pasi mbrojti tezën e doktoraturës në vitin 2008, si studiues i lartë. Pikërisht atëherë u njoha me arritjet më të fundit në fushën e lojërave simuluese hekurudhore në atë kohë. Dhe nuk më pëlqeu ajo që pashë, dhe projekti ZDSimulator nuk ekzistonte në atë kohë. Më vonë, i magjepsur nga dinamika e mjeteve lëvizëse, erdha në Universitetin Shtetëror të Transportit të Rostovit (RGUPS) me temën e një disertacioni doktorature mbi dinamikën e frenimit të një treni mallrash. Sot unë drejtoj zhvillimin e komplekseve të trajnimit të transportit hekurudhor për universitetin tonë dhe mësoj disiplina të specializuara në Departamentin e Aksioneve të Transportit.

Në lidhje me të gjitha sa më sipër, lindi ideja e krijimit të një simulatori që do t'i lejonte zhvilluesit të një shtesë për të të fitonte kontroll të plotë mbi proceset fizike që ndodhin në mjetet lëvizëse. Ngjashëm me simulatorin hapësinor Orbiter, për të cilin dikur zhvillova një shtesë në formën e një familjeje mjetesh lëshimi të bazuara në R-7. Një vit më parë u mora me këtë punë dhe u futa në të. 26 dhjetor 2018 pa dritën këtu këtë demo të teknologjisë.

Puna ime u vu re nga të apasionuarit, dhe i njohur në rrethet e hekurudhave, krijuesi i përmbajtjes vizuale për ZDsimulator Roman Biryukov (Hekurudhat Ruse Romych) më ofroi ndihmë dhe bashkëpunim në zhvillimin e mëtejshëm të projektit. Më vonë një tjetër zhvillues na u bashkua - Alexander Mishchenko (Ulovskii2017), krijuesi i rrugës për ZDsimulator. Bashkëpunimi ynë na çoi në publikimin tonë të parë. Videoja tregon një përmbledhje se si duket loja për lëshimin e saj të parë

Karakteristikat e Simulatorit RRS

Para së gjithash, është një arkitekturë e softuerit të hapur. Për të mos përmendur faktin që kodi i simulatorit është i hapur, ekziston një API dhe SDK që synon zhvilluesit e shtesave të palëve të treta në të. Barriera e hyrjes është mjaft e lartë - kërkohen aftësi bazë të zhvillimit të C++. Simulatori është shkruar në të, duke përdorur përpiluesin GCC dhe variantin e tij MinGW për sistemin operativ Windows. Për më tepër, është e këshillueshme që zhvilluesi të jetë i njohur me kornizën Qt, pasi shumë nga konceptet e tij qëndrojnë në themel të arkitekturës së lojës.

Megjithatë, me zellin dhe dëshirën e duhur, ky projekt hap mundësi të mëdha për zhvilluesin e shtesave. Aksionet lëvizëse zbatohen në formën e moduleve të bazuara në biblioteka dinamike. Elementi kryesor strukturor në simulator është një njësi mjetesh lëvizëse, ose njësi e lëvizshme (MU) - një makinë (jo vetëlëvizëse ose si pjesë e një treni me shumë njësi) ose një seksion i një lokomotivë. API bën të mundur vendosjen e çift rrotullues të aplikuar në grupet e rrotave PE, në përgjigje të marrjes së shpejtësisë këndore të grupeve të rrotave, si dhe parametrave të jashtëm, si tensioni dhe lloji i rrymës në rrjetin e kontaktit. Simulatori nuk di asgjë tjetër dhe nuk dëshiron të dijë, gjë që e lë fizikën se si funksionojnë pajisjet e brendshme në ndërgjegjen e zhvilluesit të një lokomotivë ose makine të veçantë.

Nuk është e vështirë të merret me mend se një qasje e tillë relativisht e nivelit të ulët bën të mundur zbatimin e nuancave më të vogla të qarkut të lokomotivës. Përveç kësaj, kompleti i simulatorit përfshin një grup pajisjesh standarde të instaluara në mjetet lëvizëse shtëpiake: vinçi i trenit të shoferit konv. Nr 395 gjendja ajri distributor. Nr 242, gjendja e valvulës ndihmëse të frenave. Nr. 254 dhe elementë të tjerë të pajisjeve të frenimit. Zhvilluesi i shtesës duhet vetëm t'i lidhë këta elementë në qarkun pneumatik të një lokomotivë ose makine specifike. Përveç kësaj, ekziston një API për krijimin e njësive tuaja të harduerit.

Arkitekturisht, RRS është ndërtuar mbi ndërveprimin e dy proceseve kryesore

  • imitues — motori i dinamikës së trenit fizik TrainEngine 2. Zbaton fizikën e lëvizjes së trenit, duke marrë parasysh shumë faktorë të jashtëm, duke marrë parasysh ndërveprimin e njësive lëvizëse përmes pajisjeve bashkuese, përpunon të dhënat që vijnë nga modulet e jashtme që zbatojnë fizikën e funksionimit të pajisjeve të mjeteve lëvizëse
  • shikues — një nënsistem grafik që vizualizon lëvizjen e trenit, i ndërtuar mbi bazën e një motori grafik OpenSceneGraph

Këto nënsisteme ndërveprojnë me njëri-tjetrin përmes memories së përbashkët, të implementuar bazuar në klasën QSharedMemory të kornizës Qt. Demonstrimet e para përdorën IPC të bazuar në socket dhe ka plane për t'u rikthyer në këtë teknologji në të ardhmen, duke marrë parasysh përsosjen e disa pjesëve të simulatorit dhe nevojat me një sy në të ardhmen. Kalimi në kujtesën e përbashkët ishte deri diku një masë e detyruar që e ka mbijetuar dobinë e saj.

Unë nuk do t'i përshkruaj nuancat - shumë nga peripecitë e zhvillimit të këtij projekti janë përshkruar tashmë në botimet e mia mbi burimin, në veçanti, unë kam një mjaft të gjerë një seri mësimesh mbi motorin OpenSceneGraph, e cila u rrit nga praktika e punës në këtë projekt.

Jo gjithçka në projekt është aq e qetë sa do të donim. Në veçanti, nënsistemi grafik është larg nga perfekti për sa i përket cilësisë së paraqitjes, dhe performanca e kartës SIM lë shumë për të dëshiruar. Ky version ka një qëllim - të prezantojë komunitetin e entuziastëve të transportit hekurudhor me projektin, të përvijojë aftësitë e tij dhe në fund të krijojë një simulator hekurudhor të hapur, ndër-platformë me një API të avancuar për zhvilluesit e shtesave.

Perspektivat

Perspektivat varen nga ju, përdoruesit dhe zhvilluesit tanë të dashur të ardhshëm. Projekti është i hapur dhe ekziston website zyrtarnga ku mund ta shkarkoni simulatorin dokumentacionin, përbërja e së cilës do të plotësohet vazhdimisht. ekziston forumi projekti, Grupi VKDhe Kanali në YouTube, ku mund të merrni këshillat dhe ndihmën më të detajuar.

Спасибо за внимание!

Burimi: www.habr.com

Shto një koment