Управление движением (обсуждаем перспективу)

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

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

Управление движением (обсуждаем перспективу)

Сообщение Tanatos » Вт июн 19, 2007 21:27

По совету уважаемого Neko выделяю свой вопрос в отдельную тему.

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

предистория:
Все мы сталкивались с блуждающими поездами (те, что на развилках сворачивают не туда куда надо), с проблемами организовать прибытие поездов по отдельным платформам и так далее. Уверен, что у каждого из нас есть свои мысли по поводу решения наболевших ситуаций (с точки зрения пользователя). Понятно, что частично это решается патчами, частично не решается принципиально из-за особенностей движка. Но давайте немного абстрагируемся от возможностей и трудозатрат и обсудим баланс управляющих элементов в целом, дабы понять к чему стремиться.

Ясное дело разговор все равно вернется к обсуждению реализации, но это потом. Имея перед глазами общую картину конечной цели ИМХО будет гораздо проще планировать какие патчи и как делать (дабы потом не переделывать).

Начнем!
Я выделил следующие элементы управления (если что забыл или Вы придумали новое, пишите - добавим):
Светофор - светофор имеет некий алгоритм работы выдающий сигнал Да/Нет в зависимости от присутствии состава на участке за ним и покзаний соседних светофоров. По аналогии с PBS, возможно наличие третьего сигнала требующего специальной обработки - но это спорно, так как эту же функциональность можно возложить на специальное здание (см. ниже).
Знак - неизменное с точки зрения внешнего вида элемент. Выдает сигнал Да/Нет в зависимости от параметров приближающегося состава (скорость, товарный или пассажирский, вес, длина и т.д.)
Специальное здание - это сооружение располагающееся или рядом с рельсами или непосредственно на них (аки депо). Суть такого сооружения в том чтобы перехватить управление составами и светофорами в контролируемой зоне. ИМХО именно этот подход лучше подходит под реализацию PBS, т.е. ставим обычные световоры и будку с автоматикой/человечком для оганизации паралельного движения.
Маршрутный лист - инструкция движения для состава. Сюда пишем пункты назначения, условия прибытия/подачи на станцию, отбытия, условия загрузки и разгрузки, условия сцепа и расцепа вагонов, условия выбора альтернативных маршрутов (объехать станцию если на ней нет груза)

Далее я раскрою свое мнение по каждому пункту отдельно.
Высказывайте свое мнение, какие функции на какие элементы надо возложить (подробно описывайте функционал).
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Tanatos » Вт июн 19, 2007 22:07

Начну с изложений своего видения знаков, так как на мой взгляд это самый простой элемент.

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

Нужны ли сигналы работающие не по паспортной скорости а по текущей???

С точки зрения универсального интерфейса для взаимодействия с алгоритмами поиска пути получается нужна только одна функция выдающая ответ можно можно поехать поезду или нет. В качестве параметров принимается ссылка на обрабатываемый состав.

P.S.
максимальная скорость состава считатеся как минимум из максимальных скоростей вагонов.
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Tanatos » Вт июн 19, 2007 22:40

Светофоры (размышления в слух)

Вот уж неоднозначная тема для обсуждения.
С одной стороны на светофоры можно столько всего понавешать, что и не потребуется делать сложные маршрутные листы и сам состав получится эдаким тупым болванчиком - куда светят туда и еду. А с другой стороны будет ли это правильным??? Мне кажется светофор должен быть светофором, а принятие решений должно быть возложено на состав или некоего диспетчера управляющего движением... много нюансов.

Во-первых хочу спросить знатоков "а как оно на настоящей ж/д?" Если в переди развилка, как работают реальные светофоры? Как и кем управляются?

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

В идеале должен соблюдаться баланс между возможностями, простотой использования и возможностью ирать без их (возможностей) использования.

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

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

А если этот функционал сделать на специальном здании "диспетчер" который будет смотреть за поездами и светофорами ....

простор для фантации огромен
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Tanatos » Вт июн 19, 2007 22:42

Светофоры (ИМХО)

Светофоры должны быть:
- обычные - обрабатывает только наличие состава на следующем за ним участка пути
- семафор входной - тоже что и сейчас в игре. Красный если на участке пути за ним есть состав или все выходные семафоры красные
- выходной семафор - тоже что и сейчас в игре. Тоже что и обычный светофор, только используется в работе входного семафора
Возможно использование комбинации входного и выходного семафора в виде одного светофора.

ИМХО ничего больше не надо. Все остальное на других управляющих элементах.

Опционально: запретить выезд на пересечение за светофором если поезд не может частично(только голова)/польностью его покинуть.

Какие еще опции по обработке светофоров веделить?
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Tanatos » Вт июн 19, 2007 22:52

Маршрутные листы

Элементы маршрутного листа:
- Станция. Опции: загрузка / разгрузка, следовать без остановки,
- условие пропуска станции (например нет груза на станции или нет места в поезде) и альтернативный маршрут в случае выполнения условия
- Точка пути
- Депо посещаемое для обслуживания

P.S.
Заргузка и разгрузка может быть частичная и может задаваться в % или тоннах/штуках и т.д., может задаваться в абсолютном значении (загрузить всего 50%) или относительном (загрузить еще 50%), а так же можно установить опцию "не более/не менее" позволяющую выполнить частичную загрузку и оставить груз на станции несмотря на наличие свободного места в вагонах.

Пока прервусь, завтра допишу
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение vljak » Ср июн 20, 2007 04:23

IMHO знаки в той форме что описаны сейчас я думаю бесполезны.
По моему убеждению знаки должны в большей мере носить рекомендательный характер, т.е. состав на развязке выберет ту ветку, на которой стоит подходящий знак. Но если ветка занята, а существует другой алтернативный путь проезда поезд должен ехать по другой ветке, иначе на развилке можно создать пробку.
Т.е. знаки самый простой путь рассортировать составы по какому либо признаку, но не жестко привязать их маршрут следования к точке на карте - т.е. дать им все таки выбор.
Кстати буржуи уже катали эту идею, и даже очень тепло ее восприняли - читать здесь: http://www.tt-forums.net/viewtopic.php?t=30118
Но если вспомнит ПДД до знаки как раз можно разделить на типы (запрещающие, предписывающие и т.п.) Таким образом при установке знака мы закладываем ему некоторые условия из списка, а в маршрутном листе состава указываем этот знак для того, чтобы достигнув его зоны действия, состав решил для себя дальнейший маршрут следования.
Последний раз редактировалось vljak Ср июн 20, 2007 04:47, всего редактировалось 1 раз.
Вывоз из страны высококлассного программиста есть угроза ее национальной безопасности
vljak
Машинист
Машинист
 
Сообщения: 56
Зарегистрирован: Пт дек 08, 2006 05:33

Сообщение vljak » Ср июн 20, 2007 04:33

Большая проблема сейчас у входных станционных семафоров - пропустить состав в депо вовремя. Часто возникает ситуация, когда все платформы заняты, на светофоре стоит состав и при зеленом сигнале он вместо того чтобы занять побыстрее платформу для погрузки (а это рейтиннг и т.п.) ломится в депо и тратит время... к тому же они на этом пути в депо как правило ломаются задерживая любой выезд со станции погруженных составов.
Приделать бы светофорам стрелки аналогично дорожным :) что на депо у них горел зеленый сигнал при свободном пути
Вывоз из страны высококлассного программиста есть угроза ее национальной безопасности
vljak
Машинист
Машинист
 
Сообщения: 56
Зарегистрирован: Пт дек 08, 2006 05:33

Сообщение vljak » Ср июн 20, 2007 04:45

И Самая Главная Проблема - это чтобы "левые" патчи наконец то пробились в официальную сборку опена, хотя-бы в ночнушку. Не секрет, что игра постоянно исправляется и дополняется (например, в последних сборках начнушки наконец-то стали дополнять и исправлять YAPF) поэтому нашим гуру в разработке просто уже ПОРА выходить в мир, а не делать самому себе сборочку и рубиться в нее.
Тем более что прекрасных идей у нас - вагон и маленькая тележка, чего стоит хотя-бы тот-же АИ-мод от Koser-а... А смысл? подивились и все равно играем в официалку, в основном из-за сетевой игры...
А идеи хиреют. :(
Вывоз из страны высококлассного программиста есть угроза ее национальной безопасности
vljak
Машинист
Машинист
 
Сообщения: 56
Зарегистрирован: Пт дек 08, 2006 05:33

Сообщение КамАЗ » Ср июн 20, 2007 10:40

И так, как работают светофоры на реальной Ж\Д. Предположим три пути сходятся в один. Этот один путь до следующей станции полностью свободен. На одном из трёх путей стоит грузовой поезд. Сзади этого грузовика едет пассажирский. У пассажирских поездов приоритет выше. Диспетчер, который отвечает за этот участок "собирает" пусть для пассажисркого поезда (т.е. переводит стрелку) и зажигает для грузовика красный, а для пассажирского зелёный. После того, как пассажирский поезд проследует первый блок участок, дистпетчер собирёт пусть для грузовика, зажгёт для него зелёный и грузовик поедет в след за пассажирским. Далее такая система (это уже автоматика): если горит зелёный - разрешено движение с установленной скоростью, следующий сигнал либо зелёный, либо жёлтый; если горит жёлтый - разрешено движение с уменьшенной скорость и готовностью остановиться, следующий свотофор красный. Ну, а что означает красный я надеюсь никому объяснять не нужно.
При подъезде поезда к станции машинисту по рации сообщают на какой путь будет принят поезд, придётся ли ему останавиливаться или он просто проследует станцию по главному пути.
Главным путём называют тот путь, который проходит "напрямую" через станцию, т.е. без отклонений по стрелочным переводам.
Если поезд нужно остановить на станции по причине того, что нужно будет пропустить какой-нибудь поезди или первый блок участок занят другим поездом и выходной светофор на станции закрыт, то поезда как правило принимаются на боковые пути и там ждут зелёного сигнала выходного светофора.

З.Ы. Я знаю, что стрелки переводят стелочники, просто диспетчеры за этим следят, поэтому и говорю, что они переводят стрелки)
З.Ы.Ы. Если ещё будут вопросы - задавайте. Что знаю, расскажу)
Изображение
Аватара пользователя
КамАЗ
Диспетчер
Диспетчер
 
Сообщения: 189
Зарегистрирован: Вт июл 25, 2006 23:39
Откуда: Краснодар

Сообщение Tanatos » Ср июн 20, 2007 11:02

Спасибоза информацию. Тогда получается следующая раскладка.

Светофоры в простом варианте отрабатывают простейшую логику, где выбор пути остается за составом. Второй вариант работы светофоров это работа под управлением "Диспетчера", тогда вся логика их работы ложится полностью на него (и не спрашивайте почему светофор красный если путь свободен - так решил Диспетчер!!! :) ).

Простое пересечение - ну тут все понятно, куда поезд захотел туда и уехал, естественно со всеми вытекающиими последствиями

Пересечение с Диспетчером. Диспетчер контролирует работу всех светофоров и стрелок, т.е. именно для него задаются условия какой поезд куда направить и тут уже поезд пойдет туда куда ему скажут. Тогда возможно и знаки не нужны совсем. или комбинация знака и простого пересечения будет альтернативой Диспетчеру с простым алгоритмом аля "быстрые на лево, медленные на право"

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

Как думаете, нужен ли такой элемент управления с широкими возможностями по настройке/программированию скриптами?
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Neko » Ср июн 20, 2007 17:41

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

Сегодня я остановлюсь на главном - на Станции.
Разговор будем вести сразу про три типа станций - тупиковые, Ro-Ro и проходные.
Из существующих средств разводку перед станцией мы можем сделать только на пресигналах, а это значит, что только ОДИН поезд может находится в сигнальном блоке. Это и есть главная проблема сегодняшних станций. Это и есть самое узкое место станции, которая собирает многопарсековые очереди поездов.
И чем больше поездов мы сможем загнать в сигнальный блок с учётом того, что они не будут давить друг другу хвосты, тем ближе мы будем подходить к идеалу - полностью независимого параллельного движения, который реализован в Близнецах, которые на данный момент обеспечивают практически предельную производительность станции, но в них никто не играет. А нам надо сделать станцию с производительностью, максимально приближенной к идеалу, но в которую народ бы согласился играть.

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

Теперь как этот тихий ужас можно реализовать.
Никаких светофоров!!! Они стоят только на границе между магистральной рельсой и предстанционной разводкой рельсов.
Основной управляющей структурой является станция, которой подконтрольно всё пространство до ограничительных светофоров, которые на магистральных рельсях.
Станция управляет всеми поездами, находящимися на её подконтрольной территории и начинает брать под свой контроль поезда, подходящие на одну клетку к соответствующему фонарю.

Не утомились? А ведь всё это я собирался делать, как вдруг идея с Близнецами на череп не упала.


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

Сообщение Neko » Ср июн 20, 2007 18:53

Tanatos писал(а):Как думаете, нужен ли такой элемент управления с широкими возможностями по настройке/программированию скриптами?

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

Сообщение Роман » Ср июн 20, 2007 22:16

Еще можно подумать про приоритеты поездов. Реализовать примерно как в RR Tycoon 3, но не настолько прямолинейно (там поезд с низшим приоритетом становится полупрозрачным и пропускает прямо сквозь себя поезд с более высоким). В нашем случае это можно сделать так: на каких-то отрезках пути есть запасной путь, имеющий, естественно вход и выход на основной. Если за поездом с низким приоритетом, едет поезд с более высоким - то первый поезд при первой возможности уходит на запасной путь и пропускает следующий за ним.
Аватара пользователя
Роман
Начальник станции
Начальник станции
 
Сообщения: 97
Зарегистрирован: Сб июн 03, 2006 00:58

Сообщение КамАЗ » Ср июн 20, 2007 22:25

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

!НОВОЕ!
По каким критериям будут оцениваться идеи? Бред или не бред. Возможно среди всякого бреда программисты и найдут что-то интересное, и что можно будет вполне реализовать.
Последний раз редактировалось КамАЗ Чт июн 21, 2007 04:27, всего редактировалось 1 раз.
Изображение
Аватара пользователя
КамАЗ
Диспетчер
Диспетчер
 
Сообщения: 189
Зарегистрирован: Вт июл 25, 2006 23:39
Откуда: Краснодар

Сообщение Andrey_SPb » Ср июн 20, 2007 22:41

КамАЗ писал(а):возможно сделать так, чтобы поезда, которые должны остановиться на станции занимали только боковые пути (разумеется в том случае, если есть такая возможность?
Да, это было бы интересно. Сделать станцию, скажем, до 6 платформ с возможностью создания межплатформенного промежутка и выставлять приоритеты на платформы. Иметь номера платформ для более точного управления (скажем, пассажирский – на любую платформу, а товарный – только на 3 и 4).

Для повышения реалистичности возможность пользоваться станционным отстойником (тупиком) вместо того,чтобы держать поезда в депо. Тупик (карман) вводить в маршрутный лист.
Andrey_SPb
Машинист
Машинист
 
Сообщения: 41
Зарегистрирован: Пт дек 15, 2006 23:38
Откуда: Санкт-Петербург

След.

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

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

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