Kätte on jõudnud kauaoodatud päev, mil saan lõpuks esitleda seda arendust. Projekt sai alguse täpselt aasta tagasi, 1. septembril 2018, vähemalt esimene commit kannabki selle kuupäeva.
Reisijate rong Rostovi peatuses (klikkitav)
Mis on RRS? See on avatud lähtekoodiga platvormidevaheline 1520 mm raudtee sõidukite simulaator. Lugija küsib põhjendatult: "Kas see projekt on vajalik, kui raudteeteemalisi simulaatoreid, olgu need siis kommertslikud või avatud, on piisavalt?" Sellele küsimusele vastamiseks kutsun teid alla kerima.
Projektiajalugu
Kaugel minevikus, aastal 2001, nägi päevavalgust , mis tekitas meie riigis tohutu raudteemängijate kogukonna. Mitme aasta jooksul, mil see projekt eksisteeris (kuni Microsoft selle hüljas, tegeledes tema jaoks huvitamate asjadega, nagu Nokiat pankrotti ajada jne), kasvas projektilt välja massiliselt selle jaoks loodud lisandeid: marsruute, sõidukeid, stsenaariume.
MSTS põhjal on hiljem loodud mitmeid teisi projekte, nagu , ja teised laiendused ja tuletised. Üksikuid kaubandusprojekte, nagu kuulus , ei saa aga paljude raudteesõprade arvates tagasihoidlikest põhjustest heaks kiita — need ei peegelda meie kodumaise veeremi eripära, mida töötatakse välja ja kasutatakse post-sovetlikus ruumis. Erakordselt on see nähtav, kui vaatame, kuidas rongide pidurid on teostatud — üheski mainitud projektis ei ole ja ei tule normaalselt väljaõppe-automaatpidureid Matrosovi süsteemis.
Kaugel 2008. aastal ilmus teine projekt — , mille arendas Vyacheslav Usov. Projekt on tähelepanuväärne, kuna arvestab ja parandab eelmainitud puudusi, olles algselt suunatud Venemaa raudteede veeremile. Kuid on olemas üks suur "aga" — projekt on proprietary ja suletud, arhitektuuriliselt ei luba see suunata oma veeremi mudelit.
Aasta 2007, kui hakkasin töötama , teadustöötajana ning pärast oma väitekirja kaitsmist 2008. aastal — vanemteadurina. Just siis tutvustati mulle tolle aja viimaseid arengutegevusi raudteemängude simulaatorite vallas. See, mida ma nägin, ei meeldinud mulle, ja projekti ZDSimulator tol ajal veel ei olnud. Hiljem, olles innustatud sõidukite dünaamikast, suundusin Rostovi riiklikku raudteetäienduskõrgkooli () koos doktoritöö teemaga kaubarongide pidurdusdünaamikast. Tänaseks juhin raudteetranspordi simulaatorite arendamist meie ülikoolis ning õpetan erialaseid aineid "Veovahendi komponent" teaduskonnas.
Kõik eelpoolmainitud põhjal tekkis idee luua simulaator, mis annaks lisandite arendajale täieliku kontrolli liikuvate elementide füüsikaliste protsesside üle. Sarnane kosmosesimulaatorile Orbiter, mille jaoks ma kunagi arendasin lisandit, mis koosneb R-7 baasil olevatest kanderaketidest. Aasta tagasi asusin sellele tööle ja pühendusin sellele täielikult. 26. detsembril 2018 nägi ilmavalgust see .
Minu töö jäi silma entusiastidele ja tuntud raudtee-simulaatorite ringkondades, visuaalse sisu looja ZDsimulator jaoks pakkus mulle abi ja koostööd projekti edasise arendamise osas. Hiljem liitus meiega veel üks arendaja — ), ZDsimulatori marsruutide looja. Meie koostöö tõi meid esimese väljaande juurde. Videol on näha, milline mäng välja näeb oma esimeses väljaandes.

