OpenTTD 貨物收益計算機
看清 OpenTTD 每一次運輸實際賺多少。選好貨物,設定距離格數與運輸天數,計算機立刻給出單次 £ 收益、每格 £、每日 £,以及該路線最賺錢的貨物。
計算一次運送的收益。
決定貨物下拉選單中顯示哪些貨物類型。請與你正在玩的 OpenTTD 存檔氣候保持一致。
你的火車、船舶、飛機或卡車正在運送的貨物。每種貨物都有自己的單位運價與保鮮曲線。
人
格
天
此數值的計算過程
- 時間因子
- 255 − 24 − 2·0 → 231
- 距離折半
- 100 ÷ 2 → 50
- 第一步 (>> 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 中的整數公式
- = 單次運送的遊戲內 £ 收益(計算機回傳的整數)
- = 起訖站之間的曼哈頓格距離——|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 後向下取整。一個運輸週期 = 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 天
對比兩次運輸——同一條 100 格路線上的煤炭對貴重物品
給巴哈姆特、PTT、ianwu.tw 讀者的貨物收益規劃技巧
- 煤炭 £5,916 基礎運價並不是全表最高,但 days1/days2 這對 7/255 意味著即使在 2,000 格的全圖鐵路網上,它依舊保持近乎滿價。煤炭是「就算把鐵路鋪得歪七扭八也能盈利」的那種貨物。貴重物品 £7,509 基礎更高,但 days1 = 1、days2 = 32,運輸超過 80 日曆天(32 個運輸週期)後時間因子就會被壓到下限 31 附近。50 格以內用貴重物品,其餘路線用煤炭。
- 距離指的是曼哈頓格距離,不是鐵路長度。收益公式只讀取兩站之間的 |xsrc - xdst| + |ysrc - ydst|,與鐵路轉了多少彎完全無關。繞山的「之」字形鐵路與一條直線只要站點座標相同,收益就完全一樣。這是巴哈姆特運輸大亨哈啦板上最常見的誤解:玩家以為在曼哈頓距離 100 格的兩站之間鋪 200 格鐵路就能賺 200 格的錢。不會。把站點放在產業建築最遠的兩端,最大化曼哈頓距離才是真正有意義的優化。
- wiki 貨物收入頁面裡那一個「天」其實是你存檔裡的 2.5 個日曆天。OpenTTD 在一位元組(0–255)計數器裡儲存貨物在途時間,因此採用 2.5 天為一個單位才能涵蓋最長的海運。上方計算機接受的是日曆天數(也就是車輛視窗裡顯示的那個數字),內部自動除以 2.5;但如果你直接照著 wiki 文字版公式手算,記得自己乘除 2.5。
- 時間因子下限是 31,不是零。src/economy.cpp 中的 MIN_TIME_FACTOR = 31 意味著就算貨物在車裡待了好幾個遊戲年,仍至少能拿回新鮮價的 31/255 ≈ 12%。玩家偶爾抱怨「我的舊貨物什麼都賺不到」——通常只是 £ 數字偏小(一名乘客在 2,000 格、4,000 天的船上換算下來是 floor(2000 × 31 × 1 × 3185 / 2,097,152) = £94),但只要距離與數量都不為零,結果絕不會是字面意義上的 £0。
- 亞熱帶木材 £7,964 基礎運價是全部原版貨物的最高值,超過貴重物品(£7,509),在短途上才會被玩具樂園汽水(£6,250)以每格收益逼近。中文名同樣叫「木材」,但比溫帶 £5,005 貴 59%。如果你是亞熱帶存檔,每一條「林場 → 鋸木廠」的可行路線上,木材的優先級都應排在商品之前。
- JGR 的 Patch Pack 用同一條公式。JGRPP 中的貨物收益程式碼與原版逐位元相同——經濟方面唯一的差別是貨物老化速率設定(兩邊預設都是 100%,JGRPP 將它做成可設定的百分比)。只要沒改 economy.cargo_aging_rate,本計算機的數字可以 1 比 1 搬到 JGRPP 存檔。FIRS、ECS、YETI 等 NewGRF 貨物模組會覆寫運價表,本工具不支援;NewGRF 存檔可以把計算機輸出當作原版基線,再依模組 README 公布的比率縮放。
- 通貨膨脹會按比例縮放結果。計算機顯示的 £ 是基準年(1950)數值,與遊戲內運價圖的標尺一致。OpenTTD 預設通膨倍率約每年 1.5%,會同時縮放支出與收入,所以「相對於營運成本的相對收益」並不會變——計算機的 £ 不是你 2050 年銀行帳戶裡的真實數字,但兩次運輸之間的比例完全保留。
- 動手鋪路前先看計算機下方的速查表。它把全部 33 行原版資料(31 種唯一貨物名加上亞熱帶木材與石油各一行)依單位運價排序,並用啟發式 days1 × 75(30 km/h × 2.5 天/週期 ≈ 1950 年代典型列車每週期 75 格)標註「最佳距離 ≤ N 格」。days2 = 255 的貨物會被標上「實際上無上限」標籤——在陸地路線上幾乎永遠不會進入嚴重老化區。
OpenTTD 貨物收益計算機——常見問題
OpenTTD 中貨物收益的公式是什麼?
貨物收益裡的距離是怎麼算的?
為什麼 wiki 上的一個「天」其實是遊戲裡的 2.5 天?
OpenTTD 裡哪種貨物最賺錢?
本計算機對 JGR 的 Patch Pack 存檔有效嗎?
對 FIRS、ECS、YETI 這類 NewGRF 貨物模組有效嗎?
為什麼我的長途船運貨物顯示「£0」?
為什麼 CityMania 與遊戲內運價圖給出的數字略有出入?
通貨膨脹會改變結果嗎?
本計算機與遊戲實際運算相比精度如何?
days1 與 days2 有什麼差別?
本計算機免費嗎?
怎麼並排對比兩條路線?
速度會影響收益,還是只看在途天數?
OpenTTD 貨物與經濟術語表
曼哈頓距離
兩站之間依格網計算的直線距離,|xsrc - xdst| + |ysrc - ydst|。OpenTTD 貨物收益公式使用這個距離;它不是車輛實際行駛的鐵路長度。
運輸週期
OpenTTD 用來記錄貨物年齡的內部時間單位。一個運輸週期 = 2.5 個日曆天。存放在一位元組計數器中,最大值 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 後,時間因子衰減速率翻倍。煤炭、石油、鐵礦石、鋼鐵、木材、銅礦石、砂糖、玩具、塑膠的 days2 都是 255(實際上無上限)。
單位運價 (paymentRate)
src/economy.cpp 中 _default_cargo 表裡每種貨物的基礎費率。最高為亞熱帶木材(7964),其次貴重物品(7509)、汽水(6250)、商品與糖果(6144)、煤炭(5916)。最低為水果(4209)。在引擎中以 Q11.4 定點整數儲存。
GetTransportedGoodsIncome()
src/economy.cpp 中的 C++ 函式,負責在車輛卸貨時計算 £ 報酬。本計算機逐位元複刻了它的整數公式,包括最後的 BigMulS 移位 21 位除法。
JGR 的 Patch Pack (JGRPP)
由 Jonathan Rennison 維護、長期活躍的 OpenTTD 社群分支,加入了大量額外功能(真實制動、可程式化號誌、城市分區等)。貨物收益程式碼與原版逐位元相同——本計算機數字 1 比 1 適用。
NewGRF
OpenTTD 的使用者內容格式,用於新增車輛、產業、城鎮建築與貨物模組。NewGRF 貨物模組(FIRS、ECS、YETI)會覆寫原版運價表(33 行:31 種唯一貨物,加上亞熱帶木材與石油兩行);本計算機僅使用原版費率。
氣候
OpenTTD 四種劇本設定之一:溫帶(預設)、亞寒帶、亞熱帶、玩具樂園。決定可用的貨物種類——煤炭僅溫帶/亞寒帶,鑽石僅亞熱帶,玩具/糖果/可樂僅玩具樂園。
貨物老化速率
經濟設定項 economy.cargo_aging_rate,控制貨物累積運輸週期的速度。原版與 JGRPP 預設均為 100%。JGRPP 允許按百分比設定;原版則硬編碼為 100。
通貨膨脹
OpenTTD 每年套用於支出與收入的倍率(預設約每年 1.5%)。計算機回傳基準年(1950)£,與遊戲內運價圖的標尺一致;相對比較結果不受通膨影響。
參考資料與來源
- OpenTTD Wiki (英文) — Cargo income (公式、days1/days2 門檻表、2.5 天每週期說明)
- OpenTTD 原始碼 — src/economy.cpp (GetTransportedGoodsIncome() 函式與覆蓋 31 種唯一貨物的 33 行 _default_cargo 表)
- OpenTTD 繁體中文語言檔 — src/lang/traditional_chinese.txt (貨物名稱官方繁體翻譯來源)
- Wikidata Q725120 — OpenTTD 實體 (實例:電子遊戲、自由軟體;衍生自 Transport Tycoon Deluxe)
- 巴哈姆特運輸大亨哈啦板 (bsn=7029) — 台灣 OpenTTD 玩家社群
- JGR's Patch Pack — 使用同一條貨物收益公式的社群分支