Factorio

Factorio

74 ratings
Space Age: Настройка поездов через прерывание
By ZblCoder
Гайд по настройке простой схемы поездов при помощи новой системы прерывания.
6
6
2
   
Award
Favorite
Favorited
Unfavorite
Вступление
Новая система получилась довольно удобной. Для построения простой автоматической системы подходит лучше мода LTN. Есть заправка, депо и загрузка с выгрузкой. Можно делать группы поездов по количеству вагонов. Но увы, без логики и кучи проводов, запросы с ограниченным количеством ресурсов не сделать (поезд поехал взял 100 камня и привез 100 камня).
Станции

Снабжение
Обязательно установите у станции лимит (выставленный руками или логикой), что бы все поезда не пытались ехать только на неё. Название можно ставить любое, просто все станции снабжения должны быть с одним именем.
Запрос
Тут уже важен шаблон названия станции, и в названии всех станций разгрузки, должна стоять иконка ресурса, который станция запрашивает. В примере можно увидеть "[древесина] Выгрузка". Лимиты тоже желательно установить, что бы поезда с ресурсом ехали на разные станции и не толпились у одной.
Депо
Любое название, главное одинаковое на всех Депо.
Заправка
Любое название, главное одинаковое на всех Заправках. Если у вас поезда используют разное топливо, то лучше зашить иконка заправляемого топлива в шаблон названия.

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

Снабжение
Добавляем станцию снабжения и указываем условие полная погрузка или время ожидания.

Эта станция будет последним действием если срабатывает прерывание. Если все станции снабжения заняты, поезд будет ждать в депо.

Заправка


Условие
  • Полная разгрузка - Что бы поезд не поехал с грузом, и не застрял с ним в заправочной станции, когда нет запроса этого ресурса.
  • Топливо (все или любой локомотив) - устанавливаем тип зеленую картинку топлива меньше 50 (или по желанию. Главное, что бы хватило доехать до заправки)
Получается, в поезде может быть 150 угля, и если угля станет меньше 50, то поезд после текущего действия поедет на дозаправку.

Если вы хотите, что бы поезд поехал на заправку немедленно, то поставьте галочку "Разрешить прерывание других прерываний" и ваш поезд резко развернется на дозаправку как только станет выполняться условие.

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


Условие
  • Количество предметов - Параметр предмета (зеленая иконка с кубиком) не равен 0.
Сигнал в виде зеленой схемы, аналогичен типу "Любой" из логической сети, т.е. отслеживает любой предмет в поезде.

Цель
Указываем не станцию из списка, а шаблон имени станции (пишем ручками текст в строке), нужно написать точно такое же название как и у станции запроса (в примере Запрос [Уголь]), но вместо иконки ресурса ставим зеленую иконку "Параметр предмета" и указываем условие полная разгрузка. Когда цель сработает, она вместо зеленой иконки подставит иконку найденного в поезде ресурса и отправит на станцию запроса с этой иконкой.
Депо


Условие
  • Полная разгрузка
  • Не на указанной станции - устанавливаем станцию депо
  • Станция занята - устанавливаем станцию снабжения
Если поезду некуда податься, его всегда приютит ближайшее депо, конечно если есть свободное.

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

Если все настроено правильно, то поезд спокойно будет спать в Депо.
Логика станции снабжения


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


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

Вот так автоматически добавится цель, если положить в вагон угля.
ВАЖНО!!!
Когда редактируете прерывание в группе поездов, можно сломать другие группы, которые используют это прерывание.

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

Будьте внимательны!!!


Еще почему-то разработчики пишут число в квадратных скобках у групп станций и у групп поездов, а вот у групп прерываний число не указывают.
Было бы очень круто, если в панельке "Обзор поездов", добавили четвертую вкладку "Прерывания".
Снабжение по запросу
В комментариях народ спрашивал о схеме когда поезд не едет на станцию снабжения, если нет запроса и вот я попробовал её сделать. Пока сильных проблем не заметил, но длительное использование может что-то выявит. Буду редактировать статью по мере их выявления.

Зеленый провод соединяет комбинаторы станций снабжения и запроса с депо. Красные провода устанавливают лимиты станций и учитывают количество поездов у запросов.



