Simulador Ferroviário Russo (RRS): primeiro lançamento público

Chegou o dia que tanto esperava em que finalmente poderei apresentar este desenvolvimento. O projeto foi iniciado há exatamente um ano, em 1º de setembro de 2018, pelo menos Repositórios RRS no Gtihub o primeiro commit tem exatamente esta data.

Trem de passageiros na estação principal de Rostov (clicável)

Simulador Ferroviário Russo (RRS): primeiro lançamento público

O que é RRS? Este é um simulador de plataforma cruzada aberta de material rodante com bitola de 1520 mm. O leitor naturalmente fará a pergunta: “Com licença, para que serve este projeto, se existe um número suficiente de simuladores ferroviários, tanto comerciais como abertos?” Para a resposta a esta pergunta, sugiro olhar embaixo do gato

Projeto História

Era uma vez, em 2001, foi publicado Simulador de trem Microsoft (MSTS), que deu origem a uma enorme comunidade de fervorosos ferroviários em nosso país. Ao longo dos anos de existência deste projeto (até que a Microsoft o abandonou, passando para coisas mais interessantes para ele, como a falência da Nokia, etc.), o projeto adquiriu uma série de acréscimos criados para ele: rotas, material rodante, cenários.

Com base no MSTS, vários outros projetos foram criados posteriormente, como OpenRails, RTrainSim (RTS) e outras adições e derivadas. Também surgiram projetos comerciais, como o famoso tremz. E tudo ficaria bem, mas muitos adeptos do transporte ferroviário não estão satisfeitos com estes produtos por razões bastante objectivas - não reflectem de forma alguma as especificidades do material circulante nacional operado e desenvolvido no espaço pós-soviético. Isto é especialmente grave quando se observa como os freios dos trens são implementados - nenhum dos projetos listados tem ou terá uma implementação normal dos freios automáticos do sistema Matrosov.

No não tão distante ano de 2008, surgiu outro projeto - Simulador ZDS, desenvolvido por Vyacheslav Usov. O projecto é notável na medida em que tem em conta e corrige as deficiências acima mencionadas, concentrando-se inicialmente no material circulante de bitola russa. Mas há um grande “mas” - o projeto é proprietário e fechado, não permitindo arquitetonicamente a introdução de material rodante próprio.

Eu próprio cheguei ao tema ferroviário em 2007, quando comecei a trabalhar em JSC VELNII, como bolseiro de investigação, e depois de defender a sua tese de doutoramento em 2008, como bolseiro de investigação sénior. Foi então que tomei conhecimento das últimas conquistas na área de jogos de simulação ferroviária da época. E não gostei do que vi, e o projeto ZDSimulator não existia naquela época. Mais tarde, fascinado pela dinâmica do material circulante, cheguei à Universidade Estadual de Transportes de Rostov (RGUPS) com tema de dissertação de doutorado sobre dinâmica de frenagem de trens de carga. Hoje lidero o desenvolvimento de complexos de treinamento em transporte ferroviário para nossa universidade e ministro disciplinas especializadas no Departamento de Material Rodante de Tração.

Em conexão com tudo isso, surgiu a ideia de criar um simulador que permitisse ao desenvolvedor de um add-on obter controle total sobre os processos físicos que ocorrem no material circulante. Semelhante ao simulador espacial Orbiter, para o qual desenvolvi uma vez um complemento na forma de uma família de veículos lançadores baseada no R-7. Há um ano, comecei esse trabalho e me joguei nele. 26 de dezembro de 2018 viu a luz aqui esta demonstração de tecnologia.

Meu trabalho foi notado por entusiastas, e bem conhecido no meio ferroviário, criador de conteúdo visual para ZDsimulator Roman Biryukov (Ferrovias Russas Romych) me ofereceu ajuda e cooperação no desenvolvimento do projeto. Mais tarde, outro desenvolvedor se juntou a nós - Alexander Mishchenko (Ulovskii2017)), criador de rotas para ZDsimulator. Nossa colaboração nos levou ao nosso primeiro lançamento. O vídeo mostra uma visão geral de como o jogo se parece em seu primeiro lançamento