RRS simulaatori omadused
Esiteks on see avatud tarkvaraarhitektuur. Rääkimata sellest, et simulaatori kood on avatud, on olemas API ja SDK, mis on suunatud kolmandate osapoolte lisade arendajatele. Sisenemise lävi on üsna kõrge — vajalikud on põhiteadmised C++ programmeerimises. Simulaator on kirjutatud just selle keelega, kasutades GCC ja selle varianti MinGW Windowsi operatsioonisüsteemis. Lisaks on soovitatav, et arendajal oleks tuttav Qt raamistikuga, kuna paljusid selle põhimõtteid kasutatakse mängu arhitektuuri aluseks.
Kuid piisava pühendumise ja sooviga avab see projekt arendajatele suurepäraseid võimalusi lisade loomiseks. Rongi koosseis teostatakse moodulitena, mis põhinevad dünaamilistel raamatukogudel. Peamine struktuurielement simulaatoris on liikurkomplekt., või liikuv üksus (LE) — vagun (ilma enda jõu või mootorrongis) või lokomotiivi sektsioon. API võimaldab määrata pöördemomendi, mis mõjub LE ratastele, millele vastuseks saadakse rataste nurkkiirus, samuti välised parameetrid, nagu pinge ja voolu tüüp kontaktvõrgus. Rohkem simulator ei tea ja ei taha teada, mis jätab siseseadmete töö füüsika konkreetse lokomotiivi või vaguni arendaja mureks.
Pole raske arvata, et selline suhteliselt madala taseme lähenemine võimaldab rakendada lokomotiivi skeemi kõige väiksemaid nüansse. Lisaks sisaldab simulaatori komplekt standardset varustust, mis on paigaldatud kodumaistele liikuvatele koostudele: rongimehe tõstuk (nr 395), õhukäitlus seade (nr 242), abitrakti peatumisventiil (nr 254) ja muid pidurisüsteemi komponente. Täienduse arendajal on piisavalt, et ühendada need elemendid konkreetse lokomotiivi või vaguni pneumaatilisse skeemi. Samuti on olemas API, et luua oma seadmete plokke.
Arhitektuurne RRS põhineb kahe peamise protsessi interaktsioonil
- simulaator — füüsikaline rongi dünaamika mootor TrainEngine 2. Rakendab rongi liikumise füüsikat, arvesse võttes mitmeid väliseid tegureid, ning käsitleb liikuvate üksuste omavahelist interaktsiooni läbi haakeseadmete, samuti töödeldes andmeid, mis saadetakse välistest moodulitest, mis rakendavad tehnika töö füüsikat.
- vaataja — graafiline alamsüsteem, mis visualiseerib rongi liikumist, põhinedes graafilisel mootoril
Need alamsüsteemid suhtlevad omavahel läbi ühise mäluga, mis on rakendatud QSharedMemory klassi põhjal Qt raamistikus. Esimesed demo-versioonid kasutasid IPC-d soklite põhjal ja tulevikus kavandatakse tagasi naasta sellele tehnoloogiale, arvestades simulaatori teatud osade täiustamist ja tuleviku vajadusi. Ühise mälu kasutusele võtmine oli mingil määral sunnitud samm, mis on oma aja ära elanud.
Ma ei hakka nüansse kirjeldama — paljud selle projekti arenguga seotud peripetiad on juba kajastatud minu publikatsioonides, sealhulgas mul on üsna ulatuslik , mis töö põhineb selle projekti praktikal.
Projekt ei arenenud just nii sujuvalt kui sooviksime. Eelkõige on graafiline süsteem kvaliteedi renderdamise osas kaugel ideaalist ja simulaatori jõudlus jätab soovida. Käesoleva väljaande eesmärk on tutvustada raudteetranspordi entusiastide kogukonnale projekti, määratleda selle võimalused ja lõpuks luua avatud, mitmeplatvormiline raudteemudeli simulaator, millel on arendajatele suunatud edasijõudnud API.
Perspektiivid
Perspektiivid sõltuvad teist, meie kallid tulevased kasutajad ja arendajad. Projekt on avatud ja olemas , kust saab simulaatori alla laadida, koos , mille sisu täieneb pidevalt. Eksisteerib VK grupp , ja , где можно получить самую подробную консультацию и помощь.
Aitäh tähelepanu eest!
Allikas: habr.com
