
创建优化列车
创建优化列车——为机械动力模组列车提供性能优化的附加组件。
查看大图🚅⚡创建优化列车
为 机械动力模组 列车提供的性能优化插件(Forge 1.20.1)。
🔗依赖项
本模组需要安装机械动力或机械动力(Fabric版)。
- 我的世界 1.20.1
- Forge 47.1.33+
- 机械动力模组 6.0.8+
- Flywheel 1.0.6+(随机械动力捆绑提供)
📦功能特性
1. 列车细节级别(LOD)
- 精细 — 完整的物理车厢(玩家附近)
- 中等 — 简化物理,正常渲染
- 低 — 无物理,无碰撞,最小化机械更新
- 虚影 — 虚影实体,无渲染,仅保留抽象数据
2. 车厢分组/抽象化
- 将多个车厢合并为一个逻辑实体(
TrainGroup) - 仅存储:长度、速度、位置、车厢列表(NBT格式)
- 当玩家靠近时重新展开为详细状态
3. 安全多线程
辅助线程(安全):
- 路线计算
- 碰撞预测
- 时刻表优化
- 优先级管理
- 细节级别决策
- 预测性模拟
主线程(必需):
- 实际实体移动
- 机械动力物理
- 渲染
- 方块交互
4. 刻节流(部分更新)
- 精细:每刻
- 中等:每3刻(可配置)
- 低:每8刻
- 虚影:每20刻
5. 渲染优化
- 禁用远处列车的动画
- 跳过虚影细节级别(GHOST LOD)的完整渲染
- 减少粒子和视觉效果
- 隐藏不可见时的内部细节
6. 代理实体
- 代表整列列车的轻量级实体
- 替代数十个机械装置
- 保持位置、速度和方向
- 需要时重新生成真实车厢
7. 智能区块加载管理
- 仅加载必要的区块
- 更早卸载列车后方的区块
- 预加载前方区块
- 抗抖动(防止重复加载/卸载循环)
8. 物理优化
- 简化远处车厢的物理计算
- 低细节级别时禁用车厢间碰撞
- 减少转向架检查
- 远处时禁用内部机械物理
9. 网络优化
- 仅在速度/方向变化时发送更新
- 批量打包(增量压缩)
- 降低远处列车的同步频率
10. 优先级系统
- 按类型优先级排序(特快 > 客运 > 货运 > 低速)
- 道口冲突解决
- 轨道片段预留
- 异步冲突分析
11. 动态性能监视器
- 正常(TPS >= 18):完整保真度
- 降级(15 <= TPS < 18):轻度优化
- 严重(TPS < 15):激进优化,降低细节级别距离
🏅技术性能认证
创建优化列车经历了系列内部和社区测试,包括:
压力测试
- 长度超过300格的列车
- 同时移动的机械装置
- 数百个实体的渲染
- 激进预加载的世界
兼容性测试
- 机械动力
- Steam 'n' Rails
- Embeddium
- Radium
- Copycats+
- Distant Horizons
社区测试
预发布版本已在官方Discord上提供,确保每次公开更新都稳定且无回归问题。
⚙️配置
文件:create_optimized_trains-common.toml
所有功能都可单独配置距离、间隔和开关。
🪄从机械动力 6.0.9+ 反向移植的修复
机械动力 6.0.9(针对我的世界 1.21.1)引入了几个重要的修复,但从未反向移植到 1.20.1。由于 1.20.1 不再接收机械动力团队的更新,本模组为留守在 1.20.1 的玩家反向移植了以下修复:
机械碰撞箱GC压力(#6902)
原始问题: 当列车门在车站打开/关闭时,gatherBBsOffThread() 会使用 Shapes.joinUnoptimized() 将所有方块碰撞形状合并为一个 VoxelShape —— 这是一个 O(n²) 的操作,会创建大量临时对象。垃圾收集器无法跟上,导致1-30+秒的卡顿峰值,具体取决于列车复杂度。
我们的修复: ContraptionCollisionMixin 将碰撞收集算法替换为机械动力 6.0.9 中使用的相同 O(n) 方法(提交 8f30c2c)。它不再合并 VoxelShape,而是直接从每个方块的碰撞形状中收集 AABB —— 没有中间分配,没有GC压力。还包括相关重复问题:#4607、#5685、#9026、#9389。
车厢等待区块导致的列车卡顿
原始问题: 在 Train.tick() 中,当车厢进入未加载的区块时,机械动力会设置 carriageWaitingForChunks,强制将 speed 设为 0,直到区块加载完成。在包含许多列车且视野距离有限的地图上,这会导致每列列车跨越区块边界时出现0.5-1.5秒的冻结。
我们的修复: TrainMixin 将所有 tick() 中对 carriageWaitingForChunks 的读取重定向为始终返回 -1,因此速度永远不会归零。结合智能区块加载系统(预先加载列车前方的区块),列车能够连续行驶而不会卡顿。
碰撞检查性能
原始问题: collideWithOtherTrains() 每刻对所有列车运行,这在地图上有20多列列车时会变得代价高昂。
我们的修复: TrainMixin 根据服务器性能自适应地限制碰撞检查频率——正常时每4刻一次,降级时每8刻一次,严重时每12刻一次。每列列车的检查通过其UUID哈希值进行偏移,以均匀分布各刻的负载。
💚关于我们
发行商:GreenToastSoftware Games® (C)GreenToastSoftware Corporation。保留所有权利 2020-2026。
正在加载版本记录…



正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。