Новый способ погрузки на станциях

Вопросы разработки OpenTTD, обсуждение новых сборок и патчей, решение проблем новых версий.

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

Новый способ погрузки на станциях

Сообщение Neko » Чт фев 02, 2006 15:48

На этом форуме была высказана интересная идея - если на станции стоит поезд под полной загрузкой, и на эту станцию приходит поезд этого же типа груза, то он "выталкивает" своего, пускай ещё не до конца загрузившегося предшественника, а сам становится под полную загрузку.

Предлагаю обсудить следующий алгоритм реализации этой идеи.
1) Для всех первичных грузов (Уголь, Нефть etc включая Пассажиров и Почту) выталкивание происходит не сразу, а по достижении загрузки ранее стоящего состава до 50% вместимости (цифру можно обсудить).
2) Для вторичных грузов (Товары, Еда etc) этот принцип не применяется, а работает согласно записи в путевом листе (ПОЛНАЯ ЗАГРУЗКА).

Следующая идея очень сырая, и пишу её сюда для очень тщательного обсуждения, и по большей части чтобы не забыть самому:
3) Для вторичных грузов можно добавить ещё одну возможность, которую можно оформить отдельной настройкой.
Если все платформы станции заполнены поездами одного типа (вторичного), то самый нагруженный из них срывается с места не дожидаясь окончания погрузки, освобождая тем самым одну платформу. Т.е. при любых раскладах как минимум одна платформа будет свободной для приёмки сырья.
Это будет удобно тем, кто не разделяет платформы на сырьевые и готовой продукции. Те же, кто практикуют "раздельное питание", то они просто выключат в настройках эту настройку.

Жду высказываний по поводу.

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

Сообщение Smoky555 » Пт фев 03, 2006 07:39

есть патчик такой, на tt-forums мелькал, но забугорное сообщество его либо не приняло, либо автор просто пропал ...
Входи тихо, проси мало, говори четко, уходи быстро.
Изображение
Изображение
У вас проблемы с русским в игре?
Изображение
Аватара пользователя
Smoky555
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1413
Зарегистрирован: Пт фев 25, 2005 08:33
Откуда: Волгоград

Сообщение Neko » Пт фев 03, 2006 08:29

2Smoky555

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

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

Сообщение Smoky555 » Пт фев 03, 2006 08:37

Входи тихо, проси мало, говори четко, уходи быстро.
Изображение
Изображение
У вас проблемы с русским в игре?
Изображение
Аватара пользователя
Smoky555
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1413
Зарегистрирован: Пт фев 25, 2005 08:33
Откуда: Волгоград

Сообщение Pk » Вт фев 07, 2006 07:53

Я думаю, что надо организовать новую вкладку в свойствах машины и постить это уже туда.
Так же предлагаю ввести минимум на загрузку в таком же виде, как и service interval - есть "default" и есть "user defined". По каждому типу ПЕРЕВОЗИМОГО груза. Иначе будут глюки.
И можно так же ввести "Маршрут", а не "тип груза", т.е. либо список станций + флаги, либо просто список станций, либо с учётом груза, либо просто указание наименования "маршрута". (Transport line name: FungFingFordCoal 01 Train)
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Dictu » Вт фев 07, 2006 10:09

Возможно ещё одно простое(?) решение, причём наболевшее: ставить поезду, что именно он должен грузить до полного груза. Ибо есть такие локомотивчики, в которые влезает самый децл почты. В результате пассажирский поезд, вместо того чтобы набиваться бабульками, хватает десять мешков почты и гордо уезжает...
Аватара пользователя
Dictu
Директор
Директор
 
Сообщения: 260
Зарегистрирован: Пн окт 31, 2005 17:02
Откуда: Москва

Сообщение Neko » Вт фев 07, 2006 11:29

2Dictu

Озвученная проблема близка и понятна - Ферма и Пасс/Пчт создают определённые проблемы. Сюда следует добавить и третий неприятный случай, когда у стоящего под полной загрузкой состава истекает срок техобслуживания, он пилюёт на эту самую загрузку, а срывается с места в поисках ближайшего Депо, а потом, вдобавок к этим бедам, будет ещё искать, где бы ему развернуться, чтобы вернуться на оставленную станцию.

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

Сообщение Dictu » Вт фев 07, 2006 13:54

Neko писал(а):Сюда следует добавить и третий неприятный случай, когда у стоящего под полной загрузкой состава истекает срок техобслуживания, он пилюёт на эту самую загрузку, а срывается с места в поисках ближайшего Депо, а потом, вдобавок к этим бедам, будет ещё искать, где бы ему развернуться, чтобы вернуться на оставленную станцию.

Это решается введением в маршрутный лист множества всяческих прибабахов.


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

А для зерноскота я делаю просто два поезда: так выгоднее, ибо у фермы различается производительность по зерну и скоту.

Сорри за офтоп...
Аватара пользователя
Dictu
Директор
Директор
 
Сообщения: 260
Зарегистрирован: Пн окт 31, 2005 17:02
Откуда: Москва

Сообщение Pk » Ср фев 08, 2006 06:58

Dictu писал(а):Возможно ещё одно простое(?) решение, причём наболевшее: ставить поезду, что именно он должен грузить до полного груза. Ибо есть такие локомотивчики, в которые влезает самый децл почты. В результате пассажирский поезд, вместо того чтобы набиваться бабульками, хватает десять мешков почты и гордо уезжает...


А! ((с) Azumanga)
Тогда список очерёдности грузов - зелёный, жёлтый и синий
зелёный - "Пока все виды не загрузишь не уедешь!"
жёлтый - "Один загрузил и свободен." (Стандарт)
синий - "Не появился? Ну и не надо."
Соответственно зелёный приорететней жёлтого, а синий - раффа для обоих.
---в виде доп. окошка доступного из путевого листа---
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Neko » Чт фев 16, 2006 00:46

Позволю себе вернуться к своим гангренам.

Итак, на станции у меня стоят под погрузкой уже два однотипных поезда. Сначала грузиться первый, и только после него начинает грузиться второй.
Первому поезду остаётся догрузить каких-то пол-вагона, но у него истекает гарантийный срок, и он срывается со станции в поисках ближайшего Депо, а потом возвращается на станцию для окончания загрузки.
Но, пока первый поезд курулесит, второй начинает грузиться. Значит, первый свежепокрашенный поезд со своим недогруженным пол-вагоном вынужден теперь долго ждать пока второй поезд полностью не загрузиться.
В итоге имеем значительную задержку в доставке груза.

На мой взгляд такие расклады не есть правильные.
Мне кажется, что было бы более логично, если бы во время погрузки на станции механизм ремонта по таймеру отключался бы полностью.
А погрузился полностью, выехал со станции, вот тогда и решай свои проблемы с ремонтом.

Тем, кто со мной готов согласиться, необходимо в файле train_cmd.c
в функции CheckIfTrainNeedsService() в самом начале после стопочки предложений if() return;
добавить всего лишь одну строку:

//<--- Neko ---
// Отмена захода в Депо, если поезд стоит на станции под погрузкой
if(v->current_order.type == OT_LOADING) return;
// --- Neko -->
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение mighty » Чт фев 16, 2006 10:05

Очень правильное предложение. Но предлагаю, чтобы и во время разгрузки тоже не ехал в депо, а то у меня бывало что поезд приезжает на станцию, и "начинает разгружаться" (в игре это выглядит так: поезд стоит некоторое время на станции пустой), и вдруг поезд уезжает в депо, после депо он едет на станцию разгрузки (заметим что он уже пуст, только недостоял несколько секунд так называемой "разгрузки"), там стоит некоторое время которое недостоял перед ремонтом. ИМХО тратится очень много времени неэфективно на выезд в депо и поиск пути обратно на ту же станцию.
Аватара пользователя
mighty
Диспетчер
Диспетчер
 
Сообщения: 235
Зарегистрирован: Пн май 16, 2005 13:02
Откуда: Украина

Сообщение Dictu » Чт фев 16, 2006 10:33

Ух! Ух! Непременно! Товарищи, а вы можете более-менее подробно описать, что и где надо менять? Первую-то часть я вполне понял, а вот чтобы воплотить вторую...
if(v->current_order.type == OT_LOADING) return;

Это вообще где-то описано? В смысле, список команд (функций, предложений - как они там ещё называются?)
Аватара пользователя
Dictu
Директор
Директор
 
Сообщения: 260
Зарегистрирован: Пн окт 31, 2005 17:02
Откуда: Москва

Сообщение Neko » Чт фев 16, 2006 10:35

2mighty

Параметр OT_LOADING на самом деле означает "Нахождение на станции", т.е. РАЗГРУЗКА во всех её вариантах тоже сюда входит.

То, что я написал чуть выше отличным образом будет работать и для твоего случая.

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

Сообщение Dictu » Чт фев 16, 2006 11:41

2Neko
Эх, рановато мне ещё со свиным рылом в калашный ряд... При слове "компиляция" у меня холодеют руки... А ты собираешься где-то выкладывать такую сборку?
Аватара пользователя
Dictu
Директор
Директор
 
Сообщения: 260
Зарегистрирован: Пн окт 31, 2005 17:02
Откуда: Москва

Сообщение Neko » Чт фев 16, 2006 12:31

Надо взять сборку 3393 с этого сайта, которую сделал уважаемый Smoky555 и заменить ехе оттуда на ехе отсюда. Сахар, сливки и новую графику добавлять по своему вкусу.

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


Вернуться в Разработка OpenTTD

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

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