Баланс в OpenTTD

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

Модераторы: eraserkry, Mihamster, Smoky555, Группа модераторов

Баланс в OpenTTD

Сообщение Quark » Чт ноя 09, 2006 02:24

Предлагаю отдельно обсудить баланс игры, для начала привожу цены и алгоритм расчёта стоимости доставки грузов
Код: Выделить всё
NAMES           UNITS       WEIGHTS     PAYMENT     DAYS1   DAYS2
batteries       nothing     4           4322        2       30
bubbles         nothing     1           5077        20      80
candy           tons        5           6144        8       40
coal            tons        16          5916        7       255
cola            liters      16          4892        5       75
copper_ore      tons        16          4892        12      255
cotton_candy    tons        16          5005        10      25
diamonds        bags        2           5802        10      255
fizzy_drinks    nothing     2           6250        30      50
food            tons        16          5688        0       30
fruit           tons        16          4209        0       15
gold            bags        8           5802        10      40
goods           crates      8           6144        5       28
grain           tons        16          4778        4       40
iron_ore        tons        16          5120        9       255
livestock       items       3           4322        4       18
mail            bags        4           4550        20      90
maize           tons        16          4322        4       40
oil             liters      16          4437        25      255
oil (desert)    liters      16          4892        25      255
paper           tons        16          5461        7       60
passengers      passengers  1           3185        0       24
plastic         liters      16          4664        30      255
rubber          liters      16          4437        2       20
steel           tons        16          5688        7       255
sugar           tons        16          4437        20      255
toffee          tons        16          4778        14      60
toys            nothing     2           5574        25      255
valuables       bags        2           7509        1       32
water           liters      16          4664        20      80
wheat           tons        16          4778        4       40
wood            tons        16          5005        15      255
wood (desert)   tons        16          7964        15      255
как рассчитывается плата за доставку:
1) максимальный срок доставки 32 недели (7 месяцев и 10 дней), если вы превысили этот срок, то вам меньше уже не заплатят
2) минимальная плата составляет 12% от максимальной
3) если вы уложились в срок days1, то получите за доставку 100%
4) если вы опоздали не более чем на срок days2, то вам за каждый день опоздания вычтут 0,39%
5) если же вы опоздали на больший срок, то за каждый день после days2 вам вычтут еще по 0,39%

100% это payment/8224, соответственно 0,39% это payment/32

в текущей реализации стоимость доставки линейно зависит от расстояния
Последний раз редактировалось Quark Чт ноя 09, 2006 13:37, всего редактировалось 2 раз(а).
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Neko » Чт ноя 09, 2006 11:18

Не совсем понятно - это ты такую систему предлагаешь или описываешь то, что сейчас есть.
Если последнее, то твои пункты 1) и 2) не сходятся с реализацией в функции GetTransportedGoodsIncome, которая описана в файле economy.c
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Quark » Чт ноя 09, 2006 13:34

я описываю то, что сейчас
Код: Выделить всё
   f = 255;
   if (transit_days > _cargoc.transit_days_1[cargo]) {
      transit_days -= _cargoc.transit_days_1[cargo];
      f -= transit_days;

      if (transit_days > _cargoc.transit_days_2[cargo]) {
         transit_days -= _cargoc.transit_days_2[cargo];

         if (f < transit_days) {
            f = 0;
         } else {
            f -= transit_days;
         }
      }
   }
   if (f < 31) f = 31;
как видно f может принимать значения от 31 до 255 и 1f = 1transit_days — я действительно как-то напутал, что это три месяца :) но минимум всё-таки 12% (100%*31/255=12%) — transit_days используется только для вычисления f, который определяет % стоимости (255=100%)
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва


Вернуться в Общие вопросы по OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28