Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   TrainZ - Маршруты и сценарии (http://www.trainsim.ru/forum/forumdisplay.php?f=24)
-   -   Система маршрутизации z7-xPath (Система расчёта поездных маршрутов стрелочная будка) (http://www.trainsim.ru/forum/showthread.php?t=11836)

TRam_ 23.09.2010 02:02

Система маршрутизации z7-xPath (Система расчёта поездных маршрутов стрелочная будка)
 
Ну, что такое расчёт поездных маршрутов между светофорами, думаю, каждый знакомый с z6 знает. Кроме того, существует правила ручного создания таких маршрутов - PathRule и ей подобные. Реальные диспетчеры, конечно, строят маршруты между парками (кусками пути, ограниченными светофорами/изостыками/стрелками), но, учитывая что любой парк, из которого возможен приём/отправление поезда, ограничен с 2х сторон светофорами (входные/выходные/маршрутные), в приближении игры будем строить маршруты именно между светофорами.

В данном случае собираюсь сделать гибрид из "архива маршрутов", генерируемого автоматически, и набора правил, позволяющих собирать маршруты (и, возможно, браузера типа z7 ДНЦ ).

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

а) собирает информацию о объектах, окружающих каждую стрелку и определяет положение последней - какой объект в пошёрстном направлении, какой справа, какой слева (без такой базы постройка маршрутов возможна - пример z6 - но тогда теряется перспектива поиска маневровых маршрутов во время игры, когда стрелки переводить нельзя). Кроме того, такая база позволяет помечать стрелки как "занятые", "готовящиеся к постройке по ним маршрута", "свободные" и т.п.
б) собирает информацию о всех поездных светофорах сигнализации z7 на карте (при этом сортирует их по принадлежности к станционному контроллеру, т.е. станции): их имя и тип.
в) согласно указаниям пользователя в меню:[INDENT]1) показывает весь список поездных светофоров выбранной станции
2) сортирует светофоры выбранной станции по названию
3) ищет все возможные маршруты от данного светофора с любыми положениями стрелок (веер графа проходится слева направо) до следующего светофора этой или другой станции (или до первого светофора перегона)
4) показывает список маршрутов для выбранного светофора, с указанием стрелок и положений этих стрелок
[/INDENT]г) может делиться своей базой данных с любым объектом, который это потребует (в будущем такими объектами станут команды машиниста/указания в браузере)


На данный момент "объект" выполнен в виде будки ПОНАБ, потому такое и название темы :). Но в дальнейшем, из-за трудности с поиском этой будки, надо будет переводить всё это в правило, вот это у вас и хочу спросить - надо не надо?

Выглядит сия будочка после инициализации

[URL=http://s003.radikal.ru/i203/1009/24/a79387476c8a.jpg][IMG]http://s003.radikal.ru/i203/1009/24/a79387476c8at.jpg[/IMG][/URL]

Время расчёта всех стрелок карты Москва-Нара - около 30 секунд,
время расчёта ВСЕХ поезных маршрутов Москвы-Киевской, Москвы-Сортировочной и Бекасово-Сортировочного - менее 15 минут. В процессе расчётов имеется возможность определить их текущий процент выполнения (правда с некоторой задержкой)

Damien Zhar 23.09.2010 02:15

Вот товарищ продуктивный нашёлся. А зачем это надо и как этим пользоватся объясни пожалуйста. Да так чтобы и шведам было понятно. И молодец что интерлицо сделал на английском.

Tramwayz 23.09.2010 02:34

Шведы не нужны, я считаю. Оптимизация под шведов уберёт продуктивность и глюков добавит.

Damien Zhar 23.09.2010 02:59

Я не прошу оптимизировать под шведов, просто объяснить зачем ээто. Да открыть возможно код для модификации, там сами разберутся. Но ведь не только заграничным гостям интерестно. Судя по тому что разрабатывает всё товарищ ТРам, то это будет эпично и изменит игру навсегда.

antikiller_bmrf 23.09.2010 09:42

Затем, чтобы не готовить маршруты в редакторе в pathrule или pathcontrol вручную, а сразу иметь список всевозможных маршрутов.
Я думаю будку лучше сделать или невидимой, или со сменой меша (желательно без ковыряния в смр)
Правло не надо.

genesis 23.09.2010 12:15

Нужно добавить возможность удалять ненужные маршруты.

P.S. ПОНАБ к стрелкам отношения не имеет :)

nppinto 23.09.2010 12:49

Очень любопытная и нужная вещица. А как обкатать можно?

Kompozitor 23.09.2010 13:54

[QUOTE=TRam_;203649]вот это у вас и хочу спросить - надо не надо?[/QUOTE]

[B]TRam_[/B], надо, надо, очень!!! Хоть будка, хоть правило. Команды, конечно же, нужны. Только бы не ваять вручную миллионы маршрутов, как в Patch Control!

TRam_ 23.09.2010 14:02

[QUOTE]Нужно добавить возможность удалять ненужные маршруты.[/QUOTE]я думаю, что лучше будет сделать выбор "приоритетного" маршрута, ведущего к необходимому светофору. Остальные будут включаться, если первый занят (при задании маршрута пользователь о них знать ничего не будет).

[QUOTE]P.S. ПОНАБ к стрелкам отношения не имеет[/QUOTE]да я ж знаю, но просто вставил скрипт в первый попавшийся объект. Вот и получилась законспирированный компьютерный центр ЭЦ :).

[QUOTE]А как обкатать можно?[/QUOTE]обкатывать можно будет, когда хоть одно правило к ней сделаю. А то смотреть на путь по стрелкам для каждого светофора карты конечно интересно, но бесполезно.

По поводу описания - будет мануал, а надписи в браузере в дальнейшем будут браться из string-table (чтобы можно было сделать английский/шведский/прочий варианты). Просто в скрипте на русском писать нельзя, потому и английские. Этот код, как и все предыдущие, зашифровывать не собираюсь.

NickLon 23.09.2010 20:40

Бррр, раз десять перечитал сабж, но, по-моему, мало что понял. Тогда начну с того, что и как понял я. Создается некий инструмент, который рассчитывает все возможные маршруты следования от каждого светофора до ближайшего. Как было в z6. Потом, с помощью командной строки даётся команда, типа "проехать от этого светофора до вооон того". И чтобы выполнить эту команду сей инструмент из рассчитанных маршрутов соберёт тот, по которому и поедет ПС. Тут разные вариации могут быть, как ехать и какой маршрут собрать (занят путь, блокирована стрелка etc.) То есть получается, что сей инструмент просто заменяет уже существующие Path Rule и Path Control. Я правильно сие всё понял?

genesis 23.09.2010 20:42

Будут откровенно мусорные маршруты, которые пройдут по десяткам съездов, которые быть может нужны другим поездам. Надо, надо удалять.

NickLon 23.09.2010 21:01

[QUOTE=genesis;203795]Будут откровенно мусорные маршруты, которые пройдут по десяткам съездов, которые быть может нужны другим поездам. Надо, надо удалять.[/QUOTE]
А как определить заранее, какой "мусорный" маршрут, а какой может ещё пригодиться?.. К примеру, в Path Control маршруты можно собирать в группы. И собираться они будут, в зависимости от занятости пути, по порядку, начиная с первого. Нечто подобное можно и здесь реализовать...
Но я пока жду ответ на свой предыдущий пост.

TRam_ 23.09.2010 21:28

По поводу команд... Мне кое-что в них не нравится: если поезд едет по управлением игрока, то при задании ему команды начинаются глюки: тормоз включается, поезд тормозится и т.п. Поэтому начну, так же как и varz, с браузера. Но команды обязательно будут, но уже во вторую очередь, так как не совсем пока понимаю как их делать. Кроме того, если в меню надо заранее загружать все объекты, то... Боюсь 20 000 маршрутов карты Москва-Нара трейнз может не потянуть


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

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

При этом маршрут собираюсь сделать с динамической разборкой, т.е. как только поезд съезжает со стрелки, маршрут над стрелкой разбирается.

Но ещё надо будет тестить неоткрытие сигнализации и Х-стрелки (ибо данная система ни первого, ни второго не видит).

[QUOTE]И собираться они будут, в зависимости от занятости пути, по порядку, начиная с первого.[/QUOTE]не знаю, хватит ли мне сил сделать систему упорядочивания маршрутов, новыбор "лучшего из возможных" при настройке обязательно сделаю. Ибо если часть горловины уже занята, то нет никакой гарантии, что удалённый нами маршрут будет тем единственным, который ведёт к нужному пути.

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

TRam_ 23.09.2010 21:44

Да, название придумал... "Система z7-xPath"

CFM 23.09.2010 21:45

1. Как игрой определяются основные/вариантные маршруты (длина)?
2. Будут ли маршруты разделены по этим критериям?
3. Выбирая маршрут между светофорами игра будет стараться, по возможности, выбрать основной маршрут, оставив вариантные "про запас"?
4. Можно ли будет вручную редактировать маршруты?
5. Задавать "от светофора к светофору" можно будет только элементарный или сложный маршрут тоже?
6. Было бы хорошо для сборки маршрута иметь возможность вводить имена двух светофоров в окошки.
7. Также было бы необходимо размыкать (не разбирать, т.к. стрелки в реале остаются в последнем заданном положении) маршрут после прохода поезда, либо отмены маршрута. Это необходимо для разблокирования стрелок и перекрытия светофора - чтобы разрешением для открытия был только замкнутый и свободный маршрут (если поездной), а не наличие перед ним машиниста и т.д.
8. Что с просчётом маневровых маршрутов?

TRam_ 23.09.2010 22:20

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

[QUOTE]3. Выбирая маршрут между светофорами игра будет стараться, по возможности, выбрать основной маршрут, оставив вариантные "про запас"?[/QUOTE]да, именно это и хотел сказать

[QUOTE]4. Можно ли будет вручную редактировать маршруты?[/QUOTE]Редактировать - нет. А вот добавлять новые постараюсь сделать...

[QUOTE]5. Задавать "от светофора к светофору" можно будет только элементарный или сложный маршрут тоже?[/QUOTE]пока элементарный. В дальнейшем, если хватит времени и знаний, может попытаюсь сделать и составные маршруты в пределах одной станции

[QUOTE]7. Также было бы необходимо размыкать (не разбирать, т.к. стрелки в реале остаются в последнем заданном положении) маршрут после прохода поезда, либо отмены маршрута.[/QUOTE]вообще собираюсь все светофоры z7 в начале сессии переключать в "преварительно-закрытое" состояние. Как удерживать их в этом состоянии, пока думаю... Вероятно после съезда поезда с очередной стрелки маршрута, если с того светофора не построен новый маршрут(так что маршрутам будет присваиваться "порядковый номер создания", уникальный для каждой станции), будет выдаваться сообщение для перевода светофора в "преварительно-закрытое" состояние. Ну и "стряхивание" стрелки после съезда поезда тоже сделаю.

Да, сделаю возможность строить маршрут как с блокировкой стрелок, так и без неё.

[QUOTE]8. Что с просчётом маневровых маршрутов?[/QUOTE]если до них доберусь, то будут рассчитываться по тем же алгоритмам, что и поездные, но уже в процессе игры (в момент задания).

[QUOTE]6. Было бы хорошо для сборки маршрута иметь возможность вводить имена двух светофоров в окошки.[/QUOTE]движком трс в игровом режиме нельзя реализовать ввод с клавиатуры... Разве что с "оконной клавиатуры", но это уже мазохизм. Тем более пока что можно будет строить только элементарные маршруты.

NickLon 23.09.2010 22:39

