Как слить два ж/д потока?

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

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

Как слить два ж/д потока?

Сообщение Yokki » Вт дек 21, 2010 03:02

Когда сливаются 2 потока, то возникают лишние остановки в каждой из двух сливающихся веток, что отрицательно сказывается на общей скорости движения. Есть ли возможность в игре уменьшить простои при слиянии? Практически интересует оригинальная сборка с сайта производителя или руссифицированная оригинальная сборка с этого сайта, но если такая возможность реализована в других сборках, то интересно просто узнать, как оно там работает?

На первый взгляд я бы тут предложил алгоритм, когда поезда менее насыщенного потока выезжали бы в общий поток только в том случае, если это не мешает и не замедляет скорость поездов более насышенной линии.
Yokki
Машинист
Машинист
 
Сообщения: 40
Зарегистрирован: Пт апр 06, 2007 21:30

Re: Как слить два ж/д потока?

Сообщение Ghost » Вт дек 21, 2010 11:20

Yokki
А как ты себе представляешь слияние двух потоков в один без ущерба?

Вот представь, раз уж речь о потоках зашла. Две трубы, по каждой течет вода (сверху вниз), потом они смешиваются в бассейне и по одной трубе утекают дальше. Если суммарный объем потока на входе больше пропускной способности сливной трубы, то рано или поздно бассейн выйдет из берегов. Единственный вариант - увеличение пропускной способности сливной трубы. Первый способ - увеличение сечения. Второй - установка насоса, который будет увеличивать скорость потока.

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

Если суммарный объем потока на входе меньше пропускной способности слива, то и проблем нет. Возможно, надо просто сделать балансировку по потокам (приоритеты или отстойники перед местом соединения).
Ghost
Директор
Директор
 
Сообщения: 385
Зарегистрирован: Сб сен 26, 2009 00:21
Откуда: Рыбинск

Re: Как слить два ж/д потока?

Сообщение Yokki » Сб дек 25, 2010 16:41

Ghost, я уже описал выше алгоритм такого слияния, если ты не заметил. Естественно речь идет о случае, когда "суммарный объем потока на входе меньше пропускной способности слива", т.к. иначе бы и вопроса не было. Да, все эти поезда с обоих потоков могут идти с максимальной скоростью по одному пути, куда их направляют. Вопрос был об о организации этого слияния средствами игры, но ты, к сожалению, об этом ничего не пишешь
Ghost писал(а):Если суммарный объем потока на входе меньше пропускной способности слива, то и проблем нет. Возможно, надо просто сделать балансировку по потокам (приоритеты или отстойники перед местом соединения).
Yokki
Машинист
Машинист
 
Сообщения: 40
Зарегистрирован: Пт апр 06, 2007 21:30

Re: Как слить два ж/д потока?

Сообщение Wowan » Сб дек 25, 2010 17:18

Приоритеты можно расставлять пресигналами. На форуме много раз писалось.
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: Как слить два ж/д потока?

Сообщение Yokki » Вс дек 26, 2010 01:28

Wowan писал(а):Приоритеты можно расставлять пресигналами. На форуме много раз писалось.

Спасибо, конечно, только непонятно, зачем вы тут отписались? В теме задан вопрос - логично либо отвечать на него, либо игнорировать тему
Yokki
Машинист
Машинист
 
Сообщения: 40
Зарегистрирован: Пт апр 06, 2007 21:30

Re: Как слить два ж/д потока?

Сообщение Ghost » Вс дек 26, 2010 01:57

Yokki писал(а):
Wowan писал(а):Приоритеты можно расставлять пресигналами. На форуме много раз писалось.

Спасибо, конечно, только непонятно, зачем вы тут отписались? В теме задан вопрос - логично либо отвечать на него, либо игнорировать тему

Интересно... В первом сообщении (там, где вопрос) явно описан механизм приоритетов линий. Вот и ответ - пресигналы. Никто не будет тут мануал многостраничный выкладывать о том, как это реализовать.

Yokki писал(а):Есть ли возможность в игре уменьшить простои при слиянии?

Если есть простои, то практически их не уменьшить, кроме расширения магистрали после слияния. Либо организовывать движение по альтернативным маршрутам. Нет такого автомата - игрок сам должен думать, как это разрулить. Цель игры ведь не только построить, но и суметь правильно организовать движение (диспетчером быть хоть чуть-чуть).

В моих играх тоже периодически пробки образуются, но, как правило, по причине какого-то затыка (поезд поехал не туда, deadlock, ошибки с семафорами). Если же пробка стабильная, значит, пора переделывать линию, расширяя ее пропускную способность. Либо переключать на нее приоритет, например, организацией развязки таким образом, чтобы неприоритетная линия вливалась в приоритетную. Можно немного смешать потоки, организовав слияние потоков через многопутную станцию с неколькими переходами между путями.

Короче, пример в студию и кусок миникарты, чтобы был виден масштаб пробки.
Ghost
Директор
Директор
 
Сообщения: 385
Зарегистрирован: Сб сен 26, 2009 00:21
Откуда: Рыбинск

Re: Как слить два ж/д потока?

Сообщение Yokki » Вс дек 26, 2010 02:14

Там не механизм - там мои скромные соображения. Я и спрашиваю тут, реализуемо ли это средставми игры? Не надо выкладывать мануал - если информация есть на этом форуме, то просто дайте на неё ссылку и я там посмотрю!
Yokki
Машинист
Машинист
 
Сообщения: 40
Зарегистрирован: Пт апр 06, 2007 21:30

Re: Как слить два ж/д потока?

Сообщение Wowan » Вс дек 26, 2010 03:04

Yokki, вы извините, но вы зануда. Вместо того чтобы загуглить, вы требуете простых ответов. Ну ладно я пьяный уже и добрый. :) Вот вам скрин.
Пресигналы, приоритет путей.png
Оформление приоритизации путей с помощью пресигналов
Пресигналы, приоритет путей.png (12.58 Кб) Просмотров: 9562

Как видите, на снимке использованы только обычные односторонние светофоры и пресигналы - с "юга" входной односторонний пресигнал, с "севера" - сначала выходной двусторонний, потом двусторонний комбо-пресигнал.
Тот поезд, который будет ехать с "юга", на подъезде к входному пресигналу будет пропускать поезда, едущие с "севера", если они уже проехали крайний обычный сигнал, т.е. въехали в блок, который контролирует двусторонний выходный пресигнал - наличие поезда в этом блоке даст красный на выходном двустороннем, на двустороннем комбо и, как следствие, будет красный свет на входном пресигнале.
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: Как слить два ж/д потока?

Сообщение Yokki » Вс дек 26, 2010 17:04

Wowan, спасибо за ответ! Я тут повозмущался вашей отпиской, но т.к. Вы писали, что о регулировке пресигналами много писалось на этом форуме, то тут я и искал и не нашел подобной Вашей схемы управления как минимум за час поисков. Дело в том, что я пока не пользовался пресигналами для подобной регулировки, но после Вашего объяснения стало всё ясно и буду теперь пользоваться. Еще раз большое спасибо!

ЗЫ Спиртные напитки увеличивают количество добра на планете. Надо будет завтра обязательно купить, а то проворонил это дело в пятницу и теперь до понедельника купить можно разве что втридорога...
Yokki
Машинист
Машинист
 
Сообщения: 40
Зарегистрирован: Пт апр 06, 2007 21:30

Re: Как слить два ж/д потока?

Сообщение Malcolm » Сб фев 26, 2011 01:03

Вот вам скрин

ОХ! Вот до такого я бы ни за что сам не додумался... ставить пресигналы задом-наперед, чтобы ограничить въезд с побочной линии - ГЕНИАЛЬНО!!! ( :oops: может моя реакция покажется старожилам странной, а описанная схема элементарной, но я правда даже и не думал, что пресигналы можно ставить ТАК)
Удачно я в эту тему зашел...
Malcolm
Начальник станции
Начальник станции
 
Сообщения: 106
Зарегистрирован: Вт фев 15, 2011 09:57

Re: Как слить два ж/д потока?

Сообщение delp777 » Вт мар 01, 2011 21:41

Хорошо бы этот частный случай применения ПБС-сигналов перекинуть в FAQ.
Ибо это единственный практический случай, где их можно приментить (ИМХО).
Аватара пользователя
delp777
Машинист
Машинист
 
Сообщения: 34
Зарегистрирован: Вс окт 17, 2010 20:22

Re: Как слить два ж/д потока?

Сообщение Wowan » Ср мар 02, 2011 01:07

Это не ПБС, это именно пресигналы.

А ПБС уже давным-давно в Опене нет. Старая свечка. :)
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: Как слить два ж/д потока?

Сообщение Malcolm » Ср мар 02, 2011 08:16

ПБС? Ху из ПБС?
Malcolm
Начальник станции
Начальник станции
 
Сообщения: 106
Зарегистрирован: Вт фев 15, 2011 09:57

Re: Как слить два ж/д потока?

Сообщение Wowan » Ср мар 02, 2011 10:22

PBS (path-based signalling) - это устаревший ныне аналог PMS, маршрутных светофоров. ПБС были в ооочень старых сборках.
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: Как слить два ж/д потока?

Сообщение Malcolm » Ср мар 02, 2011 11:03

Хм... а принципиальная разница в функционировании была? С точки зрения пользователя, а не кодера?

в таком случае с delp777 не согласен. Может я чего не понимаю, но по мне - маршрутные сигналы очень даж еэффективны и полезны. На много упрощает постройку развязок и увеличивает их пропускную способность...
Malcolm
Начальник станции
Начальник станции
 
Сообщения: 106
Зарегистрирован: Вт фев 15, 2011 09:57

След.

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

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

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