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í
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
| Náklad | Sazba platby | Nejlepší při vzdálenosti | Stárne po |
|---|---|---|---|
| Cennosti | 7 509 | ≤ 75 polí | 33 period |
| Zboží | 6 144 | ≤ 375 polí | 33 period |
| Uhlí | 5 916 | ≤ 525 polí | — |
| Ocel | 5 688 | ≤ 525 polí | — |
| Železná ruda | 5 120 | ≤ 675 polí | — |
| Dřevo | 5 005 | ≤ 1 125 polí | — |
| Zrní | 4 778 | ≤ 300 polí | 44 period |
| Pošta | 4 550 | ≤ 1 500 polí | 110 period |
| Ropa | 4 437 | ≤ 1 875 polí | — |
| Dobytek | 4 322 | ≤ 300 polí | 22 period |
| Cestující | 3 185 | libovolná vzdálenost | 24 period |
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ě.
Kalkulačka příjmu z nákladu v OpenTTD. £ za jízdu z nákladu, vzdálenosti a dní na cestě.
Co je kalkulačka příjmu z nákladu v OpenTTD?
Jak spočítat příjem z nákladu v OpenTTD (a jak to dělá kalkulačka)
Příjem z nákladu — celočíselný vzorec z economy.cpp
- = Příjem v herních £ za jedno doručení (celé číslo, které kalkulačka vrátí)
- = Manhattanská vzdálenost v polích mezi výchozí a cílovou stanicí — $|x_{src} - x_{dst}| + |y_{src} - y_{dst}|$
- = Faktor času (0–255), 255 = dokonale čerstvý náklad, dolní mez MIN_TIME_FACTOR = 31
- = Množství doručeného nákladu (cestující, tuny, pytle, litry, kusy)
- = 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)
- = Transportní periody — kalendářní dny dělené 2,5 a zaokrouhlené dolů. Jedna perioda = 2,5 herního dne
- = 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
- = 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)
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
Uhlí na dálkové trase — 200 tun, 300 polí, 200 dní, subarktické klima
Cennosti na superkrátké trase — 50 kusů, 50 polí, 5 dní, mírné klima
Subtropické dřevo — 100 tun, 200 polí, 80 dní
Porovnání dvou jízd — uhlí proti cennostem na stejné 100polní trase
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