[QUOTE=TRam_;203812]По поводу команд... Мне кое-что в них не нравится: если поезд едет по управлением игрока, то при задании ему команды начинаются глюки: тормоз включается, поезд тормозится и т.п.
[/QUOTE]
Не во всех командах. Надо будет порыться в в своей памяти и "истории моих сессий". Да, многие, в т.ч. и команда Path Control именно так и делает и ещё реверс в нейтралку выбивает. Но я не склонен считать это чистейшим глюком: странно, что "живой машинист" прибегает к командам ботам предназначенным.
[QUOTE] Поэтому начну, так же как и varz, с браузера...
... Нажимая на название светофора, получаем список всех светофоров, до которых возможно проложить маршрут. Нажимая на светофор из списка, мы заносим маршрут в стек заданных (будет находится под списком светофоров, для каждой станции свой), с иникацией "готов", "занят" и кнопкой "разобрать".
[/QUOTE]
Так, я не пойму, ты готовишь сие для "машиниста" или для "диспетчера"? Ты пробовал в сессии пользоваться браузером, будучи "машинистом" (как меня коробит это слово, лучше - "механик")? У механика перед глазами в управлении контроллер, тормозные краны, отбой РБ, тифон (если помощник спит или отлучился), скоростемер (увы с КЛУБом вживую не знаком), лист предупреждений (скоростных) и таблица скоростей по горловинам и путям по станциям. Я сейчас опускаю тумблеры и переключатели, поскольку когда ты несешься на скорости 100 - 120 км.ч. всё уже включено и всё должно работать.
Так и в симуляторе должно быть! А как ты себе представляешь: "открыть перед 4-м проходным в четном (при 4АБ) браузер, найти станцию, к которой я приближаюсь, отыскать нужную группу маршрутов (я думаю, без групп ты не обойдешься, иначе выеденного яйца шедевр стоить не будет) и наконец-то в неё ткнуть мышью!? Запипецки - а я уже входной на красный проскакиваю тем временем. НЕ, это не реализация...
Ты предоставил своё правило LeaveSignal, ну, не помню, как оно точно называется, но ты понял о чем речь. Так вот, там есть опции Locked/Unlocked (касаемо стрелок). Когда поставил Locked, стрелки так и остались в том положении, в котором я по ним проехал. Поставил Unlocked - стрелку можно перевести в любой момент времени чем угодно, хоть вручную. Ни первое ни второе не приемлемо. Но эта недоработка меня навеяла на мысль. Что если Locked - это будет означать, что стрелки блокируются до проследования последней моей тележки, и эту команду я даю тогда, когда уже никаких маневров. А Unlocked - это когда я заранее "наметил" себе маршрут, но там могут производится маневры, отправления и т.д., но "по умолчанию" маршрут будет собран именно в Unlocked-варианте. Ну и разумеется, все разбирается и разблокируется, после проследования, действительно по умолчанию, то есть по прямым.
[QUOTE]
Кроме того, браузер очень полезен для тестирования сборки маршрутов.
[/QUOTE]
Не более того. Из-за него ломать копья?.. Я имею вид, функциональность и т.д.
[QUOTE]
Нажимая на название светофора, получаем список всех светофоров, до которых возможно проложить маршрут. Нажимая на светофор из списка, мы заносим маршрут в стек заданных (будет находится под списком светофоров, для каждой станции свой), с иникацией "готов", "занят" и кнопкой "разобрать".
[/QUOTE]
Единственное здесь цельное я увидел "кнопка "разобрать". Вот это то, чего нет НИ В ДНОМ, мне известном, по крайней мере, генераторе маршрутов. Для чего - чуть-чуть ниже.
[QUOTE]
При этом маршрут собираюсь сделать с динамической разборкой, т.е. как только поезд съезжает со стрелки, маршрут над стрелкой разбирается.
[/QUOTE]
Ну разумеется! Если уж это велосипед, то он хотя бы с педалями должен бы быть.
[QUOTE]
не знаю, хватит ли мне сил сделать систему упорядочивания маршрутов, новыбор "лучшего из возможных" при настройке обязательно сделаю. Ибо если часть горловины уже занята, то нет никакой гарантии, что удалённый нами маршрут будет тем единственным, который ведёт к нужному пути.
[/QUOTE]
А что такое "лучшее из возможных"? Если ты это сделаешь, то ты можешь претендовать на место ведущего программиста где-нить в Силиконовой долине. Не заморачивайся по этому поводу. Это уже на грани искусственного интеллекта. Просто по порядку... А вот, а вот... а вот... Хм, а вот порядок... А вот по поводу порядка ничего умнее, чем перебор по порядку, заданным пользователем пока не придумали в программировании, по-моему.
P.S. TRam, не обижайся, пожалуйста, если мои высказывания тебе покажутся слишком резкими. Просто если что-то меня действительно заинтересовало и в моих глазах это имеет перспективы, а всё, опять же, по субъективному мнению, идёт не так, то вмешиваюсь. В остальных случаях - просто прохожу мимо.
Удачи в разработке! Но есть ещё одна тема для "гневных вопросов". Но пусть это уже будет отдельный пост. А то ещё скажешь "ниасилил".:D

CFM 23.09.2010 22:56

[QUOTE]Но если будете настаивать, могу добавить прописывание приоритета каждому маршруту. Автоматике это доверять нельзя: только человек знает где меньше отклонений, где лучше путь, и т.п.[/QUOTE]
Да, это нужно. Думаю, автоматика может определять вариантность (второстепенность) маршрута по его длине - чем длиннее маршрут между св-рами, тем он "вариантней" :)