Запрос

Главная задача, установить лимит поездов у станции и отправить сигнал количества поездов этого ресурса в депо.

Настройка станции:
  • Снимаем галочку "Отослать в поезд"
  • Ставим "Установить лимит поездов" (L)
  • Ставим "Считывать количество поездов" (C)

Настраиваем комбинаторы слева направо.


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


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


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

0eNq1lb2O2zAMx9+FsxzEsR0kATrdemO3IDAUm3cRYMuuRKcNAgN36NQn6Nqle5eu7Sskr9AnKWXn+9xeUqCbTIt/kj+S9hrmWYWlUZpgsgaVFNrCZLoGqx61zJxNyxxhAikmKkXjJUU+V1pSYaAWoHSKH2Di16LDhYxU2rNUlCdXB/VMAGpSpLAN1TysYl3lczSsJfb+lhAzL1mgJRBQFpZ9Cu0CsI4X9nuRgJU7hWEvql0KF1ID8ZfsXyoGo1M9AakymLQXQgGMhkyRxXNcyKViAfbaycb8Lm2krLOePnF9D8pYio90aFW6lJbKUMWWY7nNDQ+XaFa0UPrRUXMNIem64/f7fceuqKis6LJLr4jet1rlilOtNMUPpshjpVkIJg8ys1jP6i6CgehoZge5YE/uOm4WdRpTETeiuwxEGyJ2IUpMrwf21tVmkVo1G2cqV1wWmWqvubPFt+EyKNO9ZkPtQrMlebXmHdQuT5ItGYAO3OHBSRpFixxJJa/M7GEHgitn9qh8MbY3zul9i91p3ASBJ7hEs6fgwX6i4xffj1IaPhCvbZ/ZdY1ndOOCB7fC+i8LLpNFu465q9ClOoFfn77CP293q/iHFR4ebueYqir3MOOiDQ9WWWTYRcnvnQ2VS+s9k3JJTX3hi4HwZ2I6EIEIm1PAtvYUsi1qThFbhmIwY99DG9uqdrWo9FjG5svm+/Z5+3H7tH1mK786b76Ad1w2F+UdyLtkd0a+rAuTN1zOmL6BJndFmPPT8UcnIJNzzFzgz5tvm5/bp82PJjB/eW2jHQ0H43A8jsIgGI38UV3/ButCdr4=
Снабжение

Настройка станции:
  • Снимаем галочку "Отослать в поезд"
  • Ставим "Установить лимит поездов" (L)
  • Ставим "Считывать количество поездов" (C)
Настраиваем комбинаторы слева направо.


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


Это самое важное, сказать общей сети, что поезд уже выполняет запрос и сперва движется на погрузку. Тут всё просто, количество поездов умножаем на -1 и отдаем тип ресурса в общую сеть.

0eNqVVMGO2jAQ/ZVqjpWzIiTpAlJPe+2xN4QsQ4bFUmKnjkOLUKSinnrqL7SH3tsDVS/9h/AL+yUdJ0CAjXZZIUX2ePzmzRue1zBNCsyMVBZGa5AzrXIYjdeQy3slEhdTIkUYgTVCKi+3OoOSgVQxfoKRX7KOVGGkXaRo5cyb6XQqlbDanNzqlxMGqKy0Eptq9WbFVZFO0RAsO0DlFjHxZgvMLTDIdE53tHK1CMcLezcRg5VbBYObqHRsLqD6R6gYZzJGc0rpMWJwe4rHIJYGZ01CyIDUsUYnfIoLsZQEQLf2sJzO4hoqd9HTHfU3lya3vBXKrjJHaSmNLSjStltneEKt7EKqe6eZm4gVbjx+r9dz+zQTpqY/goevP8GJqQubFfZycs9UedfAZyviXijL50anXCoCgtFcJDmWk7JL0oB1/Cc6pAwOUg6vEjJHFXOreQ26Z8CaEtyVyDC+XsH3rrccbYOW80Smktqypjhg7mP8ZXIZFPEBs1btArNR8mrMOygdTysaZQA65A6Pl1KMZZF6mJCShsyV6QS7hPefdUXEnvbqU9O8vdIYLfKFN15ohrtmlA6Dt2bw6I3QGZqDcq/h4AL+6D1yfiEi5P0e6V06w3wk+s4uY5/5rM/8CRv3WUA/t6Ivi+pVSGcRCyd04wjSuGxPWsYt3+p7td1tdl92n3ebV7tN9a/6Vf2u/lRbWv3dfaNEyj5nw+ADtUyT8Y4SOd77ICUrbdJakzPbv4W6CWkxpV37gjNIxBQTx+XHeflqS4dLIl9XiN70h+FwGIVBMBj4g7L8DzbnHfA=
Депо

