Russian Railway Simulator (RRS): pierwsze publiczne wydanie

Nadszedł dzień, na który czekałem, kiedy w końcu mogę zaprezentować to opracowanie. Projekt ruszył dokładnie rok temu, co najmniej 1 września 2018 roku Repozytoria RRS na Gtihub pierwsze zatwierdzenie ma dokładnie tę datę.

Pociąg pasażerski na dworcu głównym w Rostowie (klikalny)

Russian Railway Simulator (RRS): pierwsze publiczne wydanie

Co to jest RRS? Jest to otwarty, wieloplatformowy symulator taboru o rozstawie 1520 mm. Czytelnik w naturalny sposób zada pytanie: „Przepraszam, po co ten projekt, skoro jest wystarczająca liczba symulatorów kolei, zarówno komercyjnych, jak i otwartych?” Odpowiedzi na to pytanie sugeruję zajrzeć pod kota

Historia projektu

Dawno, dawno temu, w 2001 roku, została opublikowana Symulator pociągu Microsoft (MSTS), co dało początek ogromnej społeczności miłośników kolei w naszym kraju. Przez te kilka lat istnienia tego projektu (do czasu, aż Microsoft go porzucił, przechodząc do ciekawszych dla niego rzeczy, jak np. bankructwo Nokii itp.), projekt pozyskał masę stworzonych dla niego dodatków: trasy, tabor, scenariusze.

Na bazie MSTS powstało później szereg innych projektów, jak np OpenRails, RTrainSim (RTS) oraz inne dodatki i pochodne. Pojawiły się także projekty komercyjne, jak np. słynna pociągz. I wszystko byłoby dobrze, jednak wielu miłośników transportu kolejowego nie jest zadowolonych z tych produktów z całkiem obiektywnych powodów – w żaden sposób nie odzwierciedlają one specyfiki krajowego taboru eksploatowanego i rozwijanego na przestrzeni poradzieckiej. Jest to szczególnie dotkliwe, jeśli spojrzymy na sposób wdrożenia hamulców pociągów – żaden z wymienionych projektów nie ma i nie będzie miał normalnego wdrożenia automatycznych hamulców systemu Matrosowa.

W nie tak odległym roku 2008 pojawił się kolejny projekt - ZDSimulator, opracowany przez Wiaczesława Usowa. Projekt wyróżnia się tym, że uwzględnia i koryguje powyższe niedociągnięcia, koncentrując się początkowo na rosyjskim taborze torowym. Jest jednak jedno duże „ale” – projekt jest autorski i zamknięty, architektonicznie nie pozwalający na wprowadzenie własnego taboru.

Sam z tematem kolei zetknąłem się w 2007 roku, kiedy zaczynałem pracę w JSC VELNIIjako pracownik naukowy, a po obronie pracy doktorskiej w 2008 r. jako starszy pracownik naukowy. To właśnie wtedy zapoznałem się z najnowszymi osiągnięciami ówczesnego rynku gier symulacyjnych związanych z koleją. I nie podobało mi się to, co zobaczyłem, a projekt ZDSimulator wtedy nie istniał. Później zafascynowany dynamiką taboru trafiłem do Państwowego Uniwersytetu Transportu w Rostowie (RGUPS) z tematem rozprawy doktorskiej na temat dynamiki hamowania pociągu towarowego. Dziś kieruję rozwojem kompleksów szkoleniowych transportu kolejowego dla naszej uczelni oraz wykładam kierunki specjalistyczne na Katedrze Taboru Trakcyjnego.

W związku z powyższym powstał pomysł stworzenia symulatora, który pozwoliłby twórcy dodatku do niego uzyskać pełną kontrolę nad procesami fizycznymi zachodzącymi w taborze. Podobnie jak symulator kosmiczny Orbiter, do którego kiedyś opracowałem dodatek w postaci rodziny rakiet nośnych bazujących na R-7. Rok temu podjęłam się tej pracy i rzuciłam się w nią. Światło zaświeciło tutaj 26 grudnia 2018 roku tę demonstrację technologii.

Moja twórczość została dostrzeżona przez pasjonatów, a także znany w kręgach miłośników kolei, twórca treści wizualnych do ZDsimulatora Roman Biriukow (Koleje Rosyjskie Romycz) zaoferował mi pomoc i współpracę w dalszym rozwoju projektu. Później dołączył do nas kolejny programista - Aleksander Miszczenko (Ulovskii2017), kreator tras dla ZDsimulator. Nasza współpraca zaowocowała naszym pierwszym wydawnictwem. Film pokazuje ogólny zarys wyglądu gry w jej pierwszym wydaniu

