Также как и вы, жду - не дождусь, когда же наконец появится аналог PBS на базе YAPF. И видимо, это произойдет ой как нескоро. И окажется, что у нового PBS будет какая-нибудь чудовищная логика работы, непонятная даже самому автору. А ведь все можно сделать проще и элегантней. Предлагаю новую систему сигнализации для OTTD под кодовым названием "автоблокировка", со следующей логикой работы:
1. Все участки ЖД делятся на три класса:
а) однонаправленные линии;
б) двунаправленные линии;
в) перекрестки.
(Деление, надеюсь, интуитивно понятно)
Все светофоры умеют показывать три сигнала:
а) зеленый;
б) желтый;
в) красный.
Но эти сигналы будут означать не то же самое, что на настоящей ЖД!
Зеленый сигнал означает "следующий блок-участок свободен", либо "перекресток полностью свободен". Зеленый сигнал поезд проезжает без остановки.
Желтый означает "следующий блок-участок занят поездом попутного направления", либо "перекресток занят другим маршрутом". Перед желтым сигналом поезд останавливается и ждет, пока он не станет зеленым.
Красный сигнал означает "перегон занят встречным поездом", либо
"все доступные перегоны после перекрестка заняты встречными поездами". В идеале красный сигнал на пути поезда встретиться не может. В реале игрок может развернуть поезд на перегоне, встроить в путь стрелку, и т.д., поэтому пусть он вызывает разворот поезда.
Сигналами полностью управляется поведение поезда на перегоне.
На перекрестке логика должна быть следующая: поежд может въехать не перекресток только при наличии свободного выхода, подходящего маршруту этого поезда, то есть, алгоритм поиска пути находит подходящие варианты дальнейшего движения, а затем среди них ищется свободный, если такового нет, то поезд ждет освобождения не въезжая на перекресток.
Такая сигнализация позволяет организовать согласованное движение по двунаправленной однопутке нескольких поездов (ради чего вся песня-то). Достичь функциональности PBS вроде бы тоже ничего не мешает (это значительный плюс). Небольшая доработка с введением дополнительных сигналов (тогда система станет совсем похожа на настоящую ЖД автоблокировку) позволит сделать постепенную остановку поездов (чтобы он не сразу тормозил перед запрещающим сигналом, а загодя получал информацию, что впереди свободно не два блок-участка, а только один).
Это общая идея нового патча, который я называю "Автоблокировка".
Теперь вопросы.
Ну во-первых, понимаю, что на вопрос "кто осилит такое закодить?" ответ написан на любой коробке с советским конструктором. Да, я готов сделать это сам, но на это уйдет какое-то время. Еще возможно, что я все-таки не осилю, в этом случае я не хочу, чтобы идея пропала ни за грош, поэтому и создаю эту тему Но вдруг кто-то уже занимался подобной штукенцией, тогда возможно мне помогут хотя бы советом. Кстати, вот, сколько разных сигналов может показывать один светофор? (то есть не наколюсь ли я уже на этом моменте?)
Во-вторых. Мне требуется совет профессионалов, куда такую штуку можно прикрутить (в смысле, к какому алгоритму поиска пути)?
Как я понимаю, есть варианты NPF, YAPF и написать свой алгоритм.
Думаю, что моя идея не нова, и если она еще никуда не прикручена, значит что-то мешает? Я конечно сам разберусь, но если мне кто-нибудь подскажет, в какую сторону мне думать не надо, я скажу большое спасибо Писать свой алгоритм поиска пути ой как не хочется, чую я это большущий геморрой.
Опять же, код все время меняется, поэтому патч надо будет все сремя обновлять, поэтому стоит прикручивать к какому-нибудь более-менее постоянному куску кода.
В-третьих. Если вы видите какой-либо изъян в самой логике, если вы видите где можно ее улучшить, если вы знаете, как можно ее дополнить, или вы знаете как сделать еще проще, не стесняйтесь, пишите, я буду только рад.
Если повезет и я осилю эту штуковину, то это будет мой первый патч
Хочется знать, насколько он будет востребован? (стоит ли вообще корпеть?)