Russian Railway Simulator (RRS): unang pampublikong paglabas

Dumating na ang araw na pinakahihintay ko kung kailan ko mailalahad ang pag-unlad na ito. Ang proyekto ay nagsimula nang eksaktong isang taon na ang nakalipas, noong Setyembre 1, 2018, hindi bababa sa RRS repository sa Gtihub ang unang commit ay may eksaktong petsang ito.

Pampasaherong tren sa Rostov Main station (naki-click)

Russian Railway Simulator (RRS): unang pampublikong paglabas

Ano ang RRS? Ito ay isang open cross-platform simulator ng 1520 mm gauge rolling stock. Ang mambabasa ay natural na magtatanong ng tanong: "Mawalang-galang, para saan ang proyektong ito, kung mayroong sapat na bilang ng mga simulator ng tren, parehong komersyal at bukas?" Para sa sagot sa tanong na ito, iminumungkahi kong tumingin sa ilalim ng pusa

Kasaysayan ng proyekto

Noong unang panahon, noong 2001, ito ay nai-publish Microsoft Train Simulator (MSTS), na nagbunga ng malaking komunidad ng mga railway simmers sa ating bansa. Sa loob ng ilang taon na umiral ang proyektong ito (hanggang sa inabandona ito ng Microsoft, lumipat sa mas kawili-wiling mga bagay para dito, tulad ng pagkabangkarote ng Nokia, atbp.), ang proyekto ay nakakuha ng maraming mga karagdagan na nilikha para dito: mga ruta, rolling stock, mga senaryo.

Batay sa MSTS, ang ilang iba pang mga proyekto ay kasunod na ginawa, tulad ng OpenRails, RTrainSim (RTS) at iba pang mga karagdagan at derivatives. Lumitaw din ang mga komersyal na proyekto, tulad ng sikat trainz. At ang lahat ay magiging maayos, ngunit maraming mga tagahanga ng transportasyon ng tren ay hindi nasisiyahan sa mga produktong ito para sa medyo layunin na mga kadahilanan - hindi nila sinasalamin ang mga detalye ng domestic rolling stock na pinatatakbo at binuo sa post-Soviet space. Ito ay lalo na talamak kapag tinitingnan kung paano ipinatupad ang mga preno ng tren - wala sa mga nakalistang proyekto ang mayroon o magkakaroon ng normal na pagpapatupad ng mga awtomatikong preno ng sistema ng Matrosov.

Sa hindi gaanong malayong taon ng 2008, lumitaw ang isa pang proyekto - ZDSimulator, na binuo ni Vyacheslav Usov. Ang proyekto ay kapansin-pansin dahil ito ay isinasaalang-alang at itinatama ang nabanggit na mga pagkukulang, habang sa una ay nakatuon sa Russian gauge rolling stock. Ngunit mayroong isang malaking "ngunit" - ang proyekto ay pagmamay-ari at sarado, ayon sa arkitektura ay hindi pinapayagan ang pagpapakilala ng sarili nitong rolling stock.

Ako mismo ay dumating sa paksa ng tren noong 2007, nang magsimula akong magtrabaho JSC VELNII, bilang isang research fellow, at pagkatapos ipagtanggol ang kanyang Ph.D. thesis noong 2008, bilang senior research fellow. Noon ko nakilala ang pinakabagong mga nagawa sa larangan ng mga larong simulation ng tren noong panahong iyon. At hindi ko nagustuhan ang nakita ko, at ang proyekto ng ZDSimulator ay wala sa oras na iyon. Nang maglaon, nabighani sa dinamika ng rolling stock, dumating ako sa Rostov State University of Transport (RGUPS) na may paksa ng isang disertasyon ng doktor sa dinamika ng pagpepreno ng isang tren ng kargamento. Ngayon, pinamumunuan ko ang pagbuo ng mga kumplikadong pagsasanay sa transportasyon ng tren para sa aming unibersidad at nagtuturo ng mga espesyal na disiplina sa Department of Traction Rolling Stock.

Kaugnay ng lahat ng nasa itaas, lumitaw ang ideya ng paglikha ng isang simulator na magpapahintulot sa developer ng isang add-on para dito na magkaroon ng ganap na kontrol sa mga pisikal na proseso na nagaganap sa rolling stock. Katulad ng Orbiter space simulator, kung saan minsan ay nakabuo ako ng karagdagan sa anyo ng isang pamilya ng mga sasakyang inilunsad batay sa R-7. Isang taon na ang nakalipas kinuha ko ang gawaing ito at inihagis ang aking sarili dito. Disyembre 26, 2018 nakita ang liwanag dito teknolohiyang demo na ito.

Ang aking trabaho ay napansin ng mga mahilig, at kilala sa mga lupon ng mga railway simmers, ang lumikha ng visual na nilalaman para sa ZDsimulator Roman Biryukov (Romych Russian Railways) nag-alok sa akin ng tulong at kooperasyon sa karagdagang pagpapaunlad ng proyekto. Nang maglaon ay sumali sa amin ang isa pang developer - Alexander Mishchenko (Ulovskii2017), tagalikha ng ruta para sa ZDsimulator. Ang aming pakikipagtulungan ay humantong sa amin sa aming unang paglabas. Ang video ay nagpapakita ng ilang pangkalahatang-ideya kung paano ang hitsura ng laro para sa unang paglabas nito

Mga tampok ng RRS Simulator

