Russisch Spoorweg Simulator (RRS): eerste publieke release

Die langverwachte dag is eindelijk aangebroken waarop ik deze ontwikkeling kan presenteren. Het project begon precies een jaar geleden, op 1 september 2018, althans in de RRS repository op GitHub de eerste commit heeft precies deze datum.

Passagierstrein op station Rostov Glavniy (klikbaar)

Russisch Spoorweg Simulator (RRS): eerste publieke release

Wat is RRS? Het is een open cross-platform simulator voor rollend materieel van een spoorbreedte van 1520 mm. De lezer zal zich terecht afvragen: "Laat maar, waarvoor is dit project nodig, als er al genoeg spoorweg simulators zijn, zowel commercieel als open-source?" Voor het antwoord op deze vraag nodig ik u uit om verder te lezen

Geschiedenis van het project

Lang geleden, in 2001, verscheen Microsoft Train Simulator (MSTS), wat een enorme gemeenschap van spoorwegsimulatoren in ons land heeft voortgebracht. In de enkele jaren dat dit project bestond (totdat Microsoft het verliet en zich ging bezighouden met interessantere dingen voor hen, zoals het failliet van Nokia, enzovoorts) is het project verrijkt met veel aanvullingen: routes, rollend materieel, scenario's.

Op basis van MSTS zijn later een aantal andere projecten ontstaan, zoals OpenRails, RTrainSim (RTS) en andere aanvullingen en afgeleiden. Er zijn ook commerciƫle projecten ontstaan, zoals de beroemde Trainz. En dat is allemaal goed, maar veel fans van spoorvervoer zijn niet tevreden met deze producten om heel objectieve redenen - ze weerspiegelen helemaal niet de specificaties van het binnenlandse rollend materieel dat wordt geƫxploiteerd en ontwikkeld in het post-sovjetgebied. Dit wordt vooral duidelijk als je kijkt naar hoe de remmen van de trein zijn gerealiseerd - in geen van de genoemde projecten is er een normale implementatie van de automatische remmen van het Matrosov-systeem, en die zal er ook niet komen.

In de niet zo verre toekomst, in 2008, verscheen een ander project - ZDSimulator, ontwikkeld door Vyacheslav Usov. Dit project is opmerkelijk omdat het de bovengenoemde tekortkomingen in overweging neemt en corrigeert, terwijl het vanaf het begin is gericht op rollend materieel van de Russische spoorbreedte. Maar er is ƩƩn groot "maar" - het project is propriƫtair en gesloten, waardoor het architectonisch onmogelijk is om eigen rollend materieel te integreren.

Zelf ben ik in 2007 bij het spoorwegthema betrokken geraakt toen ik begon te werken bij OAO VELNII, in de functie van onderzoeksmedewerker, en na de verdediging van mijn promotieonderzoek in 2008 - als senior onderzoeksmedewerker. Tijdens deze periode maakte ik kennis met de nieuwste prestaties op het gebied van treinspellen. Wat ik zag, beviel me niet, en het project ZDSimulator bestond op dat moment nog niet. Later, gefascineerd door de dynamiek van het materieel, kwam ik aan de Rostov State Transport University (RŠ“Š£ŠŸŠ”) met het onderwerp van mijn proefschrift over de dynamiek van het remmen van goederentreinen. Tegenwoordig leid ik de ontwikkeling van trainingssimulatoren voor het spoorvervoer voor onze universiteit en geef ik vakken aan de afdeling 'Trekker Materieel'.

In verband met al het bovenstaande ontstond het idee om een simulator te creƫren die de ontwikkelaar van een aanvulling volledige controle zou geven over de fysieke processen die plaatsvinden in het materieel. Vergelijkbaar met de ruimte-simulator Orbiter, waarvoor ik vroeger een aanvulling ontwikkelde in de vorm van een serie draagraketten op basis van de R-7. Een jaar geleden begon ik aan dit werk en ik ging er volledig in op. Op 26 december 2018 werd deze technologische demo.

Opmerkingen over mijn werk werden opgemerkt door enthousiastelingen, en de bekende naam in de kringen van spoorweg-simulators, ontwikkelaar van visuele content voor ZDsimulator, Roman Biryukov (Romych RŽDUZ) bod me zijn hulp en samenwerking aan voor de verdere ontwikkeling van het project. Later voegde ook een andere ontwikkelaar zich bij ons - Alexander Mishchenko (Ulovskii2017), de maker van routes voor ZDsimulator. Onze samenwerking leidde ons naar de eerste release. In de video staat een korte blik op hoe het spel eruitziet bij de eerste release.

Video afspelen

Kenmerken van de simulator RRS

