OpenTTD 貨物収益計算機
OpenTTD の 1 配送が稼ぐ £ を正確に算出。貨物を選び、マンハッタン距離と輸送日数を入力すると、£/旅、£/タイル、£/日、そのルートで最も稼げる貨物を返します。
1 回の配送の収益を計算します。
貨物ドロップダウンに表示される貨物を決定します。プレイしている OpenTTD セーブの気候と一致させてください。
あなたの列車・船舶・航空機・トラックが配送している貨物。貨物ごとに支払い率と鮮度曲線が異なります。
人
タイル
日
この数字の計算過程
- 時間係数
- 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 14.x と JGRPP に対応。NewGRF 貨物セットはデフォルトの支払い率を上書きするため未対応です。インフレは基準年(1950)の値で表示されており、セーブ側で比例的にスケールされます。
OpenTTD 貨物収益計算機。貨物・距離・輸送日数から £/旅を算出。
OpenTTD 貨物収益計算機とは?
OpenTTD 貨物収益の計算方法(および本ツールの内部処理)
貨物収益 — economy.cpp の整数公式
- = 1 配送あたりのゲーム内 £ 収益(計算機が返す整数)
- = 出荷駅と到着駅の間のマンハッタンタイル距離 — $|x_{src} - x_{dst}| + |y_{src} - y_{dst}|$
- = 時間係数(0–255)。255 = 完全に新鮮、下限 MIN_TIME_FACTOR = 31
- = 配送された貨物の量(旅客・トン・袋・リットル・個)
- = economy.cpp の _default_cargo テーブルから取得する基本支払い率 — 旅客 3185、石炭 5916、亜熱帯原木 7964(最高)、貴重品 7509(原木除く最高)
- = 運送周期 — 暦日数を 2.5 で割って切り捨て。1 運送周期 = ゲーム内 2.5 日
- = 貨物の days1 しきい値 — 早期鮮度減衰の境界(運送周期)。旅客と食品で 0、貴重品で 1、石炭で 7、石油で 25、プラスチックと炭酸飲料で 30
- = 貨物の days2 しきい値 — 後期鮮度減衰の境界。旅客 24、貴重品 32、穀物 40、石炭 255(実質無制限)
完全な計算過程付きの実例
wiki 参照例 — 旅客 27 名、100 タイル、60 日、温帯
石炭の長距離ルート — 200 トン、300 タイル、200 日、亜寒帯
貴重品の超短距離 — 貴重品 50 個、50 タイル、5 日、温帯
亜熱帯原木 — 100 トン、200 タイル、80 日
2 旅の比較 — 同じ 100 タイル路線での石炭 vs 貴重品
公式 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 チームによる検証済みコンテンツ