523

Russian Railway Simulator (RRS): первый публичный релиз

Не моё, пост с Хабра


Наступил тот долгожданный мной день, когда я наконец могу представить эту разработку. Проект был начат ровно год назад, 1 сентября 2018 года, по крайней мере в репозитории RRS на Gtihub первый коммит имеет именно такую дату.

Russian Railway Simulator (RRS): первый публичный релиз

Пассажирский поезд на станции Ростов Главный


Что такое RRS? Это открытый кроссплатформенный симулятор подвижного состава колеи 1520 мм. Читатель закономерно задаст вопрос: «Позвольте, а для чего нужен этот проект, если симуляторов железнодорожной тематики, как коммерческих, так и открытых, достаточное количество?» За ответом на этот вопрос я и предлагаю заглянуть под кат


История проекта


Когда-то давным давно, в 2001 году, увидел свет Microsoft Train Simulator (MSTS), породивший в нашей стране огромное сообщество ж/д-симмеров. За несколько лет, которые просуществовал этот проект (пока Майкрософт не забросила его, занявшись более интересными для неё вещами, типа обанкрочивания Нокии и т.п.) проект оброс массой созданных для него дополнений: маршрутов, подвижного состава, сценариев.


На основе MSTS, в последствии, был создан ряд других проектов, такие как OpenRails, RTrainSim (RTS) и прочие дополнения и производные. Появились и коммерческие проекты, такие как знаменитейший Trainz. И все бы хорошо, но многих любителей ж/д транспорта эти продукты не устраивают по вполне объективным причинам — они никак не отражают специфику отечественного подвижного состава, эксплуатируемого и разрабатываемого на постсоветском пространстве. Особенно остро это проявляется при взгляде на то, как реализуются тормоза поезда — ни в одном из перечисленных проектов нет и не будет нормальной реализации автоматических тормозов системы Матросова.


В неблизком уже, 2008 году появился другой проект — ZDSimulator, разработанный Вячеславом Усовым. Проект замечателен тем, что вышеперечисленные недостатки он учитывает и исправляет, при этом изначально ориентирован на подвижной состав русской колеи. Но есть одно большое «но» — проект проприетарный и закрытый, архитектурно не допускающий внедрение в него собственного подвижного состава.


Сам я пришел к железнодорожной тематике в 2007 году, когда стал работать в ОАО ВЭлНИИ, в должности научного сотрудника, а после защиты кандидатской диссертации в 2008 году — старшего научного сотрудника. Тогда же я и познакомился с последними на тот момент достижениями в области железнодорожных игр-симуляторов. И то что я увидел, мне не понравилось, а проекта ZDSimulator на тот момент еще не было. В дальнейшем я, увлеченный динамикой подвижного состава, пришел в Ростовский государственный университет путей сообщения (РГУПС) с темой докторской диссертации по динамике торможения грузового поезда. На сегодняшний день я руковожу разработкой тренажерных комплексов ж/д транспорта для нашего вуза и преподаю профильные дисциплины на кафедре «Тяговый подвижной состав».


В связи со всем вышеперечисленным возникла идея создания симулятора, который позволял бы разработчику дополнения для него получить полный контроль над физическими процессами, протекающими в подвижном составе. Сродни космическому симулятору Orbiter, для которого я разработал в свое время дополнение в виде семейства ракет носителей на базе Р-7. Год назад я взялся за эту работу и ушел в нее с головой. 26 декабря 2018 года увидела свет вот эта технологическая демка.


Моя работа была замечена энтузиастами, и известный в кругах ж/д-симмеров, создатель визуального контента для ZDsimulator Роман Бирюков (Ромыч РЖДУЗ) предложил мне помощь и сотрудничество в дальнейшем развитии проекта. Позже к нам присоединился еще один разработчик — Александр Мищенко (Ulovskii2017), создатель маршрутов для ZDsimulator. Наша совместная работа привела нас к первому релизу. На видео — некоторый обзор того, как игра выглядит к своему первому релизу

Особенности симулятора RRS


Прежде всего это — открытая программная архитектура. Не говоря даже о том, что код симулятора открыт, существует API и SDK, ориентированный на разработчиков сторонних дополнений к нему. Порог вхождения довольно высок — требуются базовые навыки разработки на языке C++. Симулятор написан именно на нем, с применением компилятора GCC и его варианта MinGW для операционной системы Windows. Кроме того, желательно знакомство разработчика с фреймворком Qt, так как многие концепции из него лежат в основе архитектуры игры.


Однако, при должном усердии и желании, данный проект открывает для разработчика дополнений огромные возможности. Подвижной состав реализуется в виде модулей на базе динамических библиотек. Основным структурным элементом в симуляторе является единица подвижного состава, или подвижная единица (ПЕ) — вагон (несамоходный или в составе моторвагонного поезда) или секция локомотива. API дает возможность задавать крутящий момент, приложенный к колесным парам ПЕ, в ответ получая угловую скорость колесных пар, а так же внешние параметры, вроде напряжения и рода тока в контактной сети. Больше симулятор ни о чем не знает и знать не хочет, что оставляет физику работы внутреннего оборудования на совести разработчика конкретного локомотива или вагона.


Не трудно догадаться, что такой относительно низкоуровневый подход дает возможность реализовать мельчайшие нюансы схемы локомотива. Кроме того, в комплект симулятора входит набор стандартного оборудования, устанавливаемого на отечественный подвижной состав: поездной кран машиниста усл. №395, воздухораспределитель усл. №242, кран вспомогательного тормоза усл. №254 и прочие элементы тормозного оборудования. Разработчику дополнения достаточно лишь соединить эти элементы в пневматическую схему конкретного локомотива или вагона. Кроме того, имеется API для создания собственных блоков оборудования.


Архитектурно RRS построен на взаимодействии двух главных процессов:

simulator — физический движок динамики поезда TrainEngine 2. Реализует физику движения поезда с учетом множества внешних факторов, учитывая взаимодействие подвижных единиц через сцепные приборы, занимается обработкой данных, поступающих из внешних модулей, реализующих физику работы оборудования подвижного состава

viewer — графическая подсистема, выполняющая визуализацию движения поезда, построенная на базе графического движка OpenSceneGraph.


Эти подсистемы взаимодействуют между собой через общую память, реализуемую на базе класса QSharedMemory фреймворка Qt. Первые демо-версии использовали IPC на базе сокетов, и в дальнейшем планируется возврат на эту технологию, учитывая доработку некоторых частей симулятора и потребности с прицелом на будущее. Переход на общую память был в какой-то степени вынужденной мерой, которая изжила себя.


Не буду описывать нюансы — многие из перипетий развития этого проекта уже изложены в моих публикациях на ресурсе, в частности у меня есть довольно обширный цикл туториалов по движку OpenSceneGraph, выросший как раз из практики работы над данным проектом.


В проекте не все так гладко как хотелось бы. В частности, графическая подсистема весьма далека до совершенства в части качества рендеринга, да и производительность сима оставляет желать лучшего. Данный релиз имеет одну цель — познакомить сообщество любителей ж/д транспорта с проектом, очертить его возможности и наконец-то создать открытый, кроссплатформенный железнодорожный симулятор с продвинутым API для разработчика дополнений.


Перспективы


Перспективы зависят от вас, наши дорогие будущие пользователи и разработчики. Проект открыт, существует официальный сайт, где можно скачать симулятор, с документацией, состав которой будет непрерывно пополнятся. Существует форум проекта, группа ВК, и канал на YouTube, где можно получить самую подробную консультацию и помощь.


Спасибо за внимание!

Лига Геймеров

55.4K поста91.8K подписчиков

Правила сообщества

Ничто не истинно, все дозволено, кроме политоты, за нее пермач, идите на ютуб
Помни!
- Новостные/информационные публикации постим в pikabu GAMES
- Развлекательный контент в
Лигу Геймеров



Нельзя:

Попрошайничать;

Рекламировать;

Оскорблять участников сообщества;

Нельзя оценивать Toki Tori ниже чем на 10 баллов из 10;

Выкладывать ваши кулвидосы с только что зареганных акков - пермач

За неэтичное использование сообщества - тоже бан. Если ты выкладываешь пост в наше сообщество и получаешь стартовые плюсы от наших подписчиков, не думай, что вытаскивать потом пост в своё личное сообщество будет умным поступком.

20
Автор поста оценил этот комментарий
Всё равно пустите.
раскрыть ветку (1)
32
Автор поста оценил этот комментарий
Иллюстрация к комментарию
36
Автор поста оценил этот комментарий

за проводника играть можно? чтоб ходить "чай-кофе?"?

раскрыть ветку (1)
35
Автор поста оценил этот комментарий
Иллюстрация к комментарию
показать ответы
50
Автор поста оценил этот комментарий

Почему сразу нет то, просто пустите мододелов.
- Они вам и самоубийц на рельсы пустят, и пьяных дедов на нивах, пытающихся под шлагбаумом проскочить, и бухих вахтовиков добавят, будем стоять ждать, когда с путей перевернувшийся поезд с ракетами поднимут, малолетки-зацеперы в камеру лезть будут, и обосранный туалет сделают, и про "Санитарную зону" будете слышать со всех наушников.

*И с полицией протоколы составлять будете, потому что кто-то кого-то захуярил, полицай заблёванный и пьяный лежит посреди вагона, а кому-то протокол составить надо, чтобы на следующей станции забрали. А пока ты его составляешь - помощник машиниста не туда тумблер дёрнет, и стрелка его на другую магистраль выведет. Или кто-то прозевает остановку, дёрнет за стоп-кран и начнёт орать "Остановите поезд, дайте сойти, хуле вы меня не разбудили".


Раз это симулятор, то надо всё продумывать)

раскрыть ветку (1)
20
Автор поста оценил этот комментарий
Почему сразу нет то, просто пустите мододелов.

Эм...

Прежде всего это — открытая программная архитектура. Не говоря даже о том, что код симулятора открыт, существует API и SDK, ориентированный на разработчиков сторонних дополнений к нему.
показать ответы
0
DELETED
Автор поста оценил этот комментарий

Пул-реквесты имеет смысл делать? Я бы немного причесал профайлы.

За C++ и Qt тебе респект. Кроме как на работе нигде не встречад разработчиков на этих инструментов. Одни фронтэндеры и пыхамисты встречаются по жизни =)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Конечно имеет, и вообще, присоединяйся к разработке.

А с автором можешь пообщаться по ссылке в первой строчке поста )

0
Автор поста оценил этот комментарий

у меня такой вопрос к вам, как человеку, который в этом варится.

есть ли какое-то одно место, в котором содержатся все модели с указанием автора, лицензии и тп.

или приходится выскребать все свободные модели с различных сайтов разной степени говёности?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Я не особо в этом варюсь, "мопед не мой" )

18
Автор поста оценил этот комментарий

Перестать ставить в видео свою любимую музыку. На дворе 2019 год и Песняры в трейлерах выглядят очень не в тему. Такое подойдет для семейного архива, но не для демо игры. Нужно ставить что-нибудь нейтральное.
А с проектом удачи!

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Перестань разговаривать с копипастой, первой строчкой же в посте написал )

показать ответы
0
Автор поста оценил этот комментарий

эмм.. где ты увидел, что я тебе писал?
я писал разработчикам проекта, выше написал как и почему.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Иллюстрация к комментарию
1
Автор поста оценил этот комментарий

ну знаешь, часто поиск по своему же названию может привести на пикабу. или мне на хабре регаться чтобы 3 строчки написать?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не хочешь, не регайся, но мне-то смысл писать?

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества