Nastał ten długo oczekiwany dzień, kiedy w końcu mogę zaprezentować ten projekt. Prace nad projektem rozpoczęły się dokładnie rok temu, 1 września 2018 roku, przynajmniej w pierwszy commit ma dokładnie taką datę.
Pasażerski pociąg na stacji Rostów Główny (klikalne)
Czym jest RRS? To otwarty, wieloplatformowy symulator taboru kolejowego o szerokości toru 1520 mm. Czytelnik naturalnie zada pytanie: „Pozwól, do czego potrzebny jest ten projekt, jeśli istnieje wystarczająca liczba symulatorów kolejowych, zarówno komercyjnych, jak i otwartych?” Odpowiedzi na to pytanie szukam poniżej
Historia projektu
Dawno temu, w 2001 roku, zadebiutował , który stworzył w naszym kraju ogromną społeczność miłośników symulatorów kolejowych. W ciągu kilku lat, które ten projekt istniał (dopóki Microsoft nie porzucił go na rzecz bardziej interesujących dla siebie tematów, takich jak bankructwo Nokii itp.), projekt wzbogacił się o liczne dodatki: trasy, tabor, scenariusze.
Na bazie MSTS powstało później kilka innych projektów, takich jak , i inne dodatki oraz pochodne. Pojawiły się również projekty komercyjne, takie jak najsłynniejszy . I wszystko byłoby dobrze, ale wielu miłośników transportu kolejowego nie zadowalają te produkty z zupełnie obiektywnych powodów — w żaden sposób nie odzwierciedlają specyfiki krajowego taboru kolejowego eksploatowanego i projektowanego w przestrzeni post-sowieckiej. To szczególnie uwidacznia się, gdy patrzy się na to, jak realizowane są hamulce pociągu — w żadnym z wymienionych projektów nie ma i nie będzie normalnej realizacji automatycznych hamulców systemu Matrosowa.
W niezbyt bliskim już 2008 roku pojawił się inny projekt — , opracowany przez Wiaczesława Usowa. Projekt jest znakomity tym, że uwzględnia i naprawia wymienione wcześniej niedociągnięcia, przy czym początkowo jest ukierunkowany na tabor kolejowy szerokiego toru. Ale jest jedno duże „ale” — projekt jest proprietary i zamknięty, architektonicznie nie pozwalający na wdrożenie własnego taboru.
Sam do tematyki kolejowej trafiłem w 2007 roku, gdy zacząłem pracować w , na stanowisku naukowego pracownika, a po obronie doktoratu w 2008 roku — starszego pracownika naukowego. Wtedy poznałem wtedy ostatnie osiągnięcia w dziedzinie symulatorów gier kolejowych. To, co zobaczyłem, nie przypadło mi do gustu, a projektu ZDSimulator wówczas jeszcze nie było. W przyszłości, zafascynowany dynamiką taboru, dołączyłem do Rostowskiego Uniwersytetu Transportu Kolejowego () z tematem pracy doktorskiej dotyczącym dynamiki hamowania pociągu towarowego. Obecnie kieruję pracami nad symulatorami transportu kolejowego dla naszej uczelni i uczę przedmiotów specjalistycznych na katedrze „Tabor trakcyjny”.
W związku z powyższym pojawił się pomysł stworzenia symulatora, który pozwoliłby deweloperom dodatków do niego uzyskać pełną kontrolę nad procesami fizycznymi zachodzącymi w taborze. Podobnie jak w kosmicznym symulatorze Orbiter, dla którego kiedyś opracowałem dodatek w postaci rodziny rakiet nośnych na bazie R-7. Rok temu zabrałem się za tę pracę i całkowicie się w nią zaangażowałem. 26 grudnia 2018 roku ujrzała światło dzienne .
Moja praca została zauważona przez entuzjastów, a znany w kręgach symulatorów kolejowych twórca treści wizualnej dla ZDsimulator zaoferował mi pomoc i współpracę w dalszym rozwoju projektu. Później dołączył do nas jeszcze jeden deweloper — ), twórca tras dla ZDsimulator. Nasza wspólna praca doprowadziła nas do pierwszego wydania. Na wideo znajduje się przegląd tego, jak gra wygląda w swoim pierwszym wydaniu.

Cechy symulatora RRS
Przede wszystkim jest to — otwarta architektura oprogramowania. Nie mówiąc nawet o tym, że kod symulatora jest otwarty, istnieje API i SDK, skierowane do deweloperów zewnętrznych dodatków. Próg wejścia jest dość wysoki — wymagane są podstawowe umiejętności programowania w języku C++. Symulator jest napisany właśnie w tym języku, z użyciem kompilatora GCC oraz jego wariantu MinGW dla systemu Windows. Dodatkowo wskazane jest, aby deweloper był zaznajomiony z frameworkiem Qt, ponieważ wiele koncepcji z niego leży u podstaw architektury gry.
Jednakże, przy odpowiednim wysiłku i chęci, ten projekt otwiera dla twórcy dodatków ogromne możliwości. Tabor ruchomy jest realizowany w postaci modułów opartych na dynamicznych bibliotekach. Głównym elementem strukturalnym w symulatorze jest jednostka taboru ruchomego, czyli jednostka ruchoma (JR) — wagon (niesamochodowy lub w składzie zespołu trakcyjnego) lub sekcja lokomotywu. API umożliwia ustawienie momentu obrotowego zastosowanego do osi JR, w odpowiedzi otrzymując prędkość kątową osi, a także zewnętrzne parametry, takie jak napięcie i rodzaj prądu w sieci trakcyjnej. Symulator nic więcej nie wie i nie chce wiedzieć, co pozostawia fizykę działania wewnętrznego wyposażenia na sumieniu twórcy konkretnego lokomotywu lub wagonu.
Niezbyt trudno się domyślić, że taki stosunkowo niski poziom podejścia daje możliwość zrealizowania najdrobniejszych niuansów schematu lokomotywu. Ponadto, w zestawie symulatora znajduje się zestaw standardowego wyposażenia, montowanego na krajowym taborze: dźwig maszynisty o nr 395, rozdzielacz powietrza o nr 242, dźwig hamulca pomocniczego o nr 254 i inne elementy urządzeń hamulcowych. Twórca dodatku musi tylko połączyć te elementy w schemacie pneumatycznym konkretnego lokomotywu lub wagonu. Dodatkowo, dostępne jest API do tworzenia własnych modułów wyposażenia.
Architektonicznie RRS oparty jest na interakcji dwóch głównych procesów
- symulator — fizyczny silnik dynamiki pociągu TrainEngine 2. Realizuje fizykę ruchu pociągu z uwzględnieniem wielu czynników zewnętrznych, uwzględniając interakcję jednostek taboru przez urządzenia sprzęgające, zajmuje się przetwarzaniem danych, które pochodzą z zewnętrznych modułów, realizujących fizykę działania wyposażenia taboru ruchomego
- viewer — podsystem graficzny, realizujący wizualizację ruchu pociągu, zbudowany na podstawie silnika graficznego
Te podsystemy współdziałają ze sobą poprzez wspólną pamięć, zrealizowaną na bazie klasy QSharedMemory frameworka Qt. Pierwsze wersje demonstracyjne korzystały z IPC opartego na gniazdach, a w przyszłości planowany jest powrót do tej technologii, biorąc pod uwagę dopracowanie niektórych części symulatora i przyszłe potrzeby. Przejście na wspólną pamięć było w pewnym sensie wymuszoną decyzją, która straciła sens.
Nie będę opisywał szczegółów — wiele z perypetii rozwoju tego projektu zostało już przedstawionych w moich publikacjach na stronie, w szczególności posiadam dość obszerny , który powstał właśnie z praktyki pracy nad tym projektem.
W projekcie nie wszystko jest tak gładkie jak byśmy chcieli. W szczególności, podsystem graficzny jest dość daleki od doskonałości pod względem jakości renderowania, a wydajność symulatora pozostawia wiele do życzenia. Ten wydanie ma jeden cel — zapoznać społeczność miłośników transportu kolejowego z projektem, określić jego możliwości i w końcu stworzyć otwarty, wieloplatformowy symulator kolejowy z zaawansowanym API dla twórców dodatków.
Perspektywy
Perspektywy zależą od was, nasi drodzy przyszli użytkownicy i deweloperzy. Projekt jest otwarty, istnieje , gdzie można pobrać symulator, z , którego skład będzie nieprzerwanie uzupełniany. Istnieje projektu, , i , gdzie można uzyskać najdokładniejszą konsultację i pomoc.
Dziękuję za uwagę!
Źródło: habr.com
