Russian Railway Simulator (RRS): primeira versión pública

Chegou o día que estaba esperando no que por fin podo presentar este desenvolvemento. O proxecto iniciouse hai exactamente un ano, polo menos o 1 de setembro de 2018 Repositorios RRS en Gtihub o primeiro compromiso ten exactamente esta data.

Tren de pasaxeiros na estación principal de Rostov (clickable)

Russian Railway Simulator (RRS): primeira versión pública

Que é RRS? Este é un simulador multiplataforma aberto de material rodante de calibre 1520 mm. O lector fará naturalmente a pregunta: "Desculpe, para que serve este proxecto, se hai un número suficiente de simuladores ferroviarios, tanto comerciais como abertos?" Para a resposta a esta pregunta, suxiro buscar debaixo do gato

Historia do proxecto

Érase unha vez, no 2001, publicouse Microsoft Train Simulator (MSTS), que deu lugar a unha enorme comunidade de ferrocarrís no noso país. Ao longo dos varios anos que existiu este proxecto (ata que Microsoft o abandonou, pasando a cousas máis interesantes para el, como a quebra de Nokia, etc.), o proxecto adquiriu unha gran cantidade de engadidos creados para el: rutas, material rodante, etc. escenarios.

Con base en MSTS, creáronse posteriormente outros proxectos, como OpenRails, RTrainSim (RTS) e outras adicións e derivados. Tamén apareceron proxectos comerciais, como o famoso Trenz. E todo estaría ben, pero moitos fanáticos do transporte ferroviario non están satisfeitos con estes produtos por razóns bastante obxectivas: de ningún xeito reflicten as características específicas do material rodante doméstico operado e desenvolvido no espazo post-soviético. Isto é especialmente agudo cando se observa como se implementan os freos dos trens: ningún dos proxectos enumerados ten ou terá unha implantación normal de freos automáticos do sistema Matrosov.

No non tan afastado ano de 2008, apareceu outro proxecto: ZDSimulator, desenvolvido por Vyacheslav Usov. O proxecto é destacable xa que ten en conta e corrixe as deficiencias mencionadas anteriormente, mentres que inicialmente se centra no material rodante de ancho ruso. Pero hai un gran "pero": o proxecto é propietario e pechado, arquitectónicamente non permite a introdución do seu propio material rodante.

Eu mesmo cheguei ao tema ferroviario en 2007, cando comecei a traballar JSC VELNII, como investigador, e despois de defender a súa tese de doutoramento en 2008, como investigador principal. Foi entón cando coñecín os últimos logros no campo dos xogos de simulación ferroviaria daquela época. E non me gustou o que vin, e o proxecto ZDSimulator non existía nese momento. Máis tarde, fascinado pola dinámica do material rodante, cheguei á Universidade Estatal de Transporte de Rostov (RGUPS) co tema dunha tese de doutoramento sobre a dinámica de freada dun tren de mercadorías. Hoxe dirixo o desenvolvemento de complexos formativos de transporte ferroviario para a nosa universidade e ensino disciplinas especializadas no Departamento de Material Rodante de Tracción.

En relación con todo o anterior, xurdiu a idea de crear un simulador que permitise ao desenvolvedor dun complemento para conseguir o control total dos procesos físicos que ocorren no material rodante. Semellante ao simulador espacial Orbiter, para o que desenvolvín unha adición en forma de familia de vehículos de lanzamento baseados no R-7. Hai un ano asumín este traballo e boteime a el. O 26 de decembro de 2018 viu a luz aquí esta demostración tecnolóxica.

O meu traballo foi notado polos entusiastas, e coñecido nos círculos de ferrocarril simmers, o creador de contido visual para ZDsimulator Roman Biryukov (Romych Russian Railways) ofreceume axuda e cooperación no desenvolvemento do proxecto. Máis tarde uniuse a nós outro desenvolvedor - Alexander Mishchenko (Ulovskii 2017), creador de rutas para ZDsimulator. A nosa colaboración levounos ao noso primeiro lanzamento. O vídeo mostra unha visión xeral de como se ve o xogo para o seu primeiro lanzamento

Características do simulador RRS

En primeiro lugar, é unha arquitectura de software aberta. Sen esquecer o feito de que o código do simulador está aberto, hai unha API e un SDK dirixidos a desenvolvedores de complementos de terceiros. A barreira de entrada é bastante alta: requírense habilidades básicas de desenvolvemento de C++. O simulador está escrito nel, usando o compilador GCC e a súa variante MinGW para o sistema operativo Windows. Ademais, é recomendable que o programador estea familiarizado co framework Qt, xa que moitos dos seus conceptos subxacen na arquitectura do xogo.

Non obstante, coa debida dilixencia e desexo, este proxecto abre enormes oportunidades para o programador de complementos. O material rodante implícase en forma de módulos baseados en bibliotecas dinámicas. O principal elemento estrutural do simulador é unha unidade de material rodante, ou unidade móbil (MU) - un coche (non autopropulsado ou como parte dun tren de unidades múltiples) ou unha sección dunha locomotora. A API permite establecer o par aplicado aos xogos de rodas PE, en resposta á recepción da velocidade angular dos xogos de rodas, así como parámetros externos, como a tensión e o tipo de corrente na rede de contactos. O simulador non sabe nada máis e non quere saber, o que deixa a física do equipo interno á conciencia do desenvolvedor dunha locomotora ou coche en particular.

Non é difícil adiviñar que un enfoque tan relativamente baixo permite implementar os máis pequenos matices do circuíto da locomotora. Ademais, o kit do simulador inclúe un conxunto de equipamento estándar instalado no material rodante doméstico: conv. No 395, estado distribuidor de aire. No 242, estado da válvula de freo auxiliar. No 254 e outros elementos dos equipos de freo. O desenvolvedor do complemento só precisa conectar estes elementos ao circuíto pneumático dunha locomotora ou coche específico. Ademais, hai unha API para crear as túas propias unidades de hardware.

Arquitectónicamente, RRS está construído sobre a interacción de dous procesos principais

  • simulador — motor de dinámica do tren físico TrainEngine 2. Implementa a física do movemento do tren tendo en conta moitos factores externos, tendo en conta a interacción de unidades en movemento a través de dispositivos de acoplamento, procesa datos procedentes de módulos externos que implementan a física de funcionamento dos equipos de material rodante.
  • espectador — un subsistema gráfico que visualiza o movemento do tren, construído a partir dun motor gráfico OpenSceneGraph

Estes subsistemas interactúan entre si a través da memoria compartida, implementada baseándose na clase QSharedMemory do framework Qt. As primeiras demostracións utilizaron IPC baseadas en sockets, e hai plans para volver a esta tecnoloxía no futuro, tendo en conta o perfeccionamento dalgunhas partes do simulador e as necesidades con ollo ao futuro. A transición á memoria compartida foi ata certo punto unha medida forzada que sobreviviu á súa utilidade.

Non vou describir os matices: moitas das vicisitudes do desenvolvemento deste proxecto xa están descritas nas miñas publicacións sobre o recurso, en particular, teño un amplo unha serie de tutoriais sobre o motor OpenSceneGraph, que xurdiu da práctica de traballar neste proxecto.

Non todo no proxecto é tan fluido como nos gustaría. En particular, o subsistema de gráficos dista moito de ser perfecto en termos de calidade de renderizado e o rendemento do sim deixa moito que desexar. Esta versión ten un obxectivo: presentar o proxecto á comunidade de entusiastas do transporte ferroviario, delinear as súas capacidades e, finalmente, crear un simulador ferroviario aberto e multiplataforma cunha API avanzada para desenvolvedores de complementos.

Perspectivas

As perspectivas dependen de ti, os nosos queridos futuros usuarios e desenvolvedores. O proxecto está aberto e existe web oficialdesde onde podes descargar o simulador documentación, cuxa composición se repoñerá continuamente. Existe o foro proxecto, Grupo VKE Canle de YouTube, onde podes obter o asesoramento e a asistencia máis detallados.

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

Fonte: www.habr.com

Engadir un comentario