Recursos do Simulador RRS

Em primeiro lugar, é uma arquitetura de software aberta. Sem falar que o código do simulador é aberto, existe uma API e SDK voltado para desenvolvedores de complementos de terceiros. A barreira de entrada é bastante alta - são necessárias habilidades básicas de desenvolvimento em C++. Nele está escrito o simulador, utilizando o compilador GCC e sua variante MinGW para o sistema operacional Windows. Além disso, é aconselhável que o desenvolvedor esteja familiarizado com o framework Qt, já que muitos de seus conceitos fundamentam a arquitetura do jogo.

No entanto, com a devida diligência e desejo, este projeto abre enormes oportunidades para o desenvolvedor de complementos. O material circulante é implementado na forma de módulos baseados em bibliotecas dinâmicas. O principal elemento estrutural do simulador é uma unidade de material circulante, ou unidade móvel (MU) - um carro (não automotor ou como parte de um trem de unidades múltiplas) ou uma seção de uma locomotiva. A API permite definir o torque aplicado aos rodados PE, recebendo em resposta a velocidade angular dos rodados, bem como parâmetros externos, como tensão e tipo de corrente na rede de contatos. O simulador não sabe e não quer saber de mais nada, o que deixa a física do equipamento interno para a consciência do desenvolvedor de uma determinada locomotiva ou carro.

Não é difícil adivinhar que tal abordagem de nível relativamente baixo torna possível implementar as menores nuances do circuito da locomotiva. Além disso, o kit do simulador inclui um conjunto de equipamentos padrão instalados no material circulante nacional: guindaste do maquinista conv. Nº 395, condição do distribuidor de ar. Nº 242, condição da válvula do freio auxiliar. Nº 254 e demais elementos do equipamento de freio. O desenvolvedor do add-on só precisa conectar esses elementos ao circuito pneumático de uma locomotiva ou vagão específico. Além disso, existe uma API para criar suas próprias unidades de hardware.

Arquitetonicamente, o RRS é construído na interação de dois processos principais

  • simulador — motor de dinâmica física do trem TrainEngine 2. Implementa a física do movimento do trem, levando em consideração diversos fatores externos, levando em consideração a interação das unidades móveis por meio de dispositivos de acoplamento, processa dados provenientes de módulos externos que implementam a física de operação dos equipamentos de material circulante
  • espectador — um subsistema gráfico que visualiza o movimento do trem, construído com base em um motor gráfico OpenSceneGraph

Esses subsistemas interagem entre si por meio de memória compartilhada, implementada com base na classe QSharedMemory do framework Qt. As primeiras demos utilizaram IPC baseado em soquete, e há planos de retornar a esta tecnologia no futuro, levando em consideração o refinamento de algumas partes do simulador e necessidades de olho no futuro. A transição para a memória partilhada foi, até certo ponto, uma medida forçada que perdeu a sua utilidade.

Não vou descrever as nuances - muitas das vicissitudes do desenvolvimento deste projeto já estão delineadas nas minhas publicações sobre o recurso, em particular, tenho um bastante extenso uma série de tutoriais sobre o mecanismo OpenSceneGraph, que surgiu da prática de trabalhar neste projeto.

Nem tudo no projeto é tão tranquilo quanto gostaríamos. Em particular, o subsistema gráfico está longe de ser perfeito em termos de qualidade de renderização e o desempenho do sim deixa muito a desejar. Esta versão tem um objetivo: apresentar o projeto à comunidade de entusiastas do transporte ferroviário, delinear suas capacidades e, finalmente, criar um simulador ferroviário aberto e multiplataforma com uma API avançada para desenvolvedores de complementos.

Perspectivas

As perspectivas dependem de vocês, nossos queridos futuros usuários e desenvolvedores. O projeto está aberto e existe site oficialonde você pode baixar o simulador, em documentação, cuja composição será continuamente reabastecida. Existe форум projeto, Grupo VKE Canal do Youtube, onde você pode obter aconselhamento e assistência mais detalhados.

Obrigado!

Fonte: habr.com

Adicionar um comentário