news 2026/11/2 6:28:38

openOMSI轨道载具完全指南:如何让你的地图跑起有轨电车、地铁和火车

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openOMSI轨道载具完全指南:如何让你的地图跑起有轨电车、地铁和火车

【免费下载链接】openOMSI

OMSI 2 recreated from scratch in Rust, compatible with every map and mod (requires the original OMSI 2)

项目地址:https://gitcode.com/gh_mirrors/op/openOMSI
点击查看免费下载

openOMSI 是 OMSI 2 的 Rust 重写版本,完整兼容原版地图与 MOD,同时把原版中"铁路只是一个标志位"的设定升级为真正的轨道模拟:你的地图上可以同时跑起有轨电车(tram)、地铁(metro)和火车(train)。本指南将带你从零开始理解 openOMSI 如何自动识别轨道载具与轨道类型、如何升起受电弓取电、如何获得真实感的牵引与制动,以及如何用几个纯文本配置文件,让 AI 车辆按时刻表自动运营,全程无需改动任何老地图。

快速启动 openOMSI:打开启动器选择轨道载具

openOMSI 需要原版 OMSI 2 的素材库。若使用源码构建,执行:

cargo build --release -p omsi-app

构建出的openomsi不带参数启动时会打开桌面启动器,在这里选择地图与载具。若想一步到位开启完整场景(AI 车流 + 时刻表车辆 + 乘客),可以这样运行:

openomsi --traffic N --schedule --line 76 --tour 1 --passengers

参数含义见 USER_GUIDE.md。启动器会同时显示每张地图与每辆载具"属于哪种运输模式",帮助你在选车阶段就避免搭配错误。

三种轨道载具:游戏如何自动判断电车、地铁与火车

openOMSI 内部把轨道载具分为tram、metro、train三个类别(见 RAIL.md 与源码 rail/class.rs)。判断规则按优先级依次是:

  1. 文件显式声明:在.bus/.ovh中加入[rail_class],值为tram、metro或train
  2. 第三轨导电鞋:文件中有[contact_shoe]→ 判定为地铁
  3. 重量与驱动轴:单节车超过 45 吨、或整车超过 60 吨且带四个驱动轴 → 判定为火车(长度不作数:42 米的低地板轻轨电车比 20 米的客车更轻)
  4. 兜底:其余一律按有轨电车处理

公路车辆不会被误判成轨道车——轨道载具永远有类别,公路车辆永远没有类别。

🔧提示:如果拿不准老 MOD 被识别成了什么,启动器里直接查看即可。

轨道识别:让游戏分清街道轨道与铁路

每条轨道车道都会获得一份TrackInfo:是街道轨道还是干线铁路、是否带第三轨、是否在隧道内、限速多少。识别依据按优先级依次是:

1️⃣ 地图配置规则(最优先)

在<地图目录>/openomsi-rail.cfg中写规则,支持通配符:

[track] file = Splines/MyMap/tram_*.sli class = tram street = yes third_rail = no speed = 40

项目自带最小示例:docs/examples/openomsi-rail/openomsi-rail.cfg。network.cfg(位于地图transport文件夹)中的[track]规则功能相同且更新,两条配置可以同时存在。

2️⃣ 轨道轮廓名称(零配置也能跑)

原版编辑器够用:名称带tram、strassenbahn、tramway→ 街道有轨电车;带metro、ubahn、subway→ 带第三轨的地铁;带train、sbahn、railway→ 铁路。而rail_typ001、gleis这类泛用名称不含信息,交给第 3 条判断。

3️⃣ 轨道所处位置(兜底)

紧贴街道车道、或转弯半径小于 60 m 的轨道判定为有轨电车轨道(铁路不会弯得这么急),其余视为铁路。

⚡限速是自动的:每条轨道的车速会被压到其最急弯道允许的值(街道横向加速度 0.8 m/s²、铁路 1.4 m/s²),道岔的岔出分支同样自动限速。把火车开上街道轨道不会被禁止,但会在日志里提示——兼容优先。

道岔与受电弓:司机最重要的两个交互

