温度、高度与冷却模型
引擎温度是一个连续量,由引擎 controller 每 tick 在服务端用牛顿冷却模型计算,并持久化到 controller 的 NBT。本页详解发热与散热的具体计算方式——包括驱动它们的高度→温度与高度→气压关系。
适用于流体引擎。蒸汽引擎不用这套模型——其闭式锅炉自调节(见蒸汽动力室)。
模型一览
发热 Q_heat = Σ运行室 × 油门 × 燃料.heat × BASE_HEAT_FLUID × heatFactor(m_eff)
散热 P_loss = K_total × (T − T_amb)
K_total = (K_CORE×节数 + K_AMB×运行室数 + K_DUCT×风道数×风门) × ram(速度) × f(气压)
积分 T += (Q_heat − P_loss) / C_th / 20 (每 tick;C_th = C_TH_BASE × 节数)
钳制 T ∈ [T_amb, OVERHEAT_TEMP × 1.2]
过热 T ≥ 220°C 硬停;T ≤ 200°C 恢复(滞回)
引擎在发热 = 散热时达到平衡——油门、高度、冷却的任何变化都会移动平衡温度。
发热(Q_heat)
只有运行中的流体燃烧室发热,且仅在引擎运行、未过热时:
| 项 | 含义 |
|---|---|
运行室数 |
正在燃烧的流体燃烧室数量 |
油门 |
0..1——发热与油门成正比 |
燃料.heat |
燃料 datapack 条目的 heat 倍率(见燃料) |
BASE_HEAT_FLUID |
30 °C/s——流体室基础热 |
heatFactor(m_eff) |
混合比热因子(见下) |
混合比热因子
m_eff = 杆 × autoRichness(气压)(混合比杆与高空自动富油见流体燃烧室):
- 双侧统一线性公式:
heatFactor = 1 − (m_eff − 1)(即2 − m_eff),斜率 −1,无凸曲线、无下限钳制。 - 拉稀(
m_eff < 1):heatFactor > 1,越稀越热(m_eff=0.8 → ×1.20)。 - 富油(
m_eff ≥ 1):heatFactor < 1,越浓越凉(m_eff=1.4 → ×0.60)。 - 高度自动浓稀 = 免费调温:化油器按进气体积配油——高空天然变浓(
autoRichness最高 ×1.25)只降温(满自动富油时heatFactor最低 ≈0.75);海平面以下高气压天然变稀(最低 ×0.75)只升温——绝不费油。
热因子只缩放发热——绝不反哺油耗(经济系数只乘消耗)。
散热(K_total)
| 项 | 含义 |
|---|---|
K_CORE |
每节 0.02——引擎自身被动散热。停机也一直生效(所以停机的引擎会缓慢降温)。 |
K_AMB |
每个运行室 0.05——运行室的环境对流散热。停机的室不计(停机引擎只靠 K_CORE 散热)。 |
K_DUCT |
每个冷却气道 0.05——气道鳍片。按冷却风门(setCooling,见冷却气道)缩放。 |
风门 |
coolingStrength(0..1,默认 1.0)——只缩风道散热分量(真实 cowl flap)。 |
ram(速度) |
冲压冷却:10 m/s 以下 ×1.0,线性爬升到 30 m/s 时 ×2.0——飞得快免费降温。静态(非物理体)方块 = 1.0。 |
f(气压) |
气压因子:气压^0.8(钳位下限 0.25)。越高空气越稀 → 换热越差 → 高空散热更差。 |
环境温度(高度→温度)
引擎按世界高度 Y 读取环境温度 T_amb:
- 物理体取物理体世界位置 Y(sub-level 原点);静态方块取方块自身 Y。
- 主世界——Minecraft 尺度分段线性:
| 高度 Y | 环境温度 |
|---|---|
| Y ≤ 63(海平面) | 恒 20°C |
| 63 → 200(云层) | 线性 20°C → 0°C |
| 200 → 320(世界顶) | 线性 0°C → −40°C |
| Y ≥ 320 | 恒 −40°C |
- 地狱:全高度恒 155°C——热环境。
- 末地:全高度恒 0°C——冷寂环境。
为什么用 Minecraft 尺度而不是真实递减率
真实对流层递减率(≈0.0065°C/m)在整个 63→320 世界里只降 ~1.7°C——高度几乎无差异。Minecraft 尺度曲线(海平面→云层→世界顶)让高度真正影响引擎冷却。
气压因子(高度→气压)
气压因子与航电传感器共用同一空气模型(Sable 维度大气曲线,锚点间三次 Hermite 插值):
- 主世界默认锚点:
(−38, 1.5) / (63, 1.0) / (263, 0.4493) / (280, 0.4198) / (320, 0)——海平面 = 1.0 大气压,Y≥320 = 0。 pressureFactor = max(气压, 0.25)^0.8。- 同一气压还驱动高度自动浓稀(
autoRichness = 1 + 0.45×(1−气压),钳制 [0.75, 1.25];高气压海平面以下自动稀油)——见流体燃烧室页。
高空玩法小结
高空三件事同时发生:
| 效应 | 方向 | 结果 |
|---|---|---|
| 环境更冷(越高越冷) | 帮助散热 | 平衡温度更低 |
| 空气稀 → 气压因子下降 | 伤害散热 | 平衡温度更高 |
| 自动富油(免费降温) | 帮助散热 | heatFactor 下降,不费油 |
两个冷却效应部分抵消;自动富油是玩家免费的海拔补偿工具(把混合比杆拉到 m_eff≈1.0 还能吃到经济系数)。
过热与滞回(流体引擎)
- T ≥ 220°C → 引擎硬停(不烧油)并置
overheated。 - T ≤ 200°C → 解锁并允许重启(滞回避免在阈值附近高频启停)。
- 所有阈值(155°C 经济目标 / 100°C 过冷 / 220°C 过热)都是引擎固定常量——不随燃料/油门变化,如同真实引擎的设计点/节温器。