Simulatorul Feroviar Rus (RRS): prima lansare publică

A sosit ziua mult așteptată de mine, când în sfârșit pot prezenta această dezvoltare. Proiectul a fost început cu exact un an în urmă, pe 1 septembrie 2018, cel puțin în repository-ul RRS pe Gtihub prima comitere are exact această dată.

Trenul de pasageri la stația Rostov Glavni (clickabil)

Simulatorul Feroviar Rus (RRS): prima lansare publică

Ce este RRS? Este un simulator deschis multiplatformă pentru vehicule pe ecartamentul de 1520 mm. Cititorul poate pune întrebarea: „Cum, dar pentru ce este acest proiect, dacă există suficiente simulatoare de tematică feroviară, atât comerciale, cât și deschise?” Iar pentru răspunsul la această întrebare, vă invit să aruncați o privire mai jos.

Istoria proiectului

Demult, prin anul 2001, a apărut Microsoft Train Simulator (MSTS), care a dat naștere unei uriașe comunități de simulatoare feroviare în țara noastră. În anii câțiva în care a existat acest proiect (până când Microsoft s-a ocupat de alte lucruri mai interesante pentru ea, precum falimentarea Nokia etc.), proiectul s-a îmbogățit cu o mulțime de extensii create pentru el: rute, material rulant, scenarii.

Pe baza MSTS, ulterior au fost create o serie de alte proiecte, cum ar fi OpenRails, RTrainSim (RTS) și alte extensii și derivați. Au apărut și proiecte comerciale, cum ar fi celebrul Trainz. Și toate acestea ar fi bune, dar mulți amatori de transport feroviar nu sunt mulțumiți de aceste produse din motive complet obiective — ele nu reflectă specificul materialului rulant din țară, exploatat și dezvoltat în spațiul post-sovietic. Acest lucru devine evident mai ales atunci când privim cum sunt realizate frânele trenului — niciunul dintre proiectele enumerate nu are și nu va avea o realizare adecvată a frânelor automate din sistemul Matrosov.

Într-un an destul de îndepărtat, 2008, a apărut un alt proiect — ZDSimulator, dezvoltat de Viacheslav Usov. Proiectul este remarcabil prin faptul că ia în considerare și corectează deficiențele menționate anterior, fiind inițial destinat materialului rulant pe ecartamentul rusesc. Dar este un mare „dar” — proiectul este proprietar și închis, arhitectonic nepermițând integrarea propriei flote.

Eu personal am început să mă ocup de tematica feroviară în 2007, când am început să lucrez la OAO VELNII, în calitate de cercetător științific, iar după susținerea tezei de doctorat în 2008 — cercetător științific senior. Atunci am descoperit cele mai recente realizări în domeniul simulatoarelor de jocuri feroviare. Ceea ce am văzut nu mi-a plăcut, iar proiectul ZDSimulator pe atunci nu exista. Ulterior, fiind pasionat de dinamica materialului rulant, am venit la Universitatea de Stat din Rostov pentru Căi Ferate (РГУПС) cu tema tezei de doctorat pe dinamica frânării trenului de marfă. În prezent, conduc dezvoltarea complexelor de simulare pentru transportul feroviar la universitatea noastră și predau disciplinele de specialitate la catedra „Material rulant de tracțiune”.

În legătură cu toate cele menționate mai sus, a apărut ideea de a crea un simulator care să permită dezvoltatorului de addon-uri să aibă control total asupra proceselor fizice ce se desfășoară în materialul rulant. Similar simulatorului spațial Orbiter, pentru care am dezvoltat odată un addon sub forma unei familii de rachete purtătoare bazate pe R-7. Acum un an m-am apucat de această lucrare și am intrat cu totul în ea. Pe 26 decembrie 2018 a fost lansată această demo tehnologică.

Lucrarea mea a fost observată de entuziaști și renumitul creator de conținut vizual pentru ZDsimulator în cercurile simulatorilor feroviari, Roman Biryukov (Romych RJDUS) mi-a oferit ajutor și colaborare în continuarea dezvoltării proiectului. Mai târziu, s-a alăturat nouă un alt dezvoltator — Alexander Mischenko (Ulovskii2017), creator de rute pentru ZDsimulator. Colaborarea noastră ne-a condus la primul release. În videoclip — o scurtă prezentare a modului în care jocul arată la primul său release.

