Russian Railway Simulator (RRS): primeiro lançamento público

Chegou o tão esperado dia em que finalmente posso apresentar esse desenvolvimento. O projeto foi lançado há exatamente um ano, em 1 de setembro de 2018, pelo menos no repositório RRS no Gtihub, o primeiro commit tem essa data.

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



O que é um RRS? Este é um simulador aberto de plataforma cruzada de material de rolamento de bitola de 1520 mm. O leitor naturalmente fará a pergunta: “Com licença, para que serve esse projeto, se houver simuladores ferroviários suficientes, tanto comerciais quanto abertos?” Para a resposta a esta pergunta, proponho olhar sob o gato

Histórico do projeto


Era uma vez, em 2001, o Microsoft Train Simulator (MSTS), visto a luz do dia, gerando uma enorme comunidade de ferreiros ferroviários em nosso país. Nos vários anos em que esse projeto durou (até que a Microsoft o abandonou, fazendo coisas mais interessantes, como a falência da Nokia etc.), o projeto se transformou em uma massa de adições criadas para ele: rotas, material circulante, cenários.

Com base no MSTS, posteriormente, vários outros projetos foram criados, como o OpenRails , RTrainSim (RTS) e outros complementos e derivados. Também surgiram projetos comerciais, como o famoso Trainz . E tudo ficaria bem, mas muitos entusiastas do transporte ferroviário não estão satisfeitos com esses produtos por razões bastante objetivas - eles não refletem as especificidades do material circulante doméstico, operado e desenvolvido no espaço pós-soviético. Isso é especialmente agudo quando se observa como os freios de trem são implementados - em nenhum dos projetos listados há e não haverá uma implementação normal dos freios automáticos do sistema Matrosov.

Já em 2008, outro projeto apareceu - o ZDSimulator , desenvolvido por Vyacheslav Usov. O projeto é notável, pois leva em consideração e corrige as deficiências acima mencionadas, concentrando-se inicialmente no material circulante do gabari russo. Mas existe um grande “mas” - o projeto é proprietário e fechado, arquitetonicamente, não permitindo a introdução de seu próprio material circulante.

Eu próprio vim para o tópico ferroviário em 2007, quando comecei a trabalhar na VELNII OJSC como pesquisador e, depois de defender minha dissertação em 2008, me tornei pesquisador sênior. Então me familiarizei com as mais recentes conquistas da época no campo de jogos de simulação ferroviária. E o que vi não gostei e o projeto ZDSimulator na época não estava lá. Mais tarde, fascinado pela dinâmica do material circulante, cheguei à Universidade Estadual de Transporte de Rostov ( RGUPS ) com o tema de uma dissertação de doutorado sobre a dinâmica da frenagem de um trem de carga. Até o momento, lidero o desenvolvimento de simuladores de trem para transporte ferroviário em nossa universidade e ensino disciplinas de perfil no Departamento de Material Rodante de Tração.

Em conexão com tudo isso, surgiu a idéia de criar um simulador que permitisse ao desenvolvedor do complemento obter controle total sobre os processos físicos ocorridos no material circulante. Parecido com o simulador espacial Orbiter, para o qual desenvolvi uma adição na forma de uma família de foguetes portadores baseados em P-7. Há um ano, peguei esse trabalho e entrei com minha cabeça. Em 26 de dezembro de 2018, esta demonstração tecnológica foi lançada .

Meu trabalho foi notado por entusiastas, e Roman Biryukov (Romich RZDUZ) , criador de conteúdo visual do ZDsimulator, conhecido nos círculos de ferros de passar ferro, me ofereceu ajuda e cooperação no desenvolvimento do projeto. Mais tarde, outro desenvolvedor se juntou a nós - Alexander Mishchenko (Ulovskii2017 ), o criador da rota para o ZDsimulator. Nossa colaboração nos levou ao primeiro lançamento. No vídeo - uma visão geral de como o jogo se parece com seu primeiro lançamento


Recursos do simulador RRS


Primeiro de tudo, é uma arquitetura de software aberta. Sem mencionar o fato de o código do simulador estar aberto, há uma API e um SDK destinados a desenvolvedores de complementos de terceiros. O limite de entrada é bastante alto - você precisa de habilidades básicas de desenvolvimento em C ++. O simulador é escrito especificamente nele, usando o compilador GCC e sua versão do MinGW para o sistema operacional Windows. Além disso, é desejável introduzir o desenvolvedor na estrutura Qt, já que muitos dos conceitos dele estão no centro da arquitetura do jogo.

No entanto, com a devida diligência e desejo, esse projeto abre grandes oportunidades para o desenvolvedor do complemento. 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 uma unidade móvel (PE) - um carro (não autopropulsor ou como parte de um vagão de trem) ou uma seção de uma locomotiva. A API permite definir o torque aplicado aos pares de roda do PE, em resposta ao recebimento da velocidade angular dos pares de roda, além de parâmetros externos, como tensão e tipo de corrente na rede de contatos. O simulador não sabe mais nada e não quer saber, o que deixa a física da operação de equipamentos internos na consciência do desenvolvedor de uma determinada locomotiva ou carro.

É fácil adivinhar que uma abordagem de nível relativamente baixo torna possível perceber as menores nuances do circuito da locomotiva. Além disso, o kit simulador inclui um conjunto de equipamentos padrão instalados no material circulante doméstico: guindaste de trem da conv. 395, distribuidor de ar conv. No. 242, válvula de freio auxiliar 254 e outros elementos do equipamento de freio. O desenvolvedor do complemento precisa apenas conectar esses elementos no circuito pneumático de uma locomotiva ou carro específico. Além disso, existe uma API para criar seus próprios blocos de equipamentos.

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

  • simulator é um motor de física da dinâmica de trens TrainEngine 2. Implementa a física de movimento de trens, levando em consideração muitos fatores externos, levando em consideração a interação de unidades móveis por meio de acopladores, processando dados de módulos externos que implementam a física de equipamentos de material circulante
  • visualizador - um subsistema gráfico que implementa a visualização do movimento de um trem, construído com base no mecanismo gráfico OpenSceneGraph

Esses subsistemas interagem entre si por meio de memória compartilhada, implementada com base na classe QSharedMemory da estrutura Qt. As primeiras demonstrações usaram IPC com base em soquetes e, no futuro, está planejado retornar a essa tecnologia, dada a conclusão de algumas partes do simulador e as necessidades, tendo em vista o futuro. A transição para a memória compartilhada foi, em certa medida, uma medida forçada que se tornou obsoleta.

Não descreverei as nuances - muitos dos altos e baixos do desenvolvimento deste projeto já estão descritos em minhas publicações sobre o recurso, em particular, tenho uma série bastante extensa de tutoriais sobre o mecanismo OpenSceneGraph , que cresceu apenas com a prática de trabalhar neste projeto.

No projeto, nem tudo é tão bom quanto gostaríamos. Em particular, o subsistema gráfico está muito 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 - familiarizar a comunidade de entusiastas do transporte ferroviário com o projeto, descrever seus recursos e finalmente criar um simulador ferroviário aberto de plataforma cruzada com uma API avançada para o desenvolvedor de complementos.

Perspectivas


As perspectivas são suas, nossos queridos futuros usuários e desenvolvedores. O projeto está aberto, existe um site oficial onde você pode baixar o simulador, com documentação , cuja composição será atualizada continuamente. Há um fórum do projeto, um grupo VK e um canal do YouTube onde você pode obter conselhos e assistência mais detalhados.

Obrigado pela atenção!

Source: https://habr.com/ru/post/pt465689/


All Articles