Allereerst is het een open softwarearchitectuur. Niet alleen is de code van de simulator open, er is ook een API en SDK gericht op ontwikkelaars van externe aanvullingen. De instapdrempel is vrij hoog - basisvaardigheden in C++ zijn vereist. De simulator is precies in deze taal geschreven, met gebruik van de GCC-compiler en zijn variant MinGW voor het Windows-besturingssysteem. Bovendien is het wenselijk dat de ontwikkelaar bekend is met het Qt-framework, aangezien veel concepten daaruit ten grondslag liggen aan de architectuur van het spel.

Met de juiste inzet en motivatie biedt dit project enorme mogelijkheden voor ontwikkelaars van uitbreidingen. Het rollend materieel wordt geĆÆmplementeerd in de vorm van modules op basis van dynamische bibliotheken. Het belangrijkste structurele element in de simulator is de eenheid van rollend materieel, of een rollende eenheid (RE) — een wagon (niet-zelfrijdend of in een materieelstel) of een sectie van een locomotief. De API biedt de mogelijkheid om het koppel dat op de assen van de RE wordt uitgeoefend in te stellen en in ruil daarvoor de hoeksnelheid van de assen te ontvangen, evenals externe parameters zoals spanning en soort stroom in het bovenleidingsnet. Verder weet de simulator niets en wil hij niets weten wat de fysica van de werking van de interne uitrusting aan de ontwikkelaar van een specifieke locomotief of wagon overlaat.

Het is niet moeilijk te raden dat een dergelijke relatief laagdrempelige aanpak de mogelijkheid biedt om de kleinste nuances van de locomotief schema te implementeren. Bovendien bevat de simulator een set van standaarduitrusting die op binnenlands rollend materieel wordt geïnstalleerd: de machinistenhoofdkranen nr. 395, luchtverdeler nr. 242, hulpremkraan nr. 254 en andere elementen van het remsysteem. Het is voor de ontwikkelaar van de uitbreiding voldoende om deze elementen eenvoudig in een pneumatische schema van de specifieke locomotief of wagon te verbinden. Daarnaast is er een API voor het creëren van eigen uitrustingsmodules.

Architectonisch is RRS opgebouwd uit de interactie van twee hoofdprocessen

  • simulator — de fysica-engine van de treinbeweging TrainEngine 2. Dit implementeert de fysica van de treinbeweging rekening houdend met vele externe factoren, rekening houdend met de interactie van rollende eenheden via koppelkoppelingen, en is verantwoordelijk voor de verwerking van gegevens die afkomstig zijn van externe modules die de fysica van de werking van het rollend materieel implementeren.
  • viewer — de grafische subsystem, die de visualisatie van de treinbeweging uitvoert, gebouwd op de basis van de grafische engine OpenSceneGraph

Deze subsystemen communiceren met elkaar via gedeeld geheugen, geĆÆmplementeerd op basis van de QSharedMemory-klasse van het Qt-framework. De eerste demo-versies maakten gebruik van IPC op basis van sockets en in de toekomst is er een terugkeer naar deze technologie gepland, rekening houdend met de herziening van bepaalde onderdelen van de simulator en de toekomstige behoeften. De overgang naar gedeeld geheugen was tot op zekere hoogte een gedwongen maatregel die zijn nut had verspeeld.

Ik zal de nuances niet beschrijven - veel van de perikelen in de ontwikkeling van dit project zijn al uiteengezet in mijn publicaties op de site, in het bijzonder heb ik een vrij uitgebreide cyclus tutorials over de OpenSceneGraph-engine, die precies voortkwamen uit de praktijk van het werken aan dit project.

Het is in het project niet allemaal zo soepel als gewenst. In het bijzonder is het grafische subsysteem behoorlijk ver verwijderd van perfectie wat betreft de renderkwaliteit, en de prestaties van de simulator laten ook te wensen over. Deze release heeft ƩƩn doel - de gemeenschap van spoorvervoerliefhebbers kennis te laten maken met het project, zijn mogelijkheden te schetsen en eindelijk een open, cross-platform spoorwegsimulator te creƫren met een geavanceerde API voor ontwikkelaars van extensies.

Vooruitzichten

De vooruitzichten zijn afhankelijk van jullie, onze waardevolle toekomstige gebruikers en ontwikkelaars. Het project is open, er is een officiƫle website, waar je de simulator kunt downloaden, met de documentatie, waarvan de samenstelling continu zal worden aangevuld. Er is een forum project, VK-groep, en YouTube-kanaal, waar je de meest gedetailleerde uitleg en hulp kunt krijgen.

Bedankt voor uw aandacht!

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster