俄罗斯铁路模拟器(RRS):首次公开发布

我一直在等待的那一天终于到来了,我终于可以展示这一进展了。 该项目至少是在一年前,即1年2018月XNUMX日开始的 Gtihub 上的 RRS 存储库 第一次提交正是这个日期。

罗斯托夫总站的旅客列车(可点击)

俄罗斯铁路模拟器(RRS):首次公开发布

什么是 RRS? 这是 1520 毫米轨距机车车辆的开放式跨平台模拟器。 读者自然会问:“请问,如果有足够数量的商业和开放的铁路模拟器,这个项目是做什么用的?” 对于这个问题的答案,我建议看看猫下面

项目历史

从前,2001年,它出版了 微软火车模拟器(MSTS),这在我国催生了一个巨大的铁路沸腾社区。 在这个项目存在的几年里(直到微软放弃它,转向更有趣的事情,例如诺基亚的破产等),该项目获得了为其创建的大量附加内容:路线、机车车辆、场景。

基于MSTS,随后创建了许多其他项目,例如 开放式铁路, RTrainSim (RTS) 以及其他添加物和衍生物。 商业项目也出现了,比如著名的 火车。 一切都会好起来的,但许多铁路运输爱好者出于相当客观的原因对这些产品不满意——它们根本没有反映后苏联时期运营和开发的国内机车车辆的具体情况。 当考虑如何实施火车制动时,这一点尤其严重 - 列出的项目都没有或不会正常实施 Matrosov 系统的自动制动。

在不远的2008年,另一个项目出现了—— ZD模拟器,由维亚切斯拉夫·乌索夫开发。 该项目的非凡之处在于它考虑并纠正了上述缺点,同时最初重点关注俄罗斯轨距机车车辆。 但有一个很大的“但是”——该项目是专有且封闭的,从架构上不允许引入自己的机车车辆。

我自己是在 2007 年开始接触铁路话题的。 韦尔尼股份公司,研究员,2008年博士论文答辩后,晋升高级研究员。 也就是在那个时候,我了解到了当时铁路模拟游戏领域的最新成果。 我不喜欢我所看到的,而且当时 ZDSimulator 项目还不存在。 后来,我对机车车辆的动态着迷,来到了罗斯托夫国立交通大学(RGUPS),其博士论文的主题是货运列车的制动动力学。 如今,我领导我们大学铁路运输培训中心的开发,并在牵引机车车辆系教授专业学科。

与上述所有相关,产生了创建一个模拟器的想法,该模拟器将允许其附加组件的开发人员完全控制机车车辆中发生的物理过程。 与 Orbiter 太空模拟器类似,我曾经为其开发过一个基于 R-7 的运载火箭系列的附加组件。 一年前,我开始了这项工作,全身心投入其中。 26年2018月XNUMX日在这里看到了光明 该技术演示.

我的作品受到了爱好者的关注,并在铁路模拟圈中广为人知,ZDsimulator 的视觉内容创建者 罗曼·比留科夫 (Romych Russian Railways) 为我该项目的进一步发展提供了帮助和合作。 后来另一位开发者加入了我们—— 亚历山大·米先科 (Ulovskii2017),ZDsimulator 的路线创建器。 我们的合作使我们发布了第一个版本。 该视频展示了游戏首次发布时的一些概述

RRS模拟器的特点

首先,它是一个开放的软件架构。 更不用说模拟器代码是开放的,还有针对第三方插件开发人员的 API 和 SDK。 入门门槛相当高——需要基本的 C++ 开发技能。 模拟器是在其中编写的,使用 GCC 编译器及其适用于 Windows 操作系统的 MinGW 变体。 此外,建议开发人员熟悉 Qt 框架,因为它的许多概念都是游戏架构的基础。

然而,通过尽职调查和愿望,该项目为附加开发人员提供了巨大的机会。 机车车辆以基于动态库的模块形式实现。 模拟器中的主要结构元素 是机车车辆的单位或移动单元 (MU) - 一辆汽车(非自走式或作为动车组的一部分)或机车的一部分。 API 可以响应接收轮对的角速度以及接触网络中的电压和电流类型等外部参数,设置施加到 PE 轮对的扭矩。 模拟器不知道任何其他事情,也不想知道,这将内部设备的物理特性留给了特定机车或汽车的开发人员的良心。

不难猜测,这种相对低级的方法使得实现机车电路的最小细微差别成为可能。 此外,模拟器套件还包括一套安装在国内机车车辆上的标准设备:驾驶员列车起重机转换器。 395号,空气分配器状况。 242号,辅助制动阀状况。 254号等制动设备元件。 附加组件的开发人员只需将这些元件连接到特定机车或汽车的气动回路中。 此外,还有一个用于创建您自己的硬件单元的 API。

从架构上来说,RRS 建立在两个主要流程的交互之上

  • 模拟器 — 物理列车动力学引擎 TrainEngine 2. 实现列车运动的物理原理,考虑许多外部因素,考虑移动单元通过耦合装置的相互作用,处理来自实现机车车辆设备操作物理原理的外部模块的数据
  • 观众 — 基于图形引擎构建的可视化列车运动的图形子系统 开放场景图

这些子系统通过共享内存相互交互,基于Qt框架的QSharedMemory类实现。 第一个演示使用了基于套接字的IPC,考虑到模拟器某些部分的细化和着眼于未来的需求,计划在未来回归这一技术。 向共享内存的过渡在某种程度上是一种强制措施,但已经失去了作用。

我不会描述细微差别 - 该项目发展的许多变迁已经在我的资源出版物中概述,特别是,我有相当广泛的 OpenSceneGraph 引擎的一系列教程,它源于该项目的工作实践。

项目中的一切并非都像我们希望的那样顺利。 特别是,图形子系统在渲染质量方面还远未达到完美,并且模拟卡的性能还有很多不足之处。 此版本有一个目标 - 向铁路运输爱好者社区介绍该项目,概述其功能,并最终为附加开发人员创建一个带有高级 API 的开放式跨平台铁路模拟器。

前途

前景取决于您,我们亲爱的未来用户和开发人员。 该项目已开放并存在 官方网站您可以从哪里下载模拟器 文档,其成分会不断补充。 存在 форум 项目, VK集团YouTube频道,您可以在这里获得最详细的建议和帮助。

谢谢你!

来源: habr.com

添加评论