Redați video

Caracteristicile simulatorului RRS

În primul rând, aceasta este o arhitectură software deschisă. Nefăcând referire la faptul că codul simulatorului este deschis, există un API și un SDK destinat dezvoltatorilor de addon-uri. Pragul de intrare este destul de ridicat — sunt necesare abilități de bază în dezvoltarea pe C++. Simulatorul este scris exact în acest limbaj, folosind compilatorul GCC și versiunea sa MinGW pentru sistemul de operare Windows. De asemenea, este de dorit ca dezvoltatorul să fie familiarizat cu framework-ul Qt, deoarece multe concepte din acesta stau la baza arhitecturii jocului.

Cu toate acestea, cu o determinare și dorință adecvată, acest proiect oferă dezvoltatorului de module oportunități enorme. Materialul rulant este realizat sub formă de module bazate pe biblioteci dinamice. Elementul structural principal în simulator este unitatea de material rulant, sau unitatea de rulare (UR) — vagon (non-autopropulsat sau parte dintr-un tren motor) sau secțiune de locomotivă. API-ul permite definirea cuplului aplicat axelor UR, primind în răspuns viteza unghiulară a axelor, precum și parametrii externi, precum tensiunea și tipul de curent în rețeaua de contact. Simulatorul nu cunoaște și nu dorește să știe nimic altceva, lăsând fizica funcționării echipamentului intern în seama dezvoltatorului specific al locomotivei sau vagonului.

Nu este greu de ghicit că o astfel de abordare relativ la un nivel scăzut oferă posibilitatea de a implementa cele mai mici nuanțe ale schemei locomotivei. În plus, simulatorul vine cu un set de echipamente standard montate pe materialul rulant autohton: cricul de tren al conducătorului nr. 395, distribuitor de aer nr. 242, robinetul frânei auxiliare nr. 254 și alte elemente ale echipamentului de frânare. Dezvoltatorului de module îi este suficient să conecteze aceste elemente într-o schemă pneumatică a locomotivei sau vagonului specific. De asemenea, există un API pentru crearea blocurilor proprii de echipamente.

Din punct de vedere arhitectural, RRS este construit pe interacțiunea a două procese principale

  • simulator — motorul fizic de dinamică a trenului TrainEngine 2. Acesta realizează fizica mișcării trenului ținând cont de mulți factori externi, considerând interacțiunea unităților de rulare prin dispozitivele de cuplare, se ocupă cu prelucrarea datelor provenite din module externe care implementează fizica funcționării echipamentului materialului rulant.
  • viewer — subsistemul grafic care efectuează vizualizarea mișcării trenului, construit pe baza motorului grafic OpenSceneGraph

Aceste subsisteme interacționează între ele printr-o memorie comună, implementată pe baza clasei QSharedMemory din cadrul framework-ului Qt. Primele versiuni demo au folosit IPC pe baza socket-urilor și în viitor se plănuiește revenirea la această tehnologie, având în vedere refacerea unor părți ale simulatorului și necesitățile viitoare. Trecerea la memoria comună a fost într-o anumită măsură o măsură forțată, care și-a pierdut relevanța.

Nu voi descrie nuanțele — multe dintre peripețiile dezvoltării acestui proiect au fost deja expuse în publicațiile mele pe resursă, în special am un ciclu destul de extins de tutoriale despre motorul OpenSceneGraph, care a crescut tocmai din practica lucrului la acest proiect.

În proiect, lucrurile nu sunt chiar atât de simple cum ne-am dori. În special, subsistemul grafic este departe de a fi perfect în ceea ce privește calitatea randării, iar performanța simulatorului lasă de dorit. Această lansare are un singur scop — să familiarizeze comunitatea iubitorilor de transport feroviar cu proiectul, să contureze posibilitățile sale și, în cele din urmă, să creeze un simulator feroviar deschis, multiplatformă, cu un API avansat pentru dezvoltatorii de suplimente.

Perspective

Perspectivele depind de voi, dragi utilizatori și dezvoltatori viitori. Proiectul este deschis, există site-ul oficial, unde puteți descărca simulatorul, cu documentația, al cărui conținut va fi completat continuu. Există forum proiectului, grupul VK, și canalul de YouTube, unde puteți obține cele mai detaliate consultanțe și ajutor.

Vă mulțumesc pentru atenție!

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster