Smart Calculators

Smart

Calculators

Kalkulačka příjmu z nákladu v OpenTTD

Zjistěte přesně, kolik vydělá každá doručená zásilka v OpenTTD. Vyberte náklad, nastavte vzdálenost a dny na cestě — kalkulačka vrátí £ za jízdu, £ za pole, £ za den a nejvýdělečnější náklad pro tuto trasu.

Spočítejte příjem za jednu doručenou zásilku.

Určuje, jaké náklady se objeví v seznamu. Vyberte stejné klima, jaké máte v hře OpenTTD.

Náklad, který veze váš vlak, loď, letadlo nebo nákladní auto. Každý náklad má vlastní sazbu platby a vlastní křivku čerstvosti.

cestujících

polí

dní

Nákladní list №1
Příjem · za doručení
£3,508
100 polí · 100 cestujících · 60 dní · Cestující
£ za pole
£35.08
příjem ÷ vzdálenost
£ za den
£58.47
příjem ÷ dny na cestě
Faktor času
231 / 255
Čerstvost nákladu — 90,6%

Jak vzniklo toto číslo

Faktor času
255 − 24 − 2·0 → 231
Poloviční vzdálenost
100 ÷ 2 → 50
Krok 1 (>> 7)
50 × 231 × 100 ÷ 128 → 9 023
Krát sazba platby
× 3 185
Děleno 8192 (>> 13)
÷ 8192
Příjem
£3,508
Tahák nákladů · Mírné
NákladSazba platbyNejlepší při vzdálenostiStárne po
Cennosti7 509≤ 75 polí33 period
Zboží6 144≤ 375 polí33 period
Uhlí5 916≤ 525 polí
Ocel5 688≤ 525 polí
Železná ruda5 120≤ 675 polí
Dřevo5 005≤ 1 125 polí
Zrní4 778≤ 300 polí44 period
Pošta4 550≤ 1 500 polí110 period
Ropa4 437≤ 1 875 polí
Dobytek4 322≤ 300 polí22 period
Cestující3 185libovolná vzdálenost24 period
Vzorec ověřen · zdrojový kód OpenTTD

Vanilla OpenTTD 14.x a JGRPP. Sady NewGRF přepisují výchozí sazby platby a zatím nejsou podporované. Příjmy jsou uvedené v hodnotách bazického roku (1950); inflace ve vašem uložení je škáluje úměrně.

09·5·2026

Kalkulačka příjmu z nákladu v OpenTTD. £ za jízdu z nákladu, vzdálenosti a dní na cestě.

Kalkulačka příjmu z nákladu v OpenTTD vrátí přesnou částku v £ za jedno doručení ve vanille 14.x nebo JGRPP. Zadejte typ nákladu, množství, manhattanskou vzdálenost v polích a kalendářní dny na cestě — nástroj spustí celočíselný vzorec z economy.cpp a vypíše £ za jízdu, £ za pole, £ za den a faktor času (0–255).

Co je kalkulačka příjmu z nákladu v OpenTTD?

Kalkulačka příjmu z nákladu v OpenTTD je webový nástroj, který pro zvolený typ nákladu, množství, manhattanskou vzdálenost v polích a kalendářní dny strávené uvnitř vozidla vrátí příjem v herních librách (£) za tuto jedinou jízdu. Bit po bitu kopíruje funkci GetTransportedGoodsIncome() ze souboru src/economy.cpp: stejný posun vpravo o 21 bitů, stejnou dolní mez faktoru času na 31 a stejné prahy days1 a days2 pro každý z 31 unikátních názvů nákladu ve vanille (celkem 33 řádků — Dřevo a Ropa mají v subtropickém klimatu samostatný řádek). Symbol £ je jen označení herní měny, ne skutečná britská libra — OpenTTD umožňuje přepnout rozhraní na $ nebo €, ale vzorec se vždy počítá ve vnitřní jednotce £ a teprve při zobrazení se přeformátuje.
Kalkulačka pokrývá všechna čtyři klimata (mírné, subarktické, subtropické, hračkářské) a při přepnutí klimatu automaticky filtruje rozbalovací seznam nákladů. Výchozí cílovou verzí je vanilla OpenTTD 14.x, ale vzorec i tabulka sazeb jsou bajt po bajtu shodné s JGR's Patch Pack i s klasickým Transport Tycoon Deluxe — kód pro příjem z nákladu se od vydání v roce 1995 nezměnil. Hráči ze Steamu, GOGu, přímého stažení z openttd.org i z JGRPP vidí přesně stejná čísla.
Česká OpenTTD wiki (wiki.openttd.org/cs) nemá vlastní stránku Game Mechanics ani Příjem z nákladu — má pouze tutoriály a stránku Průmysl, která popisuje, že vaše společnost dostává zaplaceno za transport surovin a zboží, ale formuli ani konkrétní čísla neuvádí. Nejcitovanější zahraniční nástroj citymania.org/tools/profit u sebe přiznává: „numbers may not be exactly accurate (they should be pretty close though)“. Tahle kalkulačka zaplňuje tři mezery, které ani česká wiki, ani CityMania nepokrývají: ukazuje konkrétní £ za jízdu, které lze ověřit oproti zdrojovému kódu, rozbaluje panel „jak vzniklo toto číslo“ se všemi mezivýsledky (transportní periody, periodsOverDays1, periodsOverDays2, faktor času, čitatel, posun) a dává tahák 33 řádků seřazený podle sazby platby, aby bylo na první pohled jasné, který náklad vítězí na jaké délce trasy.

