El día tan esperado ha llegado cuando finalmente puedo presentar este desarrollo. El proyecto se lanzó exactamente hace un año, el 1 de septiembre de 2018, al menos en
el repositorio RRS en Gtihub, el primer compromiso tiene esa fecha.
Tren de pasajeros en la estación de Rostov Glavny (se puede hacer clic)
¿Qué es un RRS? Este es un simulador abierto de plataforma cruzada de material rodante de calibre 1520 mm. El lector naturalmente hará la pregunta: "Disculpe, ¿por qué es necesario este proyecto, si hay suficientes simuladores de ferrocarril, tanto comerciales como abiertos?" Para la respuesta a esta pregunta, propongo mirar debajo del gato
Historia del proyecto
Érase una vez, en 2001,
Microsoft Train Simulator (MSTS) vio la luz del día, generando una gran comunidad de fermentadores ferroviarios en nuestro país. Durante los varios años que duró este proyecto (hasta que Microsoft lo abandonó, haciendo cosas más interesantes para él, como la quiebra de Nokia, etc.), el proyecto se convirtió en una masa de adiciones creadas para él: rutas, material rodante, escenarios.
Basado en MSTS, posteriormente, se crearon otros proyectos, como
OpenRails ,
RTrainSim (RTS) y otros complementos y derivados. También han aparecido proyectos comerciales, como el famoso
Trainz . Y todo estaría bien, pero muchos entusiastas del transporte ferroviario no están satisfechos con estos productos por razones bastante objetivas: no reflejan en absoluto los detalles del material rodante nacional, operado y desarrollado en el espacio postsoviético. Esto es especialmente grave cuando se observa cómo se implementan los frenos del tren: en ninguno de los proyectos enumerados hay y no será una implementación normal de los frenos automáticos del sistema Matrosov.
Ya cerrado en 2008, apareció otro proyecto:
ZDSimulator , desarrollado por Vyacheslav Usov. El proyecto es notable porque tiene en cuenta y corrige las deficiencias mencionadas anteriormente, mientras que inicialmente se enfoca en el material rodante del medidor ruso. Pero hay un gran "pero": el proyecto es propietario y está cerrado, arquitectónicamente no permite la introducción de su propio material rodante.
Yo mismo llegué al tema del ferrocarril en 2007, cuando comencé a trabajar en
VELNII OJSC como investigador, y después de defender mi tesis en 2008, me convertí en investigador senior. Luego me familiaricé con los últimos logros en ese momento en el campo de los juegos de simulación ferroviaria. Y lo que vi, no me gustó, y el proyecto ZDSimulator en ese momento no estaba allí. Más tarde, yo, fascinado por la dinámica del material rodante, llegué a la Universidad Estatal de Transporte de Rostov (
RGUPS ) con el tema de una disertación doctoral sobre la dinámica del frenado de un tren de carga. Hasta la fecha, lidero el desarrollo de simuladores de trenes para el transporte ferroviario para nuestra universidad y enseño disciplinas de perfil en el Departamento de Material rodante de tracción.
En relación con todo lo anterior, surgió la idea de crear un simulador que le permitiera al desarrollador del complemento obtener el control total sobre los procesos físicos que tienen lugar en el material rodante. Similar al simulador espacial Orbiter, para el cual una vez desarrollé una adición en forma de una familia de cohetes portadores basada en P-7. Hace un año, tomé este trabajo y lo hice con la cabeza. El 26 de diciembre de 2018,
se lanzó esta demostración tecnológica .
Los entusiastas notaron mi trabajo, y
Roman Biryukov (Romich RZDUZ) , el creador de contenido visual para ZDsimulator, conocido en los círculos de simmers ferroviarios, me ofreció ayuda y cooperación en el desarrollo posterior del proyecto. Más tarde, otro desarrollador se unió a nosotros:
Alexander Mishchenko (Ulovskii2017 ), el creador de la ruta para ZDsimulator. Nuestra colaboración nos llevó a la primera versión. En el video: una descripción general de cómo se ve el juego en su primer lanzamiento
Características del simulador RRS
En primer lugar, es una arquitectura de software abierta. Sin mencionar el hecho de que el código del simulador está abierto, hay una API y un SDK destinados a los desarrolladores de complementos de terceros. El umbral de entrada es bastante alto: necesita habilidades básicas de desarrollo de C ++. El simulador está escrito específicamente en él, utilizando el compilador GCC y su versión de MinGW para el sistema operativo Windows. Además, es deseable presentarle al desarrollador el marco Qt, ya que muchos de sus conceptos están en el núcleo de la arquitectura del juego.
Sin embargo, con la debida diligencia y el deseo, este proyecto abre grandes oportunidades para el desarrollador de complementos. El material rodante se implementa en forma de módulos basados en bibliotecas dinámicas. El elemento estructural principal en el simulador
es una unidad de material rodante , o una unidad móvil (PE): un automóvil (no autopropulsado o como parte de un vagón de motor) o una sección de locomotora. La API permite establecer el par aplicado a los pares de ruedas del PE, en respuesta a la recepción de la velocidad angular de los pares de ruedas, así como a parámetros externos, como el voltaje y el tipo de corriente en la red de contactos. El simulador no sabe nada más y no quiere saber, lo que deja la física del funcionamiento de los equipos internos en la conciencia del desarrollador de una locomotora o automóvil en particular.
Es fácil adivinar que un enfoque de nivel relativamente bajo hace posible realizar los más pequeños matices del circuito locomotor. Además, el kit de simulador incluye un conjunto de equipos estándar instalados en el material rodante doméstico: grúa de tren del conductor conv. No. 395, distribuidor de aire conv. No. 242, válvula de freno auxiliar No. 254 y otros elementos del equipo de frenos. El desarrollador adicional solo necesita conectar estos elementos en el circuito neumático de una locomotora o automóvil específico. Además, hay una API para crear sus propios bloques de equipos.
Arquitectónicamente, RRS se basa en la interacción de dos procesos principales
- simulator es un motor de física de la dinámica del tren TrainEngine 2. Implementa la física del movimiento del tren teniendo en cuenta muchos factores externos, teniendo en cuenta la interacción de las unidades móviles a través de acopladores, procesa datos de módulos externos que implementan la física del equipo de material rodante
- visor : un subsistema gráfico que implementa la visualización del movimiento de un tren, construido sobre la base del motor gráfico OpenSceneGraph
Estos subsistemas interactúan entre sí a través de la memoria compartida, implementada sobre la base de la clase QSharedMemory del marco Qt. Las primeras demostraciones utilizaron IPC basado en sockets, y en el futuro está previsto volver a esta tecnología, dada la finalización de algunas partes del simulador y las necesidades con vistas al futuro. La transición a la memoria compartida fue, en cierta medida, una medida forzada que se ha vuelto obsoleta.
No describiré los matices: muchos de los altibajos del desarrollo de este proyecto ya se describen en mis publicaciones sobre el recurso, en particular, tengo una
serie bastante extensa
de tutoriales sobre el motor OpenSceneGraph , que ha surgido de la práctica de trabajar en este proyecto.
En el proyecto, no todo es tan fácil como nos gustaría. En particular, el subsistema de gráficos está muy lejos de ser perfecto en términos de calidad de representación, y el rendimiento del sim deja mucho que desear. Este lanzamiento tiene un propósito: familiarizar a la comunidad de entusiastas del transporte ferroviario con el proyecto, describir sus capacidades y finalmente crear un simulador ferroviario abierto y multiplataforma con una API avanzada para el desarrollador de complementos.
Perspectivas
Las perspectivas dependen de usted, nuestros estimados futuros usuarios y desarrolladores. El proyecto está abierto, hay un
sitio oficial donde puede descargar el simulador, con
documentación , cuya composición se actualizará continuamente. Hay un
foro de proyectos,
un grupo VK y
un canal de YouTube donde puede obtener los consejos y la asistencia más detallados.
Gracias por su atencion!