Una sa lahat, ito ay isang bukas na arkitektura ng software. Hindi banggitin ang katotohanan na ang simulator code ay bukas, mayroong isang API at SDK na naglalayon sa mga developer ng mga third-party na add-on dito. Ang hadlang sa pagpasok ay medyo mataas - kinakailangan ang mga pangunahing kasanayan sa pagbuo ng C++. Ang simulator ay nakasulat dito, gamit ang GCC compiler at ang MinGW na variant nito para sa Windows operating system. Bilang karagdagan, ipinapayong maging pamilyar ang developer sa Qt framework, dahil marami sa mga konsepto nito ang sumasailalim sa arkitektura ng laro.

Gayunpaman, sa angkop na pagsusumikap at pagnanais, ang proyektong ito ay nagbubukas ng napakalaking pagkakataon para sa add-on na developer. Ang rolling stock ay ipinapatupad sa anyo ng mga module batay sa mga dynamic na aklatan. Ang pangunahing elemento ng istruktura sa simulator ay isang yunit ng rolling stock, o mobile unit (MU) - isang kotse (hindi self-propelled o bilang bahagi ng maraming unit na tren) o isang seksyon ng isang lokomotibo. Ginagawang posible ng API na itakda ang torque na inilapat sa mga PE wheel set, bilang tugon sa pagtanggap ng angular speed ng mga wheel set, pati na rin ang mga panlabas na parameter, tulad ng boltahe at uri ng kasalukuyang sa contact network. Ang simulator ay hindi alam ang anumang bagay at hindi nais na malaman, na nag-iiwan ng pisika ng panloob na kagamitan sa budhi ng nag-develop ng isang partikular na lokomotibo o kotse.

Hindi mahirap hulaan na ang gayong medyo mababang antas na diskarte ay ginagawang posible na ipatupad ang pinakamaliit na nuances ng circuit ng lokomotibo. Bilang karagdagan, ang simulator kit ay may kasamang set ng karaniwang kagamitan na naka-install sa domestic rolling stock: driver's train crane conv. No. 395, kondisyon ng air distributor. No. 242, kondisyon ng balbula ng auxiliary brake. No. 254 at iba pang mga elemento ng kagamitan sa preno. Kailangan lang ikonekta ng developer ng add-on ang mga elementong ito sa pneumatic circuit ng isang partikular na lokomotibo o kotse. Bilang karagdagan, mayroong isang API para sa paglikha ng iyong sariling mga yunit ng hardware.

Sa arkitektura, ang RRS ay binuo sa pakikipag-ugnayan ng dalawang pangunahing proseso

  • simulator β€” pisikal na tren dynamics engine TrainEngine 2. Ipinapatupad ang pisika ng paggalaw ng tren, na isinasaalang-alang ang maraming panlabas na mga kadahilanan, na isinasaalang-alang ang pakikipag-ugnayan ng mga gumagalaw na yunit sa pamamagitan ng mga aparato ng pagkabit, nagpoproseso ng data na nagmumula sa mga panlabas na module na nagpapatupad ng pisika ng pagpapatakbo ng mga kagamitan sa rolling stock
  • viewer β€” isang graphical na subsystem na nagpapakita ng paggalaw ng tren, na binuo batay sa isang graphics engine OpenSceneGraph

Ang mga subsystem na ito ay nakikipag-ugnayan sa isa't isa sa pamamagitan ng shared memory, na ipinatupad batay sa QSharedMemory class ng Qt framework. Ang mga unang demo ay gumamit ng IPC na nakabatay sa socket, at may mga plano na bumalik sa teknolohiyang ito sa hinaharap, na isinasaalang-alang ang pagpipino ng ilang bahagi ng simulator at mga pangangailangan nang may pagtingin sa hinaharap. Ang paglipat sa ibinahaging memorya ay sa ilang mga lawak ay isang sapilitang panukala na lumampas sa pagiging kapaki-pakinabang nito.

Hindi ko ilalarawan ang mga nuances - marami sa mga pagbabago sa pagbuo ng proyektong ito ay nakabalangkas na sa aking mga publikasyon sa mapagkukunan, lalo na, mayroon akong medyo malawak na isang serye ng mga tutorial sa OpenSceneGraph engine, na lumaki mula sa pagsasanay ng paggawa sa proyektong ito.

Hindi lahat ng bagay sa proyekto ay kasing ayos ng gusto natin. Sa partikular, ang graphics subsystem ay malayo sa perpekto sa mga tuntunin ng kalidad ng pag-render, at ang pagganap ng sim ay nag-iiwan ng maraming nais. Ang release na ito ay may isang layunin - upang ipakilala ang komunidad ng mga mahilig sa railway transport sa proyekto, balangkasin ang mga kakayahan nito at sa wakas ay lumikha ng bukas, cross-platform na railway simulator na may advanced na API para sa mga add-on na developer.

Prospect

Ang mga prospect ay nakasalalay sa iyo, aming mahal na mga user at developer sa hinaharap. Ang proyekto ay bukas at umiiral opisyal na sitekung saan maaari mong i-download ang simulator, mula sa dokumentasyon, ang komposisyon nito ay patuloy na pupunan. Umiiral ang forum proyekto, pangkat ng VKAt channel ng youtube, kung saan makakakuha ka ng pinakadetalyadong payo at tulong.

Salamat sa iyo!

Pinagmulan: www.habr.com

Magdagdag ng komento