文档
工作原理
MTR 路网数据是如何传入全屏地图并完成渲染的。
MTR Map Overlay 的核心任务就是读取 MTR 的铁路路网数据,并把它们高效地绘制在全屏地图上。为了防止跨世界数据混淆,每个维度(主世界、下界、末地等)都拥有独立的地图缓存。
服务端 MTR 快照 ──┐
├──> 分维度地图缓存 ──> Xaero 世界地图渲染器
客户端附近 MTR 数据 ┘ └──> JourneyMap 渲染器
当客户端和服务端都安装了本模组时,客户端会定期比对各维度的内容哈希(Hash);一旦检测到路网有变动,就会向服务端请求增量快照。服务端负责收集铁轨、线路和地标数据,分块传输给客户端,客户端校验无误后在后台拼装成完整的路网缓存。如果服务端没有安装本模组,客户端就会直接拿 MTR 原生同步到附近的实体数据作为兜底回退。
Xaero 和 JourneyMap 共用同一套平滑采样后的铁轨几何数据;当多条线路共轨时,模组会自动把它们画成并排的彩色带。渲染器会在屏幕视野外进行视锥裁剪,不在屏幕视口里的铁轨绝不参与绘制,避免掉帧。
实时车辆与到站屏的独立数据通道
为了兼顾画面流畅度和网络性能,模组把不同类型的数据拆分到了独立的通信通道中:
- 静态铁轨与线路:使用协议 v8 快照传输,只在铁路网有变动时才同步一次,平时几乎不占网络流量。
- 实时列车位置:走独立的 v1 同步通道。服务端统一收集全图列车位置,压缩成极其轻量的车厢参考点下发;客户端在收到数据后做平滑插值渲染,完全不需要客户端再去跑一套额外的行车物理模拟。
- 站点与到站预测:走可选的 overlay-1 通道。只有当你在地图上点击展开某个站点的到站板时,客户端才会向服务端订阅该车站的原生到站倒计时;一旦你收起面板或关掉地图,订阅就会立即释放,绝不浪费服务器资源。
第三方导航扩展如果想改变显示效果,也只是通过 API 调整图层的高亮与半透明样式,不会修改底层的任何源路网数据。详细的会话与生命周期说明请参考导航扩展 API。