Сюда приходят суммы всех запросов. Поэтому только тут подключаем станцию к общей сети и проверяем стоит ли галочка "Отослать в поезд". При подключении к сети стоящий в депо поезд будет её считывать, и своим прерыванием находить в сети запрос, проверять его на возможность доставки и отправляться его удовлетворять.
Прерывания
В группе поездов настраиваем станцию депо с ожиданием 10 секунд (для разсинхронизации поездов) и 2 прерывания:

Заправка


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

Запрос


Условия:
  • Поезд пустой,
  • Сети есть запрос на доставку
  • Проверяем доступность станций снабжения для найденного запроса (вбивать шаблон станции, меняя ресурс на зеленую иконку)

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

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

Для копирования настройки группы, достаточно переименовать поезд на новое название. Если поезд переименовывается в существующее название группы, то ему присваивается настройка этой группы.

Спасибо за внимание
72 Comments
Pukhlik Feb 9 @ 9:23pm 
Не заправляется проезд, пока стоит в депо. Манипулятор пишет «ожидание локомотива» и горит красным, хотя рядом стоит пустой локомотив. Никакой логики к нему не подключено. Если поставить новый локомотив без настроек, тогда он начинает загружаться топливом. Кто сталкивался с подобным?
Luc1fer Jan 31 @ 3:30am 
Советую глянуть видосы от FactoryGame49, настроил поезда по его гайду и работают идеально
Alser69rus Jan 24 @ 2:13am 
Можно поставить глобальный зацикленный счетчик, который раз в несколько тиков будет выдавать в сеть следующий номер депо. Каждому депо присвоить номер через постоянный комбинатор и выдавать сигналы запросов только если номер депо совпадает с текущим значением счетчика
White Fox Jan 8 @ 5:27pm 
в итоге решил через отключение станции, но поезда буду застревать на погрузке, эх а ведь чуть чуть логики бы)
У меня поезда иногда вместо разгрузки идут на догрузку и ездят с двумя ресурсами :auimp:
White Fox Jan 8 @ 11:16am 
Извини конечно, но станции по запросу не работают...
И я понятия не имею как исправить.
Суть проблемы:
поезда как угорелые все ломятся по 1 на загрузку, видят что разгрузки нет, и загруженные идут в депо-> профит, нет ни одного поезда доступного)
Luc1fer Jan 4 @ 9:08am 
sacred demon, у меня депо с заправкой, в прерывании Заправка указал станцию Депо, вроде работает))

По личным ощущениям LTN всё же лучше будет, намного проще в настройке как по мне
sacred demon Jan 4 @ 3:55am 
А если закинуть задачи заправки в депо? логика не сломается?
домовой Jan 2 @ 11:35am 
Всем доброго времени суток. Я смог создать логику с ограничителями для прерываний, как на погрузку, так и на выгрузку предметов и жидкостей использующий только красный провод. В принципе, ничего сложного. Только приходится использовать 2 депо, для предметов свой, для жидкостей свой.
Zimmer Dec 11, 2024 @ 1:05am 
История с расчетом лимита на станции Запроса, когда считается сколько полных поездов влезет на станцию и устанавливается соответсвующий лимит, немного опасная, на мой взгляд. Что если в составе 3 вагона, а станция плохо обеспечивает равномерное использование ресурсов из всех ящиков разгрузки и вышло так, что в ней опустошились ящики первого вагона, но остались полными ящики 2-го и 3-го вагонов. В этом случае станция запросит 1 поезд для заполнения. Поезд приедет, разгрузит первый вагон и продолжит стоять, т.к. 2 и 3 вагоны не будут опустошаться.