車両(編成)が実際に出せる最高速度(終端速度)が、積載量を含む重量にどう依存するかを詳しく解説します。
Simutrans では、終端速度は出力(パワー)と抵抗のバランスで決まります。抵抗は静的抵抗(重量比例)と動的抵抗(速度と摩擦重量に比例)の 2 つの要素で構成され、2 分探索で残余パワーが 0 になる速度を求めます。
勾配やカーブで摩擦係数が変化し、積載量が増えると終端速度が低下します。これにより、現実的な車両挙動をシミュレートしています。
このドキュメントは以下の目的で作成されています:
対象読者:
sum_weight 合計。sum_weight = 車両自重 + 積載重量 で、積み下ろしのたびに更新されます。current_friction × 車両重量 を全車両で合計。カーブ・勾配で current_friction が変化します。終端速度は「残余パワー = 0」になる速度として求められます。コードの式は次の通りです:
\text{residual}(v) = P_{total} - \left( \frac{ v \cdot \left( \frac{F_f \cdot v}{3125} + 1 \right) }{2048} \right) - \frac{ W \cdot 64 }{1000 }
residual(v) = 0 となる v が終端速度。残余が負なら加速不可、正なら加速余力あり。calc_max_speed() が 2 分探索で residual(v) が 0 になる速度を探索します(精度 0.5 km/h)
speed_limit でクリップ。res_power() で残余パワーを評価し、符号反転点を探すことで終端速度を決定。W×64/1000 が直線的に増加。v² に掛かる係数が大きくなり、高速域で効きやすい。F_f が増減し、同じ重量でも終端速度が上下。
+15×(勾配高さ²) を加算-7×(勾配高さ²) を加算(抵抗減少)src/simutrans/simconvoi.cc (calc_max_speed(), res_power())src/simutrans/simconvoi.cc#L705-L878src/simutrans/vehicle/vehicle.cc (calc_freight_weight(), sum_weight)src/simutrans/vehicle/vehicle.cc (current_friction 計算)src/simutrans/boden/grund.{h,cc} (地形データ)src/simutrans/boden/wege/ (速度制限)車両の終端速度計算は、出力と抵抗の物理的なバランスで決定されます:
主な特徴:
residual(v) = 0 になる速度を効率的に探索このシステムにより、Simutrans は現実的な車両挙動をシミュレートし、プレイヤーに意味のある選択肢を提供します。開発者は calc_max_speed() と res_power() を調整して、さらに精密なシミュレーションを実装できます。
current_friction が大きくなるため、同じ編成でも終端速度がさらに下がる。