Проблемы с трансфером в Open TTD MiniIn 7344

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

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

Сообщение alex27 » Вт янв 16, 2007 12:54

Вопрос не много другой, но все равно отлично подходит под тему. Активно занимаюсь транфером. У меня еда едет на некие "центральные" станции, которых их не принимают, но где их ожидают грузовики для растаскивания ее по городам. Однако грузовики получают в среднем -100,000 .... - 400,000 каждый год. Понаблюдав откуда поступают основные их расходы выяснилось при забирании груза. Решив, что наверно если поезда-транспортеры берут деньги, я подсичтал свои прибыли. Итак, 7 подездов, которые подвозят еду получат в сумме за год 10,854,097. 47 автомобилей, развозящий еду получают убытков за год 10,543,077. Итого прибыль 7поездов и 47 автомобилоей 311,020. Если поделить на 54, то по 5759 на одно траснопортное средство. Может где то в чем то есть секрет или глюк. Версия MiniIn 7344. Если надо сейв и прочие могу прислать
alex27
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 9
Зарегистрирован: Вт дек 19, 2006 17:59

Сообщение Neko » Вт янв 16, 2007 15:14

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

Сообщение Quark » Вт янв 16, 2007 15:29

верно работает следующий подход:
1) на станции постоянно ждёт погрузки транспорт товар не залёживается на станции
2) у привозящего транспорта стоит команда «transfer and leave empty»
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Neko » Вт янв 16, 2007 15:50

Я полагаю, что автор первого поста так и поступает.
Только остаётся открытым вопрос, а передаётся ли автомобилю адрес станции-источника, откуда был доставлен груз на эту перевалочную станцию и время в пути от источника до перевалочной станции.
А если передаётся, то какие деньги могут быть начислены автомобилю, который по совокупности был в пути незнамо сколько и приехал с чёртовых рогов, имея при этом скорость автомобиля, что приведёт в расстройство модуль расчёта денег за доставку, ибо полная дистанция, общее время в пути и скорость авто придут в полное противоречие.
Если у кого свежие исходняки под рукой - там надо отследить судьбу всего лишь двух переменных - адрес станции-источника и полное время в пути.

И ещё не надо забывать, что автор первого поста свозит на перевалочную станцию груз из НЕСКОЛЬКИХ источников.
А такая схема в оригинальном исполнении до сих пор работать не будет, т.к. хоть вновь прибывших груз и добавляется к предыдущему, но адрес станции-источника и время пути обновляются согласно параметрам прибывшего поезда. Теперь прикиньте, какие потери мы огребём, если подводим груз в одном случае с длинной дистанции, а во втором - с более короткой.
И в довершение. Если эта самая станция перевалки сама является источником этого же груза, то время в пути всегда будет обнуляться, а адресом-станции источника будет сама эта станция.
Т.е. все деньги, за доставку груза на станцию перевалки мы просто теряем.
По этим причинам в трансфер в его оригинальном исполнении мало кто согласиться поиграть.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение alex27 » Вт янв 16, 2007 16:04

Работает так:
1. У поезда
Станция загрузки (полная загрузка)
Станция разгрузки (Трансфер и уйти пустым)

2. У Машин
Станция загрузки (полная загрузка)
Станция разгрузки (поная разгрузка)

Поезд по приходу срывает банк, а вот работа грузовиков оплачивается тысячи по 6-10


PS: Не подскажите не изменилась ситуация с "обислыми" самолетами, которых даже стоячий делает?
alex27
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 9
Зарегистрирован: Вт дек 19, 2006 17:59

Сообщение Neko » Вт янв 16, 2007 16:22

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

Сообщение Quark » Вт янв 16, 2007 19:47

Neko писал(а):Я полагаю, что автор первого поста так и поступает.
Только остаётся открытым вопрос, а передаётся ли автомобилю адрес станции-источника, откуда был доставлен груз на эту перевалочную станцию и время в пути от источника до перевалочной станции.
А если передаётся, то какие деньги могут быть начислены автомобилю, который по совокупности был в пути незнамо сколько и приехал с чёртовых рогов, имея при этом скорость автомобиля, что приведёт в расстройство модуль расчёта денег за доставку, ибо полная дистанция, общее время в пути и скорость авто придут в полное противоречие.
а какой смысл смотреть на скорость, если время и дистанция известны? деньги=расстояние/время и всё.

Neko писал(а):И ещё не надо забывать, что автор первого поста свозит на перевалочную станцию груз из НЕСКОЛЬКИХ источников.
А такая схема в оригинальном исполнении до сих пор работать не будет, т.к. хоть вновь прибывших груз и добавляется к предыдущему, но адрес станции-источника и время пути обновляются согласно параметрам прибывшего поезда. Теперь прикиньте, какие потери мы огребём, если подводим груз в одном случае с длинной дистанции, а во втором - с более короткой.
И в довершение. Если эта самая станция перевалки сама является источником этого же груза, то время в пути всегда будет обнуляться, а адресом-станции источника будет сама эта станция.
Т.е. все деньги, за доставку груза на станцию перевалки мы просто теряем.
По этим причинам в трансфер в его оригинальном исполнении мало кто согласиться поиграть.
так и есть, но если товар переходит в ожидающий транспорт, то все исходные данные сохраняются и всё работает

P.S. я уже и на форуме и в баг-трекере писал о недоработке трансфера, но исправить это возможно только реализовав полностью cargo-packets.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Neko » Вт янв 16, 2007 21:17

Это не баг. Это принципиальный дефект, суть которого в том, что груз на станции имеет только по одной переменной для адреса-источника, времени в пути и т.д.
Ничего при таких раскладах поделать нельзя.

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

Сообщение Quark » Ср янв 17, 2007 00:54

а на станции нельзя предотвратить объединение грузов из разных источников?

на станции для каждого груза есть запись, откуда он прибыл и сколько времени находится в пути, но проблема в том, что на каждый тип груза у станции только по одной записи — надо переделать хранилище грузов в динамический массив, тогда можно будет создать два одниковых груза с разными источниками, а также переделать функции передачи груза с предприятия на станцию и прочии для учёта источника груза — сейчас он только в одном месте вроде проверяется
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср янв 17, 2007 01:11

Код: Выделить всё
static void UpdateStationWaiting(Station *st, int type, uint amount)
{
   SB(st->goods[type].waiting_acceptance, 0, 12,
      min(0xFFF, GB(st->goods[type].waiting_acceptance, 0, 12) + amount)
   );

   st->goods[type].enroute_time = 0;
   st->goods[type].enroute_from = st->index;
   InvalidateWindow(WC_STATION_VIEW, st->index);
   MarkStationTilesDirty(st);
}
а вот баг со сбросом исходной точки груза и времени в пути для трансфера, вызывается из MoveGoodsToStation, которая, в свою очередь вызываетс из TransportIndustryGoods и TileLoop_Town, TileLoop_Unmovable
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср янв 17, 2007 01:36

http://www.tt-forums.net/viewtopic.php?p=542724#542724 – всем пострадавшим обращаться туда с постом вида «please fix it, please!!!» :)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Neko » Ср янв 17, 2007 02:49

Quark писал(а):...а вот баг со сбросом исходной точки груза и времени в пути для трансфера...


Это не баг. Это промышленность помещает свой груз на станцию - это общий случай, который не учитывает того, что на этой станции уже может лежать аналогичный груз от трансфера. Это тот самый тяжёлый случай, когда станция трансфера сама является источником этого же груза.
Я хотел в этом месте, да и в том месте, где у нас смешиваются одинаковые грузы из разных источников, расчитывать СРЕДНЕВЗВЕШЕННУЮ цену и пересчитывать её в виртуальные координату источника и времени в пути.

А по поводу того, чтобы учитывать каждый прибывший груз отдельно.
Дык - это в общем случае называется складской программой для мелкооптового склада. Я такие вещи делал в реальной жизни и хорошо представляю все подводные камни.
Ты ещё не продумал вопрос о том, что отдельный состав может быть загружен грузом из разных источников. Даже каждый вагон может быть загружен остатками грузов из разных источников. Это надо организовывать учёт на уровне единицы груза. А потом всё это учитывать при подсчёте общей стоимости доставки.
Это надо поверх Опена накручивать ещё достаточно сложную базу данных, что явно уже излишне и неразумно.
Более разумный путь - это расчитывать средневзвешенную цену и пересчитывать в виртуальные координаты и время в пути, что позволяло нам вполне обойтись по одной переменной для описания груза и не надо делать базу данных для раздельного учитывания груза.
Но тогда, когда я про всё это рассуждал, обдумывая патч "Трансфер по понятиям", идея со средневзвешенными ценами показалась мне самой разумной, но требовала достаточно большого объёма программирования. А поиграть очень сильно хотелось. Поэтому, я и выбрал наиболее простейший, вполне играбельный, но сильно уязвимый для критиков алгоритм, который и закодил, в который и играю, а переделать по средневзвешенные цены так и не удосужился.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Quark » Ср янв 17, 2007 03:12

«Это промышленность помещает свой груз на станцию - это общий случай, который не учитывает того, что на этой станции уже может лежать аналогичный груз от трансфера.» — если не учитывает того, что должен, то почему не баг? если вот мы кусок памяти переписываем без проверки были ли там у нас нужные данные (а они были) — это ведь баг?

«подводные камни» — ну какие тут могут быть камни? надо лишь отделить коробку товаров с одной надписью от другой — уголь и железную руду же различаем как-то

«Ты ещё не продумал вопрос о том, что отдельный состав может быть загружен грузом из разных источников.» — а что думать? в один вагон влезает только товары с одинаковой наклейкой :)

«Это надо поверх Опена накручивать ещё достаточно сложную базу данных, что явно уже излишне и неразумно.» — а CargoPackets что делает? вроде там не так уж всё и сложно.

имхо если из GoodsEntry сделать расширяемый массив, то будет вообще всё просто и при этом работать как надо, а то что в вагон не влезет 1 лишняя единица товара, то это возможно только в результате потерь груза на станции — можно округлить до целого вагона и всё тут :) вагоны с разной вместимостью для одного и того же груза не так уж и часто встречаются
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср янв 17, 2007 03:14

кстати на уголь наклейки не клеются и маркировать можно только вагонами, так что для таких типов груза необходимость сваливать в один вагон всё из разных источников отпадает :)

да, и еще: если вагон полностью или на х% загрузить нельзя, то излишек можно просто оставить валяться на станции :) и подобрать в последнюю очередь, если пустой вагон останется
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Jureth » Пн янв 22, 2007 08:44

Поезд по приходу срывает банк, а вот работа грузовиков оплачивается тысячи по 6-10
Фишка ещё в том, что в доход поезда начисляется сумма = (за доставку груза) * 3 / 2, а при заборе груза из дохода транспорта, забирающего груз вычитается сумма пропорциональная данной (относительно объёма груза).

Из-за этих *3/2, второй, третий и т.д. транспорты в цепочке трансфера, практически, не имеют шансов получить доход.

У меня один вопрос - какой "гений" это придумал?
Аватара пользователя
Jureth
Диспетчер
Диспетчер
 
Сообщения: 143
Зарегистрирован: Ср ноя 08, 2006 08:34

След.

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

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

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

cron