Калькулятор грузового дохода OpenTTD
Узнайте, сколько на самом деле приносит каждый рейс в OpenTTD. Выберите груз, задайте расстояние в клетках и дни в пути — калькулятор покажет £ за рейс, £ за клетку, £ за день и самый прибыльный груз для маршрута.
Рассчитать доход за одну доставку.
Определяет, какие грузы появятся в выпадающем списке. Выберите тот же климат, что и в вашем сохранении OpenTTD.
Груз, который везёт ваш поезд, корабль, самолёт или грузовик. У каждого груза свой коэффициент оплаты и кривая свежести.
пассажиров
клеток
дн.
Как получено это число
- Фактор времени
- 255 − 24 − 2·0 → 231
- Половина расстояния
- 100 ÷ 2 → 50
- Шаг 1 (>> 7)
- 50 × 231 × 100 ÷ 128 → 9 023
- Умножить на стоимость груза
- × 3 185
- Разделить на 8192 (>> 13)
- ÷ 8192
- Доход
- £3,508
| Груз | Стоимость груза | Лучше при расстоянии | Портится через |
|---|---|---|---|
| Драгоценности | 7 509 | ≤ 75 клеток | 33 периодов |
| Товары | 6 144 | ≤ 375 клеток | 33 периодов |
| Уголь | 5 916 | ≤ 525 клеток | — |
| Сталь | 5 688 | ≤ 525 клеток | — |
| Железная руда | 5 120 | ≤ 675 клеток | — |
| Древесина | 5 005 | ≤ 1 125 клеток | — |
| Зерно | 4 778 | ≤ 300 клеток | 44 периодов |
| Почта | 4 550 | ≤ 1 500 клеток | 110 периодов |
| Нефть | 4 437 | ≤ 1 875 клеток | — |
| Скот | 4 322 | ≤ 300 клеток | 22 периодов |
| Пассажиры | 3 185 | любая дистанция | 24 периодов |
Vanilla OpenTTD 14.x и JGRPP. Наборы NewGRF переопределяют стандартные ставки и пока не поддерживаются. Доход показан в ценах базового года (1950); инфляция в вашем сохранении масштабирует значения пропорционально.
Калькулятор грузового дохода OpenTTD. £ за поездку из груза, расстояния и дней в пути.
Что такое калькулятор грузового дохода OpenTTD?
Как рассчитать грузовой доход OpenTTD (и как это делает калькулятор)
Грузовой доход — целочисленная формула из economy.cpp
- = Доход во внутриигровых £ за одну доставку (целое число, которое возвращает калькулятор)
- = Манхэттенское расстояние в клетках между станциями отправления и назначения — |x_{src} - x_{dst}| + |y_{src} - y_{dst}|
- = Фактор времени (0–255), 255 = идеально свежий груз, нижний предел MIN_TIME_FACTOR = 31
- = Количество доставленного груза (пассажиры, тонны, мешки, литры, штуки)
- = Базовая стоимость груза из таблицы _default_cargo в economy.cpp — 3185 у пассажиров, 5916 у угля, 7964 у субтропической древесины (рекорд), 7509 у драгоценностей (рекорд среди не-древесины)
- = Периоды транспортировки — календарные дни, делённые на 2,5 и округлённые вниз. Один период = 2,5 внутриигровых дня
- = Порог дни1 для груза — ранний рубеж распада свежести в периодах транспортировки. 0 у пассажиров и продуктов, 1 у драгоценностей, 7 у угля, 25 у нефти, 30 у пластика и газировки
- = Порог дни2 для груза — поздний рубеж распада. 24 у пассажиров, 32 у драгоценностей, 40 у зерна, 255 у угля (фактически бесконечный)
Примеры с полной раскладкой
Контрольный пример вики — 27 пассажиров, 100 клеток, 60 дней, умеренный климат
Уголь на дальнюю дистанцию — 200 тонн, 300 клеток, 200 дней, субарктика
Драгоценности на сверхкоротком плече — 50 шт., 50 клеток, 5 дней, умеренный климат
Субтропическая древесина — 100 тонн, 200 клеток, 80 дней
Сравнение двух поездок — уголь против драгоценностей на одном маршруте 100 клеток
Советы по планированию доходов для ветеранов tt-forums и новичков из Steam
- Уголь даёт 5916 базы — не рекорд по таблице — но пара дни1/дни2 в 7 и 255 означает, что он держит почти полную стоимость даже на сетях через всю карту в 2000 клеток. Уголь — груз, на котором можно строить кривые пути и всё равно быть в плюсе. Драгоценности дают 7509 базы, но при дни1 = 1 и дни2 = 32 всё, что дольше 80 календарных дней (32 периода транспортировки), валит фактор времени к нижнему пределу 31. Драгоценности — на маршруты до 50 клеток, уголь — на всё остальное.
- Расстояние — это манхэттенское расстояние в клетках, не длина путей. Формула дохода считает |x1 - x2| + |y1 - y2| между двумя станциями, сколько бы поворотов ни было на трассе. Серпантин через горы зарабатывает столько же, сколько прямая, при тех же координатах станций. Это № 1 заблуждение на русскоязычных форумах: игроки считают, что 200 клеток путей на манхэттенском маршруте в 100 клеток приносят 200 клеток дохода. Не приносят. Размещайте станции по дальним краям предприятий, чтобы максимизировать манхэттенское расстояние.
- Один «день» на вики-странице грузового дохода — это 2,5 ваших календарных дня в сохранении. OpenTTD хранит время в пути в одном байте 0–255, единица в 2,5 дня нужна, чтобы счётчик дотягивал до длинных морских маршрутов. Калькулятор сверху принимает календарные дни (то, что показывает окно транспорта в игре) и сам делит внутри — но если вы тащите числа прямо со словесной формулы вики, не забудьте умножить или разделить на 2,5 руками.
- Фактор времени упирается в 31, не в ноль. MIN_TIME_FACTOR = 31 в src/economy.cpp означает: даже груз, который провёл в пути несколько игровых лет, продолжает платить около 31/255 ≈ 12% от свежей стоимости. Игроки иногда жалуются «мой груз перестал что-то приносить» — обычно это потому, что число £ маленькое (один пассажир на 2000-клеточном корабле за 4000 дней даёт floor(2000 × 31 × 1 × 3185 / 2 097 152) = £94), но это никогда не строгий ноль, если только расстояние или количество не нулевые.
- Субтропическая древесина платит £7964 базы — рекорд среди всех vanilla-грузов, выше драгоценностей (£7509) и сравнима только с газировкой (£6250) на коротких плечах. Тот же ярлык «Древесина», что и на умеренной (£5005), но цена выше на 59%. Если ваше сохранение субтропическое, ставьте древесину выше товаров на каждом адекватном маршруте лесопилка → лесопилка-приёмник. Русская вики OpenTTD прямо называет её «наиболее ценным грузом из всех возможных в субтропическом климате» — не пропустите.
- JGR’s Patch Pack использует ту же формулу. Код грузового дохода в JGRPP побайтово совпадает с vanilla — единственная разница в экономике это настройка скорости старения груза (по умолчанию 100% и там, и там, но в JGRPP она настраиваемая). Числа из этого калькулятора переносятся 1-в-1 в JGRPP-сохранение, если вы явно не меняли economy.cargo_aging_rate. Наборы NewGRF (FIRS, ECS, YETI) переопределяют таблицу оплаты и не поддерживаются; для NewGRF-сохранения берите выдачу калькулятора как vanilla-эталон и масштабируйте на коэффициент, опубликованный авторами набора.
- Инфляция масштабирует результат пропорционально. Калькулятор показывает значение в ценах базового года (1950) — ту же калибровку, что использует внутриигровой график оплаты грузов. Стандартный множитель инфляции OpenTTD (~1,5%/год) одновременно масштабирует расходы и доходы, поэтому ваш относительный доход против эксплуатационных затрат не меняется. £ калькулятора — это не реальное £ в банке к 2050 году в вашем сохранении, но соотношение между двумя поездками сохраняется ровно.
- Загляните в шпаргалку под калькулятором ДО того, как класть пути. Она сортирует все 33 строки vanilla (31 уникальное название груза плюс отдельные строки для субтропической Древесины и Нефти) по стоимости груза и помечает каждую строкой «лучше при расстоянии ≤ N клеток» по эвристике дни1 × 75 (30 км/ч × 2,5 дня/период ≈ 75 клеток за период на типичных скоростях поездов 1950-х). Грузы с дни2 = 255 получают метку «фактически без предела» — они не уходят в критическое старение на сухопутных маршрутах.
Калькулятор грузового дохода OpenTTD — частые вопросы
Какая формула грузового дохода в OpenTTD?
Как считается расстояние для грузового дохода?
Почему один «день» на вики на самом деле 2,5 дня в игре?
Какой груз самый прибыльный в OpenTTD?
Работает ли калькулятор с JGR’s Patch Pack?
А с наборами NewGRF — FIRS, ECS, YETI?
Почему мой груз показывает «£0» на длинном морском маршруте?
Почему CityMania и внутриигровой график дают чуть разные числа?
Меняет ли инфляция результат?
Насколько точен этот калькулятор по сравнению с самой игрой?
В чём разница между дни1 и дни2?
Калькулятор бесплатный?
Как сравнить два маршрута бок о бок?
Влияет ли скорость на доход или только дни в пути?
Глоссарий грузов и экономики OpenTTD
Манхэттенское расстояние
Прямое расстояние между двумя станциями по сетке клеток, |xsrc - xdst| + |ysrc - ydst|. Используется в формуле грузового дохода OpenTTD; не равно длине путей, по которым реально едет транспорт.
Период транспортировки
Внутренняя единица времени, в которой OpenTTD считает возраст груза. Один период транспортировки = 2,5 календарных дня. Хранится в однобайтовом счётчике, поэтому максимум — 255 периодов (~637 календарных дней) до того, как фактор времени упрётся в нижний предел MIN_TIME_FACTOR = 31.
Фактор времени
Множитель свежести в формуле дохода, диапазон 0–255 (с нижним пределом 31). 255 — идеально свежий, 31 — нижний пол для застоявшегося. Каждый период сверх дни1 снижает его на 1; каждый период сверх дни1 + дни2 снижает ещё на 1 (итого −2 за период в зоне медленного распада).
дни1
Ранний порог распада груза в периодах транспортировки. До дни1 груз зарабатывает по максимальному фактору времени 255. Примеры: 0 у пассажиров и продуктов, 1 у драгоценностей, 7 у угля, 25 у нефти и игрушек.
дни2
Поздний порог распада, добавляемый сверху. После дни1 + дни2 фактор времени падает вдвое быстрее. Уголь, нефть, железная руда, сталь, древесина, медная руда, сахар, игрушки и пластик — все имеют дни2 = 255 (фактически без предела).
Стоимость груза (paymentRate)
Базовая ставка груза из таблицы _default_cargo в src/economy.cpp. Рекорд — субтропическая древесина (7964), далее драгоценности (7509), газировка (6250), товары и конфеты (6144), уголь (5916). Минимум — фрукты (4209). Хранится в движке как целое в формате Q11.4.
GetTransportedGoodsIncome()
Функция на C++ в src/economy.cpp, которая считает выплату в £ при разгрузке груза транспортом. Реализует ту же целочисленную формулу, которую дословно повторяет этот калькулятор, включая финальный сдвиг BigMulS на 21 разряд.
JGR’s Patch Pack (JGRPP)
Долгоживущий форк OpenTTD от Джонатана Реннисона с сотнями дополнительных функций (реалистичное торможение, программируемые сигналы, городские зоны). Код грузового дохода побайтово совпадает с vanilla — числа из этого калькулятора переносятся 1-в-1.
NewGRF
Формат пользовательского контента OpenTTD для добавления транспорта, предприятий, городских зданий и наборов грузов. Наборы NewGRF (FIRS, ECS, YETI) переопределяют vanilla-таблицу стоимости груза (33 строки: 31 уникальное название плюс отдельные субтропические Древесина и Нефть); этот калькулятор использует только vanilla-ставки.
Климат
Один из четырёх режимов сценария OpenTTD: Умеренный (по умолчанию), Субарктический, Субтропический, Игрушечный. Определяет доступные грузы — Уголь только в умеренном/субарктическом, Алмазы только в субтропическом, Игрушки/Конфеты/Кола только в игрушечном.
Скорость старения груза
Настройка экономики (economy.cargo_aging_rate), масштабирующая, как быстро груз набирает периоды транспортировки. По умолчанию 100% в vanilla и в JGRPP. JGRPP даёт настраивать процентом; vanilla фиксирует на 100.
Инфляция
Годовой множитель OpenTTD, применяемый к расходам и доходам (~1,5%/год по умолчанию). Калькулятор даёт £ в ценах базового года (1950), что совпадает с внутриигровым графиком оплаты грузов; относительные сравнения не меняются от инфляции.
Источники и ссылки
- OpenTTD Wiki (RU) — Грузовой доход (формула, пороги дни1/дни2, единица 2,5 дня на период)
- OpenTTD Wiki (RU) — Груз (русские названия всех грузов по климатам)
- Исходный код OpenTTD — src/economy.cpp (функция GetTransportedGoodsIncome() и таблица _default_cargo на 33 строки с 31 уникальным грузом)
- Wikidata Q725120 — сущность OpenTTD (видеоигра, свободное ПО; основано на Transport Tycoon Deluxe)
- JGR’s Patch Pack — форк сообщества, использующий ту же формулу грузового дохода
- Action0/Cargos — спецификация NewGRF, перекрёстная сверка полей стоимости груза, дни1, дни2