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
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
| Ładunek | Stawka opłaty | Najlepsza przy odległości | Starzeje się po |
|---|---|---|---|
| Kosztowności | 7509 | ≤ 75 kratek | 33 okresów |
| Towary | 6144 | ≤ 375 kratek | 33 okresów |
| Węgiel | 5916 | ≤ 525 kratek | — |
| Stal | 5688 | ≤ 525 kratek | — |
| Ruda żelaza | 5120 | ≤ 675 kratek | — |
| Drewno | 5005 | ≤ 1125 kratek | — |
| Zboże | 4778 | ≤ 300 kratek | 44 okresów |
| Poczta | 4550 | ≤ 1500 kratek | 110 okresów |
| Ropa | 4437 | ≤ 1875 kratek | — |
| Żywiec | 4322 | ≤ 300 kratek | 22 okresów |
| Pasażerowie | 3185 | dowolna odległość | 24 okresów |
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.
Kalkulator przychodu z ładunku OpenTTD. £ za kurs z ładunku, odległości i dni w podróży.
Czym jest kalkulator przychodu z ładunku OpenTTD?
Jak policzyć przychód z ładunku w OpenTTD (i jak robi to kalkulator)
Przychód z ładunku — całkowitoliczbowy wzór z economy.cpp
- = Przychód w wewnątrzgrowych £ za jedną dostawę (liczba całkowita zwracana przez kalkulator)
- = Odległość manhattańska w kratkach między stacją początkową a docelową — $|x_{src} - x_{dst}| + |y_{src} - y_{dst}|$
- = Czynnik czasu (0–255), 255 = idealnie świeży ładunek, dolny próg MIN_TIME_FACTOR = 31
- = Ilość dostarczonego ładunku (pasażerowie, tony, worki, litry, sztuki)
- = 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)
- = Okresy tranzytowe — dni kalendarzowe podzielone przez 2,5 i zaokrąglone w dół. Jeden okres = 2,5 dnia w grze
- = 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
- = 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)
Przykłady z pełnym rozbiciem
Przykład z wiki — 27 pasażerów, 100 kratek, 60 dni, umiarkowany
Węgiel na długim dystansie — 200 ton, 300 kratek, 200 dni, subarktyczny
Kosztowności na krótkim dystansie — 50 szt., 50 kratek, 5 dni, umiarkowany
Tropikalne drewno — 100 ton, 200 kratek, 80 dni
Porównanie dwóch kursów — węgiel kontra kosztowności na tej samej trasie 100 kratek
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