[QUOTE]вообще собираюсь все светофоры z7 в начале сессии переключать в "преварительно-закрытое" состояние. Как удерживать их в этом состоянии, пока думаю... Вероятно после съезда поезда с очередной стрелки маршрута, если с того светофора не построен новый маршрут(так что маршрутам будет присваиваться "порядковый номер создания", уникальный для каждой станции), будет выдаваться сообщение для перевода светофора в "преварительно-закрытое" состояние. Ну и "стряхивание" стрелки после съезда поезда тоже сделаю.[/QUOTE]
Ага, и пусть они не смотрят на наличие машиниста, а то вагонами вперёд или управлением назад нормально не поедешь. Правильно, если светофор не входит в маршрут, пусть краснеет или синеет, а то вдруг стрелки лягут так, что впереди окажется его коллега и светофор откроется, когда не надо.

TRam_ 23.09.2010 23:01

[QUOTE]Так и в симуляторе должно быть! А как ты себе представляешь: "открыть перед 4-м проходным в четном (при 4АБ) браузер, найти станцию, к которой я приближаюсь, отыскать нужную группу маршрутов (я думаю, без групп ты не обойдешься, иначе выеденного яйца шедевр стоить не будет) и наконец-то в неё ткнуть мышью!? Запипецки - а я уже входной на красный проскакиваю тем временем. НЕ, это не реализация...[/QUOTE]или так: накидал в стек маршрутов, и едешь. Ведь один светофор может открывать только один маршрут, и , пока хвост поезда не проедет первую стрелку от этого светофора, остальные маршруты с этого светофора не организуются. Система вполне неплохо работает в чесшском симуляторе диспетчера. И кнопка "разобрать" там тоже есть.

[QUOTE]А вот по поводу порядка ничего умнее, чем перебор по порядку, заданным пользователем пока не придумали в программировании, по-моему.[/QUOTE]хорошо, уговорили. Будет указание циферки приоритета.

[QUOTE]А вот по поводу порядка ничего умнее, чем перебор по порядку, заданным пользователем пока не придумали в программировании, по-моему.[/QUOTE]правило "задать маршрут" могу сделать за оставшийся вечер, скинуть тебе на тест. Это самое простое, что только можно сделать. Другое дело, что это всё "задаётся заранее", я же, как и GSTrainz, поклонник динамического и нестационарного, того, чем можно управлять.

[QUOTE]Ты предоставил своё правило LeaveSignal, ну, не помню, как оно точно называется, но ты понял о чем речь.[/QUOTE]оно вообще-то только запускает дефолтное правило SetJunctions. В SetJunctions, соглашусь, выставил в Locked, чтобы пользователь случайно не задел стрелку.

[QUOTE]Думаю, автоматика может определять вариантность (второстепенность) маршрута по его длине - чем длиннее маршрут между св-рами, тем он "вариантней"[/QUOTE]могу сделать опцию перерасчёта длин маршрутов. Но, раз уж заказали, вначале реализую приоритеты.

CFM 23.09.2010 23:08

Нужно иметь возможность управлять сборкой маршрутов правилом [B]"Check trackside"[/B].

TRam_ 23.09.2010 23:13

[QUOTE]Нужно иметь возможность управлять сборкой маршрутов правилом "Check trackside".[/QUOTE]лично я бы сделал ещё и "Check Signal", ибо с z7 его не хватает. Кстати упомянутое LeaveSignal есть "1/3" такого правила - срабатывает при покидании светофора.

CFM 23.09.2010 23:24

Да, [B]"Check Signal"[/B] давно заждались :)

TRam_ 23.09.2010 23:55

Так что "заждались"? Или всем требуется проверка только на "занятие" поездом светофора? Мне вполне хватало правила, срабатывающего на освобождение поездом светофора, т.е. LeaveSignal . Или его смотрели но не дождались?

NickLon 23.09.2010 23:57

[QUOTE=TRam_;203830]или так: накидал в стек маршрутов, и едешь. Ведь один светофор может открывать только один маршрут, и , пока хвост поезда не проедет первую стрелку от этого светофора, остальные маршруты с этого светофора не организуются.
[/QUOTE]
Как вариант. Но только не "накидал в стек маршрутов", а выбрал "я еду к вооон тому проходному через эту станцию", транзитом то бишь. И еду. А по поводу "один светофор может открыть только один маршрут" - да, но в каждый момент времени. А момент времени может исчисляться миллисекундами. Посмотри на то, как ведёт себя Path Control и входной, когда мне по замыслу нужно уйти влево на станцию (на двухпутном перегоне), а имеется встречный, который заблокировал уже вторую стрелку. А!? И входной даёт то запрещающий, то зелёный (аж даже "разрешающим" его назвать нельзя - езжай на все 4 стороны, называется, если сможешь). Вот это нужно однозначно блокировать! (Я уже немного подхожу к "пожеланиям" ;) В сторону: на чехов не ровняйся. Да вообще ни на кого не ровняйся кроме как на бывшее МПС - такой сети в мире просто не существует. Французы очень близки были, но "ниасилили"...:D
[QUOTE]
правило "задать маршрут" могу сделать за оставшийся вечер, скинуть тебе на тест. Это самое простое, что только можно сделать. Другое дело, что это всё "задаётся заранее", я же, как и GSTrainz, поклонник динамического и нестационарного, того, чем можно управлять.
[/QUOTE]
Вот здесь я "ниасилил"... Что значит "правило задать маршрут"? Здесь я не понял, что ты имел ввиду... И ещё, динамическое и нестационарное на железнодорожном транспорте, называется - хаос!
Пока так... Но в сторону Главного пока ещё только посмотрели...;)

genesis 24.09.2010 00:03

Too long, don't read
 
[QUOTE=TRam_;203825]повторюсь, обязательно будет возможность выбрать "самый удобный", в остальных случаях будет искаться первый из тех, который был получен в процессе просчёта (да, в процессе просчёта вначале определяются самые "левые" маршруты, так что по тупикам система в общем-то и не должна вести: у нас как-никак правостороннее движение, всё второстепенное справа). Но если будете настаивать, могу добавить прописывание приоритета каждому маршруту. Автоматике это доверять нельзя: только человек знает где меньше отклонений, где лучше путь, и т.п.[/QUOTE]
Да-да-да, приоритеты и возможность вообще удалить ненужный мусор.

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

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

А теперь перспективы платформы:

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

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

Для примера, рассмотрим процесс формирования состава на сортировке.
Готовые составы из парка С должны быть отправлены в парк О, где к ним прицепляется локомотив. Казалось бы, трудная задача, но пойдем по порядку. Итак, состав на пути Х парка С. Система формирования (назовем ее по аналогии автоДСПГ) запрашивает свободные вытяжные маневровые локомотивы, задает им маршрут к составу. Далее строит ему маршрут на нужный путь парка О. Затем запрашивает свободные локомотивы в депо и организует прицепку к составу. Все, поезд передается в руки автоДСП, его работа уже полностью описана.
Как сортировать составы на горке? Каждый вагон имеет пункт назначения. Сборный или участковый собирает вагоны с ГР промежуточных станций, маневровые — с ПП предприятий, и ГР и предприятия назначают каждому вагону пункт назначения (а если вагон разгружен — то он передается в компетенцию системы распределения вагонов, назовем ее автоГрузовойДиспетчер, который отправляет вагоны под погрузку на другие предприятия). Поступая в приемный парк, состав переходит в компетенцию автоДСПГ, который сортирует вагоны по пункту назначения на нужные пути.
Как выдавать локомотив и откуда их брать? На каждой станции формирования есть депо, где есть определенный запас тяги. Необходимое количество локов в депо поддерживает локомотивный диспетчер. Анализируя расписание и количество локов в депо он организует резервные, сплотки от туда, где избыток, туда, где недостаток. Отправляемой сплотке выдается маршрут, и она становится обычным поездом в ведении автоДСП.

Несмотря на общую сложность системы, декомпозиция позволяет большой пирог разделить на маленькие кусочки, к каждому из которых назначается ответственный. Каждый объект отвечает за свою четко ограниченную область, применяя при этом строго ограниченный набор операций. В совокупности получается полноценный ЖД-комплекс. Это называется объектно-ориентированным подходом к моделированию.

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

Итак, для тех кто еще не врубился, здесь описана полноценная АСУЖТ с интерактивным миром.
- Мир включает в себя предприятия, города и порталы. Они определяют вагонопотоки. Вагонопотоки, являются входными данными в нашей задаче.
- Вагонопотоки по всей карте обрабатывает грузовой диспетчер. Он отслеживает события прибытия грузовых поездов/вагонов в пункт назначения, устанавливая пункт назначения разгруженных вагонов к погрузчикам.
- Такие вагоны подбираются сборными/участковыми, которые организуются участковыми или сортировочными станциями. Местный автоДСПГ сортирует их, готовые составы выставляет в отправочные парки, отдавая их в руки автоДСП.
- Пассажирские поезда ходят согласно расписанию, с достаточно постоянной составностью, поэтому глобальный диспетчер им не нужен. Лишь начальник пассажирской технической станции вносит свою лепту в их организацию, формируя составы нужной вместимости (исходя из пассажиропотока, который определяет сколько пассов хотят из А попасть в Б). Также он организует выставку готовых составов на пассажирскую станцию согласно расписанию, отдавая поезд в компетенцию автоДСП.
- Стабильный подход локомотивов обеспечивается локомотивным диспетчером, который из мест с избытком отправляет сплотки в места с недостатком.
- Ну и последнее звено — машинисты. Машинист здесь представляет собой методы ведения поездов различных типов, операции сцепки, расцепки, надвига и т.п. Получает указания он от ДСП. Одним из машинистов может стать...
- Игрок, впрочем, игрок может стать кем угодно — глобальным диспетчером, отвечающим за распределение ресурсов по дороге, местным начальником, отвечающим за раздельный пункт — станцию, горку, депо, получающем приказы диспетчеров (ДНЦ, кстати, здесь оказывается ненужным — его функции реализовнаны двухуровневым резервированием маршрутов. Хотя он хорошо сработает в тех случаях, когда существует узел или сложный участок), да хоть стрелочником, для этого Владимиру потребуется лишь сделать так, чтобы его пост лишь отдавал приказы, а стрелки переводил игрок :)
- Ну и на выходе получается — потоки + расписание = движение.

Система полностью расширяема. Хотите перекрытия путей и ремонтных работ — реализуем диспетчера ремонта, который иногда организует окна и выезд поездов с ПМС :) И т.д.

Это все реализует мечту НикЛона — автоматическая бесконечная сессия с нелинейным сюжетом :)
Или заядлого машиниста: загрузить сессию, получить случайный поезд с случайным маршрутом и, опять же, нелинейным сюжетом.
Или автодиспетчер для МП. Или пульт ДСП. Много всего, короче.
Я уже джва года хочу такую игру^W^W обдумываю этот план :)

TRam_ 24.09.2010 00:23

так, по порядку...

1) маршруты пока элементарные, "с перегона на путь", "с пути на путь" и "с пути на перегон".

2) готовлю систему с определением и изменением направления перегона. В принципе, способ нашёл, надо тестировать.

3)[QUOTE]а имеется встречный, который заблокировал уже вторую стрелку.[/QUOTE]стрелки НИКТО не переводит. Все проверки идут по базе.


[QUOTE]И ещё, динамическое и нестационарное на железнодорожном транспорте, называется - хаос![/QUOTE]тем не менее работа диспетчера в случае нештатных ситуаций именно так и проходит.

NickLon 24.09.2010 00:33

[QUOTE=genesis;203850]
Это все реализует мечту НикЛона — автоматическая бесконечная сессия с нелинейным сюжетом :)
[/QUOTE]
"Матiрь Божааа!" (с) "Студия 95-й квартал" Как сказали бы на Украине. Ты что это придумал!? Ну-ка быстренько захлопни толстенную книгу указаний и внутренних инструкций МПС!:D
Курочка клюет по зернышку. И здесь мы обсуждаем и обмениваемся мнениями о том, как построить маршрутизацию в TRS от Auran'а. А то, что ты описал (представляешь, даже "осилил") относится уже к "высшему разуму программистов, которые каждый день видят кенгуру".
А по существу... Давай после. Мне очень понравилась твоя идея с приоритетами, но ты и сам сказал, что их-то три. И ни какие "птички" и "галочки" не помогут в правилах сие изменить.
А что касается бесконечной сессии с нелинейным сюжетом, так это не мечта. Это я реализовал ещё в Т6. Только вот, упал он (Т6) когда я 10-й поезд запустил...

TRam_ 24.09.2010 00:40

[QUOTE]Что касается сборки маршрутов, предлагаю сделать это с помощью двухуровневого резервирвания, суть токова:
Каждый поезд, следующий в пункт назначения, имеет перед собой две зоны резервации, в зависимости от типа и приоритета поезда.
Первая зона простирается на достаточно большое расстояние и показывает планируемый для поезда маршрут. Если другой поезд тоже потребует резервирования маршрута конфликтующего с первым, право быть первым дается поезду с высшим приоритетом.
Вторая зона резервации простирается на меньшее расстояние (я предполагаю 4-6 БУ), эта резервация в обычных условиях гарантированно принадлежит данному поезду и по ней уже собираются маршруты.[/QUOTE]для однопутного перегона выгоднее схема "с 2х других станций на станцию отправляется такое количество составов, чтобы на одном из перегонов число составов было равно числу свободных путей на станции минус один". Для двухпутного перегона вовсе ограничений не вижу.

Вывод - твоя система, конечно, крута, но обеспечивает 15-30% пропускной способности магистрали. Потому никому не нужна.

Из-за тех самых "зон пустых путей".

Но моя система пока не сможет делать такого суперского моделирования. Она, по-старинке, сможет видеть только в пределах 1ой станции, так что "интегрально" создавать движение составов не сможет.

NickLon 24.09.2010 00:52

[QUOTE=TRam_;203852]так, по порядку...

1) маршруты пока элементарные, "с перегона на путь", "с пути на путь" и "с пути на перегон".
[/QUOTE]
Ну, курочка по зернышку клюет... Ой, я повторяюсь, по-моему...
Самое главное, а вот тут уже не просто "посмотрели в сторону Главного", а уже что-то наклевывается - на какой перегон ты будешь собирать маршрут: неправильный, однопутный занятый (встречное направление), или по правильному уходишь... (во втором пункте продолжу...)
[QUOTE]
2) готовлю систему с определением и изменением направления перегона. В принципе, способ нашёл, надо тестировать.
[/QUOTE]
ООООО!!! Ну наконец-то! Определение и дальнейшие действия требуются! А вовсе не изменения! Нет, изменения тоже нужны, но, вроде, z7 с этим справляется. Нужно знать: собрать маршрут на отправление или не собрать! Вот в чём вопрос. А всё остальное уже давным давно изобретено.
[QUOTE]
3)стрелки НИКТО не переводит. Все проверки идут по базе.
[/QUOTE]
Хм, "переведи..." (с) "Москва слезам не верит"

genesis 24.09.2010 01:15

[QUOTE=TRam_;203856]для однопутного перегона выгоднее схема "с 2х других станций на станцию отправляется такое количество составов, чтобы на одном из перегонов число составов было равно числу свободных путей на станции минус один". Для двухпутного перегона вовсе ограничений не вижу.

Вывод - твоя система, конечно, крута, но обеспечивает 15-30% пропускной способности магистрали. Потому никому не нужна.

Из-за тех самых "зон пустых путей".

Но моя система пока не сможет делать такого суперского моделирования. Она, по-старинке, сможет видеть только в пределах 1ой станции, так что "интегрально" создавать движение составов не сможет.[/QUOTE]
Я так понимаю, что ты говоришь о зоне №1, так вот, зона №1 не запрещает никаким поездам двигаться/составлять доступные маршруты. Если в одну сторону на перегон отправляется пакет, то каждый поезд будет отправляться как только он получит разрешающий на выходном. В случае поездов равного приоритета зоны вообще не влияют на результат. Влиять будет лишь свободность путей. А вот в случае поездов разных приоритетов менее приоритетному поезду придется уступить дорогу на ближайшем разъезде/ОбП.
Кстати, деталь — при отправлении на однопутный перегон зона №1 должна как минимум простираться до следующей станции, чтобы гарантировать, что если поезд с высоким приоритетом ожидает перегона, поезд низкого не смог вступить туда вслед за уже находящимся там.

НикЛон: расширенный приоритет можно хранить в любом внешнем месте. РаннингНамбер можно сделать номером поезда, который будет ключом к таблице данных поезда (мини-вариант системы расписаний) где и указывать нормальный приоритет.

TRam_ 24.09.2010 01:43

[QUOTE]Хм, "переведи..." (с) "Москва слезам не верит"[/QUOTE]имеется глобальная база данных, в которых стрелка может быть помечена либо как занятая, либо как свободная. Сборка маршрута по идее должна проходить так (заодно и для себя напишу)

1) из базы данных "маршруты светофора N станции Х" создаётся подбаза "маршруты от светофора N до светофора K по станции Х" или "маршруты от светофора N станции Х до светофора K по станции Х2". Сортируется по приоритетам, если таковые были введены.
2) если имеется первый вариант, то:[INDENT]а)если заданный номер маршрута больше, чем маршрутов всего, ждём 15 секунд, затем смотрим маршрут №1, далее в одном потоке (т.е. для виртуальной машины скриптов "линейным алгоритмом") проходит проверка занятости стрелок
б) проверяется следующая стрелка за тем светофором, занята ли она, и если занята, то не направлена ли на нас. Если направлена на нас и занята, увеличиваем номер маршрута на 1, переходим к пункту а)
в) Отсылаем светофору сообщение на предоткрытие. Ждём 0.5 секунды. После ожидания проверяем положения стрелок. Если они были переведены, увеличиваем номер маршрута на 1, переходим к пункту а)
г) Проверяем показание светофора. Если оно красное, убираем метки о занятости ,увеличиваем номер маршрута переходим к пункту а)
[/INDENT]Если второй вариант:[INDENT]а) проверяется направление перегона по тегу во входном светофоре следующей станции
б) если он повёрнут не на нас, посылаем сообщение о переключении перегона. Ждём подтверждения о его переключении, если такового не приходит за 0.4 секунды, ждём 5 минут, и переходим к пункту а)
в) проверяем положение стрелок, если все свободны, вписываем их занятость, ждём 0.5 секунд. Если не свободны, переходим на следующий номер маршрута, и к пункту а)
г) проверяем положение стрелок (если что-то случилось с положением, след. номер, переход к а), если ничего не случилось, переводим стрелки, открываем светофор, ждём 1 секунду
д) если светофор не открывается, убираем метки о занятости, переходим к следующему маршруту
[/INDENT]
далее...

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

Вроде так...


[QUOTE]Если в одну сторону на перегон отправляется пакет[/QUOTE]с другого конца карты тоже может отправится другой пакет (причём не выполнено правило о прохождении пакета), то на одной из станций вполне может случиться коллизия.
Если же попытаться расталкивать составы по станциям, рассчитывая им пути на N станций вперёд, то вероятность коллизий в конце концов только увеличивается (из-за уменьшения количества свободных путей). Вывод: для однопутки наилучшее решение "пакет туда-пакет обратно", причём навстречу пакетам продвигаются по 1 поезду на перегон, с долгими ожиданиями. И размеры пакетов вполне можно оптимально рассчитывать. (не зря американцы делают сверхдлинные составы - у них навстречу пакетам почти нет движения)

TRam_ 24.09.2010 02:04

[QUOTE]б) проверяется следующая стрелка за тем светофором, занята ли она, и если занята, то не направлена ли на нас. Если направлена на нас и занята, увеличиваем номер маршрута на 1, переходим к пункту а)[/QUOTE]тут неверно: ждём 5 минут. Ибо коллизия.

[QUOTE]в) Отсылаем светофору сообщение на предоткрытие. [/QUOTE]перед этим переведя стрелки, естественно.

Combine 24.09.2010 10:10

[QUOTE]Too long, don't read[/QUOTE] You, sir, are fucking awesome!

[QUOTE]Давай после. Мне очень понравилась твоя идея с приоритетами, но ты и сам сказал, что их-то три. И ни какие "птички" и "галочки" не помогут в правилах сие изменить.[/QUOTE] Их примерно 4294967296.

[QUOTE]Только вот, упал он (Т6) когда я 10-й поезд запустил...[/QUOTE] Ой не знаю... У меня в метро целая линия в 30км длиной заполнялась выскакивающими из порталов поездами. Следовали с интервалом полторы-две минуты. Количество поездов посчитай сам. :)

[QUOTE]РаннингНамбер можно сделать номером поезда, который будет ключом к таблице данных поезда (мини-вариант системы расписаний) где и указывать нормальный приоритет.[/QUOTE] Поддерживаю. RunningNumber я уже использую для хранения номера поезда в моем концепте "говорящего" ДСП.

По архитектуре: никак будок. Сделай его в виде правила.

NickLon 24.09.2010 13:52

[QUOTE=TRam_;203867]имеется глобальная база данных, в которых стрелка может быть помечена либо как занятая, либо как свободная. Сборка маршрута по идее должна проходить так (заодно и для себя напишу)

1) ...
2) ...
и т.д.
[/QUOTE]
Ой, ё! А зачем так сложно то? Чем сложнее, тем большая вероятность всяких глюков. Не проще ли сделать примерно так.
У светофоров расчитаны маршруты, так? У нас есть всего лишь несколько вариантов поведения:
1) прибытие на станцию, зная на какой путь;
2) прибытие на станцию на путь из группы (нам всё равно куда прибывать, лишь бы грузовым не залезть в пассажирский парк, а пассажирским - в грузовой);
3) отправление со станции;
4) маневры.
По первому случаю. Отыскиваем тот самый маршрут, который соответствует заданному направлению Н - Н1. Проверяем стрелки между этимми светофорами на занятость. Хотя бы одна занята, тогда Н - красный, стоим, курим бамбук до следующей проверки. Все стрелки свободны и открылся светофор (путь не занят другим поездом) - welcome to Н1!
По второму случаю. Хватаем первый маршрут из группы (это должна быть команда такая "собрать маршрут из группы"). Далее то же, что и в первом случае, только бамбук будем курить, когда проверим последний маршрут. Через время опять по кругу.
Третье. С отправлением проще. Там единственный вариант и его проверяем до умопомрачения. Но! Если это однопутка, или идём на неправильный, то тоже, что у тебя во втором варианте по пунктам а), б) и в).
Маневры - это отдельная эпопея там черт ногу может сломать, так что об этом можно как-нить отдельно.
Но! Меня смущают эти 5 минут везде. С одной стороны вроде и не надо бы особо часто ломиться в закрытую дверь, а с другой стороны хвост встречного спустя 5 секунд после проверки прошмыгнул обратный ему выходной (или когда входной проезжает перегон считается свободным?), а мы продолжаем ещё целых 5 минут курить бамбук. Думаю, оптимально будет 1-2 минуты.
P.S. Выражение "курить бамбук" применяю исключительно к железнодорожному транспорту. Ехал как-то на электричке в Саратовской губернии. На станции - остановка. Только остановился, открыл двери и тут по громкой связи:"Стоим, курим бамбук. Минут 20, выходной - закрыт!":D

