Russian Railway Simulator (RRS): eerste publieke release

De dag waarop ik heb gewacht is aangebroken waarop ik deze ontwikkeling eindelijk kan presenteren. Het project is precies een jaar geleden gestart, in ieder geval op 1 september 2018 RRS-opslagplaatsen op Gtihub de eerste commit heeft precies deze datum.

Passagierstrein op het centraal station van Rostov (klikbaar)

Russian Railway Simulator (RRS): eerste publieke release

Wat is RRS? Dit is een open platformonafhankelijke simulator van rollend materieel met een spoorbreedte van 1520 mm. De lezer zal natuurlijk de vraag stellen: "Neem me niet kwalijk, waar is dit project voor, als er voldoende spoorwegsimulators zijn, zowel commercieel als open?" Voor het antwoord op deze vraag stel ik voor om onder de kat te kijken

Project geschiedenis

Er was eens, in 2001, een uitgave Microsoft Treinsimulator (MSTS), waardoor er in ons land een enorme gemeenschap van spoorwegsudders ontstond. Gedurende de jaren dat dit project bestond (totdat Microsoft het verliet en zich ging bezighouden met interessantere dingen, zoals het faillissement van Nokia, enz.), heeft het project een groot aantal toevoegingen verworven: routes, rollend materieel, scenario's.

Op basis van MSTS zijn vervolgens een aantal andere projecten ontstaan, zoals OpenRails, RTrainSim (RTS) en andere toevoegingen en derivaten. Er verschenen ook commerciële projecten, zoals de beroemde trainz. En alles zou in orde zijn, maar veel fans van spoorwegvervoer zijn om vrij objectieve redenen niet tevreden met deze producten - ze weerspiegelen op geen enkele manier de specifieke kenmerken van binnenlands rollend materieel dat wordt geëxploiteerd en ontwikkeld in de post-Sovjet-ruimte. Dit is vooral acuut als we kijken naar de manier waarop treinremmen worden geïmplementeerd: geen van de genoemde projecten heeft of zal een normale implementatie van automatische remmen van het Matrosov-systeem hebben.

In het niet zo verre jaar 2008 verscheen een ander project - ZDSimulator, ontwikkeld door Vyacheslav Usov. Het project is opmerkelijk omdat het rekening houdt met de bovengenoemde tekortkomingen en deze corrigeert, terwijl de nadruk in eerste instantie ligt op rollend materieel op Russische spoorbreedte. Maar er is één grote 'maar': het project is bedrijfseigen en gesloten, waardoor architectonisch gezien de introductie van eigen rollend materieel niet mogelijk is.

Zelf kwam ik in 2007 op het onderwerp spoor terecht, toen ik begon te werken JSC VELNII, als research fellow, en na het verdedigen van zijn proefschrift in 2008, als senior research fellow. Het was toen dat ik kennis maakte met de nieuwste prestaties op dat moment op het gebied van spoorwegsimulatiespellen. En wat ik zag beviel me niet, en het ZDSimulator-project bestond toen nog niet. Later, gefascineerd door de dynamiek van rollend materieel, kwam ik naar de Rostov State University of Transport (RGUPS) met als onderwerp een proefschrift over de remdynamiek van een goederentrein. Tegenwoordig leid ik de ontwikkeling van opleidingscomplexen voor spoorwegvervoer voor onze universiteit en geef ik les in gespecialiseerde disciplines aan de afdeling Tractie Rollend Materieel.

In verband met al het bovenstaande ontstond het idee om een ​​simulator te creëren waarmee de ontwikkelaar van een add-on volledige controle zou kunnen krijgen over de fysieke processen die plaatsvinden in het rollend materieel. Vergelijkbaar met de Orbiter-ruimtesimulator, waarvoor ik ooit een aanvulling heb ontwikkeld in de vorm van een familie lanceervoertuigen op basis van de R-7. Een jaar geleden heb ik dit werk opgepakt en mezelf erop gestort. 26 december 2018 zag hier het licht deze technologiedemo.

Mijn werk werd opgemerkt door liefhebbers, en bekend in de kringen van spoorwegsudders, de maker van visuele inhoud voor ZDsimulator Roman Biryukov (Romych Russische Spoorwegen) bood mij hulp en medewerking bij de verdere ontwikkeling van het project. Later kwam er nog een ontwikkelaar bij ons - Alexander Misjtsjenko (Ulovskii2017), routemaker voor ZDsimulator. Onze samenwerking leidde ons naar onze eerste release. De video toont een overzicht van hoe de game eruit ziet voor de eerste release

Kenmerken van de RRS-simulator

