Smart Calculators

Smart

Calculators

OpenTTD 貨物收益計算機

看清 OpenTTD 每一次運輸實際賺多少。選好貨物,設定距離格數與運輸天數,計算機立刻給出單次 £ 收益、每格 £、每日 £,以及該路線最賺錢的貨物。

計算一次運送的收益。

決定貨物下拉選單中顯示哪些貨物類型。請與你正在玩的 OpenTTD 存檔氣候保持一致。

你的火車、船舶、飛機或卡車正在運送的貨物。每種貨物都有自己的單位運價與保鮮曲線。

貨物清單 №1
收益 · 單次運送
£3,508
100 格 · 100 人 · 60 天 · 乘客
每格 £
£35.08
收益 ÷ 距離
每天 £
£58.47
收益 ÷ 運輸天數
時間因子
231 / 255
貨物新鮮度 90.6%

此數值的計算過程

時間因子
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 原始碼

原版 OpenTTD 14.x 與 JGRPP。NewGRF 貨物模組會覆寫預設費率,目前暫不支援。通貨膨脹以基準年(1950 年)數值顯示;存檔會按年份比例縮放。

09·5·2026

OpenTTD 貨物收益計算機。從貨物、距離與運輸天數算出單次運輸 £。

OpenTTD 貨物收益計算機會回傳原版 14.x 或 JGRPP 中一次運送的精確 £ 收益。輸入貨物類型、數量、曼哈頓格距離與日曆天數,工具便會依遊戲內部的整數公式即時計算,輸出單次 £、每格 £、每天 £ 與時間因子(0–255)。

什麼是 OpenTTD 貨物收益計算機?

OpenTTD 貨物收益計算機是一款網頁工具:給定貨物類型、數量、起訖站之間的曼哈頓格距離,以及貨物在車輛內度過的日曆天數,它會回傳這一次運送在遊戲內的英鎊(£)收益。它逐位元複刻 src/economy.cpp 中的 GetTransportedGoodsIncome() 函式——同樣是右移 21 位元、同樣的時間因子下限 31,以及 31 種原版貨物名稱(共 33 行,因為木材與石油在亞熱帶各有獨立運價)各自的 days1 與 days2 門檻值。£ 只是遊戲內的貨幣標籤,並非真實英鎊——OpenTTD 允許玩家把介面切到 $ 或 €,但公式始終在內部 £ 單位中運算,最後才依顯示偏好重新格式化。
計算機涵蓋四種氣候——溫帶、亞寒帶、亞熱帶、玩具樂園——切換氣候時貨物下拉選單會自動過濾。預設目標是原版 OpenTTD 14.x,但同一條公式與運價表在 JGR 的 Patch Pack 與經典 Transport Tycoon Deluxe 中都逐位元相同:貨物收益程式碼自 1995 年首發以來從未動過。Steam(2021 年 4 月 1 日首次上架;2026 年 3 月 Atari 收購 Transport Tycoon Deluxe 版權後,Steam 上架方式有所變動)、GOG、openttd.org 直接下載(依 GPL 授權永久自由)與 JGRPP 玩家看到的數字完全一致。
OpenTTD 中文 wiki(wiki.openttd.org/zh)只有簡體版的「入门指引」與少數產業頁,繁體中文目前沒有對應頁面;最常被引用的第三方工具 citymania.org/tools/profit 自己頁面也寫著「numbers may not be exactly accurate (they should be pretty close though)」。本計算機剛好補齊了 wiki 與 CityMania 都沒做的三件事:給出可與 OpenTTD 原始碼逐位元核對的單次 £ 數值;展開「這個數字是怎麼算出來的」明細面板,列出全部中間值(運輸週期、periodsOverDays1、periodsOverDays2、時間因子、分子、移位);提供依運價排序的 33 行貨物速查表,讓你一眼看出哪種貨物在多長的路線上最划算。

OpenTTD 貨物收益怎麼算(以及計算機內部的流程)

OpenTTD 的貨物收益歸結為四個輸入加上一條整數公式。上方的計算機會替你跑一遍;下面的手算流程是巴哈姆特運輸大亨哈啦板(bsn=7029)老玩家、PTT Little-Games 板與 ianwu.tw 攻略讀者在鋪設 200 格幹線之前用來核算的版本。
透過工具計算
1. 選擇存檔的氣候(溫帶為遊戲預設值,也是最常見的劇本)。
2. 選擇貨物。下拉選單會按氣候過濾合法貨物(煤炭僅溫帶或亞寒帶,鑽石僅亞熱帶,玩具僅玩具樂園,以此類推)。
3. 輸入運送數量(預設 100——依貨物可能是乘客、噸、袋、公升或件)。
4. 輸入起訖站之間的曼哈頓格距離。這不是實際鐵路長度,而是格網對角距離 $|xsrc - xdst| + |ysrc - ydst|$。沿山勢繞行的彎曲鐵路實際長度可能比曼哈頓距離多 30%。
5. 輸入貨物在車輛內度過的日曆天數(預設 60)。長途貨運列車通常顯示 80 到 200 天;船舶往往超過 300 天。
核心結果是這次運送的 £ 收益。下方還會列印每格 £、每天 £、時間因子(滿分 255)與新鮮度百分比。明細面板會展示日曆天數到運輸週期的換算、兩個 periodsOverDays 值、套用下限後的時間因子,以及最後的整數除法——和你在紙上手寫的六行計算完全對應。
手動計算
1. 把日曆天數換算成運輸週期:$tp = \lfloor daystransit / 2.5 \rfloor$。OpenTTD wiki 的貨物收入頁面特別強調:公式中的一個「天」其實等於 2.5 個遊戲內日曆天。OpenTTD 把貨物運輸時間存在一個位元組(最大 255)裡,因此採用 2.5 天為一個單位,讓計數能涵蓋最長的海運。
2. 在表中查找該貨物的 days1 與 days2:乘客(0, 24)、煤炭(7, 255)、貴重物品(1, 32),其餘 33 行(31 種唯一貨物名稱,木材與石油在亞熱帶各占獨立行)以此類推。
3. 計算 periodsOverDays1:$\max(tp - days1, 0)$。表示貨物已經超過早期保鮮門檻的週期數。
4. 計算 periodsOverDays2:$\max(periodsOverDays1 - days2, 0)$。表示進一步超過晚期保鮮門檻的週期數。
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) = 單次 £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 = 單次運送的遊戲內 £ 收益(計算機回傳的整數)
  • 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 後向下取整。一個運輸週期 = 2.5 個遊戲日
  • d1d_1 = 貨物的 days1 門檻——早期保鮮邊界(運輸週期)。乘客與食物為 0,貴重物品 1,煤炭 7,石油 25,塑膠與汽水 30
  • d2d_2 = 貨物的 days2 門檻——晚期保鮮邊界。乘客 24,貴重物品 32,穀物 40,煤炭 255(實際上無上限)
分母 $2^{21} = 2\,097\,152$ 對應 OpenTTD GetTransportedGoodsIncome() 函式(src/economy.cpp)中的 `BigMulS(..., 21)` 移位。wiki 上的文字版公式使用兩次連續移位(`>> 7` 再 `>> 13`);從代數上看完全等價,因為 $2^7 \cdot 2^{13} \cdot 2 = 2^{21}$——wiki 版本開頭那個「除以 2」併入了總分母。我們在 JavaScript 裡用一次 `Math.floor(numerator / 2_097_152)` 複刻 C++ 的移位;在計算機輸入上限(距離 ≤ 2048、數量 ≤ 9999、單位運價 ≤ 7964)下,所有中間乘積都安全落在 Number.MAX_SAFE_INTEGER 範圍內,不需要 BigInt,與引擎之間也不會出現差一錯誤。

完整推導的實例

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) = 單次 £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) = 單次 £30,804、每格 £102.68、每天 £154.02。煤炭基礎運價 5916 並非全表最高,但 7/255 的門檻組合讓一列跑了 200 天的火車仍能保持新鮮貨 71% 的速率賺錢。這也是巴哈姆特運輸大亨哈啦板與 PTT Little-Games 板都把煤炭稱為「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) = 單次 £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) = 單次 £18,076、每格 £90.38。如果你的存檔是亞熱帶,同條距離的木材路線比溫帶木材多賺 60%。多數新手攻略漏掉這一點,因為兩種木材在遊戲裡中文名都叫「木材」。這也是為什麼 33 行原版貨物表裡木材出現兩次(石油也是兩次):溫帶/亞寒帶與亞熱帶的條目共用名字但分開存運價。

對比兩次運輸——同一條 100 格路線上的煤炭對貴重物品

同樣 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 至 8 件貴重物品,而煤礦每月能產 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 中貨物收益的公式是什麼?

收益 = 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 上的一個「天」其實是遊戲裡的 2.5 天?

OpenTTD 用一位元組(0–255)計數器記錄貨物年齡,每 2.5 個日曆天才遞增一次。wiki 的文字版公式直接採用這種「運輸週期」單位;本計算機接受車輛視窗裡看到的日曆天數,自動替你除以 2.5。

OpenTTD 裡哪種貨物最賺錢?

依基礎運價排:亞熱帶木材(£7,964)→ 貴重物品(£7,509)→ 汽水(£6,250)→ 商品/糖果(£6,144)→ 煤炭(£5,916)。長途路線最優是煤炭:days2 = 255 讓時間因子在 1,500 格距離上仍接近最大值。論月度收益(考量產業產能)通常還是煤炭:煤礦每月產 100+ 噸,銀行每月只產 1 至 8 件貴重物品。可以在「對比兩次運輸」模式裡看到貴重物品在你這張地圖上具體要多短才會反超煤炭。

本計算機對 JGR 的 Patch Pack 存檔有效嗎?

有效——原版 OpenTTD 14.x 與 JGR 的 Patch Pack 之間,貨物收益程式碼逐位元相同。經濟方面唯一的差別是貨物老化速率設定(兩邊預設都是 100%,JGRPP 把它暴露為 economy.cargo_aging_rate)。33 行運價表(31 種唯一貨物名加上亞熱帶木材與石油兩行)與整數公式都沒動過。只要沒改老化速率,計算機數字可以 1 比 1 搬到 JGRPP 存檔。

對 FIRS、ECS、YETI 這類 NewGRF 貨物模組有效嗎?

無效。NewGRF 貨物模組會用自己的 paymentRate、days1 與 days2 覆寫原版 _default_cargo 表。本計算機只內建原版貨物定義(31 種唯一名稱、33 行——亞熱帶木材與石油各占獨立行),在 FIRS 存檔上跑公式會正確,但常數是錯的。NewGRF 存檔可以把計算機輸出當作原版基線,再依模組 README 公布的比率縮放(多數 NewGRF 都會列出這個比例)。

為什麼我的長途船運貨物顯示「£0」?

MIN_TIME_FACTOR = 31 的下限決定了陳舊貨物至少也能拿到新鮮價的 31/255 ≈ 12%——結果不可能字面為零,除非距離或數量為零。如果看到 £0,請檢查:(a) 距離不為零(同站運送不付錢),(b) 數量不為零,(c) 單位運價不為零(部分 NewGRF 會把不希望被運輸的貨物運價歸零)。在 2,000 格、4,000 天的乘客船上,單名乘客的收益會很小(£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 倍——但「相對收益」(這趟對那趟、這種貨物對那種、這段距離對那段)絲毫不變。計算機刻意不顯示按年通膨調整後的 £,因為 wiki、運價圖與 economy.cpp 都以 1950 年為基準。

本計算機與遊戲實際運算相比精度如何?

對原版 14.x 與 JGRPP 而言逐位元精確——40 項 QA 測試套件會把每一個輸出與 src/economy.cpp 中的 C++ 數學交叉比對。計算機不模擬 NewGRF 回呼(部分 NewGRF 透過 cargo callback 加入倍率)、負收益的中轉鏈,以及超過 4,000 天輸入上限的貨物老化。在這些限制內,£ 結果與車輛卸貨時引擎寫入帳戶的金額完全一致。

days1 與 days2 有什麼差別?

days1 是早期保鮮門檻:貨物在車輛裡能停留多少個運輸週期,時間因子才開始下降。days2 是疊加在 days1 之上的晚期門檻;超過 days1 + days2 後,時間因子下降速率翻倍(公式同時減去 periodsOverDays1 與 periodsOverDays2)。days2 = 255 的貨物(煤炭、石油、鐵礦石、鋼鐵、木材、銅礦石、砂糖、玩具、塑膠)實際上不會在任何合理路線上進入陡降區。乘客(0, 24)幾乎瞬間開始衰減;貴重物品(1, 32)幾乎同樣快,且是全遊戲綜合下降最陡的貨物。

本計算機免費嗎?

明細面板與貨物速查表預設全部展開——無需帳號、無需註冊、無速率限制,計算頁面本身也沒有廣告。運輸週期、時間因子、分子等中間值從首次渲染起就一直可見。

怎麼並排對比兩條路線?

用計算機頂部的「對比兩次運輸」分頁。氣候在兩次運輸間共用(跨氣候比較沒有意義),而貨物、數量、距離與運輸天數對運輸 A 與運輸 B 各自獨立。計算機會同時列印兩側 £ 與差額(B − A),並配上綠色或紅色橫幅。預設值是同一條 100 格、60 天路線上的煤炭對乘客——也是社群裡最經典的「這條路該跑什麼貨物」對比。

速度會影響收益,還是只看在途天數?

直接影響的是在途天數。貨物收益公式不讀取車輛速度,只讀取貨物在車內度過的日曆天數。速度的作用是間接的:更快的車輛把同一段曼哈頓距離跑完用的天數更少,運輸週期更少,時間因子更高。同一條線上 100 km/h 的火車與 200 km/h 的火車收益不同,正是因為後者用一半的天數完成運送。wiki 也指出:速度的影響在 50 km/h 以下最顯著,往上越來越平緩——把 200 km/h 拉到 400 km/h 的增益遠不如把 25 拉到 50。


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)£,與遊戲內運價圖的標尺一致;相對比較結果不受通膨影響。


內容由 Smart Calculators 團隊審核驗證