Russian Railway Simulator (RRS): першы публічны рэліз

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

Пасажырскі цягнік на станцыі Растоў Галоўны (клікабельна)

Russian Railway Simulator (RRS): першы публічны рэліз

Што такое RRS? Гэта адкрыты кросплатформавы сімулятар рухомага складу каляіны 1520 мм. Чытач заканамерна задасць пытанне: "Дазвольце, а для чаго патрэбен гэты праект, калі сімулятараў чыгуначнай тэматыкі, як камерцыйных, так і адкрытых, дастатковая колькасць?" За адказам на гэтае пытанне я і прапаную зазірнуць пад кат

Гісторыя праекта

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

На аснове MSTS, у наступстве, быў створаны шэраг іншых праектаў, такія як OpenRails, RTrainSim (RTS) і іншыя дапаўненні і вытворныя. З'явіліся і камерцыйныя праекты, такія як знакаміты Цягнік. І ўсё б добра, але многіх аматараў чыгуначнага транспарту гэтыя прадукты не задавальняюць па цалкам аб'ектыўных прычынах — яны ніяк не адлюстроўваюць спецыфіку айчыннага рухомага саставу, які эксплуатуецца і распрацоўваецца на постсавецкай прасторы. Асабліва востра гэта праяўляецца пры поглядзе на тое, як рэалізуюцца тормазы цягніка - ні ў адным з пералічаных праектаў няма і не будзе нармальнай рэалізацыі аўтаматычных тармазоў сістэмы Матросава.

У няблізкім ужо, 2008 годзе з'явіўся іншы праект Сімулятар ZDS, распрацаваны Вячаславам Усавым. Праект выдатны тым, што вышэйпералічаныя недахопы ён улічвае і выпраўляе, пры гэтым першапачаткова арыентаваны на рухомы склад рускай каляіны. Але ёсць адно вялікае "але" – праект прапрыетарны і закрыты, архітэктурна не дапускае ўкараненне ў яго ўласнага рухомага складу.

Сам я прыйшоў да чыгуначнай тэматыкі ў 2007 годзе, калі стаў працаваць у ААТ ВЭЛНДІ, на пасадзе навуковага супрацоўніка, а пасля абароны кандыдацкай дысертацыі ў 2008 годзе - старшага навуковага супрацоўніка. Тады ж я і пазнаёміўся з апошнімі на той момант дасягненнямі ў галіне чыгуначных гульняў-сімулятараў. І тое, што я ўбачыў, мне не спадабалася, а праекта ZDSimulator на той момант яшчэ не было. У далейшым я, захоплены дынамікай рухомага складу, прыйшоў у Растоўскі дзяржаўны ўніверсітэт шляхоў зносін (РГУПС) з тэмай доктарскай дысертацыі па дынаміцы тармажэння грузавога цягніка. На сённяшні дзень я кірую распрацоўкай трэнажорных комплексаў чыгуначнага транспарта для нашай ВНУ і выкладаю профільныя дысцыпліны на кафедры "Цягавы рухомы састаў".

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

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

Асаблівасці сімулятара RRS

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

Аднак, пры належнай стараннасці і жаданні, дадзены праект адчыняе для распрацоўніка дадаткаў велізарныя магчымасці. Рухомы састаў рэалізуецца ў выглядзе модуляў на базе дынамічных бібліятэк. Асноўным структурным элементам у сімулятары з'яўляецца адзінка рухомага складу, або рухомая адзінка (ПЕ) - вагон (несамаходны або ў складзе маторвагоннага цягніка) або секцыя лакаматыва. API дае магчымасць задаваць крутоўны момант, прыкладзены да колавых пар ПЕ, у адказ атрымліваючы кутнюю хуткасць колавых пар, а гэтак жа вонкавыя параметры, накшталт напругі і роды току ў кантактнай сетцы. Больш сімулятар ні пра што не ведае і ведаць не жадае, што пакідае фізіку працы ўнутранага абсталявання на сумленні распрацоўніка пэўнага лакаматыва ці вагона.

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

Архітэктурна RRS пабудаваны на ўзаемадзеянні двух галоўных працэсаў

  • сімулятар - фізічны рухавічок дынамікі цягніка TrainEngine 2. Рэалізуе фізіку руху цягніка з улікам мноства знешніх фактараў, улічваючы ўзаемадзеянне рухомых адзінак праз счэпныя прыборы, займаецца апрацоўкай дадзеных, якія паступаюць са знешніх модуляў, якія рэалізуюць фізіку працы абсталявання рухомага саставу.
  • глядач - графічная падсістэма, якая выконвае візуалізацыю руху цягніка, пабудаваная на базе графічнага рухавічка OpenSceneGraph

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

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

У праекце не ўсё так гладка як хацелася б. У прыватнасці, графічная падсістэма вельмі далёкая да дасканаласці ў частцы якасці рэндэрынгу, ды і прадукцыйнасць Сіма пакідае жадаць лепшага. Дадзены рэліз мае адну мэту – пазнаёміць супольнасць аматараў чыгуначнага транспарту з праектам, акрэсліць яго магчымасці і стварыць адкрыты, кросплатформавы чыгуначны сімулятар з прасунутым API для распрацоўніка дадаткаў.

Перспектывы

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

Дзякуй за ўвагу!

Крыніца: habr.com

Дадаць каментар