ИМХО, со сверхдоходами надо что-то делать - банально скучно, когда на счету - десятки миллиардов.
Пара идей:
I. Инфляция:
Здесь всё просто: ИМХО, если она включена, то должна быть более агрессивной и напрямую зависеть от финансов игроков (стоимости компаний). Т.е. чтобы МНОГО денег никогда ни у кого не было. Для нескольких игроков - усреднять. Уровень кредитов раздавать в зависимости от уровня инфляции.
II. Перевозки.
Идея "чем дальше, тем доходнее" - ИМХО, не самая удачная. т.е. понятно, что она правильная, но это слишком просто.
1. Для начала, ИМХО, надо ввести ограничение на время перевозки некоторых товаров. Т.е. если вёз дольше, то никакой прибыли (а то и неустойка) + понижение рейтинга. Ну не смешно-ли везти, скажем, зерно по полгода? Да ему кирдык настанет ещё на середине пути!!! Время лучше задавать в тиках, забив на реалистичность в угоду смены длины дня.
2. Ещё можно сделать так, чтобы функции зависимости дохода от расстояния и времени пути были не абсолютными, а как-то "танцевали" от средней (среднеквадратичной, максимальной, k*макс. - надо решить) скорости доступного транспорта (отдельно для каждого вида транспорта). Т.е. чтобы было не очень выгодно возить всё на старых дизелях, когда уже существуют скоростные электровозы.
3. А ещё - можно считать некое общее "значение притягательности" каждого груза для принимающей станции через усредненное значение функции F() от расстояния до отправителя и времени на перевозку. И в сравнении с этим значением и значеним F() для вновьприбывшего транспортника считаем доход этого транспортника.
Попробую обьяснить по-русски (ибо сам не понял, что написал):
Допустим, на станцию (одну) несколько поездов возят какой-то один груз. Возможно с разных станций, и разных игроков - не важно(!!!).
Введем:
функция F(veh, cargotype) возвращает, для примера, прямое расстояние (DistanceManhattan) между отправл. и приемной станции, поделёное на время в пути.
значение C(station, cargotype) - "значение притягательности груза" для станции.
функция G(F, C) - скорость приращения С() после каждого прихода поезда. Для примера: (F-C)/4.
При приезде поезда на станцию когда поезд приходит на станцию. Для его груза считается некая базовая выручка и значение F(...). Это значение сравнивается с C(станция, груз), и в зависимости от результатов сравнения "сумма на руки" будет отличаться от значения базовой выручки (тоже нужна формула). После этого значение С() изменяется по формуле C = C + G(F, C), т.е. идёт подстройка значения под основную массу транспортников. Есс-но первый приход на станцию обрабатывается отдельно (скорее всего, C = F).
Если хорошо расчитать формулы, то это может дать некислую конкуренцию между отдельными транспортниками и маршрутами как внутри компании, там и между игроками при использовании shared stations. Более оптимальные маршруты будут давать бОльшую прибыль и явно мешать остальным получать такую прибыль, но они не смогут "делать погоду", при своем малом количественном соотношении. К тому-же задерживающиеся транспорты будут более основательно подрывать свою прибыльность. Это заставит более тщательно продумывать маршруты и нагрузку на станции.
Изменения требуют лишь одно допольнительное поле для каждого груза на станции ( С(...) ), и только переработку алгоритма.
known-bugs (уже): пассажиров по такому методу, думаю, лучше не считать. Особенно на пару с passengers_destinations. Про почту на короткие расстояния - надо подумать.
Возможно стоит делать не для станции а для предприятия (кроме пассажиров и почты) - не знаю пока.
Для начала всё. Я, к сожалению не смогу сам вплотную заняться реализацией - курсовая да ГОСы на маячат на горизонте, но хотелось-бы, чтобы подвижки в этом направлении были. Ибо скучно с кучей денег сидеть.