Smart Calculators

Smart

Calculators

Kalkulator przychodu z ładunku OpenTTD

Zobacz dokładnie, ile płaci każda dostawa w OpenTTD. Wybierz ładunek, ustaw odległość i dni w podróży, a kalkulator zwróci £ za kurs, £ za kratkę, £ na dzień oraz najbardziej dochodowy ładunek na tej trasie.

Oblicz przychód za jedną dostawę.

Decyduje, które ładunki pojawią się na liście. Wybierz ten sam klimat, co w Twoim zapisie OpenTTD.

Ładunek, który wiezie Twój pociąg, statek, samolot lub ciężarówka. Każdy ładunek ma własną stawkę opłaty i własną krzywą świeżości.

pasażerów

kratek

dni

List przewozowy №1
Przychód · za dostawę
£3,508
100 kratek · 100 pasażerów · 60 dni · Pasażerowie
£ za kratkę
£35.08
przychód ÷ odległość
£ na dzień
£58.47
przychód ÷ dni w podróży
Czynnik czasu
231 / 255
Świeżość ładunku — 90,6%

Jak powstał ten wynik

Czynnik czasu
255 − 24 − 2·0 → 231
Połowa odległości
100 ÷ 2 → 50
Krok 1 (>> 7)
50 × 231 × 100 ÷ 128 → 9023
Razy stawka opłaty
× 3185
Podziel przez 8192 (>> 13)
÷ 8192
Przychód
£3,508
Ściąga ładunków · Umiarkowany
ŁadunekStawka opłatyNajlepsza przy odległościStarzeje się po
Kosztowności7509≤ 75 kratek33 okresów
Towary6144≤ 375 kratek33 okresów
Węgiel5916≤ 525 kratek
Stal5688≤ 525 kratek
Ruda żelaza5120≤ 675 kratek
Drewno5005≤ 1125 kratek
Zboże4778≤ 300 kratek44 okresów
Poczta4550≤ 1500 kratek110 okresów
Ropa4437≤ 1875 kratek
Żywiec4322≤ 300 kratek22 okresów
Pasażerowie3185dowolna odległość24 okresów
Wzór zweryfikowany · źródła OpenTTD

Vanilla OpenTTD 14.x i JGRPP. Zestawy NewGRF nadpisują domyślne stawki opłat i nie są jeszcze obsługiwane. Przychody pokazane są w wartościach roku bazowego (1950); inflacja w Twoim zapisie skaluje je proporcjonalnie.

09·MAJ·2026

Kalkulator przychodu z ładunku OpenTTD. £ za kurs z ładunku, odległości i dni w podróży.

Kalkulator przychodu z ładunku OpenTTD zwraca dokładną kwotę £ za jedną dostawę w wersji vanilla 14.x lub JGRPP. Wpisz rodzaj ładunku, ilość, odległość manhattańską w kratkach i dni kalendarzowe w podróży — narzędzie uruchamia całkowitoliczbowy wzór z economy.cpp i pokazuje £ za kurs, £ za kratkę, £ na dzień oraz czynnik czasu (0–255).

Czym jest kalkulator przychodu z ładunku OpenTTD?

Kalkulator przychodu z ładunku OpenTTD to narzędzie internetowe, które na podstawie rodzaju ładunku, jego ilości, odległości manhattańskiej w kratkach i dni kalendarzowych spędzonych przez ładunek w pojeździe zwraca dochód w funtach (£) w grze za tę jedną dostawę. Odwzorowuje bit po bicie funkcję GetTransportedGoodsIncome() z pliku src/economy.cpp: to samo przesunięcie w prawo o 21 bitów, ten sam dolny próg czynnika czasu na poziomie 31 i te same wartości days1 oraz days2 dla każdej z 31 unikalnych nazw ładunków vanilla (łącznie 33 wiersze — Drewno i Ropa mają osobne wiersze dla klimatu tropikalnego). Symbol £ to tylko etykieta wewnętrznej waluty gry, a nie prawdziwy funt brytyjski — w ustawieniach OpenTTD można przełączyć interfejs na $ albo €, ale wzór zawsze liczy w wewnętrznej jednostce £ i dopiero na ekranie formatuje wynik.
Kalkulator obsługuje wszystkie cztery klimaty (umiarkowany, subarktyczny, tropikalny, zabawkowy) i automatycznie filtruje listę ładunków przy zmianie klimatu. Domyślnym celem jest vanilla OpenTTD 14.x, ale wzór i tabela stawek są bajt po bajcie takie same w JGR's Patch Pack i w klasycznym Transport Tycoon Deluxe — kod przychodu z ładunku nie zmienił się od premiery w 1995 roku. Gracze ze Steama, GOG-a, bezpośredniego pobrania z openttd.org i JGRPP widzą dokładnie te same liczby.
Polska strona wiki „Przychód za ładunek” opisuje wzór słowami i podaje, że kwotę dostawy decydują cztery czynniki (rodzaj, ilość, odległość i dni w podróży), ale nie pokazuje ani jednego pełnego rachunku z konkretną liczbą £. Najczęściej cytowane narzędzie zewnętrzne — citymania.org/tools/profit — sam na swojej stronie przyznaje, że „numbers may not be exactly accurate (they should be pretty close though)”. Ten kalkulator uzupełnia trzy luki, których nie zamyka ani polska wiki, ani CityMania: pokazuje konkretną liczbę £ za kurs, którą można sprawdzić z kodem źródłowym, daje panel rozbicia ze wszystkimi wartościami pośrednimi (okresy tranzytowe, periodsOverDays1, periodsOverDays2, czynnik czasu, licznik, przesunięcie) oraz ściągę 33 wierszy posortowaną po stawce opłaty, dzięki czemu od razu widać, który ładunek wygrywa na jakiej długości trasy.

Jak policzyć przychód z ładunku w OpenTTD (i jak robi to kalkulator)

Przychód z ładunku w OpenTTD to cztery dane wejściowe i jeden wzór na liczbach całkowitych. Kalkulator powyżej liczy to za Ciebie; ręczna wersja niżej to ta, której weterani polskich serwerów i osoby pisające poradniki na Steam i Grajcownik używają, żeby ocenić trasę, zanim położą 200 kratek głównej linii.
Korzystając z narzędzia
1. Wybierz klimat swojego zapisu (Umiarkowany jest domyślny — w nim toczy się około 60 procent rozgrywek vanilla).
2. Wybierz ładunek. Lista jest filtrowana po klimatach (Węgiel tylko w Umiarkowanym lub Subarktycznym, Diamenty tylko w Tropikalnym, Zabawki tylko w Zabawkowym i tak dalej).
3. Wpisz dostarczoną ilość (domyślnie 100 — pasażerów, ton, worków, litrów albo sztuk, w zależności od ładunku).
4. Wpisz odległość manhattańską w kratkach między stacją początkową a stacją docelową. To NIE jest długość torów — to przekątna po siatce kratek, czyli $|xsrc - xdst| + |ysrc - ydst|$. Tory, które wiją się wokół gór, mogą być o 30 procent dłuższe od swojej odległości manhattańskiej.
5. Wpisz dni kalendarzowe, które ładunek spędził w pojeździe (domyślnie 60). Pociągi dalekobieżne rutynowo pokazują 80–200 dni w podróży; statki często ponad 300.
Główny wynik to £ za jedną dostawę. Niżej kalkulator drukuje £ za kratkę, £ na dzień, czynnik czasu (na 255) oraz procent świeżości. Panel rozbicia pokazuje konwersję dni kalendarzowych na okresy tranzytowe, obie wartości periodsOverDays, ostateczny czynnik czasu po nałożeniu dolnego progu i końcowe dzielenie całkowite — te same sześć linijek, które napisałbyś na kartce.
Licząc na papierze
1. Zamień dni kalendarzowe na okresy tranzytowe: $tp = \lfloor daystransit / 2{,}5 \rfloor$. Polska wiki podkreśla, że jeden „dzień” w jej wzorach to w rzeczywistości 2,5 dnia w grze; OpenTTD trzyma czas w podróży w jednostkach po 2,5 dnia, żeby licznik mieszczący się w jednym bajcie (maks. 255) pokrył nawet najdłuższe trasy morskie.
2. Odczytaj z tabeli days1 i days2 ładunku: pasażerowie (0, 24), węgiel (7, 255), kosztowności (1, 32) i tak dalej dla wszystkich 33 wierszy vanilla (31 unikalnych nazw — Drewno i Ropa mają osobny wiersz tropikalny).
3. Policz periodsOverDays1: $\max(tp - days1, 0)$. To liczba okresów tranzytowych po przekroczeniu pierwszego progu świeżości.
4. Policz periodsOverDays2: $\max(periodsOverDays1 - days2, 0)$. Dodatkowe okresy po przekroczeniu drugiego progu.
5. Policz czynnik czasu: $\max(255 - periodsOverDays1 - periodsOverDays2, 31)$. Dolny próg 31 to stała MIN_TIME_FACTOR z economy.cpp — chroni przed sytuacją, w której zalegający ładunek przynosiłby dosłownie zero.
6. Zastosuj wzór przychodu: $income = \lfloor (distance \cdot timeFactor \cdot amount \cdot paymentRate) / 2\,097\,152 \rfloor$. Mianownik $2^{21}$ odpowiada przesunięciu `BigMulS(..., 21)` w economy.cpp.
Przykład kontrolny z wiki: 27 pasażerów, 100 kratek, 60 dni kalendarzowych, klimat umiarkowany. tp = 24, periodsOverDays1 = 24 − 0 = 24, periodsOverDays2 = max(24 − 24, 0) = 0, czynnik czasu = 255 − 24 = 231, licznik = 100 × 231 × 27 × 3185 = 1 986 484 500, przychód = floor(1 986 484 500 / 2 097 152) = £947 za kurs. Liczba zgadza się z wewnątrzgrowym wykresem stawek opłat dla pasażerów przy 60 dniach (w granicach kwantyzacji wykresu) i służy jako wartość referencyjna w zestawie testów QA tego kalkulatora.

Przychód z ładunku — całkowitoliczbowy wzór 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 = Przychód w wewnątrzgrowych £ za jedną dostawę (liczba całkowita zwracana przez kalkulator)
  • DD = Odległość manhattańska w kratkach między stacją początkową a docelową — $|x_{src} - x_{dst}| + |y_{src} - y_{dst}|$
  • TT = Czynnik czasu (0–255), 255 = idealnie świeży ładunek, dolny próg MIN_TIME_FACTOR = 31
  • AA = Ilość dostarczonego ładunku (pasażerowie, tony, worki, litry, sztuki)
  • PP = Bazowa stawka opłaty z tabeli _default_cargo w economy.cpp — 3185 pasażerowie, 5916 węgiel, 7964 tropikalne drewno (rekord), 7509 kosztowności (rekord poza drewnem)
  • tptp = Okresy tranzytowe — dni kalendarzowe podzielone przez 2,5 i zaokrąglone w dół. Jeden okres = 2,5 dnia w grze
  • d1d_1 = Próg days1 ładunku — wczesna granica utraty świeżości w okresach tranzytowych. 0 dla pasażerów i żywności, 1 dla kosztowności, 7 dla węgla, 25 dla ropy, 30 dla plastiku i napojów gazowanych
  • d2d_2 = Próg days2 ładunku — późna granica utraty świeżości. 24 dla pasażerów, 32 dla kosztowności, 40 dla zboża, 255 dla węgla (praktycznie bez limitu)
Mianownik $2^{21} = 2\,097\,152$ odpowiada przesunięciu `BigMulS(..., 21)` w funkcji GetTransportedGoodsIncome() (src/economy.cpp). Słowna wersja wzoru z wiki używa dwóch kolejnych przesunięć (`>> 7`, a potem `>> 13`); algebraicznie są one równoważne, ponieważ $2^{7} \cdot 2^{13} \cdot 2 = 2^{21}$ — wiodące dzielenie przez 2 w wersji z wiki zwija się we wspólny mianownik. W JavaScript odtwarzamy przesunięcie z C++ jedną operacją `Math.floor(numerator / 2_097_152)`, ponieważ wszystkie iloczyny pośrednie mieszczą się w Number.MAX_SAFE_INTEGER przy limitach wejściowych kalkulatora (odległość ≤ 2048, ilość ≤ 9999, stawka opłaty ≤ 7964). BigInt nie jest potrzebny i nie ma żadnej różnicy „o jeden” względem silnika.

Przykłady z pełnym rozbiciem

Przykład z wiki — 27 pasażerów, 100 kratek, 60 dni, umiarkowany

tp = floor(60 / 2,5) = 24. Dla pasażerów days1 = 0, days2 = 24, stawka opłaty = 3185. periodsOverDays1 = max(24 − 0, 0) = 24. periodsOverDays2 = max(24 − 24, 0) = 0. Czynnik czasu = max(255 − 24 − 0, 31) = 231. Licznik = 100 × 231 × 27 × 3185 = 1 986 484 500. Przychód = floor(1 986 484 500 / 2 097 152) = £947 za kurs, czynnik czasu 231/255 (świeżość 90,6%), £9,47 za kratkę, £15,78 na dzień. To wartość referencyjna z §5.5 specyfikacji kalkulatora i kontrolny wynik QA wobec wewnątrzgrowego wykresu stawek opłat.

Węgiel na długim dystansie — 200 ton, 300 kratek, 200 dni, subarktyczny

Węgiel ma days1 = 7 i days2 = 255 (praktycznie bezterminowa trwałość). tp = floor(200 / 2,5) = 80. periodsOverDays1 = 80 − 7 = 73. periodsOverDays2 = max(73 − 255, 0) = 0. Czynnik czasu = max(255 − 73 − 0, 31) = 182. Licznik = 300 × 182 × 200 × 5916 = 64 602 720 000. Przychód = floor(64 602 720 000 / 2 097 152) = £30 804 za kurs, £102,68 za kratkę, £154,02 na dzień. Węgiel płaci 5916 stawki bazowej — nie najwięcej w tabeli — ale para 7/255 sprawia, że nawet pociąg jadący 200 dni dalej zarabia na 71 procent tempa świeżego ładunku. Dlatego na polskiej wiki, w poradnikach na Grajcowniku i w polskich gildach na Steamie węgiel jest kanonicznym ładunkiem „w 1949 połóż główną linię i zapomnij”.

Kosztowności na krótkim dystansie — 50 szt., 50 kratek, 5 dni, umiarkowany

Kosztowności mają najwyższą stawkę poza drewnem (£7509) i najwęższe okno świeżości (days1 = 1, days2 = 32). tp = floor(5 / 2,5) = 2. periodsOverDays1 = max(2 − 1, 0) = 1. periodsOverDays2 = max(1 − 32, 0) = 0. Czynnik czasu = max(255 − 1 − 0, 31) = 254 (świeżość 99,6%). Licznik = 50 × 254 × 50 × 7509 = 4 768 215 000. Przychód = floor(4 768 215 000 / 2 097 152) = £2 273 za kurs, £45,46 za kratkę, £454,60 na dzień. To najwyższe „£ na dzień” w całej grze — ale tylko na krótkim plecu. Wyciągnij ten sam kurs do 50 dni i czynnik czasu spada do 236, przychód maleje o około 7 procent; przy 200 dniach czynnik czasu jest już na 129 (przychód spada prawie o połowę, do £1 154); dopiero po około 325 dniach czynnik dochodzi do dolnego progu 31 — tam ten sam kurs przynosi już tylko £277.

Tropikalne drewno — 100 ton, 200 kratek, 80 dni

Tropikalne drewno cicho ma najwyższą stawkę bazową w całym vanilla — £7964 (przy £5005 dla drewna umiarkowanego i subarktycznego, czyli 59 procent wyższa cena za ten sam ładunek, tylko inny klimat). days1 = 15, days2 = 255. tp = floor(80 / 2,5) = 32. periodsOverDays1 = 32 − 15 = 17. periodsOverDays2 = 0. Czynnik czasu = 255 − 17 = 238. Licznik = 200 × 238 × 100 × 7964 = 37 908 640 000. Przychód = floor(37 908 640 000 / 2 097 152) = £18 076 za kurs, £90,38 za kratkę. Na zapisie tropikalnym drewno zarabia na tej samej trasie o 60 procent więcej niż umiarkowane trasy tartaczne. Większość poradników dla początkujących o tym nie wspomina, bo polska nazwa „Drewno” jest w obu klimatach taka sama. Właśnie dlatego 33-wierszowa tabela vanilla zawiera Drewno dwa razy (i Ropę dwa razy): wpisy umiarkowano-subarktyczny i tropikalny dzielą nazwę, ale niosą różne stawki opłat.

Porównanie dwóch kursów — węgiel kontra kosztowności na tej samej trasie 100 kratek

Te same 100 kratek, te same 60 dni, te same 100 jednostek. Kurs A: węgiel, stawka 5916, days1 = 7, days2 = 255. tp = 24, periodsOverDays1 = 17, periodsOverDays2 = 0, czynnik czasu = 238. Licznik węgla = 100 × 238 × 100 × 5916 = 14 080 080 000. Przychód węgla = floor(14 080 080 000 / 2 097 152) = £6 713. Kurs B: kosztowności, stawka 7509, days1 = 1, days2 = 32. periodsOverDays1 = 23, periodsOverDays2 = 0, czynnik czasu = 232. Licznik kosztowności = 100 × 232 × 100 × 7509 = 17 420 880 000. Przychód kosztowności = floor(17 420 880 000 / 2 097 152) = £8 306 (+£1 593 nad węglem). Kosztowności wygrywają za kurs — ale bank wystawia 1–8 kosztowności miesięcznie, podczas gdy kopalnia węgla produkuje 100+ ton miesięcznie. Po przychodzie miesięcznym węgiel bije kosztowności o rząd wielkości, chyba że masz sieć kilkunastu tras bankowych.

Wskazówki planowania przychodu dla weteranów openttd.pl i nowicjuszy ze Steama

  • Węgiel płaci 5916 stawki bazowej — to nie rekord — ale para days1/days2 wynosząca 7/255 sprawia, że trzyma się przy niemal pełnej cenie nawet na siatkach 2000 kratek przez całą mapę. Węgiel to ładunek, na którym można położyć krzywe tory i nadal być na plusie. Kosztowności mają 7509 stawki bazowej, ale przy days1 = 1 i days2 = 32 cokolwiek powyżej 80 dni kalendarzowych (czyli days1 + days2 = 33 okresów) ścina czynnik czasu w stronę dolnego progu 31. Kosztowności na trasy do 50 kratek, węgiel na całą resztę.
  • Odległość to odległość manhattańska w kratkach, a nie długość torów. Wzór przychodu liczy $|xsrc - xdst| + |ysrc - ydst|$ między dwiema stacjami, niezależnie od tego, ile zakrętów ma trasa. Serpentyna przez góry zarabia tyle samo co prosta, jeśli stacje stoją na tych samych współrzędnych. To najczęstsze nieporozumienie na openttd.pl i polskich serwerach: gracze sądzą, że 200 kratek torów na manhattańskiej trasie 100 kratek przynosi 200 kratek przychodu. Nie przynosi. Stawiaj stacje na przeciwległych końcach obiektów przemysłowych, żeby zmaksymalizować odległość manhattańską.
  • Jeden „dzień” na stronie wiki o przychodzie za ładunek to w rzeczywistości 2,5 dnia kalendarzowego w Twoim zapisie. OpenTTD trzyma czas w podróży w jednobajtowym liczniku 0–255, a jednostka 2,5 dnia jest po to, żeby licznik dosięgnął najdłuższych tras morskich. Kalkulator powyżej przyjmuje dni kalendarzowe (te, które pokazuje okno pojazdu w grze) i dzieli przez 2,5 wewnętrznie — ale jeśli bierzesz liczby wprost ze słownej wersji wzoru z wiki, sam pamiętaj o mnożeniu lub dzieleniu przez 2,5.
  • Czynnik czasu ma dolny próg 31, a nie zero. MIN_TIME_FACTOR = 31 w src/economy.cpp oznacza, że nawet ładunek, który spędził w drodze kilka lat gry, dalej płaci około 31/255 ≈ 12 procent wartości świeżej. Gracze czasem narzekają „mój stary ładunek nic nie zarobił” — zwykle chodzi tylko o małą liczbę £ (jeden pasażer na statku 2000 kratek po 4000 dniach to floor(2000 × 31 × 1 × 3185 / 2 097 152) = £94), ale to nigdy nie jest dosłowne £0, chyba że odległość albo ilość są zerowe.
  • Tropikalne drewno płaci £7964 stawki bazowej — to rekord wszystkich ładunków vanilla, ponad kosztownościami (£7509), porównywalne tylko z napojami gazowanymi (£6250) na krótkich plecach pod kątem £ za kratkę. Ta sama polska nazwa „Drewno” co w klimacie umiarkowanym (£5005), tyle że 59 procent droższe. Jeśli grasz na zapisie tropikalnym, ustaw drewno przed towarami na każdej sensownej trasie tartak → odbiorca. Polska wiki OpenTTD też notuje drewno jako jeden z najcenniejszych ładunków w tropikach.
  • JGR's Patch Pack używa tego samego wzoru. Kod przychodu z ładunku w JGRPP jest bajt po bajcie identyczny z vanilla — jedyna różnica ekonomiczna to ustawienie tempa starzenia się ładunku (domyślnie 100 procent w obu wersjach, w JGRPP do regulacji procentem). Liczby z tego kalkulatora przekładają się 1 do 1 na zapis JGRPP, dopóki nie ruszysz parametru economy.cargo_aging_rate. Zestawy NewGRF (FIRS, ECS, YETI) nadpisują tabelę stawek opłat i nie są obsługiwane; na zapisie z NewGRF traktuj wyjście kalkulatora jako linię bazową vanilla i skaluj według współczynnika podanego w README modyfikacji.
  • Inflacja skaluje wynik proporcjonalnie. Liczba £ jest podana w cenach roku bazowego (1950), w tej samej kalibracji co wewnątrzgrowy wykres stawek opłat. Domyślna inflacja OpenTTD około 1,5 procenta rocznie skaluje jednocześnie koszty i przychody, więc Twój relatywny zysk wobec kosztów operacyjnych nie zmienia się — £ kalkulatora to nie Twoje realne saldo banku w 2050 roku, ale stosunek między dwoma kursami jest zachowany dokładnie.
  • Zerknij na ściągę ładunków pod kalkulatorem, zanim położysz tory. Sortuje wszystkie 33 wiersze vanilla (31 unikalnych nazw plus osobne wiersze dla tropikalnego Drewna i Ropy) po stawce opłaty i każdy oznacza tagiem „najlepsza przy odległości ≤ N kratek” z heurystyki days1 × 75 (30 km/h × 2,5 dnia/okres ≈ 75 kratek na okres przy typowych prędkościach pociągów lat 50.). Ładunki z days2 = 255 dostają etykietę „praktycznie bez limitu” — na trasach lądowych nigdy nie wchodzą w zonę krytycznego starzenia.

Kalkulator przychodu z ładunku OpenTTD — często zadawane pytania

Jaki jest wzór na przychód z ładunku w OpenTTD?

Przychód = floor(odległość × czynnik_czasu × ilość × stawka_opłaty / 2 097 152), gdzie czynnik_czasu = max(255 − max(tp − days1, 0) − max(max(tp − days1, 0) − days2, 0), 31), a tp = floor(dni_w_podróży / 2,5). Stałe 2 097 152 = 2^21, 255 = MAX_TIME_FACTOR i 31 = MIN_TIME_FACTOR pochodzą z funkcji GetTransportedGoodsIncome() w pliku src/economy.cpp. Wzór działa w vanilla 14.x, JGRPP i klasycznym Transport Tycoon Deluxe — nie zmienił się od 1995 roku.

Jak liczona jest odległość dla przychodu z ładunku?

Odległość to odległość manhattańska między stacją początkową a docelową w kratkach: $|xsrc - xdst| + |ysrc - ydst|$. To NIE jest długość torów. Prosta trasa 200 kratek i kręta trasa 350 kratek przynoszą ten sam przychód, jeśli obie stacje stoją na tych samych współrzędnych. Stawiaj stacje na przeciwległych końcach obiektów przemysłowych, żeby zmaksymalizować odległość manhattańską — to znany trik z polskich poradników, który nie wymaga dłuższych torów.

Dlaczego jeden „dzień” na wiki to w grze 2,5 dnia?

OpenTTD liczy wiek ładunku w jednobajtowym liczniku (0–255), który tyka raz na 2,5 dnia kalendarzowego. Słowny wzór z wiki używa tych „okresów tranzytowych” wprost; kalkulator przyjmuje dni kalendarzowe — te, które pokazuje okno pojazdu w grze — i dzieli przez 2,5 za Ciebie.

Który ładunek najbardziej się opłaca w OpenTTD?

Po stawce bazowej kolejność to: tropikalne drewno (£7964), kosztowności (£7509), napoje gazowane (£6250), towary i słodycze (£6144), węgiel (£5916). Na długich trasach najlepszy jest węgiel — days2 = 255 trzyma czynnik czasu blisko maksimum nawet przy 1500 kratkach. Po przychodzie miesięcznym (uwzględniając wydobycie) zwykle wygrywa węgiel, bo kopalnia węgla produkuje 100+ ton miesięcznie, a bank tylko 1–8 kosztowności miesięcznie. W trybie „Porównaj dwa kursy” zobaczysz dokładnie, od jakiej długości trasy kosztowności biją węgiel w Twoim zapisie.

Czy kalkulator działa z JGR's Patch Pack?

Tak — kod przychodu z ładunku jest bajt po bajcie identyczny między vanilla OpenTTD 14.x a JGR's Patch Pack. Jedyna różnica ekonomiczna to ustawienie tempa starzenia się ładunku (domyślnie 100 procent w obu, w JGRPP wystawione jako economy.cargo_aging_rate). 33-wierszowa tabela (31 unikalnych nazw plus tropikalne Drewno i Ropa osobno) i całkowitoliczbowy wzór są nietknięte. Jeśli nie ruszałeś tempa starzenia, liczby z kalkulatora przekładają się 1 do 1 na zapis JGRPP.

A co z zestawami NewGRF jak FIRS, ECS czy YETI?

Nie. Zestawy NewGRF nadpisują tabelę _default_cargo własnymi wartościami paymentRate, days1 i days2. Kalkulator zawiera tylko definicje vanilla (31 unikalnych nazw, 33 wiersze razem z tropikalnym Drewnem i Ropą) — na zapisie FIRS da poprawny wzór, ale błędne stałe. Na zapisie z NewGRF traktuj wynik kalkulatora jako linię bazową vanilla i przemnóż przez współczynnik z README zestawu (większość NewGRF go publikuje).

Dlaczego mój ładunek na długiej trasie morskiej pokazuje „£0”?

Dolny próg MIN_TIME_FACTOR = 31 oznacza, że stary ładunek zawsze płaci co najmniej 31/255 ≈ 12 procent stawki świeżej — wynik nie powinien być dosłownie zerem, chyba że odległość albo ilość są zerowe. Jeśli widzisz £0, sprawdź: (a) odległość nie jest zerowa (dostawa na tej samej stacji nie płaci), (b) ilość nie jest zerowa, (c) stawka opłaty nie jest zerowa (niektóre NewGRF zerują stawki ładunków, których nie chcą widzieć w transporcie). Na statku 2000 kratek × 4000 dni z jednym pasażerem przychód jest mały (£94 = floor(2000 × 31 × 1 × 3185 / 2 097 152)), ale nigdy zerowy.