道岔:道岔是地图中的.sco对象。玩家驾驶的车辆在分岔口按"指示器指向 → 道岔当前状态 → 最直路径"的顺序选择分支,并且会随着车轮自动转换所经过的道岔;从分支方向驶入(trailing)则跟随当前设定。AI 车辆按各自路线命名选择分支,并在约 600 m 外"申请"前方道岔。

受电弓:带受电弓的轨道载具弓不升起就无法动车(双向都没有牵引力,但制动正常)。

  • 按Shift+P即可升起/降下你所驾驶车辆的受电弓
  • 开启设置项Realistic road physics后,升弓动画会持续到弓头压上接触网为止,弓头只有在带电线上才取电;线下区段断流会产生拉弧
  • 设置[rail_power] catenary | third_rail | diesel可声明取电方式:在有catenary.cfg/thirdrail.cfg的地图上,车辆只在带电区段内才能动车,电压低于额定 80% 时动力衰减,低于 50% 动力归零
  • 调试时可设置OMSI_DEBUG_RAIL=1,每 0.5 秒记录一次受电弓取值、弓头-接触网状态与电流

轨道动力学:为什么 openOMSI 的电车开起来"像真的"

轨道动力学实现(rail/dynamics.rs)完整模拟了铁路工程中的各项力:

项目模型
运行阻力按类别取值(电车 3.5 N/kN、地铁 2.5、火车 1.5),随速度上升
空气阻力½ ρ (Cd·A + 0.4 m²/节) v²,隧道内翻倍
弯道力Röckl 公式:650/(R-55)N/kN(R > 300 m)
坡度整车重力沿坡道的分量
粘着Curtius–Kniffler 公式;湿轨 0.7、落叶或积雪 0.4、冰面 0.2
驱动脚本M_Wheel输出扭矩,上限为粘着力;超了就打滑
制动全车Axle_Brakeforce_*,上限 0.9 倍粘着力;电车紧急制动追加磁轨制动(不受粘着限制)

若车辆脚本不提供牵引力(原版火车多为 AI 专用脚本),游戏会用该类别的典型性能"兜底":电车 14 kW/t、起步 1.2 m/s²;地铁 14 kW/t;火车 9 kW/t、0.9 m/s²。

车辆文件还可以用 openOMSI 扩展块精确描述性能(OMSI 2 会安全忽略这些块,MOD 依然通用):

[rail_traction] point 0 80 point 90 36 power_kw 800 regen_point 10 60 [rail_brake] type air service 1.1 emergency 1.6 pipe_wave 250 [rail_coupler] type scharfenberg slack 0.03 stiffness 3000
  • 牵引曲线:油门按比例取曲线牵引力,且永不超过P/v功率上限;粘着上限始终生效——电机再强,落叶覆盖的钢轨上照样打滑
  • 空气制动:减压波以约 250 m/s 沿制动管传播,每节车厢的制动缸按apply_time充风,车尾总比车头晚刹车,长编组刹停距离明显更长;电制优先、闸瓦补差
  • 车钩:车辆间有自由间隙与钩缓装置,启动逐车"拉紧"有冲击感,牵引超过max_force列车会断裂(制动自动施加并写入日志)

用 transport 文件夹:不画 tour 也能自动生成时刻表

想让 AI 车辆按真实时刻表自动跑线?在地图global.cfg旁边建一个transport文件夹即可(格式详见 TRANSPORT_FORMATS.md),OMSI 2 会直接忽略该文件夹,完全向后兼容:

文件作用
routes.cfg线路、路段与班次(无需画 tour,游戏自动沿轨道路网寻路)
stations.cfg车站与站台(侧式/岛式、屏蔽门)
catenary.cfg/thirdrail.cfg架空线/第三轨供电区段、电压、断口
network.cfg轨道类别、供电方式与限速(openomsi-rail.cfg的升级版)
switches.cfg道岔操作方式:自动/人工/联锁、岔出限速
depots.cfg车辆段:提供ai_group车辆,首班车从gate自动出库
signals.cfg信号机与闭塞分区:AI 列车占用区间自动停车

routes.cfg的核心思路:路线 = 路段集合,班次 = 按顺序走若干路段。分支线是"共用干线段 + 两条班次",短交路是"只走部分路段的班次",快车是"带skip跳站的路段"。示例:

[route] id M2 name Green line mode metro colour 40 160 60 [segment] id trunk from Sokol to Aeroport via Voykovskaya dwell 25 s speed 80 km/h [service] id all_day segments trunk north headway 3 min from 05:30 to 25:00 consist 6 depot Depot_Sokol turn_back reverse

一个完整可参考的地铁示例在 docs/examples/transport-metro/transport/routes.cfg(含stations.cfg、thirdrail.cfg、depots.cfg)。配置写完后用检查工具自查,它会逐行报告问题:

cargo run -p omsi-transit --example transit_check -- maps/MyMap metro tram

🚉亮点:车站会被自动匹配到地图上的公交站牌对象;时刻表里的发车间隔、运行时分由路段长度、speed与dwell自动计算;车辆来自班次的depot(其ai_group指向ailists.cfg中的 AI 车辆组),首班车从车辆段门口"开出",而不是凭空出现。

上手检查清单与调试技巧

  • ✅老地图零改动:没有openomsi-rail.cfg、没有transport文件夹的地图照旧加载,轨道按名称与位置自动归类,TTData时刻表不变
  • ✅模式匹配:地图global.cfg里声明了模式(如[tram_transport])后,与模式不符的载具不会出现在该地图上,游戏会说明原因;想测试时用OMSI_IGNORE_TRANSPORT=1临时绕过
  • ✅调试日志:OMSI_DEBUG_RAIL=1记录牵引/制动/受电弓细节;OMSI_REALISTIC_ROAD=1单次运行启用真实道路物理
  • ✅手柄对比:cargo run -p omsi-sim --example handling -- <文件.bus> --kmh 50 [--realistic]可对比新旧两套物理

更多文档

  • 轨道载具全解:docs/RAIL.md
  • 运输模式五个关键词:docs/TRANSPORT_MODES.md
  • 车站/路线/供电/信号格式:docs/TRANSPORT_FORMATS.md
  • 无轨电车(双线架空):docs/TROLLEYBUS.md
  • 悬挂系统(车体在弹簧上的沉浮与侧滚):docs/SUSPENSION.md
  • MOD 开发总览:docs/MODDING.md

现在,打开你的地图选一辆电车,按 Shift+P 升起受电弓——城市的轨道网络就要在你脚下流动起来了。

【免费下载链接】openOMSI

OMSI 2 recreated from scratch in Rust, compatible with every map and mod (requires the original OMSI 2)

项目地址:https://gitcode.com/gh_mirrors/op/openOMSI
点击查看免费下载

相关推荐

上一篇:KJFK跑道为何出现在你的雷达上?ESP32-Plane-Radar大型机场叠加层原理揭秘
下一篇:BFS vs Deep-Live-Cam:电影级换脸 vs 25K star 实时直播,创作者怎么选?

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 6:25:36

资源懒加载与预加载策略(进阶篇)——工程师必备知识

本文深入探讨资源懒加载与预加载策略&#xff08;进阶篇&#xff09;&#xff0c;涵盖背景分析、原理剖析、实战步骤、配置示例、优化建议和避坑指南。 很多团队在前端性能优化场景中都会遇到与资源懒加载与预加载策略&#xff08;进阶篇&#xff09;相关的挑战。本文结合生产环…

作者头像 李华
网站建设 2026/11/2 6:25:01

军工ETF量化策略

100万元&#xff0c;策略期末156.60万元&#xff1b;买入后一直持有&#xff0c;期末112.00万元。 策略比买入后一直持有多约44.60万元&#xff0c;最大回撤分别为17.38%、47.33%。收益优势是否值得采用&#xff0c;还要看下文成本与邻近参数的结果。 首图由聚宽完成回测后的…

作者头像 李华
网站建设 2026/11/2 6:24:04

Realtek ACL配置——丢弃双tag报文实测总结

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 6:14:43

开源SOC工具对比:为什么AiSOC成为中小企业的最佳选择?

开源SOC工具对比&#xff1a;为什么AiSOC成为中小企业的最佳选择&#xff1f; 【免费下载链接】AiSOC Open-source AI Security Operations Center: alert fusion, LLM-agent triage, MITRE ATT&CK investigation, and a replayable decision ledger for every agent step.…

作者头像 李华
网站建设 2026/11/2 6:10:52

C++ WebDriver扩展

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华