Jak spočítat příjem z nákladu v OpenTTD (a jak to dělá kalkulačka)

Příjem z nákladu v OpenTTD se scvrkne na čtyři vstupy a jeden celočíselný vzorec. Kalkulačka výše vám ho spočítá; ruční verze níže je ta, kterou veteráni z české Facebookové skupiny OpenTTD CZ/SK a hráči JGRPP používají, než položí 200 polí hlavní tratě.
Pomocí nástroje
1. Vyberte klima vaší uložené hry (Mírné je výchozí klima nové hry, takže většina vanilla uložení začíná zde).
2. Vyberte náklad. Seznam je filtrovaný podle nákladů povolených v daném klimatu (Uhlí jen v Mírném nebo Subarktickém, Diamanty jen v Subtropickém, Hračky jen v Hračkářském a tak dále).
3. Zadejte doručené množství (výchozí 100 — cestujících, tun, pytlů, litrů nebo kusů podle nákladu).
4. Zadejte manhattanskou vzdálenost v polích mezi výchozí a cílovou stanicí. To NENÍ délka kolejí — je to úhlopříčná vzdálenost po mřížce, tedy $|xsrc - xdst| + |ysrc - ydst|$. Trať, která se klikatí kolem hor, může být o 30 procent delší než její manhattanská vzdálenost.
5. Zadejte kalendářní dny, které náklad strávil ve vozidle (výchozí 60). Dálkové nákladní vlaky běžně ukazují 80 až 200 dní na cestě; lodě často přes 300.
Hlavní výsledek je £ za jednu jízdu. Pod ním kalkulačka vypisuje £ za pole, £ za den, faktor času (z 255) a procento čerstvosti. Panel s rozkladem ukazuje převod kalendářních dní na transportní periody, obě hodnoty periodsOverDays, konečný faktor času po aplikaci dolní meze a finální celočíselné dělení — stejných šest řádků, které byste napsali tužkou na papír.
Ručně
1. Převeďte kalendářní dny na transportní periody: $tp = \lfloor daystransit / 2{,}5 \rfloor$. Anglická wiki upozorňuje, že jeden „den“ v jejím vzorci je ve skutečnosti 2,5 herních dne; OpenTTD ukládá dobu na cestě ve dvouipůldenních jednotkách, aby jednobajtový čítač (max. 255) pokryl rozsah i nejdelších námořních tras.
2. Vyhledejte v tabulce hodnoty days1 a days2 daného nákladu: Cestující (0, 24), Uhlí (7, 255), Cennosti (1, 32) a tak dále pro všech 33 řádků vanilly (31 unikátních názvů — Dřevo a Ropa mají v subtropickém klimatu samostatný řádek).
3. Spočítejte periodsOverDays1: $\max(tp - days1, 0)$. To je počet transportních period po překročení prvního prahu čerstvosti.
4. Spočítejte periodsOverDays2: $\max(periodsOverDays1 - days2, 0)$. Další periody po překročení druhého prahu.
5. Spočítejte faktor času: $\max(255 - periodsOverDays1 - periodsOverDays2, 31)$. Dolní mez 31 je konstanta MIN_TIME_FACTOR z economy.cpp — brání tomu, aby zatuchlý náklad přinášel doslova nulu.
6. Použijte vzorec příjmu: $income = \lfloor (distance \cdot timeFactor \cdot amount \cdot paymentRate) / 2\,097\,152 \rfloor$. Jmenovatel $2^{21}$ odpovídá posunu `BigMulS(..., 21)` v economy.cpp.
Kontrolní příklad z naší QA sady: 27 cestujících, 100 polí, 60 kalendářních dní, mírné klima. tp = 24, periodsOverDays1 = 24 − 0 = 24, periodsOverDays2 = max(24 − 24, 0) = 0, faktor času = 255 − 24 = 231, čitatel = 100 × 231 × 27 × 3185 = 1 986 484 500, příjem = floor(1 986 484 500 / 2 097 152) = £947 za jízdu. Toto číslo se shoduje s herním grafem sazeb platby pro cestující při 60 dnech (v rámci kvantizace grafu) a je referenční hodnotou v sadě QA testů kalkulačky.

Příjem z nákladu — celočíselný vzorec z 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 = Příjem v herních £ za jedno doručení (celé číslo, které kalkulačka vrátí)
  • DD = Manhattanská vzdálenost v polích mezi výchozí a cílovou stanicí — $|x_{src} - x_{dst}| + |y_{src} - y_{dst}|$
  • TT = Faktor času (0–255), 255 = dokonale čerstvý náklad, dolní mez MIN_TIME_FACTOR = 31
  • AA = Množství doručeného nákladu (cestující, tuny, pytle, litry, kusy)
  • PP = Základní sazba platby nákladu z tabulky _default_cargo v economy.cpp — 3185 u cestujících, 5916 u uhlí, 7964 u subtropického dřeva (rekord), 7509 u cenností (rekord mimo dřevo)
  • tptp = Transportní periody — kalendářní dny dělené 2,5 a zaokrouhlené dolů. Jedna perioda = 2,5 herního dne
  • d1d_1 = Práh days1 nákladu — raná hranice úbytku čerstvosti v transportních periodách. 0 u cestujících a jídla, 1 u cenností, 7 u uhlí, 25 u ropy, 30 u plastu a limonády
  • d2d_2 = Práh days2 nákladu — pozdní hranice úbytku. 24 u cestujících, 32 u cenností, 40 u zrní, 255 u uhlí (prakticky bez limitu)
Jmenovatel $2^{21} = 2\,097\,152$ odpovídá posunu `BigMulS(..., 21)` ve funkci GetTransportedGoodsIncome() (src/economy.cpp). Slovní verze vzorce z wiki používá dva po sobě jdoucí posuny (`>> 7` a pak `>> 13`); algebraicky jsou ekvivalentní, protože $2^{7} \cdot 2^{13} \cdot 2 = 2^{21}$ — úvodní dělení dvěma ve verzi z wiki se sčítá do společného jmenovatele. V JavaScriptu posun z C++ replikujeme jedinou operací `Math.floor(numerator / 2_097_152)`, protože všechny mezisoučiny se při vstupních limitech kalkulačky (vzdálenost ≤ 2048, množství ≤ 9999, sazba platby ≤ 7964) bezpečně vejdou do Number.MAX_SAFE_INTEGER. BigInt není potřeba a vůči enginu nevzniká žádná chyba o jednotku.

Příklady s kompletním rozkladem výpočtu

Referenční příklad ze specifikace — 27 cestujících, 100 polí, 60 dní, mírné klima

tp = floor(60 / 2,5) = 24. U cestujících days1 = 0, days2 = 24, sazba platby = 3185. periodsOverDays1 = max(24 − 0, 0) = 24. periodsOverDays2 = max(24 − 24, 0) = 0. Faktor času = max(255 − 24 − 0, 31) = 231. Čitatel = 100 × 231 × 27 × 3185 = 1 986 484 500. Příjem = floor(1 986 484 500 / 2 097 152) = £947 za jízdu, faktor času 231/255 (čerstvost 90,6 %), £9,47 za pole, £15,78 za den. To je referenční hodnota z §5.5 specifikace kalkulačky a kontrolní QA výsledek vůči hernímu grafu sazeb platby.

Uhlí na dálkové trase — 200 tun, 300 polí, 200 dní, subarktické klima

Uhlí má days1 = 7 a days2 = 255 (prakticky neomezená trvanlivost). tp = floor(200 / 2,5) = 80. periodsOverDays1 = 80 − 7 = 73. periodsOverDays2 = max(73 − 255, 0) = 0. Faktor času = max(255 − 73 − 0, 31) = 182. Čitatel = 300 × 182 × 200 × 5916 = 64 602 720 000. Příjem = floor(64 602 720 000 / 2 097 152) = £30 804 za jízdu, £102,68 za pole, £154,02 za den. Uhlí platí základní sazbou 5916 — ne nejvíc v tabulce — ale dvojice 7/255 znamená, že i vlak jedoucí 200 dní vydělává na 71 procentech tempa čerstvého nákladu. Právě proto je uhlí v komunitě OpenTTD (česká Facebooková skupina OpenTTD CZ/SK, Discord Český OpenTTD Server, anglická wiki Cargo income) dlouhodobě označované za nejvýdělečnější náklad ve hře a kanonickou volbu pro „postav hlavní trať v roce 1949 a zapomeň na ni“.

Cennosti na superkrátké trase — 50 kusů, 50 polí, 5 dní, mírné klima

Cennosti mají nejvyšší sazbu mimo dřevo (£7509) a nejužší okno čerstvosti (days1 = 1, days2 = 32). tp = floor(5 / 2,5) = 2. periodsOverDays1 = max(2 − 1, 0) = 1. periodsOverDays2 = max(1 − 32, 0) = 0. Faktor času = max(255 − 1 − 0, 31) = 254 (čerstvost 99,6 %). Čitatel = 50 × 254 × 50 × 7509 = 4 768 215 000. Příjem = floor(4 768 215 000 / 2 097 152) = £2 273 za jízdu, £45,46 za pole, £454,60 za den. To je nejvyšší „£ za den“ ve hře — ale jen na krátkých trasách. Protáhněte stejnou jízdu na 50 dní a faktor času spadne na 236, příjem klesne o zhruba 7 procent; při 200 dnech je faktor času 129 (příjem se téměř halví na £1 154); až po zhruba 325 dnech dosáhne faktor času dolní meze 31 — tam stejná trasa zaplatí už jen £277.

Subtropické dřevo — 100 tun, 200 polí, 80 dní

Subtropické dřevo má nenápadně nejvyšší základní sazbu platby ze všech vanilla nákladů — £7964 (oproti £5005 u mírného a subarktického dřeva, tedy 59 procent přirážka za stejný typ nákladu, jen v jiném klimatu). days1 = 15, days2 = 255. tp = floor(80 / 2,5) = 32. periodsOverDays1 = 32 − 15 = 17. periodsOverDays2 = 0. Faktor času = 255 − 17 = 238. Čitatel = 200 × 238 × 100 × 7964 = 37 908 640 000. Příjem = floor(37 908 640 000 / 2 097 152) = £18 076 za jízdu, £90,38 za pole. V subtropickém uložení vydělá dřevo na stejné trase o 60 procent více než trasy s mírným dřevem. Většina návodů pro začátečníky to přehlíží, protože český název „Dřevo“ je v obou klimatech stejný. Právě proto obsahuje 33řádková vanilla tabulka Dřevo dvakrát (a Ropu dvakrát): položky pro mírné/subarktické a subtropické klima sdílejí název, ale nesou různé sazby platby.

Porovnání dvou jízd — uhlí proti cennostem na stejné 100polní trase

Stejných 100 polí, stejných 60 dní, stejných 100 jednotek. Jízda A: uhlí, sazba 5916, days1 = 7, days2 = 255. tp = 24, periodsOverDays1 = 17, periodsOverDays2 = 0, faktor času = 238. Čitatel uhlí = 100 × 238 × 100 × 5916 = 14 080 080 000. Příjem uhlí = floor(14 080 080 000 / 2 097 152) = £6 713. Jízda B: cennosti, sazba 7509, days1 = 1, days2 = 32. periodsOverDays1 = 23, periodsOverDays2 = 0, faktor času = 232. Čitatel cenností = 100 × 232 × 100 × 7509 = 17 420 880 000. Příjem cenností = floor(17 420 880 000 / 2 097 152) = £8 306 (+£1 593 nad uhlí). Cennosti vítězí na jízdu — ale banka odešle 1 až 8 cenností měsíčně proti 100+ tunám z dolu na uhlí. Po měsíčním příjmu uhlí cennosti převálcuje o řád velikosti, pokud nemáte síť několika bankovních tras.