Dlaczego CityMania i wewnątrzgrowy wykres dają lekko inne liczby?

Narzędzie CityMania (citymania.org/tools/profit) sam u siebie na stronie pisze: „numbers may not be exactly accurate (they should be pretty close though)” — używa przybliżenia i zaokrągla wartości pośrednie. Wewnątrzgrowy wykres stawek opłat używa dokładnie tego samego całkowitoliczbowego wzoru, co ten kalkulator, ale kwantyzuje oś Y z niską rozdzielczością, więc odczyt z oka może być przesunięty o ±5 procent. Liczby tego kalkulatora zgadzają się z silnikiem co do jednostki, bo dosłownie odtwarzamy przesunięcie bitowe. Jeśli Twoje £ w grze różni się o więcej niż kilka jednostek, sprawdź jeszcze raz, czy wpisane „dni w podróży” naprawdę zgadzają się z tym, co pokazuje ładunek pojazdu (liczba rośnie, dopóki ładunek czeka na stacji).

Czy inflacja zmienia wynik?

Kalkulator zwraca £ w cenach roku bazowego (1950) — to dokładnie ta sama kalibracja, co wewnątrzgrowy wykres stawek opłat. Domyślny mnożnik inflacji OpenTTD (~1,5 procenta rocznie) skaluje jednocześnie koszty i przychody, więc Twój realny przychód w banku w 2050 roku będzie około 4,4 raza większy od wyniku kalkulatora — ale relatywny przychód (ten kurs kontra inny, ten ładunek kontra inny, ta odległość kontra inna) jest zachowany dokładnie. Kalkulator celowo nie pokazuje £ po korekcie rocznej, bo wiki, wykres w grze i economy.cpp są wszystkie skalibrowane na rok bazowy 1950.

Jak dokładny jest kalkulator wobec samej gry?

Bit po bicie dla vanilla 14.x i JGRPP — zestaw 40 testów QA porównuje każdy wynik z matematyką C++ w src/economy.cpp. Kalkulator nie modeluje wywołań zwrotnych NewGRF (część zestawów dodaje mnożnik przez cargo callback), łańcuchów podajników z ujemnym przychodem ani starzenia ładunku poza limitem wejścia 4000 dni. W tych granicach wynik £ jest identyczny z tym, co silnik wpisuje na Twoje konto, kiedy pojazd rozładowuje ładunek.

Czym różnią się days1 i days2?

days1 to wczesny próg utraty świeżości: ile okresów tranzytowych ładunek może spędzić w pojeździe, zanim jego czynnik czasu zacznie spadać. days2 to późny próg dodawany na wierzchu — po przekroczeniu days1 + days2 czynnik czasu spada dwa razy szybciej (wzór odejmuje i periodsOverDays1, i periodsOverDays2). Ładunek z days2 = 255 (węgiel, ropa, ruda żelaza, stal, drewno, diamenty, ruda miedzi, cukier, zabawki, plastik) w praktyce nigdy nie dochodzi do strefy stromego spadku na żadnej sensownej trasie. Pasażerowie (0, 24) starzeją się natychmiast; kosztowności (1, 32) prawie tak samo szybko i mają najbardziej stromy łączny spadek w grze.

Czy kalkulator jest darmowy?

Panel rozbicia i ściąga ładunków są domyślnie rozwinięte — bez konta, bez rejestracji, bez limitów i bez reklam na samej stronie kalkulatora. Każda wartość pośrednia (okresy tranzytowe, czynnik czasu, licznik) jest widoczna od pierwszego renderu.

Jak porównać dwie trasy obok siebie?

Użyj zakładki „Porównaj dwa kursy” u góry kalkulatora. Klimat jest wspólny (porównanie tras w dwóch różnych klimatach nie ma sensu), ale ładunek, ilość, odległość i dni w podróży są niezależne dla kursu A i kursu B. Kalkulator drukuje obie sumy £ plus różnicę (B − A) z zielonym albo czerwonym banerem. Domyślnie stoi węgiel kontra pasażerowie na tej samej trasie 100 kratek × 60 dni — kanoniczne porównanie „co tu wozić?” z polskich gildii i wątków na forum Steama.

Czy prędkość wpływa na przychód, czy liczą się tylko dni w podróży?

Bezpośrednio liczą się tylko dni w podróży. Wzór przychodu z ładunku nie czyta prędkości pojazdu — czyta, ile dni kalendarzowych ładunek spędził w środku. Prędkość liczy się pośrednio: szybszy pojazd pokonuje tę samą odległość manhattańską w mniejszej liczbie dni, co obniża okresy tranzytowe i podnosi czynnik czasu. Pociąg 100 km/h i pociąg 200 km/h na tej samej trasie zarabiają różnie tylko dlatego, że drugi dowozi w połowie czasu. Wiki zauważa, że prędkość najsilniej liczy się poniżej około 50 km/h i powyżej tego progu spłaszcza się; podwojenie z 200 do 400 km/h daje o wiele mniejszy przyrost niż z 25 do 50.


Słownik ładunków i ekonomii OpenTTD

Odległość manhattańska

Prosta odległość po siatce kratek między dwiema stacjami, $|xsrc - xdst| + |ysrc - ydst|$. Używana we wzorze przychodu OpenTTD; nie jest tożsama z długością torów, po których faktycznie jedzie pojazd. Polska wiki nazywa ją też „geometrią taksówkarską”.

Okres tranzytowy

Wewnętrzna jednostka czasu, w której OpenTTD liczy wiek ładunku. Jeden okres tranzytowy = 2,5 dnia kalendarzowego. Trzymany w jednobajtowym liczniku, więc maksimum to 255 okresów (~637 dni kalendarzowych), zanim czynnik czasu dotknie dolnego progu MIN_TIME_FACTOR = 31.

Czynnik czasu

Mnożnik świeżości we wzorze przychodu, w zakresie 0–255 (z dolnym progiem 31). 255 = idealnie świeży, 31 = próg dla zalegającego ładunku. Każdy okres ponad days1 obniża go o 1; każdy okres ponad days1 + days2 obniża go dodatkowo o 1 (łącznie −2 na okres w strefie wolnego spadku).

days1

Wczesny próg utraty świeżości ładunku w okresach tranzytowych. Poniżej days1 ładunek zarabia po maksymalnym czynniku czasu 255. Przykłady: 0 dla pasażerów i żywności, 1 dla kosztowności, 7 dla węgla, 25 dla ropy i zabawek.

days2

Późny próg utraty świeżości, dodawany do days1. Po przekroczeniu days1 + days2 czynnik czasu spada dwa razy szybciej. Węgiel, ropa, ruda żelaza, stal, drewno, diamenty, ruda miedzi, cukier, zabawki i plastik mają days2 = 255 (praktycznie bez limitu).

Stawka opłaty (paymentRate)

Bazowa stawka ładunku z tabeli _default_cargo w src/economy.cpp. Najwyższa to tropikalne drewno (7964), dalej kosztowności (7509), napoje gazowane (6250), towary i słodycze (6144), węgiel (5916). Najniższa to pasażerowie (3185); poza pasażerami najtańsze są owoce (4209). W silniku trzymana jako całkowita liczba w formacie stałoprzecinkowym Q11.4.

GetTransportedGoodsIncome()

Funkcja w C++ w src/economy.cpp, która liczy wypłatę £, kiedy pojazd rozładowuje ładunek. Implementuje dokładnie ten sam całkowitoliczbowy wzór, który odtwarza ten kalkulator, łącznie z finalnym przesunięciem BigMulS o 21 bitów.

JGR's Patch Pack (JGRPP)

Długo rozwijany fork OpenTTD autorstwa Jonathana Rennisona z setkami dodatkowych funkcji (realistyczne hamowanie, programowalne sygnały, strefy miast). Kod przychodu z ładunku jest bajt po bajcie identyczny z vanilla — liczby z tego kalkulatora przekładają się 1 do 1.

NewGRF

Format treści użytkownika w OpenTTD do dodawania pojazdów, przemysłów, budynków miejskich i zestawów ładunków. Zestawy NewGRF (FIRS, ECS, YETI) nadpisują tabelę stawek opłat vanilla (33 wiersze: 31 unikalnych nazw plus osobne tropikalne Drewno i Ropa); ten kalkulator używa wyłącznie stawek vanilla.

Klimat

Jeden z czterech wariantów scenariusza w OpenTTD: Umiarkowany (domyślny), Subarktyczny, Tropikalny, Zabawkowy. Decyduje, które ładunki są dostępne — Węgiel tylko w umiarkowanym i subarktycznym, Diamenty tylko w tropikalnym, Zabawki, Słodycze i Cola tylko w Zabawkowym.

Tempo starzenia się ładunku

Ustawienie ekonomii (economy.cargo_aging_rate), które skaluje, jak szybko ładunek zbiera okresy tranzytowe. Domyślnie 100 procent w vanilla i w JGRPP. JGRPP daje regulację procentem; vanilla na sztywno trzyma 100.

Inflacja

Roczny mnożnik OpenTTD nakładany na koszty i przychody (~1,5 procenta rocznie domyślnie). Kalkulator pokazuje £ w cenach roku bazowego (1950), w tej samej kalibracji co wewnątrzgrowy wykres stawek opłat; porównania względne nie zmieniają się od inflacji.


Tresc zweryfikowana przez zespol Smart Calculators