Железнодорожная сеть в Factorio становится предсказуемой, когда понятна граница каждого блока и заранее определено место, где составу разрешено ждать. При поиске причины no path, красных сигналов, пробок или deadlock полезно рассматривать не отдельный огонёк, а всю последовательность: вход, junction и выход.
Как сигналы делят дорогу на блоки
Rail signals разбивают железную дорогу на блоки. В каждом из них одновременно может находиться только один поезд. Состав в automatic mode планирует путь через последовательность таких участков, поэтому работа сети зависит не только от визуального соединения рельсов, но и от расположения и направления сигналов.
Обычный сигнал разрешает перейти в следующий блок, если тот свободен. Его размещают справа относительно направления движения. Сигнал может стоять рядом с рельсом, но обслуживать противоположную сторону пути. Тогда дорога выглядит соединённой, однако поезд сообщает no path.
Цвет огонька отражает состояние контролируемого блока: он бывает свободным, зарезервированным или занятым. Но одного сигнала недостаточно для оценки всей схемы. Причина остановки может находиться дальше - на выходе из junction, в занятом участке либо в неверно заданном направлении.
Для проверки нужно взять сигнал в руку и посмотреть цветные границы блоков. Подсветка показывает, где путь действительно разделён и в какой участок собирается войти состав. По ней проще найти ошибку, чем по одному красному сигналу.
Схема «вход - junction - выход»
Перекрёсток удобно разбирать как три зоны: вход перед пересечением, внутренние блоки junction и свободный выход после него.
Перед junction применяют chain signal. Внутри пересечения тоже используют цепные сигналы, а на выходах ставят обычные. Такая расстановка определяет, где поезду разрешено ожидать.
Chain signal смотрит вперёд на выходы следующего блока. Если поезд может въехать в junction, но не сможет его покинуть, цепной сигнал не пропускает состав внутрь. Ожидание переносится ко входу, а пересечение остаётся свободным для другого маршрута.
Обычный сигнал на выходе отделяет junction от следующего участка. После пересечения следующий обычный сигнал нельзя размещать слишком близко: расстояния должно хватать самому длинному составу сети.
Если поезд не помещается между выходом и очередным сигналом, хвост остаётся внутри пересечения либо занимает предыдущий блок. Передняя часть уже продвинулась, но junction всё ещё закрыт. Поэтому размер выходного участка так же важен, как тип входного сигнала.
Почему возникает deadlock
Deadlock появляется, когда поезд ждёт внутри пересечения, а его хвост удерживает предыдущий участок. Другой вариант - несколько составов образуют замкнутую цепь: каждый ожидает блок, занятый следующим поездом.
Проблема становится неразрешимой, потому что ни один участник не может первым освободить нужный участок. Если схема допускает остановку внутри junction, заполнение выхода превращает обычную задержку в полную блокировку.
Правило с chain signals перед перекрёстком и внутри него уменьшает риск, поскольку не впускает поезд без доступного продолжения. Но цепной сигнал не компенсирует короткий выходной блок, в который состав не помещается целиком.
При разборе deadlock нужно ответить на два вопроса: мог ли поезд ждать до junction и достаточно ли места после выхода для полного состава? Отрицательный ответ указывает на уязвимое место схемы.
Почему все сигналы не стоит делать цепными
Chain signals полезны там, где составу нельзя останавливаться: перед пересечением и в его внутренних блоках. Однако они не являются заменой всех обычных rail signals. Слишком длинная цепочка способна зарезервировать лишние участки и снизить пропускную способность.
Избыточное число цепных сигналов делает сеть осторожнее, но не обязательно эффективнее. Разделение ролей работает лучше: chain signal контролирует вход в опасную зону, а обычный создаёт блок, где поезд уже может находиться, не перекрывая junction.
Практический ориентир остаётся простым: перед пересечением - цепной сигнал, внутри junction - цепные, на каждом выходе - обычный. За выходом начинается участок, рассчитанный на полный поезд.
Диагностика no path и пробок
Проверку лучше проводить как последовательный наблюдаемый маршрут, а не как случайную перестановку сигналов. Сначала включают отображение блоков, взяв сигнал в руку. Затем смотрят направление каждого сигнала по ходу движения, находят занятый или зарезервированный участок и определяют, где поезд пытается остановиться.
Отдельно проверяют состав: есть ли топливо и включён ли automatic mode. Это не заменяет анализ junction, но исключает ситуацию, когда поезд не выполняет автоматический маршрут по другой причине.
При no path особое внимание уделяют направлению. Сигнал должен стоять справа по отношению к движению. Неверная сторона способна закрыть маршрут даже при визуально соединённых рельсах.
Следом проверяют станцию: сопоставляют её стрелку с фактической стороной пути и просматривают расписание. До перестройки железной дороги важно убедиться, что поезд направляется к правильной стороне и нужная цель присутствует в schedule.
Если состав доезжает до junction и останавливается внутри, по границам блоков можно увидеть отсутствие доступного выхода. Если он ждёт перед chain signal, такое поведение может быть правильным: цепной сигнал удерживает поезд вне пересечения, пока тот не сможет пройти дальше.
Красный огонёк нельзя рассматривать отдельно. Он показывает состояние своего блока, но не раскрывает всю цепочку ожидания. Нужно проследить маршрут от входа через внутренние границы к выходу и установить, какой участок занят, какой зарезервирован и где должен разместиться поезд.
Длина состава как ограничение сети
Максимальную длину поезда выбирают до проектирования железнодорожной сети. Её учитывают при интервалах между блоками, особенно после junction и возле мест ожидания.
Если сначала построить плотную схему, а затем запустить более длинные составы, прежних промежутков может не хватить. Поезд пересечёт выходную границу, но не освободит junction хвостом. Типы сигналов при этом могут быть выбраны верно, а deadlock сохранится из-за размера состава.
Блок, предназначенный для ожидания, должен принимать поезд полностью. Это относится и к участку после перекрёстка, и к waiting area у станции. Проверять следует самый длинный используемый состав: успешный проход короткого поезда ещё не подтверждает правильность всей сети.
Waiting area возле станции
На станциях помогает waiting area, расположенная вне основной линии. Там поезд может ждать, не занимая главный путь. Как и свободный выход после junction, такая зона должна вмещать состав и не перекрывать движение другим.
Если очередь остаётся на основной линии, станция начинает задерживать проходящие поезда. Вынесенная в сторону зона ожидания ограничивает пробку своим участком и снижает риск замкнутой цепи ожидания.
Waiting area проектируют с учётом максимальной длины состава и границ блоков. Иначе поезд остановится только частично вне главной линии, а его хвост продолжит занимать важный участок.
Двусторонний путь
Если один участок должен работать в обоих направлениях, сигналы ставят с обеих сторон рельса напротив друг друга. Такая пара задаёт двустороннее использование пути.
Одиночный сигнал может закрепить только одно направление. Тогда поезд с другой стороны получит no path, хотя рельсы физически соединены. При проверке нужно пройти маршрут в обе стороны и убедиться, что точки разделения блоков образованы парными сигналами.
Исправление схемы без новых ошибок
Когда проблема появилась после перестановки, полезно вернуться к последней копии рабочей схемы. Затем меняют только один junction за раз. Так результат можно связать с конкретным изменением, а не с несколькими одновременными правками.
После каждого шага снова включают границы блоков и проверяют вход, внутреннюю часть пересечения, выход и место для полного состава. Если deadlock сохраняется, находят точку остановки и определяют поезд, который удерживает нужный участок.
Готовый blueprint не должен быть единственным решением. Понимание блоков позволяет восстановить логику без слепого копирования: поезд ждёт перед опасной зоной, проходит junction только при доступном выходе и полностью размещается после него.
FAQ
Почему поезд показывает no path при соединённых рельсах?
Частая причина - неверное направление сигнала. Обычный сигнал должен находиться справа по ходу движения. Также проверяют стрелку станции, фактическую сторону пути и расписание. На двустороннем участке сигналы ставят парами напротив друг друга.
Где размещать chain signals на перекрёстке?
Цепные сигналы ставят перед junction и внутри его блоков. На выходах используют обычные rail signals. Chain signal удерживает поезд перед пересечением, если состав не сможет покинуть следующий блок через доступный выход.
Почему deadlock возможен даже с chain signals?
Причиной бывает короткий блок после выхода. Когда самый длинный поезд не помещается между junction и следующим обычным сигналом, его хвост остаётся в пересечении. Блокировку также создаёт замкнутая цепь поездов, ожидающих участки друг друга.
Можно ли использовать только chain signals?
Нет. Слишком длинная цепочка может резервировать дополнительные блоки и уменьшать пропускную способность. Chain signals нужны там, где нельзя ждать, а обычные сигналы формируют участки, в которых состав может находиться без блокировки junction.
Как найти блок, мешающий поезду?
Нужно взять сигнал в руку и посмотреть цветные границы. Затем проверяют направление сигналов, находят занятый или зарезервированный блок и прослеживают, где поезд пытается остановиться. Дополнительно проверяют топливо и automatic mode.
Какое расстояние оставлять после junction?
Следующий обычный сигнал размещают так, чтобы на выходном участке полностью помещался самый длинный состав сети. Эту длину выбирают до проектирования и учитывают в интервалах между ключевыми блоками.
Комментарии 0
Комментариев пока нет. Начните обсуждение.
Войдите в аккаунт, чтобы оставить комментарий или ответить.