Tipy pro plánování příjmu pro veterány OpenTTD CZ/SK a nováčky ze Steamu

  • Uhlí má základní sazbu 5916 — ne nejvyšší v tabulce — ale dvojice days1/days2 v hodnotách 7/255 ho drží téměř na plné ceně i na sítích přes celou mapu s 2000 poli. Uhlí je náklad, na kterém můžete pokládat křivé koleje a stejně být v plusu. Cennosti platí 7509 základní sazby, ale s days1 = 1 a days2 = 32 cokoli nad 85 kalendářních dní (34 transportních period) sráží faktor času směrem k dolní mezi 31. Cennosti na trasy do 50 polí, uhlí na všechno ostatní.
  • Vzdálenost je manhattanská v polích, ne délka kolejí. Vzorec příjmu počítá $|xsrc - xdst| + |ysrc - ydst|$ mezi oběma stanicemi, ať se trasa kroutí jakkoli. Klikatá trať přes hory vydělá stejně jako rovná, pokud souřadnice stanic zůstanou stejné. Tohle je nejčastější omyl v české Facebookové skupině OpenTTD CZ/SK a na Discordu Český OpenTTD Server: hráči si myslí, že 200 polí kolejí na manhattanské trase 100 polí přinese 200 polí příjmu. Nepřinese. Stanice umisťujte na nejvzdálenější konce průmyslových budov, abyste maximalizovali manhattanskou vzdálenost.
  • Jeden „den“ na wiki stránce o příjmu z nákladu je ve vaší uložené hře 2,5 kalendářního dne. OpenTTD ukládá dobu na cestě v jednobajtovém čítači 0–255 a jednotka 2,5 dne tu je proto, aby čítač dosáhl i na nejdelší námořní trasy. Kalkulačka výše bere kalendářní dny (to, co ukazuje okno vozidla ve hře) a interně dělí 2,5 — ale pokud taháte hodnoty přímo ze slovní verze vzorce na wiki, dělte nebo násobte 2,5 ručně.
  • Faktor času má dolní mez 31, ne nulu. MIN_TIME_FACTOR = 31 v src/economy.cpp znamená, že i náklad, který je na cestě roky herního času, stále platí asi 31/255 ≈ 12 procent své čerstvé hodnoty. Hráči si občas stěžují „můj starý náklad nic nevydělal“ — obvykle jde jen o to, že číslo £ je malé (jeden cestující na 2000polní lodi po 4000 dnech dá floor(2000 × 31 × 1 × 3185 / 2 097 152) = £94), ale nikdy to není doslova £0, pokud nejsou nulové vzdálenost nebo množství.
  • Subtropické dřevo platí £7964 základní sazby — rekord ze všech vanilla nákladů, nad cennostmi (£7509) a porovnatelné jen s limonádou (£6250) na krátkých trasách u £ za pole. Stejný český název „Dřevo“ jako u mírného (£5005), ale o 59 procent dražší. Pokud hrajete subtropické uložení, dejte dřevu přednost před zbožím na každé použitelné trase pila → příjemce. Komunita JGRPP (vlákno JGR's Patch Pack na tt-forums.net a README projektu JGRennison/OpenTTD-patches na GitHubu) na to pravidelně upozorňuje při plánování megabází.
  • JGR's Patch Pack používá stejný vzorec. Kód příjmu z nákladu je v JGRPP bajt po bajtu shodný s vanillou — jediný ekonomický rozdíl je nastavení rychlosti stárnutí nákladu (výchozí 100 procent v obou verzích, v JGRPP nastavitelné procentem). Čísla z této kalkulačky se přenesou jedna ku jedné do uložení JGRPP, pokud jste výslovně neměnili economy.cargo_aging_rate. Sady NewGRF (FIRS, ECS, YETI) přepisují tabulku sazeb platby a nejsou podporované; pro uložení s NewGRF berte výstup kalkulačky jako vanilla základ a škálujte poměrem zveřejněným v README sady.
  • Inflace škáluje výsledek úměrně. Zobrazená £ je hodnota bazického roku (1950), shodně kalibrovaná jako herní graf sazeb platby. Výchozí inflace OpenTTD zhruba 1,5 procenta ročně škáluje současně náklady i příjmy, takže váš relativní zisk vůči provozním nákladům zůstává stejný — £ z kalkulačky není vaše skutečné £ na bankovním účtu v roce 2050, ale poměr mezi dvěma jízdami zůstává přesně zachován.
  • Než položíte první koleje, kouknete na tahák pod kalkulačkou. Třídí všech 33 řádků vanilly (31 unikátních názvů plus samostatné řádky pro subtropické Dřevo a Ropu) podle sazby platby a každý označuje štítkem „nejlepší při vzdálenosti ≤ N polí“ podle heuristiky days1 × 75 (30 km/h × 2,5 dne/perioda ≈ 75 polí za periodu při typických rychlostech vlaků 50. let). Náklady s days2 = 255 dostanou nálepku „prakticky bez limitu“ — na pozemních trasách se do kritického stárnutí nedostanou.

Kalkulačka příjmu z nákladu v OpenTTD — nejčastější dotazy

Jaký je vzorec pro příjem z nákladu v OpenTTD?

Příjem = floor(vzdálenost × faktor_času × množství × sazba_platby / 2 097 152), kde faktor_času = max(255 − max(tp − days1, 0) − max(max(tp − days1, 0) − days2, 0), 31) a tp = floor(dny_na_cestě / 2,5). Konstanty 2 097 152 = 2^21, 255 = MAX_TIME_FACTOR a 31 = MIN_TIME_FACTOR pocházejí z funkce GetTransportedGoodsIncome() v src/economy.cpp. Vzorec platí ve vanille 14.x, JGRPP a klasickém Transport Tycoon Deluxe — od roku 1995 se nezměnil.

Jak se měří vzdálenost pro příjem z nákladu?

Vzdálenost je manhattanská v polích mezi výchozí a cílovou stanicí: $|xsrc - xdst| + |ysrc - ydst|$. To NENÍ délka kolejí. Rovná 200polní trasa a klikatá 350polní přinesou stejný příjem, pokud obě stanice stojí na stejných dvou souřadnicích. Stanice umisťujte na nejvzdálenější konce průmyslových budov, abyste maximalizovali manhattanskou vzdálenost — známý komunitní trik, který nevyžaduje delší koleje.

Proč je jeden „den“ na wiki ve skutečnosti 2,5 dne ve hře?

OpenTTD počítá stáří nákladu v jednobajtovém čítači (0–255), který tikne jednou za 2,5 kalendářního dne. Slovní vzorec na wiki používá tyto „transportní periody“ přímo; kalkulačka přijímá kalendářní dny (to, co ukazuje okno vozidla ve hře) a sama je dělí 2,5.

Který náklad se nejvíc vyplatí v OpenTTD?

Podle základní sazby platby: subtropické dřevo (£7964), pak cennosti (£7509), limonáda (£6250), zboží a bonbony (£6144), uhlí (£5916). Na dlouhých trasách nejlepší je uhlí — days2 = 255 drží faktor času blízko maxima i při 1500 polích. Po měsíčním příjmu (s ohledem na produkci průmyslu) obvykle vítězí uhlí, protože uhelný důl vyrobí 100+ tun měsíčně, kdežto banka jen 1 až 8 cenností za měsíc. Použijte režim „Porovnat dvě jízdy“ a uvidíte přesně, od jaké délky trasy cennosti uhlí přebijí ve vašem uložení.

Funguje kalkulačka s JGR's Patch Pack?

Ano — kód příjmu z nákladu je mezi vanilla OpenTTD 14.x a JGR's Patch Pack bajt po bajtu shodný. Jediný ekonomický rozdíl je nastavení rychlosti stárnutí nákladu (výchozí 100 procent v obou, v JGRPP vystavené jako economy.cargo_aging_rate). 33řádková tabulka (31 unikátních názvů nákladu plus samostatné subtropické Dřevo a Ropa) a celočíselný vzorec se nezměnily. Pokud jste rychlost stárnutí neupravovali, čísla z kalkulačky se přenesou jedna ku jedné do uložení JGRPP.

A co sady NewGRF jako FIRS, ECS nebo YETI?

Ne. Sady NewGRF přepisují vanilla tabulku _default_cargo vlastními hodnotami sazby platby, days1 a days2. Kalkulačka obsahuje pouze vanilla definice (31 unikátních názvů, 33 řádků včetně subtropického Dřeva a Ropy) — na uložení s FIRSem vrátí správný vzorec, ale špatné konstanty. Pro uložení s NewGRF berte výstup kalkulačky jako vanilla základ a škálujte poměrem zveřejněným v README sady (většina NewGRF ho dokumentuje).

Proč můj náklad na dlouhé námořní trase ukazuje „£0“?

Dolní mez MIN_TIME_FACTOR = 31 znamená, že zatuchlý náklad vždy platí alespoň 31/255 ≈ 12 procent své čerstvé sazby — výsledek by tedy neměl být doslova nula, pokud nejsou nulové vzdálenost nebo množství. Pokud vidíte £0, zkontrolujte: (a) vzdálenost není nulová (doručení na stejnou stanici neplatí), (b) množství není nulové, (c) sazba platby není nulová (některé NewGRFy nulují sazby u nákladů, které nechtějí mít v provozu). Na 2000polní 4000denní cestě s jedním cestujícím bude příjem malý (£94 = floor(2000 × 31 × 1 × 3185 / 2 097 152)), ale nikdy nulový.

Proč CityMania a herní graf dávají mírně odlišná čísla?

Nástroj CityMania (citymania.org/tools/profit) sám u sebe píše „numbers may not be exactly accurate (they should be pretty close though)“ — používá aproximaci a zaokrouhluje mezivýsledky. Herní graf sazeb platby používá přesně stejný celočíselný vzorec jako tato kalkulačka, ale kvantuje osu Y s nízkým rozlišením, takže odečtená hodnota se může lišit o ±5 procent. Čísla z této kalkulačky se shodují s enginem na jednotku přesně, protože doslovně replikujeme bitový posun. Pokud se vaše herní £ liší o víc než pár jednotek, znovu si zkontrolujte, že zadané „dny na cestě“ skutečně odpovídají tomu, co ukazuje náklad vozidla (číslo dál roste, dokud náklad čeká na stanici).

Mění inflace výsledek?

Kalkulačka vrací £ v cenách bazického roku (1950), shodně kalibrovaná jako herní graf sazeb platby. Výchozí inflační násobič OpenTTD (~1,5 procenta ročně) škáluje současně náklady i příjmy, takže váš skutečný bankovní příjem v roce 2050 bude zhruba 4,4× větší než výstup kalkulačky — ale relativní příjem (tato jízda proti jiné, tento náklad proti jinému, tato vzdálenost proti jiné) zůstává přesně zachován. Kalkulačka záměrně nezobrazuje £ upravené podle roku, protože wiki, herní graf i samotný economy.cpp jsou kalibrované na bazický rok 1950.

Jak přesná je tato kalkulačka oproti reálné hře?

Bit po bitu přesná pro vanilla 14.x a JGRPP — 40testová QA sada porovnává každý výstup s C++ matematikou v src/economy.cpp. Kalkulačka nemodeluje NewGRF callbacky (některé sady přidávají násobič přes cargo callback), řetězce přivaděčů se záporným příjmem ani stárnutí nákladu nad limitem vstupu 4000 dní. V těchto mezích je výsledek v £ shodný s tím, co engine při vykládce vozidla připíše na váš účet.

Jaký je rozdíl mezi days1 a days2?

days1 je raný práh úbytku: kolik transportních period může náklad sedět ve vozidle, než jeho faktor času začne klesat. days2 je pozdní práh, který se přičítá nad rámec days1 — za days1 + days2 klesá faktor času dvakrát rychleji (vzorec odečítá periodsOverDays1 i periodsOverDays2). Náklad s days2 = 255 (uhlí, ropa, železná ruda, ocel, dřevo, diamanty, měděná ruda, cukr, hračky, plast) se v praxi na žádné rozumné trase nedostane do zóny strmého poklesu. Cestující (0, 24) chřadnou hned; cennosti (1, 32) skoro stejně rychle a mají nejstrmější kombinovaný pokles ve hře.

Je tato kalkulačka zdarma?

Panel s rozkladem a tahák nákladů jsou rozbalené ve výchozím stavu — bez účtu, bez registrace, bez limitů a bez reklam na samotné stránce kalkulačky. Každá mezihodnota (transportní periody, faktor času, čitatel) je viditelná hned od prvního vykreslení.

Jak porovnat dvě trasy vedle sebe?

Použijte záložku „Porovnat dvě jízdy“ v horní části kalkulačky. Klima je společné (porovnávat trasy v různých klimatech nedává smysl), ale náklad, množství, vzdálenost a dny na cestě jsou pro jízdu A a jízdu B nezávislé. Kalkulačka vypíše obě £ částky plus rozdíl (B − A) se zeleným nebo červeným pruhem. Výchozí nastavení je uhlí proti cestujícím na stejné trase 100 polí × 60 dní — kanonické porovnání „co tu vlastně vozit?“ z české Facebookové skupiny OpenTTD CZ/SK.

Má rychlost vliv na příjem, nebo jen dny na cestě?

Přímo se počítají jen dny na cestě. Vzorec příjmu nečte rychlost vozidla — čte, kolik kalendářních dní strávil náklad uvnitř. Rychlost se uplatňuje jen nepřímo: rychlejší vozidlo urazí stejnou manhattanskou vzdálenost za méně dní, což snižuje počet transportních period a zvyšuje faktor času. Vlak s rychlostí 100 km/h a vlak s 200 km/h na stejné trase vydělávají různě jen proto, že druhý doručí za polovinu doby. Anglická wiki uvádí, že rychlost se nejvíce projeví pod ~50 km/h a nad touto hranicí se efekt zplošťuje; zdvojnásobení z 200 na 400 km/h přidá výrazně méně než zdvojnásobení z 25 na 50.


Slovník nákladu a ekonomiky OpenTTD

Manhattanská vzdálenost

Přímá vzdálenost mezi dvěma stanicemi po mřížce polí, $|xsrc - xdst| + |ysrc - ydst|$. Používá ji vzorec příjmu z nákladu v OpenTTD; není rovna skutečné délce kolejí, po kterých vozidlo jede.

Transportní perioda

Vnitřní časová jednotka, v níž OpenTTD počítá stáří nákladu. Jedna transportní perioda = 2,5 kalendářního dne. Uložená v jednobajtovém čítači, takže maximum je 255 period (≈ 637 kalendářních dní), než faktor času dosedne na dolní mez MIN_TIME_FACTOR = 31.

Faktor času

Násobič čerstvosti ve vzorci příjmu, rozsah 0–255 (s dolní mezí 31). 255 = dokonale čerstvý, 31 = mez pro zatuchlý náklad. Každá perioda nad days1 ho sníží o 1; každá perioda nad days1 + days2 ho sníží o další 1 (celkem −2 za periodu v pomalé zóně).

days1

Raný práh úbytku čerstvosti nákladu v transportních periodách. Pod days1 vydělává náklad při maximálním faktoru času 255. Příklady: 0 u cestujících a jídla, 1 u cenností, 7 u uhlí, 25 u ropy a hraček.

days2

Pozdní práh úbytku, přidávaný nad days1. Za days1 + days2 klesá faktor času dvakrát rychleji. Uhlí, ropa, železná ruda, ocel, dřevo, diamanty, měděná ruda, cukr, hračky a plast mají days2 = 255 (prakticky bez limitu).

Sazba platby (paymentRate)

Základní sazba nákladu z tabulky _default_cargo v src/economy.cpp. Nejvyšší je subtropické dřevo (7964), pak cennosti (7509), limonáda (6250), zboží a bonbony (6144), uhlí (5916). Nejnižší u cestujících (3185); mimo cestující jsou nejnižší ovoce (4209). V enginu uložená jako celé číslo ve formátu pevné řádové čárky Q11.4.

GetTransportedGoodsIncome()

C++ funkce v src/economy.cpp, která spočítá výplatu v £, když vozidlo vyloží náklad. Implementuje přesně stejný celočíselný vzorec, který tato kalkulačka replikuje, včetně závěrečného posunu BigMulS o 21 bitů.

JGR's Patch Pack (JGRPP)

Dlouhodobě vyvíjený komunitní fork OpenTTD od Jonathana Rennisona se stovkami doplňkových funkcí (realistické brzdění, programovatelné signály, městské zóny). Kód příjmu z nákladu je bajt po bajtu shodný s vanillou — čísla z této kalkulačky se přenesou jedna ku jedné.

NewGRF

Formát uživatelského obsahu v OpenTTD pro přidání vozidel, průmyslu, městských budov a sad nákladů. Sady NewGRF (FIRS, ECS, YETI) přepisují vanilla tabulku sazeb platby (33 řádků: 31 unikátních nákladů plus samostatné subtropické Dřevo a Ropa); tato kalkulačka používá pouze vanilla sazby.

Klima

Jedno ze čtyř scénářových nastavení OpenTTD: Mírné (výchozí), Subarktické, Subtropické, Hračkářské. Určuje, které náklady jsou dostupné — Uhlí jen v Mírném/Subarktickém, Diamanty jen v Subtropickém, Hračky/Bonbony/Kola jen v Hračkářském.

Rychlost stárnutí nákladu

Nastavení ekonomiky (economy.cargo_aging_rate), které škáluje, jak rychle náklad sbírá transportní periody. Výchozí 100 procent ve vanille i v JGRPP. JGRPP ji vystavuje jako konfigurovatelné procento; vanilla ji má napevno na 100.

Inflace

Roční násobič OpenTTD aplikovaný na náklady i příjmy (~1,5 procenta ročně ve výchozím nastavení). Kalkulačka vrací £ v cenách bazického roku (1950), shodně kalibrovaná jako herní graf sazeb platby; relativní porovnání inflace nemění.


Obsah ověřen týmem Smart Calculators