Allereerst is het een open software-architectuur. Om nog maar te zwijgen van het feit dat de simulatorcode open is, er is een API en SDK gericht op ontwikkelaars van add-ons van derden. De toegangsbarrière is vrij hoog: basisvaardigheden voor C++-ontwikkeling zijn vereist. De simulator is erin geschreven met behulp van de GCC-compiler en zijn MinGW-variant voor het Windows-besturingssysteem. Bovendien is het raadzaam dat de ontwikkelaar bekend is met het Qt-framework, aangezien veel van zijn concepten ten grondslag liggen aan de architectuur van het spel.

Met de nodige zorgvuldigheid en wilskracht biedt dit project echter enorme kansen voor de add-on-ontwikkelaar. Rollend materieel wordt geïmplementeerd in de vorm van modules op basis van dynamische bibliotheken. Het belangrijkste structurele element in de simulator is een eenheid rollend materieel, of mobiele eenheid (MU) - een auto (niet zelfrijdend of als onderdeel van een trein met meerdere eenheden) of een deel van een locomotief. De API maakt het mogelijk om het koppel in te stellen dat wordt toegepast op de PE-wielstellen, in reactie op het ontvangen van de hoeksnelheid van de wielstellen, evenals externe parameters, zoals spanning en type stroom in het contactnetwerk. De simulator weet verder niets en wil het ook niet weten, waardoor de fysica van de interne apparatuur aan het geweten van de ontwikkelaar van een bepaalde locomotief of auto wordt overgelaten.

Het is niet moeilijk te raden dat een dergelijke relatief laagdrempelige aanpak het mogelijk maakt om de kleinste nuances van het locomotiefcircuit te implementeren. Bovendien bevat de simulatorkit een set standaarduitrusting die op binnenlands rollend materieel is geïnstalleerd: machinistentreinkraanconv. Nr. 395, staat luchtverdeler. Nr. 242, toestand hulpremklep. Nr. 254 en andere elementen van remapparatuur. De ontwikkelaar van de add-on hoeft deze elementen alleen maar aan te sluiten op het pneumatische circuit van een specifieke locomotief of auto. Daarnaast is er een API voor het maken van uw eigen hardware-eenheden.

Architectonisch gezien is RRS gebouwd op de interactie van twee hoofdprocessen

  • simulator — motor voor fysieke treindynamiek TrainEngine 2. Implementeert de fysica van treinbewegingen, rekening houdend met veel externe factoren, rekening houdend met de interactie van bewegende eenheden via koppelinrichtingen, verwerkt gegevens afkomstig van externe modules die de fysica van de werking van rollend materieel implementeren
  • kijker — een grafisch subsysteem dat treinbewegingen visualiseert, gebouwd op basis van een grafische engine OpenSceneGrafiek

Deze subsystemen communiceren met elkaar via gedeeld geheugen, geïmplementeerd op basis van de QSharedMemory-klasse van het Qt-framework. De eerste demo's maakten gebruik van socket-gebaseerde IPC, en er zijn plannen om in de toekomst terug te keren naar deze technologie, rekening houdend met de verfijning van sommige delen van de simulator en de behoeften met het oog op de toekomst. De overgang naar een gedeeld geheugen was tot op zekere hoogte een gedwongen maatregel die zijn nut heeft overleefd.

Ik zal de nuances niet beschrijven - veel van de wisselvalligheden van de ontwikkeling van dit project zijn al beschreven in mijn publicaties over de bron, in het bijzonder heb ik een vrij uitgebreide een reeks tutorials over de OpenSceneGraph-engine, die voortkwam uit de praktijk van het werken aan dit project.

Niet alles in het project verloopt zo soepel als we zouden willen. Met name het grafische subsysteem is verre van perfect in termen van weergavekwaliteit, en de prestaties van de sim laten veel te wensen over. Deze release heeft één doel: de gemeenschap van liefhebbers van spoorwegvervoer kennis laten maken met het project, de mogelijkheden ervan schetsen en uiteindelijk een open, platformonafhankelijke spoorwegsimulator creëren met een geavanceerde API voor add-on-ontwikkelaars.

Vooruitzichten

De vooruitzichten zijn afhankelijk van u, onze dierbare toekomstige gebruikers en ontwikkelaars. Het project is open en bestaat officiële websitewaar u de simulator kunt downloaden documentatie, waarvan de samenstelling continu wordt aangevuld. Bestaat het forum projecteren, VK-groepEn Youtube kanaal, waar u het meest gedetailleerde advies en hulp kunt krijgen.

Dank je wel!

Bron: www.habr.com

Voeg een reactie