Russian Railway Simulator (RRS) — свободный проект железнодорожного симулятора с открытым исходным кодом. RRS написан на языке С++ и является кроссплатформенным проектом, то есть может работать в разных операционных системах. В настоящее время гарантируется работа симулятора в операционных системах Windows 7/8/10 а так же ОС на базе ядра Linux.
Особенности симулятора RRS
Прежде всего это — открытая программная архитектура. Не говоря даже о том, что код симулятора открыт, существует API и SDK, ориентированный на разработчиков сторонних дополнений к нему. Порог вхождения довольно высок — требуются базовые навыки разработки на языке C++. Симулятор написан именно на нем, с применением компилятора GCC и его варианта MinGW для операционной системы Windows. Кроме того, желательно знакомство разработчика с фреймворком Qt, так как многие концепции из него лежат в основе архитектуры игры.
Однако, при должном усердии и желании, данный проект открывает для разработчика дополнений огромные возможности. Подвижной состав реализуется в виде модулей на базе динамических библиотек. Основным структурным элементом в симуляторе является единица подвижного состава, или подвижная единица (ПЕ) — вагон (несамоходный или в составе моторвагонного поезда) или секция локомотива. API дает возможность задавать крутящий момент, приложенный к колесным парам ПЕ, в ответ получая угловую скорость колесных пар, а так же внешние параметры, вроде напряжения и рода тока в контактной сети. Больше симулятор ни о чем не знает и знать не хочет, что оставляет физику работы внутреннего оборудования на совести разработчика конкретного локомотива или вагона.
Нетрудно догадаться, что такой относительно низкоуровневый подход дает возможность реализовать мельчайшие нюансы схемы локомотива. Кроме того, в комплект симулятора входит набор стандартного оборудования, устанавливаемого на отечественный подвижной состав: поездной кран машиниста усл. №395, воздухораспределитель усл. №242, кран вспомогательного тормоза усл. №254 и прочие элементы. Разработчику дополнения достаточно лишь соединить эти элементы в пневматическую схему конкретного локомотива или вагона. Кроме того, имеется API для создания собственных блоков оборудования.
Архитектурно RRS построен на взаимодействии двух главных процессов:
- simulator — физический движок динамики поезда TrainEngine 2. Реализует физику движения поезда с учетом множества внешних факторов, учитывая взаимодействие подвижных единиц через сцепные приборы, занимается обработкой данных, поступающих из внешних модулей, реализующих физику работы оборудования подвижного состава;
- viewer — графическая подсистема, выполняющая визуализацию движения поезда, построенная на базе графического движка OpenSceneGraph.
Эти подсистемы взаимодействуют между собой через общую память, реализуемую на базе класса QSharedMemory фреймворка Qt. Первые демо-версии использовали IPC на базе сокетов, и в дальнейшем планируется возврат на эту технологию, учитывая доработку некоторых частей симулятора и потребности с прицелом на будущее. Переход на общую память был в какой-то степени вынужденной мерой, которая изжила себя.
В проекте не все так гладко как хотелось бы. В частности, графическая подсистема весьма далека до совершенства в части качества рендеринга, да и производительность симулятора оставляет желать лучшего. Данный релиз имеет одну цель — познакомить сообщество любителей ж/д транспорта с проектом, очертить его возможности и наконец-то создать открытый, кроссплатформенный железнодорожный симулятор с продвинутым API для разработчика дополнений.
Перспективы
Перспективы зависят от вас, наши дорогие будущие пользователи и разработчики. В сравнении с другими железнодорожными симуляторами, RRS предоставляет пользователю гибкую модульную архитектуру, позволяя расширять функциональные возможности программы.
Добро пожаловать в RRS, уважаемые коллеги!