TRam_ 24.09.2010 14:10

[QUOTE]Все стрелки свободны и открылся светофор (путь не занят другим поездом) - welcome to Н1![/QUOTE]и если хотя бы одна из этих стрелок Х-овая, и по другой её стороне проложен маршрут, то стрелки на нашем маршруте переведутся через 0.5 секунд, и курить бамбук на прийдётся намного больше часа, т.к. фактически маршрут собран (за исключением той стрелки), но светофор "чё-то не открывается". Аналогично с с маркерами пересечений. Вроде и стрелки свободны, ан нет: светофор закрыт и открываться не хочет.

По поводу групп...Ты имеешь в виду "если маршрут на один путь (станции/перегона) не собрался, собираем на другой"? Возникает вопрос: а в следующей команде как мы будем узнавать, с какого пути маршрут отправления/приёма создавать? Или правило "поискать маршрут отправления для поезда ** по станции ***Х " тоже надо?

[QUOTE]Но! Меня смущают эти 5 минут везде. С одной стороны вроде и не надо бы особо часто ломиться в закрытую дверь, а с другой стороны хвост встречного спустя 5 секунд после проверки прошмыгнул обратный ему выходной (или когда входной проезжает перегон считается свободным?)[/QUOTE]можно не через 5 минут, а после очередного освобождения стрелки поездом. Тут без разницы.

NickLon 24.09.2010 17:01

[QUOTE=TRam_;203960]и если хотя бы одна из этих стрелок Х-овая, и по другой её стороне проложен маршрут, то стрелки на нашем маршруте переведутся через 0.5 секунд, и курить бамбук на прийдётся намного больше часа, т.к. фактически маршрут собран (за исключением той стрелки), но светофор "чё-то не открывается". Аналогично с с маркерами пересечений. Вроде и стрелки свободны, ан нет: светофор закрыт и открываться не хочет.
[/QUOTE]
Хм, действительно. А как правило "видит" светофоры? Светофоры видят маркеры. Значит, по идее, и правило может "увидеть" на пути маркер как объект и почитать его состояние, так же, как читаем состояние стрелки. Но тогда на х-овой стрелке обязательно надо ставить х-маркеры. Хотя их вроде всегда нужно ставить, но я пользуюсь Path Control, а там они явно задаются при создании маршрута, вручную.
[QUOTE]
По поводу групп...Ты имеешь в виду "если маршрут на один путь (станции/перегона) не собрался, собираем на другой"? Возникает вопрос: а в следующей команде как мы будем узнавать, с какого пути маршрут отправления/приёма создавать? Или правило "поискать маршрут отправления для поезда ** по станции ***Х " тоже надо?

можно не через 5 минут, а после очередного освобождения стрелки поездом. Тут без разницы.[/QUOTE]
Да, именно это я и имел ввиду. Поискать маршрут отправления для поезда, думаю, не получится, потому как маршруты у светофора, а вот поискать следующий светофор впереди - это, думаю, реально и плясать уже от его маршрутов. Правда, тут маршрутные и маневровые будут путаться под ногами, но для маршрутных всё равно нужно считать маршрут, поскольку часто он выполняет роль фактически выходного, а маневровые отсеиваются исходя из категории поезда. Так получится?
И таким образом реализовать "маршруты от светофора N станции Х до светофора K по станции Х2"

TRam_ 24.09.2010 17:07

[QUOTE]И таким образом реализовать "маршруты от светофора N станции Х до светофора K по станции Х2"[/QUOTE]маршрут отправления строится до входного(или ещё какого-то) следующей станции. Но перегон, естественно, при этом не проверяется, повторюсь, будет проверяться состояние этого светофора на предмет направления перегона (закрытый входной в z7 имеет состояние 0, закрытый входной из-за встречного направления перегона - 1000)


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

Значит, по поводу маркеров... Прийдётся их логику изучать :( .


[QUOTE]Правда, тут маршрутные и маневровые будут путаться под ногами, но для маршрутных всё равно нужно считать маршрут, поскольку часто он выполняет роль фактически выходного, а маневровые отсеиваются исходя из категории поезда. Так получится?[/QUOTE]да, создание маршрутов сделанно именно так. Слово в слово :)

TRam_ 24.09.2010 20:40

Эх, а будку-то в правило превратить не удаётся... Бука умеет аакуратно выделять под себя память, а правило нет (в результате трейнз выбивает в процессе сортировки светофоров и сборки маршрутов уже который раз ). В то же время с правилом удобнее: не надо лазить за окошком за пол карты ...

Видимо прийётся делать и будку, и "правило-паразит" этой будке :(.

NickLon 24.09.2010 20:51

Ну это то всё хорошо. Вроде как с поездными более-менее понятно. TRam, я как-то раньше сказал, что о маневровых - потом. (со вздохом) Давай сейчас это "потом" и откроем. Как ты думаешь маневровые маршруты считать? Посмотри на БМО от Tramwayz. ст. Бекасово. Там же черт ногу сломит! А всё должно работать, тем более, если он делал всё это по ТРА.
TRam, а ты часто Главный контроллер ищешь? На БМО как-то однажды хотел его найти, дабы все светофоры сразу переинициализировать, но так и не нашёл. Ну и? Сигналка там просто пыщет здоровьем! :) Так и здесь. Один раз поставил, настроил - забыл о его существовании. Так что по этому поводу, думаю, заморачиваться не стоит.

TRam_ 24.09.2010 21:02

[QUOTE]Как ты думаешь маневровые маршруты считать? Посмотри на БМО от Tramwayz. ст. Бекасово. Там же черт ногу сломит![/QUOTE]по крайней мере поездные там будка пересчитывала вполне нормально, памяти хватало. Другое дело что там маневровые отнесены к другой станции (станционный контроллёр = станция), так что там думать прийдётся долго и упорно...

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


Текущее время: 08:34. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim