Smart Calculators

Smart

Calculators

OpenTTD 貨物収益計算機

OpenTTD の 1 配送が稼ぐ £ を正確に算出。貨物を選び、マンハッタン距離と輸送日数を入力すると、£/旅、£/タイル、£/日、そのルートで最も稼げる貨物を返します。

1 回の配送の収益を計算します。

貨物ドロップダウンに表示される貨物を決定します。プレイしている OpenTTD セーブの気候と一致させてください。

あなたの列車・船舶・航空機・トラックが配送している貨物。貨物ごとに支払い率と鮮度曲線が異なります。

タイル

貨物マニフェスト №1
収益 · 1 配送あたり
£3,508
100 タイル · 100 人 · 60 日 · 旅客
£/タイル
£35.08
収益 ÷ 距離
£/日
£58.47
収益 ÷ 輸送日数
時間係数
231 / 255
貨物の新鮮度 90.6%

この数字の計算過程

時間係数
255 − 24 − 2·0 → 231
距離を半分に
100 ÷ 2 → 50
ステージ 1(>> 7)
50 × 231 × 100 ÷ 128 → 9,023
支払い率を掛ける
× 3,185
8192 で割る(>> 13)
÷ 8192
収益
£3,508
貨物チートシート · 温帯
貨物支払い率最適距離鮮度切れ
貴重品7,509≤ 75 タイル33 周期
商品6,144≤ 375 タイル33 周期
石炭5,916≤ 525 タイル
鋼鉄5,688≤ 525 タイル
鉄鉱石5,120≤ 675 タイル
原木5,005≤ 1,125 タイル
穀物4,778≤ 300 タイル44 周期
郵便物4,550≤ 1,500 タイル110 周期
石油4,437≤ 1,875 タイル
家畜4,322≤ 300 タイル22 周期
旅客3,185任意の距離24 周期
公式検証済み · OpenTTD ソース

バニラ OpenTTD 14.x と JGRPP に対応。NewGRF 貨物セットはデフォルトの支払い率を上書きするため未対応です。インフレは基準年(1950)の値で表示されており、セーブ側で比例的にスケールされます。

09·5·2026

OpenTTD 貨物収益計算機。貨物・距離・輸送日数から £/旅を算出。

OpenTTD 貨物収益計算機は、バニラ 14.x または JGRPP における 1 配送あたりの正確な £ を返すツールです。貨物の種類・数量・マンハッタンタイル距離・輸送日数を入力すると、economy.cpp の整数公式をそのまま実行し、£/旅・£/タイル・£/日・時間係数(0–255)を出力します。

OpenTTD 貨物収益計算機とは?

OpenTTD 貨物収益計算機は、貨物の種類・数量・出荷駅と到着駅の間のマンハッタンタイル距離・車両内で過ごした暦日数を入力すると、その 1 回の配送に対するゲーム内のポンド(£)収益を返す Web ツールです。src/economy.cpp の GetTransportedGoodsIncome() 関数をビット単位で再現します:同じ 21 ビット右シフト、同じ時間係数下限 31、そして 31 種のバニラ貨物名(合計 33 行 — 原木と石油は亜熱帯気候用に独立行を持つ)すべてに同じ days1 と days2 のしきい値。£ は単にゲーム内通貨のラベルであり実際の英ポンドではありません — OpenTTD では UI を $ や ¥ に切り替えても、計算は常に内部の £ 単位で行われ、表示時に再フォーマットされます。
本ツールは 4 つの気候(温帯・亜寒帯・亜熱帯・おもちゃランド)をすべて網羅し、気候を切り替えると貨物ドロップダウンが自動でフィルタリングされます。デフォルトのターゲットはバニラ OpenTTD 14.x ですが、公式の貨物収益コードは 1995 年の初代リリース以来一度も変更されておらず、公式の数式とテーブルは JGR's Patch Pack や Transport Tycoon Deluxe クラシックともバイト単位で一致します。Steam・GOG・openttd.org の直接ダウンロード版・JGRPP プレイヤー、いずれも同じ数字を目にします。
公式日本語 wiki の「ゲームメカニクス」ページには支払い率の早着時間・遅延時間表と「収益 ≈ 貨物量 × 単価 × 0.4」という簡易ヒントが載っていますが、整数演算の完全なビット単位の再現や、貨物 33 行を支払い率順に並べた一覧表は含まれていません。最も引用されている外部ツール citymania.org/tools/profit も自サイトで「numbers may not be exactly accurate (they should be pretty close though)」と明言しています。本計算機は wiki にも CityMania にもない 3 つの機能を提供します:(1)ソースコードと突き合わせ検証できる正確な £/旅、(2)すべての中間値(運送周期・periodsOverDays1・periodsOverDays2・時間係数・分子・シフト)を表示する内訳パネル、(3)支払い率順にソートされた 33 行貨物チートシート — 路線の長さごとにどの貨物が勝つかが一目で分かります。

OpenTTD 貨物収益の計算方法(および本ツールの内部処理)

OpenTTD の貨物収益は 4 つの入力と 1 本の整数公式に集約されます。上のツールは自動でそれを実行します。下の手計算手順は、にこにこ動画 OpenTTD タグや openttd.gamewiki.jp・wikiwiki.jp/openttd の常連が、200 タイルの幹線を敷く前にざっくり見積もるためのものです。
ツールを使う場合
1. セーブの気候を選びます(温帯がデフォルト — バニラセーブの約 60% を占めます)。
2. 貨物を選びます。その気候で合法な貨物だけがドロップダウンに表示されます(石炭は温帯と亜寒帯のみ、ダイヤモンドは亜熱帯のみ、おもちゃはおもちゃランドのみ、など)。
3. 配送数量を入力します(デフォルト 100 — 貨物に応じて旅客・トン・袋・リットル・個)。
4. 出荷駅と到着駅の間のマンハッタンタイル距離を入力します。これは線路の長さではありません — タイルグリッド上の対角距離、つまり $|xsrc - xdst| + |ysrc - ydst|$ です。山を縫う線路はマンハッタン距離より 30% 長くなることもあります。
5. 貨物が車両内で過ごした暦日数を入力します(デフォルト 60)。長距離列車は 80–200 日、船舶は 300 日超を表示することがよくあります。
メインの結果はその 1 配送の £ です。その下に £/タイル・£/日・時間係数(255 中)・新鮮度のパーセンテージが並びます。内訳パネルでは暦日→運送周期への換算、periodsOverDays1 と periodsOverDays2 の両方、下限適用後の時間係数、最後の整数除算がすべて表示され、紙に書く 6 行とそのまま対応します。
手計算
1. 暦日を運送周期に換算:$tp = \lfloor daystransit / 2.5 \rfloor$。日本語 wiki は「公式中の 1『日』は実際にはゲーム内 2.5 日に相当する」と明記しています。OpenTTD は輸送時間を 2.5 日単位で内部保存し、1 バイト(最大 255)のカウンタが長い船舶ルートまでカバーできるようにしています。
2. テーブルから貨物の days1・days2 を引きます:旅客(0, 24)・石炭(7, 255)・貴重品(1, 32) — 33 行(31 種の貨物名 + 亜熱帯の原木・石油が独立行)全部について同様。
3. periodsOverDays1 を計算:$\max(tp - days1, 0)$。第 1 鮮度しきい値を超えた運送周期の数です。
4. periodsOverDays2 を計算:$\max(periodsOverDays1 - days2, 0)$。第 2 鮮度しきい値を超えた追加の周期数です。
5. 時間係数を計算:$\max(255 - periodsOverDays1 - periodsOverDays2, 31)$。下限の 31 は economy.cpp の定数 MIN_TIME_FACTOR で、古い貨物が文字通り無収益にならないよう保証します。
6. 収益公式を適用:$income = \lfloor (distance \cdot timeFactor \cdot amount \cdot paymentRate) / 2{,}097{,}152 \rfloor$。分母 $2^{21}$ は economy.cpp の `BigMulS(..., 21)` シフトに対応します。
wiki 参照例の再現:旅客 27 名、100 タイル、60 暦日、温帯。tp = 24、periodsOverDays1 = 24 − 0 = 24、periodsOverDays2 = max(24 − 24, 0) = 0、時間係数 = 255 − 24 = 231、分子 = 100 × 231 × 27 × 3185 = 1,986,484,500、収益 = floor(1,986,484,500 / 2,097,152) = 1 旅あたり £947。これは 60 日における旅客のゲーム内支払い率グラフ(グラフの量子化誤差内)と一致し、本計算機の QA テストスイートにおける参照値でもあります。

貨物収益 — economy.cpp の整数公式

I=DTAP221,T=max ⁣(255max(tpd1,0)max(max(tpd1,0)d2,0), 31),tp=daystransit2.5I = \left\lfloor \dfrac{D \cdot T \cdot A \cdot P}{2^{21}} \right\rfloor, \quad T = \max\!\left(255 - \max(tp - d_1, 0) - \max(\max(tp - d_1, 0) - d_2, 0),\ 31\right), \quad tp = \left\lfloor \dfrac{days_{transit}}{2.5} \right\rfloor
  • II = 1 配送あたりのゲーム内 £ 収益(計算機が返す整数)
  • DD = 出荷駅と到着駅の間のマンハッタンタイル距離 — $|x_{src} - x_{dst}| + |y_{src} - y_{dst}|$
  • TT = 時間係数(0–255)。255 = 完全に新鮮、下限 MIN_TIME_FACTOR = 31
  • AA = 配送された貨物の量(旅客・トン・袋・リットル・個)
  • PP = economy.cpp の _default_cargo テーブルから取得する基本支払い率 — 旅客 3185、石炭 5916、亜熱帯原木 7964(最高)、貴重品 7509(原木除く最高)
  • tptp = 運送周期 — 暦日数を 2.5 で割って切り捨て。1 運送周期 = ゲーム内 2.5 日
  • d1d_1 = 貨物の days1 しきい値 — 早期鮮度減衰の境界(運送周期)。旅客と食品で 0、貴重品で 1、石炭で 7、石油で 25、プラスチックと炭酸飲料で 30
  • d2d_2 = 貨物の days2 しきい値 — 後期鮮度減衰の境界。旅客 24、貴重品 32、穀物 40、石炭 255(実質無制限)
分母 $2^{21} = 2{,}097{,}152$ は GetTransportedGoodsIncome() 関数(src/economy.cpp)の `BigMulS(..., 21)` シフトに対応します。wiki の文章版公式は連続する 2 つのシフト(`>> 7` の後 `>> 13`)を使いますが、$2^{7} \cdot 2^{13} \cdot 2 = 2^{21}$ なので代数的には等価です — wiki 形式の冒頭の「2 で割る」が共通分母に畳み込まれます。本計算機は C++ のシフトを JavaScript の単一の `Math.floor(numerator / 2_097_152)` で再現します。本計算機の入力上限(距離 ≤ 2048、数量 ≤ 9999、支払い率 ≤ 7964)の下では、すべての中間積が Number.MAX_SAFE_INTEGER に安全に収まるため BigInt は不要、エンジンとの 1 単位ずれも発生しません。

完全な計算過程付きの実例

wiki 参照例 — 旅客 27 名、100 タイル、60 日、温帯

tp = floor(60 / 2.5) = 24。旅客は days1 = 0、days2 = 24、支払い率 = 3185。periodsOverDays1 = max(24 − 0, 0) = 24。periodsOverDays2 = max(24 − 24, 0) = 0。時間係数 = max(255 − 24 − 0, 31) = 231。分子 = 100 × 231 × 27 × 3185 = 1,986,484,500。収益 = floor(1,986,484,500 / 2,097,152) = 1 旅 £947、時間係数 231/255(新鮮度 90.6%)、£9.47/タイル、£15.78/日。これは計算機仕様 §5.5 の参照値であり、ゲーム内貨物支払い率グラフと突き合わせた QA チェックの基準値です。

石炭の長距離ルート — 200 トン、300 タイル、200 日、亜寒帯

石炭は days1 = 7、days2 = 255(実質無制限の耐久性)。tp = floor(200 / 2.5) = 80。periodsOverDays1 = 80 − 7 = 73。periodsOverDays2 = max(73 − 255, 0) = 0。時間係数 = max(255 − 73 − 0, 31) = 182。分子 = 300 × 182 × 200 × 5916 = 64,602,720,000。収益 = floor(64,602,720,000 / 2,097,152) = 1 旅 £30,804、£102.68/タイル、£154.02/日。石炭の基本支払い率は 5916 — テーブル最高ではありません — ですが 7/255 のしきい値ペアにより、200 日走った列車でも新鮮貨物の 71% のペースで稼ぎ続けます。日本語コミュニティ(公式 wiki/ja、openttd.gamewiki.jp、wikiwiki.jp/openttd)が「炭鉱から発電所への石炭輸送が最も簡単で利益が出る」と一致して薦め、「1949 年に幹線を敷いて放置」という定番運用が定石になっている理由です。

貴重品の超短距離 — 貴重品 50 個、50 タイル、5 日、温帯

貴重品は原木以外で最高の支払い率(£7,509)と最も狭い鮮度ウィンドウ(days1 = 1、days2 = 32)を持ちます。tp = floor(5 / 2.5) = 2。periodsOverDays1 = max(2 − 1, 0) = 1。periodsOverDays2 = max(1 − 32, 0) = 0。時間係数 = max(255 − 1 − 0, 31) = 254(新鮮度 99.6%)。分子 = 50 × 254 × 50 × 7509 = 4,768,215,000。収益 = floor(4,768,215,000 / 2,097,152) = 1 旅 £2,273、£45.46/タイル、£454.60/日。日単位ではゲーム全体で最高の収益率 — ただし短距離限定です。同じ旅を 50 日に延ばすと時間係数は 236 に落ち、収益は約 7% 減少します。200 日まで延ばすと時間係数は 129(収益は約 £1,154 にほぼ半減)。約 325 日を超えると時間係数が下限 31 に到達し、同じ旅でも £277 しか支払われません。

亜熱帯原木 — 100 トン、200 タイル、80 日

亜熱帯原木はバニラ貨物の中で 基本支払い率がもっとも高い £7,964(温帯・亜寒帯の原木 £5,005 に対して、気候違いだけで同じ貨物名なのに 59% のプレミアム)。days1 = 15、days2 = 255。tp = floor(80 / 2.5) = 32。periodsOverDays1 = 32 − 15 = 17。periodsOverDays2 = 0。時間係数 = 255 − 17 = 238。分子 = 200 × 238 × 100 × 7964 = 37,908,640,000。収益 = floor(37,908,640,000 / 2,097,152) = 1 旅 £18,076、£90.38/タイル。亜熱帯セーブでは、同じルートの原木が温帯の原木より 60% 多く稼ぎます。日本語の初心者向け攻略記事の多くがこの点を見落としているのは、両気候ともに貨物名が「原木」で同一だからです。バニラ 33 行テーブルが原木を 2 回(石油も 2 回)含むのもまさにそのため:温帯・亜寒帯と亜熱帯のエントリーは名前を共有しつつ、それぞれ異なる支払い率を運びます。

2 旅の比較 — 同じ 100 タイル路線での石炭 vs 貴重品

同じ 100 タイル、同じ 60 日、同じ 100 単位。旅 A:石炭、支払い率 5916、days1 = 7、days2 = 255。tp = 24、periodsOverDays1 = 17、periodsOverDays2 = 0、時間係数 = 238。石炭分子 = 100 × 238 × 100 × 5916 = 14,080,080,000。石炭収益 = floor(14,080,080,000 / 2,097,152) = £6,713。旅 B:貴重品、支払い率 7509、days1 = 1、days2 = 32。periodsOverDays1 = 23、periodsOverDays2 = 0、時間係数 = 232。貴重品分子 = 100 × 232 × 100 × 7509 = 17,420,880,000。貴重品収益 = floor(17,420,880,000 / 2,097,152) = £8,306(石炭より +£1,593)。1 旅単位では貴重品が勝ちますが、銀行は月に貴重品を 1〜8 個しか出荷しないのに対し、炭鉱は月に 100+ トンを供給します。月収では、銀行ルートを複数並走させない限り、石炭が貴重品を 1 桁レベルで上回ります。

公式 wiki/ja 読者と Steam 新規プレイヤー向けの収益プランニング Tips

  • 石炭は基本支払い率 £5,916 — ゲーム最高ではありません — ですが、days1/days2 のペア(7, 255)のおかげで、2,000 タイルの全マップ路線網でもほぼ満額を維持します。石炭はガタガタな線路を敷いても黒字が出る貨物です。一方、貴重品は £7,509 の基本支払い率を持ちながら、days1 = 1・days2 = 32 のため、暦日 85 日(34 運送周期)を超えた時点で時間係数が下限 31 へ向けて急降下します。50 タイル以内は貴重品、それ以外はすべて石炭、というのが定番。
  • 距離はマンハッタンタイルであり、線路の長さではありません。収益公式は両駅間の $|xsrc - xdst| + |ysrc - ydst|$ を計算し、線路の曲がり具合は無視します。山岳地帯を蛇行する路線も、駅座標が同じであれば直線路線とまったく同じ £ を稼ぎます。日本語コミュニティ(公式 wiki/ja の駅説明・wikiwiki.jp/openttd・openttd-onj.blog.jp の解説)で最も多い誤解が「100 タイルのマンハッタン距離の路線に 200 タイル分の線路を敷けば 200 タイル分の収益が出る」というものです。そんなことはありません。マンハッタン距離を最大化するため、駅は産業建物の最も離れた端に配置してください。
  • wiki の貨物収益ページの 1「日」は、セーブ内の暦日換算で 2.5 日です。OpenTTD は輸送時間を 1 バイト(0–255)のカウンタに保存しており、2.5 日単位を採用することで長距離船舶ルートまでカバーします。上の計算機は暦日(ゲーム内の車両ウィンドウが表示する数字)を受け取り、内部で 2.5 で除算します — ただし wiki の文章版公式から値を直接引いて手計算するときは、自分で 2.5 を掛けたり割ったりするのを忘れずに。
  • 時間係数の下限はゼロではなく 31 です。src/economy.cpp の MIN_TIME_FACTOR = 31 は、ゲーム年数年走り続けた貨物でも新鮮値の約 31/255 ≈ 12% を必ず支払うことを意味します。「古い貨物が何も稼がない」という不満を聞くことがありますが、たいてい £ の数字が小さいだけです — 旅客 1 名を 2,000 タイル × 4,000 日の船で運ぶと floor(2000 × 31 × 1 × 3185 / 2,097,152) = £94 — 距離か数量が 0 でなければ、文字通りの £0 にはなりません。
  • 亜熱帯原木は基本支払い率 £7,964 — バニラ全貨物の最高値で、貴重品(£7,509)を上回り、短距離での £/タイルではおもちゃランドの炭酸飲料(£6,250)と並びます。温帯原木(£5,005)と同じ日本語名「原木」ですが、価格は 59% 高。亜熱帯セーブでは、製材所→建設地のすべての実用的なルートで原木を商品より優先してください。日本語 wiki/ja の産業ページでも亜熱帯気候で原木が高価値貨物として言及されています。
  • JGR's Patch Pack は同じ公式を使います。JGRPP の貨物収益コードはバニラとバイト単位で同一 — 経済の違いは貨物老化率の設定だけです(バニラと JGRPP の両方でデフォルトは 100%、JGRPP では設定可能なパーセンテージとして公開)。economy.cargo_aging_rate を明示的に変更していない限り、本計算機の数字は JGRPP セーブにも 1 対 1 で適用されます。NewGRF 貨物セット(FIRS・ECS・YETI)は支払い率テーブルを上書きするため非対応です。NewGRF セーブでは本計算機の出力をバニラのベースラインとして扱い、各 NewGRF が README で公開する比率で調整してください。
  • インフレは結果を比例的にスケールします。表示される £ は基準年(1950)の値で、ゲーム内の貨物支払い率グラフと同じキャリブレーションです。OpenTTD のデフォルトのインフレ係数は年約 1.5% で、コストと収益の両方を同時にスケールするため、運営コストに対する相対収益は変わりません — 計算機の £ は 2050 年のあなたの実銀行残高ではありませんが、2 つの旅の比率は完全に保たれます。
  • 線路を敷く前に計算機の下のチートシートに目を通してください。バニラ全 33 行(31 種の貨物名 + 亜熱帯の原木と石油の独立行)を支払い率順にソートし、各貨物に「最適なのは ≤ N タイルの距離」というラベルを days1 × 75 のヒューリスティック(30 km/h × 2.5 日/周期 ≈ 1950 年代の典型的な列車速度で 1 周期あたり 75 タイル)で付けています。days2 = 255 の貨物は「実質無制限」とタグ付けされ — 陸上ルートでは深刻な鮮度低下ゾーンに入りません。

OpenTTD 貨物収益計算機 — よくある質問

OpenTTD の貨物収益の公式は?

収益 = floor(距離 × 時間係数 × 数量 × 支払い率 / 2,097,152)、ただし 時間係数 = max(255 − max(tp − days1, 0) − max(max(tp − days1, 0) − days2, 0), 31)、tp = floor(輸送日数 / 2.5)。定数 2,097,152 = 2^21、255 = MAX_TIME_FACTOR、31 = MIN_TIME_FACTOR はいずれも src/economy.cpp の GetTransportedGoodsIncome() 関数に由来します。バニラ 14.x・JGRPP・Transport Tycoon Deluxe クラシックで通用する公式で、1995 年以来変更されていません。

貨物収益における距離はどう測りますか?

距離は出荷駅と到着駅の間のマンハッタンタイル距離:$|xsrc - xdst| + |ysrc - ydst|$。線路の長さではありません。直線 200 タイルの線路と蛇行 350 タイルの線路は、両駅の座標が同じなら同じ収益を生みます。長い線路を敷かなくてもマンハッタン距離を最大化するコツとして、産業建物の最も離れた端に駅を配置するという定番テクニックが知られています。

wiki の「1 日」がなぜゲーム内の 2.5 日なのですか?

OpenTTD は貨物の経年を 1 バイト(0–255)のカウンタで数え、これは暦日 2.5 日に 1 回進みます。wiki の文章版公式はこの「運送周期」を直接使いますが、本計算機はゲーム内の車両ウィンドウが表示する暦日数を受け取り、代わりに 2.5 で割って変換します。

OpenTTD で最も稼げる貨物は?

基本支払い率では:亜熱帯原木(£7,964)→ 貴重品(£7,509)→ 炭酸飲料(£6,250)→ 商品/お菓子(£6,144)→ 石炭(£5,916)。長距離では石炭が最良 — days2 = 255 のため 1,500 タイルでも時間係数が最大値近くに留まります。月収(産業の生産量を加味)でもたいてい石炭が勝ちます。炭鉱は月 100+ トン生産する一方、銀行は月 1〜8 個の貴重品しか出さないためです。「2 旅の比較」モードで、あなたのセーブで貴重品が石炭を上回るのはどの距離か正確に確認できます。

本計算機は JGR's Patch Pack セーブでも動きますか?

はい — 貨物収益コードはバニラ OpenTTD 14.x と JGR's Patch Pack の間でバイト単位で同一です。唯一の経済差は貨物老化率の設定(両方でデフォルト 100%、JGRPP では economy.cargo_aging_rate として公開)。33 行テーブル(31 種の貨物名 + 亜熱帯の原木と石油の独立行)と整数公式は変わっていません。老化率を変更していない限り、本計算機の数字は JGRPP セーブにも 1 対 1 で適用されます。

FIRS・ECS・YETI などの NewGRF 貨物セットには対応していますか?

いいえ。NewGRF 貨物セットはバニラの _default_cargo テーブルを独自の paymentRate・days1・days2 で上書きします。本計算機はバニラの貨物定義のみを内蔵しています(31 種の貨物名、亜熱帯の原木と石油を別行とする 33 行) — FIRS セーブで使うと公式は正しいのに定数が間違ったままになります。NewGRF セーブでは本計算機の出力をバニラのベースラインとして扱い、各 NewGRF が README で公開する比率で調整してください(ほとんどの NewGRF はこの比率をドキュメント化しています)。

長距離船舶ルートで貨物が「£0」と表示されるのはなぜ?

MIN_TIME_FACTOR = 31 の下限により、古い貨物でも常に新鮮値の少なくとも 31/255 ≈ 12% は支払われます — つまり距離か数量が 0 でない限り、文字通りのゼロにはなりません。£0 を見たら確認してください:(a)距離が 0 でない(同一駅への配送は支払い無し)、(b)数量が 0 でない、(c)支払い率が 0 でない(NewGRF によっては運ばれてほしくない貨物の支払い率をゼロにします)。2,000 タイル × 4,000 日の旅客船で旅客 1 名なら、収益は小さいですが(£94 = floor(2000 × 31 × 1 × 3185 / 2,097,152))、ゼロにはなりません。

CityMania とゲーム内グラフで数字が微妙に違うのはなぜ?

CityMania ツール(citymania.org/tools/profit)は自サイトのページで「numbers may not be exactly accurate (they should be pretty close though)」と認めています — 近似アルゴリズムを使い、中間値を四捨五入しているためです。ゲーム内の貨物支払い率グラフは本計算機と同じ整数公式を使いますが、Y 軸の量子化粒度が低いため目視値は ±5% ぶれる可能性があります。本計算機はビットシフトを文字通り再現しているため、エンジンと単位レベルで一致します。ゲーム内 £ との差が数単位を超えるようなら、入力した「輸送日数」が車両の貨物が実際に表示している在途日数と本当に一致しているか再確認してください(駅で待っている間も数字は伸び続けます)。

インフレは結果を変えますか?

本計算機が返すのは基準年(1950)の £ で、ゲーム内貨物支払い率グラフとまったく同じキャリブレーションです。OpenTTD のデフォルトのインフレ係数(年約 1.5%)はコストと収益を同時にスケールするため、2050 年の実銀行残高は計算機の出力の約 4.4 倍になります — しかし相対収益(この旅 vs あの旅・この貨物 vs あの貨物・この距離 vs あの距離)は完全に保たれます。wiki・ゲーム内グラフ・economy.cpp がすべて 1950 年基準でキャリブレートされているため、計算機は意図的に年次調整後の £ を表示しません。

本計算機の精度はどの程度ですか?

バニラ 14.x と JGRPP に対してビット単位で正確 — 40 件の QA テストスイートが各出力を src/economy.cpp の C++ 数学と突き合わせて検証しています。本計算機は NewGRF コールバック(一部の NewGRF が cargo callback フックで乗数を追加するもの)、負収益を生むフィーダーサービスチェーン、入力 4,000 日上限を超える貨物経年はモデル化しません。これらの制限内では、£ の結果は車両がアンロードしたときエンジンがあなたの口座に書き込む金額と一致します。

days1 と days2 の違いは?

days1 は早期減衰しきい値 — 時間係数が下がり始める前に、貨物が車両内で過ごせる運送周期の数。days2 はその上に追加される後期減衰しきい値 — days1 + days2 を超えると時間係数は 2 倍速で減少します(公式は periodsOverDays1 と periodsOverDays2 の両方を引きます)。days2 = 255 の貨物(石炭・石油・鉄鉱石・鋼鉄・原木・銅鉱石・砂糖・おもちゃ・プラスチック、亜熱帯ではダイヤモンド)は、現実的なルートで急減衰ゾーンに入ることはありません。旅客(0, 24)は即座に減衰、貴重品(1, 32)はほぼ同じ速さで、ゲーム中最も急な複合減衰を示します。

本計算機は無料ですか?

内訳パネルと貨物チートシートは初期状態で展開済み — アカウント不要、登録なし、レート制限なし、計算機ページ自体に広告もありません。すべての中間値(運送周期・時間係数・分子)は初回レンダリングから表示されます。

2 ルートを並べて比較するには?

計算機上部の「2 旅を比較」タブを使ってください。気候は両方で共通(異なる気候間の比較は意味を持たない)ですが、貨物・数量・距離・輸送日数は旅 A と旅 B それぞれで独立に設定できます。計算機は両方の £ 合計と差分(B − A)を、緑または赤のバナー付きで表示します。デフォルトは同じ 100 タイル × 60 日ルートでの石炭 vs 旅客 — 公式 wiki/ja でも触れられる「結局なに運ぶ?」という定番比較です。

速度は収益に影響しますか?それとも輸送日数だけ?

直接効くのは輸送日数だけです。貨物収益公式は車両の速度を読み取らず、貨物が車内で過ごした暦日数だけを読み取ります。速度が効くのは間接的にだけ:速い車両は同じマンハッタン距離を少ない日数で走り切るため、運送周期が減り、時間係数が上がります。同じルートでの 100 km/h 列車と 200 km/h 列車の収益差は、後者が半分の日数で配送するためだけに生じます。wiki は「速度は ~50 km/h 以下で最も効き、それを超えるとフラットになる」と注意しており、200 km/h を 400 km/h にする増分は 25 km/h を 50 km/h にする増分よりずっと小さいです。


OpenTTD の貨物と経済の用語集

マンハッタン距離

タイルグリッド上の 2 駅間の直線距離、$|xsrc - xdst| + |ysrc - ydst|$。OpenTTD の貨物収益公式が使う距離で、車両が実際に走る線路の長さとは別物です。日本語コミュニティでは「タクシー幾何学」とも呼ばれます。

運送周期

OpenTTD が貨物の経年を数える内部時間単位。1 運送周期 = 暦日 2.5 日。1 バイトのカウンタに保存されるため最大値は 255 運送周期(≈ 暦日 637 日)で、その後は時間係数が下限 MIN_TIME_FACTOR = 31 に到達します。

時間係数

収益公式の鮮度乗数、範囲 0〜255(下限 31)。255 = 完全に新鮮、31 = 古くなった下限。days1 を超えた各周期で 1 ずつ減少、days1 + days2 を超えた各周期でさらに 1 減少(合計、緩減衰ゾーンでは周期あたり −2)。

days1

貨物の早期減衰しきい値(運送周期)。days1 未満なら、貨物は最大時間係数 255 で稼ぎます。例:旅客と食品で 0、貴重品で 1、石炭で 7、石油とおもちゃで 25。

days2

貨物の後期減衰しきい値、days1 の上に追加されます。days1 + days2 を超えると時間係数は 2 倍速で減少します。石炭・石油・鉄鉱石・鋼鉄・原木・銅鉱石・砂糖・おもちゃ・プラスチックの days2 はすべて 255(実質無制限)。

支払い率(paymentRate)

src/economy.cpp の _default_cargo テーブルにおける貨物ごとの基本支払い率。最高は亜熱帯原木(7964)、次いで貴重品(7509)・炭酸飲料(6250)・商品/お菓子(6144)・石炭(5916)。最低は旅客(3185)。旅客を除けば最低は果物(4209)。エンジン内では Q11.4 固定小数点の整数として保存されます。

GetTransportedGoodsIncome()

車両が貨物をアンロードしたときの £ 支払いを計算する src/economy.cpp の C++ 関数。本計算機が再現する整数公式そのものを実装し、最後の 21 ビット BigMulS シフトを含みます。

JGR's Patch Pack(JGRPP)

Jonathan Rennison による長期メンテナンスの OpenTTD コミュニティフォーク。数百の追加機能(リアルブレーキ・プログラム可能信号・都市ゾーン)を実装。貨物収益コードはバニラとバイト単位で同一 — 本計算機の数字は 1 対 1 で適用されます。

NewGRF

OpenTTD のユーザーコンテンツフォーマット。車両・産業・町の建物・貨物セットの追加に使われます。NewGRF 貨物セット(FIRS・ECS・YETI)はバニラの支払い率テーブル(33 行:31 種の貨物 + 亜熱帯の原木と石油の独立行)を上書きします。本計算機はバニラの支払い率のみを扱います。

気候

OpenTTD の 4 つのシナリオ設定の 1 つ:温帯(デフォルト)・亜寒帯・亜熱帯・おもちゃランド。どの貨物が利用可能かを決定します — 石炭は温帯と亜寒帯のみ、ダイヤモンドは亜熱帯のみ、おもちゃ・お菓子・コーラはおもちゃランドのみ。

貨物老化率

経済設定(economy.cargo_aging_rate)で、貨物が運送周期を蓄積する速さをスケールします。バニラと JGRPP の両方でデフォルト 100%。JGRPP では設定可能なパーセンテージとして公開、バニラではハードコードで 100。

インフレ

OpenTTD のコストと収益に適用される年次乗数(デフォルトで年約 1.5%)。本計算機は基準年(1950)の £ を返し、ゲーム内貨物支払い率グラフと同じキャリブレーション。相対比較はインフレで変化しません。


Smart Calculators チームによる検証済みコンテンツ