Funkcje symulatora RRS

Przede wszystkim jest to otwarta architektura oprogramowania. Nie wspominając już o tym, że kod symulatora jest otwarty, istnieje API i SDK przeznaczone dla twórców dodatków do niego innych firm. Bariera wejścia jest dość wysoka - wymagane są podstawowe umiejętności programistyczne w C++. Napisany w nim symulator wykorzystuje kompilator GCC i jego wariant MinGW dla systemu operacyjnego Windows. Ponadto zaleca się, aby programista zapoznał się ze frameworkiem Qt, ponieważ wiele jego koncepcji leży u podstaw architektury gry.

Jednak przy należytej staranności i chęci projekt ten otwiera przed twórcą dodatków ogromne możliwości. Tabor realizowany jest w formie modułów bazujących na bibliotekach dynamicznych. Główny element konstrukcyjny symulatora jest jednostką taborulub jednostka ruchoma (MU) – wagon (nie posiadający własnego napędu lub będący częścią składu wieloczłonowego) lub część lokomotywy. API umożliwia ustawienie momentu obrotowego przykładanego do zestawów kołowych PE w odpowiedzi na otrzymanie prędkości kątowej zestawów kołowych, a także parametrów zewnętrznych, takich jak napięcie i rodzaj prądu w sieci jezdnej. Symulator nic więcej nie wie i nie chce wiedzieć, co pozostawia fizykę wyposażenia wewnętrznego sumieniu konstruktora konkretnej lokomotywy czy wagonu.

Nietrudno zgadnąć, że tak stosunkowo niskopoziomowe podejście pozwala na realizację najmniejszych niuansów obwodu lokomotywy. Dodatkowo zestaw symulatora zawiera zestaw standardowego wyposażenia instalowanego w taborze krajowym: dźwig maszynisty konw. Nr 395, stan dystrybutora powietrza. Nr 242, stan zaworu hamulca pomocniczego. nr 254 oraz inne elementy wyposażenia hamulcowego. Twórca dodatku musi jedynie podłączyć te elementy do obwodu pneumatycznego konkretnej lokomotywy lub wagonu. Ponadto istnieje API umożliwiające tworzenie własnych jednostek sprzętowych.

Architektonicznie RRS opiera się na interakcji dwóch głównych procesów

  • symulator — silnik dynamiki pociągu TrainEngine 2. Realizuje fizykę ruchu pociągu z uwzględnieniem wielu czynników zewnętrznych, uwzględniając oddziaływanie jednostek poruszających się poprzez urządzenia sprzęgające, przetwarza dane pochodzące z modułów zewnętrznych realizujących fizykę pracy urządzeń taboru
  • Widz — podsystem graficzny wizualizujący ruch pociągu, zbudowany w oparciu o silnik graficzny OpenSceneGraph

Podsystemy te współdziałają ze sobą poprzez pamięć współdzieloną, zaimplementowaną w oparciu o klasę QSharedMemory frameworku Qt. Pierwsze dema wykorzystywały IPC oparte na gniazdach, a w planach jest powrót do tej technologii w przyszłości, biorąc pod uwagę dopracowanie niektórych elementów symulatora i potrzeby z myślą o przyszłości. Przejście na pamięć współdzieloną było w pewnym stopniu wymuszonym środkiem, który przeżył już swoją użyteczność.

Nie będę opisywał niuansów - wiele perypetii rozwoju tego projektu zostało już opisanych w moich publikacjach na temat zasobu, w szczególności mam dość obszerne seria samouczków na temat silnika OpenSceneGraph, która wyrosła z praktyki pracy nad tym projektem.

Nie wszystko w projekcie przebiega tak gładko, jak byśmy tego chcieli. W szczególności podsystem graficzny jest daleki od doskonałości pod względem jakości renderowania, a wydajność karty SIM pozostawia wiele do życzenia. Wydanie to ma jeden cel – zapoznanie z projektem społeczności pasjonatów transportu kolejowego, zarysowanie jego możliwości i finalnie stworzenie otwartego, wieloplatformowego symulatora kolei z zaawansowanym API dla twórców dodatków.

Perspektywy

Perspektywy zależą od Was, naszych drogich przyszłych użytkowników i programistów. Projekt jest otwarty i istnieje Oficjalna stronaskąd można pobrać symulator dokumentacja, którego skład będzie na bieżąco uzupełniany. Istnieje форум projekt, Grupa VKi Kanał Youtube, gdzie można uzyskać najbardziej szczegółowe porady i pomoc.

Dziękuję za uwagę!

Źródło: www.habr.com

Dodaj komentarz