Russian Railway Simulator (RRS): unua publika eldono

La tago, kiun mi atendis, alvenis, kiam mi povas finfine prezenti ĉi tiun evoluon. La projekto estis komencita ĝuste antaŭ unu jaro, almenaŭ la 1-an de septembro 2018 RRS-deponejoj sur Gtihub la unua transdono havas ĝuste tiun ĉi daton.

Persontrajno ĉe Rostov Ĉefstacio (klakebla)

Russian Railway Simulator (RRS): unua publika eldono

Kio estas RRS? Ĉi tio estas malfermita transplatforma simulilo de rulvaro de 1520 mm mezurilo. La leganto kompreneble faros la demandon: "Pardonu, por kio ĉi tiu projekto estas, se ekzistas sufiĉa nombro da fervojaj simuliloj, kaj komercaj kaj malfermitaj?" Por la respondo al ĉi tiu demando, mi sugestas rigardi sub la kato

Historio de la projekto

Iam, en 2001, ĝi estis publikigita Microsoft Train Simulator (MSTS), kiu estigis grandegan komunumon de fervojaj simmers en nia lando. Dum la pluraj jaroj, kiam ĉi tiu projekto ekzistis (ĝis Mikrosofto forlasis ĝin, transirante al pli interesaj aferoj por ĝi, kiel la bankroto de Nokia, ktp.), la projekto akiris amason da aldonoj kreitaj por ĝi: itineroj, rulvaro, scenaroj.

Surbaze de MSTS, kelkaj aliaj projektoj poste estis kreitaj, kiel ekzemple OpenRails, RTrainSim (RTS) kaj aliaj aldonoj kaj derivaĵoj. Aperis ankaŭ komercaj projektoj, kiel la famaj Trainz. Kaj ĉio estus en ordo, sed multaj ŝatantoj de fervoja transporto ne kontentiĝas pri ĉi tiuj produktoj pro sufiĉe objektivaj kialoj - ili neniel reflektas la specifaĵojn de hejma rulvaro funkciigata kaj disvolvita en la postsovetia spaco. Ĉi tio estas precipe akra kiam oni rigardas kiel trajnobremsoj estas efektivigitaj - neniu el la listigitaj projektoj havas aŭ havos normalan efektivigon de aŭtomataj bremsoj de la Matrosov-sistemo.

En la ne tiel malproksima jaro 2008 aperis alia projekto - ZDSimulator, evoluigita fare de Vjacheslav Usov. La projekto estas rimarkinda pro tio, ke ĝi konsideras kaj korektas la supre menciitajn mankojn, dum komence koncentriĝas pri rulvaro de rusa mezurilo. Sed estas unu granda "sed" - la projekto estas proprieta kaj fermita, arkitekture ne permesante la enkondukon de sia propra rulvaro.

Mi mem venis al la fervoja temo en 2007, kiam mi eklaboris en JSC VELNII, kiel esplorkunlaboranto, kaj post defendado de sia Ph.D.-tezo en 2008, kiel altranga esplorkunlaboranto. Ĝuste tiam mi konatiĝis kun la plej novaj atingoj en la kampo de fervojaj simuladaj ludoj en tiu tempo. Kaj mi ne ŝatis tion, kion mi vidis, kaj la projekto ZDSimulator ne ekzistis tiutempe. Poste, fascinita de la dinamiko de rulvaro, mi venis al la Ŝtata Universitato de Transporto de Rostova (RGUPS) kun la temo de doktora disertacio pri la bremsa dinamiko de vartrajno. Hodiaŭ mi gvidas la disvolviĝon de fervojaj transportaj trejnadkompleksoj por nia universitato kaj instruas specialajn disciplinojn ĉe la Departemento de Tirado-Rulvaro.

Lige kun ĉio ĉi-supra, ekestis la ideo krei simulilon, kiu permesus al la programisto de aldonaĵo por ke ĝi akiru plenan kontrolon de la fizikaj procezoj okazantaj en la rulvaro. Simile al la spaca simulilo Orbiter, por kiu mi iam evoluigis aldonon en la formo de familio de lanĉaj veturiloj bazitaj sur la R-7. Antaŭ unu jaro mi ekprenis ĉi tiun laboron kaj ĵetis min en ĝin. La 26-an de decembro 2018 vidis la lumon ĉi tie ĉi tiu teknologia demonstraĵo.

Mia laboro estis rimarkita de entuziasmuloj, kaj konata en la rondoj de fervojaj simmers, la kreinto de vida enhavo por ZDsimulator Roman Biryukov (Romych Rusaj Fervojoj) proponis al mi helpon kaj kunlaboron en la plua evoluo de la projekto. Poste alia programisto aliĝis al ni - Aleksandro Miŝĉenko (Ulovskii2017), itinerkreinto por ZDsimulator. Nia kunlaboro kondukis nin al nia unua eldono. La video montras iun superrigardon pri kiel la ludo aspektas por sia unua eldono

Trajtoj de la RRS-Simulilo

Antaŭ ĉio, ĝi estas malferma programara arkitekturo. Sen mencii la fakton, ke la simulilo-kodo estas malfermita, ekzistas API kaj SDK celita al programistoj de triaj aldonaĵoj al ĝi. La enirbaro estas sufiĉe alta - bazaj C++-disvolvaj kapabloj estas bezonataj. La simulilo estas skribita en ĝi, uzante la GCC-kompililon kaj ĝian MinGW-variaĵon por la Vindoza operaciumo. Krome, estas konsilinde ke la programisto konu la kadron Qt, ĉar multaj el ĝiaj konceptoj subestas la arkitekturon de la ludo.

Tamen, kun zorgo kaj deziro, ĉi tiu projekto malfermas enormajn ŝancojn por la aldonaĵa programisto. Rulvaro estas efektivigita en la formo de moduloj bazitaj sur dinamikaj bibliotekoj. La ĉefa struktura elemento en la simulilo estas unuo de rulvaro, aŭ movebla unuo (MU) - aŭto (ne-memvetura aŭ kiel parto de multunua trajno) aŭ sekcio de lokomotivo. La API ebligas agordi la tordmomanton aplikitan al la PE-radoj, en respondo ricevante la angulan rapidon de la radaro, same kiel eksterajn parametrojn, kiel tensio kaj tipo de kurento en la kontakta reto. La simulilo scias nenion alian kaj ne volas scii, kio lasas la fizikon de la interna ekipaĵo al la konscienco de la programisto de aparta lokomotivo aŭ aŭtomobilo.

Ne estas malfacile konjekti, ke tia relative malaltnivela aliro ebligas efektivigi la plej malgrandajn nuancojn de la lokomotiva cirkvito. Krome, la simulilo-kompleto inkluzivas aron de normaj ekipaĵoj instalitaj sur hejma rulvaro: ŝoforo-trajna gruo konv. n-ro 395, kondiĉo de aerdistribuo. N-ro 242, kondiĉo de helpa bremsa valvo. n-ro 254 kaj aliaj elementoj de bremsa ekipaĵo. La programisto de la aldonaĵo nur bezonas konekti ĉi tiujn elementojn en la pneŭmatikan cirkviton de specifa lokomotivo aŭ aŭto. Krome, ekzistas API por krei viajn proprajn aparatajn unuojn.

Arkitekture, RRS estas konstruita sur la interagado de du ĉefaj procezoj

  • simulilo — fizika trajno dinamika motoro TrainEngine 2. Realigas la fizikon de trajno movado, konsiderante multajn eksterajn faktorojn, konsiderante la interagadon de moviĝantaj unuoj tra kuplaj aparatoj, prilaboras datumojn venantajn de eksteraj moduloj kiuj efektivigas la fizikon de funkciado de rulvaro ekipaĵo.
  • spektanto — grafika subsistemo, kiu bildigas trajnomovon, konstruitan surbaze de grafika motoro OpenSceneGraph

Tiuj subsistemoj interagas inter si per komuna memoro, efektivigita surbaze de la QSharedMemory-klaso de la Qt-kadro. La unuaj demonstraĵoj uzis IPC bazitan en ingo, kaj estas planoj reveni al ĉi tiu teknologio en la estonteco, konsiderante la rafinadon de iuj partoj de la simulilo kaj bezonoj kun okulo al la estonteco. La transiro al komuna memoro estis iagrade devigita mezuro, kiu postvivis ĝian utilecon.

Mi ne priskribos la nuancojn - multaj el la sortoŝanĝoj de la evoluo de ĉi tiu projekto estas jam skizitaj en miaj publikaĵoj pri la rimedo, precipe, mi havas sufiĉe ampleksan serio de lerniloj pri la OpenSceneGraph-motoro, kiu kreskis el la praktiko labori pri ĉi tiu projekto.

Ne ĉio en la projekto estas tiel glata kiel ni ŝatus. Precipe, la grafika subsistemo estas malproksima de perfekta laŭ kvalito de bildigo, kaj la agado de la sim lasas multe por deziri. Ĉi tiu eldono havas unu celon - enkonduki la komunumon de fervoja transport-entuziasmuloj al la projekto, skizi ĝiajn kapablojn kaj finfine krei malferman, plurplatforman fervojan simulilon kun altnivela API por aldonaj programistoj.

Perspektivoj

Perspektivoj dependas de vi, niaj karaj estontaj uzantoj kaj programistoj. La projekto estas malfermita kaj ekzistas oficiala retejode kie vi povas elŝuti la simulilon dokumentado, kies konsisto estos senĉese replenigita. Ekzistas la forumo projekto, VK-grupokaj Jutuba kanalo, kie vi povas ricevi la plej detalan konsilon kaj helpon.

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

fonto: www.habr.com

Aldoni komenton