Настъпи този дългоочакван от мен ден, когато най-накрая мога да представя тази разработка. Проектът беше започнат точно преди година, на 1 септември 2018 г., поне в първоначалното комитиране има именно такава дата.
Пътническият влак на станция Ростов Главен (кликаемо)
Какво е RRS? Това е открит кроссплатформен симулатор на подвижен състав по колея 1520 мм. Читателят закономерно ще зададе въпрос: „Позволете, но за какво е този проект, след като симулатори с железопътна тема, както търговски, така и отворени, са в изобилие?“ За отговор на този въпрос, предлагам да надникнем под кат.
История на проекта
Някога, през 2001 г., се появи на бял свят , който роди в нашата страна огромно общество на ж/д симмистите. През няколко години, през които съществуваше този проект (докато Майкрософт не го остави, занимавайки се с неща, които бяха по-интензивни за тях, като фалит на Nokia и т.н.), проектът придоби маса създадени за него добавки: маршрути, подвижен състав, сценарии.
На базата на MSTS по-късно бяха създадени и много други проекти, като , и други добавки и производни. Появиха се и търговски проекти, като знаменития И всичко щеше да бъде добре, но много любители на ж/д транспорта не са удовлетворени от тези продукти по напълно обективни причини — те никога не отразяват спецификата на местния подвижен състав, експлоатиран и разработван на постсъветското пространство. Особено остро това се проявява, когато се погледне как се реализират спирачките на влака — в нито един от изброените проекти няма и няма да бъде нормална реализация на автоматичните спирачки на системата Матросов.
В не толкова далечната 2008 г. се появи друг проект — , разработен от Вячеслав Усов. Проектът е забележителен с това, че отчита и поправя гореспоменатите недостатъци, като в същото време е насочен основно към подвижния състав с руска колея. Но има едно голямо „но“ — проектът е проприетарен и затворен, архитектурно недопускащ внедряването на собствен подвижен състав.
Самият аз се запознах с железопътната тематика през 2007 г., когато започнах работа в , като научен сътрудник, а след защита на кандидатската си дисертация през 2008 г. — старши научен сътрудник. Тогава се запознах с последните достижения в областта на железопътните симулационни игри. Това, което видях, не ми хареса, а проектът ZDSimulator в онзи момент все още не съществуваше. В по-късно етап, вдъхновен от динамиката на подвижния състав, постъпих в Ростовския държавен университет за транспорт () с тема на докторската дисертация по динамика на спирането на товарен влак. В днешно време ръководя разработката на учебни комплекси за жп транспорт за нашето висше училище и преподавам специализирани дисциплини в катедрата „Тягов подвижен състав“.
С оглед на всичко горепосочено възникна идеята за създаване на симулатор, който да позволява на разработчика на допълнения за него да получи пълен контрол върху физическите процеси, които протичат в подвижния състав. Подобно на космическия симулатор Orbiter, за който по времето си разработих допълнение под формата на семейство ракети носители, базирани на Р-7. Преди година започнах тази работа и се потопих в нея изцяло. На 26 декември 2018 г. се появи .
Моята работа беше забелязана от ентусиасти, а известният в кръговете на жп симулаторите, създател на визуално съдържание за ZDsimulator предложи ми помощ и сътрудничество в по-нататъшното развитие на проекта. По-късно се присъедини и друг разработчик — ), създател на маршрути за ZDsimulator. Нашата съвместна работа ни доведе до първия релиз. На видеото може да се види преглед на това как играта изглежда след първия си релиз.

Особености на симулатора RRS
Преди всичко — отворена софтуерна архитектура. Не само, че кодът на симулатора е отворен, съществува и API и SDK, насочен към разработчици на странични допълнения за него. Прагът на влизане е доста висок — необходими са основни умения за разработка на C++. Симулаторът е написан именно на него, с използване на компилатора GCC и неговия вариант MinGW за операционната система Windows. Освен това, е желателно разработчикът да е запознат с фреймворка Qt, тъй като много концепции от него лежат в основата на архитектурата на играта.
Въпреки че изисква усилия и желание, този проект предоставя на разработчиците на добавки огромни възможности. Подвижният състав се реализира под формата на модули на база динамични библиотеки. Основният структурен елемент в симулатора е единицата на подвижния състав, или подвижна единица (ПЕ) – вагон (немоторен или в състава на мотрисен влак) или секция на локомотива. API позволява задаването на въртящ момент, приложен към колелата на ПЕ, в отговор получавайки ъглова скорост на колелата, както и външни параметри като напрежение и вид ток в контактната мрежа. Симулаторът не знае и не иска да знае нищо повече, което оставя физиката на работа на вътрешното оборудване на разработчика на конкретния локомотив или вагон.
Не е трудно да се досетите, че такъв относително нискоуровнев подход предоставя възможност за реализиране на най-малките нюанси на схемата на локомотива. Освен това, в комплекта на симулатора влиза набор стандартно оборудване, инсталирано на отечествения подвижен състав: крана на машиниста усл. №395, въздухоразпределител усл. №242, кран за спомагателно спиране усл. №254 и други елементи на спирачното оборудване. На разработчика на добавки е достатъчно да свърже тези елементи в пневматична схема на конкретния локомотив или вагон. Освен това, има API за създаване на собствени блокове оборудване.
Архитектурно RRS е построен на взаимодействието на два основни процеса
- simulator — физическият двигател на динамиката на влака TrainEngine 2. Реализира физиката на движението на влака, като отчита множество външни фактори, взимайки предвид взаимодействието на подвижните единици чрез сцепни устройства, обработва данни от външни модули, реализиращи физиката на работа на оборудването на подвижния състав.
- viewer — графичната подсистема, отговаряща за визуализацията на движението на влака, изградена на база графичен двигател
Тези подсистеми взаимодействат помежду си чрез обща памет, реализирана на базата на класа QSharedMemory на фреймуорка Qt. Първите демо версии използваха IPC на базата на сокети, и в по-нататъшно планиране е възможно връщане към тази технология, отчитейки усъвършенстването на някои части на симулатора и бъдещите потребности. Преходът към обща памет беше до известна степен принудителна мярка, която изчерпа своята полезност.
Няма да описвам нюансите — много от перипетиите на развитието на този проект вече са изложени в моите публикации на ресурса, в частност имам доста обширен , израснал точно от практиката на работа по този проект.
В проекта не всичко е толкова гладко, колкото бих искал. В частност, графичната подсистема е доста далеч от съвършенството по отношение на качеството на рендерирането, а производителността на симулатора оставя желано. Този релиз има една цел — да запознае общността от любители на железопътния транспорт с проекта, да очертае неговите възможности и накрая да създаде открит, кросплатформен железопътен симулатор с напреднал API за разработчици на добавки.
Перспективи
Перспективите зависят от вас, нашите скъпи бъдещи потребители и разработчици. Проектът е открит, съществува , откъдето можете да изтеглите симулатора, а , съставът му ще се попълва непрекъснато. Съществува проект, , и , където можете да получите най-подробната консултация и помощ.
Благодаря за вниманието!
Източник: habr.com
