Russian Railway Simulator (RRS): ensimmäinen julkinen julkaisu

Odottamani päivä on koittanut, jolloin voin vihdoin esitellä tämän kehityksen. Projekti aloitettiin tasan vuosi sitten, ainakin 1 RRS-arkistot Gtihubissa ensimmäisellä sitoumuksella on täsmälleen tämä päivämäärä.

Matkustajajuna Rostovin päärautatieasemalla (napsautettava)

Russian Railway Simulator (RRS): ensimmäinen julkinen julkaisu

Mikä on RRS? Tämä on 1520 mm:n liikkuvan kaluston avoin cross-platform simulaattori. Lukija kysyy luonnollisesti kysymyksen: "Anteeksi, mitä varten tämä projekti on, jos rautatiesimulaattoreita on riittävästi, sekä kaupallisia että avoimia?" Vastauksen saamiseksi tähän kysymykseen suosittelen katsomaan kissan alle

Hankkeen historia

Olipa kerran, vuonna 2001, se julkaistiin Microsoft Train Simulator (MSTS), joka synnytti maassamme valtavan rautatieläisten yhteisön. Tämän projektin useiden vuosien aikana (kunnes Microsoft hylkäsi sen ja siirtyi sille kiinnostavampiin asioihin, kuten Nokian konkurssiin jne.), projekti sai valtavan määrän siihen luotuja lisäyksiä: reitit, liikkuva kalusto, skenaarioita.

MSTS:n perusteella luotiin myöhemmin useita muita projekteja, kuten OpenRails, RRainSim (RTS) ja muut lisäykset ja johdannaiset. Myös kaupallisia projekteja ilmestyi, kuten kuuluisa trainz. Ja kaikki olisi hyvin, mutta monet rautatieliikenteen fanit eivät ole tyytyväisiä näihin tuotteisiin aivan objektiivisista syistä - ne eivät millään tavalla kuvasta Neuvostoliiton jälkeisessä tilassa käytettävän ja kehitetyn kotimaisen liikkuvan kaluston erityispiirteitä. Tämä on erityisen akuuttia, kun tarkastellaan junien jarrujen toteutusta - missään luetelluista hankkeista ei ole eikä tule olemaan Matrosov-järjestelmän automaattisten jarrujen normaalia toteutusta.

Ei niin kaukaisena vuonna 2008 ilmestyi toinen projekti - ZDSimulaattori, jonka on kehittänyt Vjatseslav Usov. Hanke on merkittävä siinä mielessä, että siinä huomioidaan ja korjataan edellä mainitut puutteet, keskittyen aluksi venäläisen raideleveyden liikkuvaan kalustoon. Mutta on yksi iso "mutta" - projekti on oma ja suljettu, eikä se arkkitehtonisesti salli oman liikkuvan kaluston käyttöönottoa.

Itse tulin rautatieaiheeseen vuonna 2007, kun aloitin työskentelyn JSC VELNII, tutkijana ja väiteltyään väitöskirjansa vuonna 2008 vanhempana tutkijana. Silloin tutustuin tuolloin uusimpiin saavutuksiin rautatiesimulaatiopelien alalla. Ja en pitänyt näkemästäni, eikä ZDSimulator-projektia ollut tuolloin olemassa. Myöhemmin, kiehtoneena liikkuvan kaluston dynamiikkaa, tulin Rostovin osavaltion liikenneyliopistoon (RGUPS), jonka aiheena on väitöskirja tavarajunan jarrutusdynamiikasta. Nykyään johdan rautatieliikenteen koulutuskompleksien kehittämistä yliopistollemme ja opetan erikoisaloja vetovoiman liikkuvan kaluston laitoksella.

Kaiken edellä mainitun yhteydessä syntyi ajatus sellaisen simulaattorin luomisesta, jonka avulla sen lisäosan kehittäjä saisi täyden hallinnan liikkuvassa kalustossa tapahtuviin fyysisiin prosesseihin. Samanlainen kuin Orbiter-avaruussimulaattori, jolle kehitin kerran lisäyksen R-7:ään perustuvan kantorakettiperheen muodossa. Vuosi sitten tartuin tähän työhön ja panin itseni siihen. 26. joulukuuta 2018 näki valon täällä tämä teknologiademo.

Työni huomasivat harrastajat ja tunnettiin rautatiekaisujen piireissä, ZDsimulatorin visuaalisen sisällön luojana. Roman Biryukov (Romych Russian Railways) tarjosi minulle apua ja yhteistyötä projektin jatkokehityksessä. Myöhemmin toinen kehittäjä liittyi joukkoomme - Aleksanteri Mištšenko (Ulovskii 2017), reitin luoja ZDsimulatorille. Yhteistyömme johti meidät ensimmäiseen julkaisuun. Video näyttää yleiskatsauksen siitä, miltä peli näyttää ensimmäisen julkaisunsa aikana

RRS-simulaattorin ominaisuudet

Ensinnäkin se on avoin ohjelmistoarkkitehtuuri. Puhumattakaan siitä tosiasiasta, että simulaattorikoodi on avoin, siinä on API ja SDK, jotka on suunnattu kolmannen osapuolen lisäosien kehittäjille. Pääsyn este on melko korkea - vaaditaan C++-kehitystaidot. Simulaattori on kirjoitettu siihen käyttämällä GCC-kääntäjää ja sen MinGW-varianttia Windows-käyttöjärjestelmälle. Lisäksi kehittäjän on suositeltavaa tuntea Qt-kehys, koska monet sen konsepteista ovat pelin arkkitehtuurin taustalla.

Asianmukaisella huolellisuudella ja halulla tämä projekti kuitenkin avaa valtavia mahdollisuuksia lisäosien kehittäjälle. Liikkuva kalusto toteutetaan dynaamisiin kirjastoihin perustuvien moduulien muodossa. Simulaattorin tärkein rakenneelementti on liikkuvan kaluston yksikkö, tai liikkuva yksikkö (MU) - auto (ei-itseliikkuva tai osana moniyksikköjunaa) tai veturin osa. API mahdollistaa PE-pyöräsarjoihin kohdistetun vääntömomentin asettamisen vastauksena pyöräsarjojen kulmanopeuden sekä ulkoisten parametrien, kuten kosketusverkon jännitteen ja virran tyypin, asettamiseen. Simulaattori ei osaa eikä halua tietää mitään muuta, mikä jättää sisäisen laitteiston toiminnan fysiikan tietyn veturin tai auton kehittäjän omalletunnolle.

Ei ole vaikea arvata, että tällainen suhteellisen matalan tason lähestymistapa mahdollistaa veturipiirin pienimpien vivahteiden toteuttamisen. Lisäksi simulaattorisarja sisältää kotimaiseen liikkuvaan kalustoon asennettujen vakiovarusteiden sarjan: kuljettajan junan nosturi konv. Nro 395, ilmanjakajan kunto. Nro 242, apujarruventtiilin kunto. 254 ja muut jarrulaitteiden osat. Lisäosan kehittäjän tarvitsee vain liittää nämä elementit tietyn veturin tai auton pneumaattiseen piiriin. Lisäksi on API omien laitteistoyksiköiden luomiseen.

Arkkitehtonisesti RRS on rakennettu kahden pääprosessin vuorovaikutukseen

  • simulaattori — junan fyysinen dynamiikkamoottori TrainEngine 2. Toteuttaa junan liikkeen fysiikan ottaen huomioon monet ulkoiset tekijät, ottaen huomioon liikkuvien yksiköiden vuorovaikutuksen kytkentälaitteiden kautta, käsittelee liikkuvan kaluston laitteiden toimintafysiikkaa toteuttavista ulkoisista moduuleista tulevia tietoja
  • katsoja — graafinen alijärjestelmä, joka visualisoi junan liikkeen ja joka on rakennettu grafiikkamoottorin pohjalta OpenSceneGraph

Nämä alijärjestelmät ovat vuorovaikutuksessa toistensa kanssa jaetun muistin kautta, joka on toteutettu Qt-kehyksen QSharedMemory-luokan perusteella. Ensimmäiset demot käyttivät socket-pohjaista IPC:tä, ja tähän tekniikkaan on tarkoitus palata myös tulevaisuudessa ottaen huomioon simulaattorin joidenkin osien jalostus ja tarpeet tulevaisuutta silmällä pitäen. Siirtyminen jaettuun muistiin oli jossain määrin pakotettu toimenpide, joka on vanhentunut.

En kuvaile vivahteita - monet tämän projektin kehityksen mutaatioista on jo hahmoteltu resursseja koskevissa julkaisuissani, erityisesti minulla on melko laaja sarja opetusohjelmia OpenSceneGraph-moottorista, joka syntyi tämän projektin parissa työskentelykäytännöstä.

Kaikki projektissa ei ole niin sujuvaa kuin haluaisimme. Erityisesti grafiikkaalijärjestelmä on kaukana täydellisestä renderöinnin laadun suhteen, ja sim:n suorituskyky jättää paljon toivomisen varaa. Tällä julkaisulla on yksi tavoite - esitellä rautatieliikenteen harrastajien yhteisö projektiin, hahmotella sen ominaisuudet ja lopuksi luoda avoin, monialustainen rautatiesimulaattori, jossa on edistynyt API lisäosien kehittäjille.

Tulevaisuudennäkymät

Näkymät riippuvat teistä, rakkaat tulevat käyttäjämme ja kehittäjämme. Projekti on avoin ja olemassa viralliset kotisivutmistä voit ladata simulaattorin dokumentointi, jonka koostumusta täydennetään jatkuvasti. Olemassa foorumi projekti, VK-ryhmäJa youtube-kanava, josta saat tarkimpia neuvoja ja apua.

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

Lähde: will.com

Lisää kommentti