Description
LTN(TDM) -Locomative Train Network + Time Division Multiplexing [Factorio SA v2.0]
Mini video: https://www.youtube.com/watch?v=OIIEdAwlvzg
Full video: https://www.youtube.com/watch?v=eAXRr3eR55Q
LTN Groups v1.0 [F2.0]: https://www.factorio.school/view/-Om0FtdByP9MmtKcOLsB (новая переосмысленная версия)
Аналогия - старая телефонная связь https://en.wikipedia.org/wiki/Telephone_exchange#/media/File:Jersey_Telecom_switchboard_and_operator.jpg
Очень просто в использовании если немножечко разобраться ) Большая часть логики автоматизирована и требует минимум настроек. (делал так что бы воткнул и забыл) Логика не привязана к рельсам и можно использовать свои.
Суть: С помощью коммутации каналов поезда обслуживают любые станции но тока своего размера (по кол-ву вагонов) и типа (сухой груз или жидкость). Итератор каналов просто соединяет (соединение длится 2 тика) станции по каналу и станции начинают обмениваться сигналами + сами вызывают нужные поезда из депо. Поезда исходя из приоритета (в случаи ресурсных станций) сами определяют к какой ехать. В логике итератора в постоянном комбинаторе есть часть каналов и описание.
Для работы логики требуется итератор, фильтр сигналов в депо, депо, заправка и станции. При установке поезда сработает прерывание заправки и луче её заранее поставить и чутка заправить самому. Депо может быть несколько и к каждому нужно ставить фильтр сигналов депо
Поезда и базовые станции:
Поезда с прерываниями не привязаны напрямую к станциям и считаются универсальными. Так же поезда заранее уже поделены по длине, по типу жидкостных и сухих грузов как и базовые станции (ресурсные). При установке поезда генерится прерывания на эту группу поездов и если изменить прерывания то изменятся тока для текущей группы. Что бы группа работала как группа необходимо проводами объединить их между собой. (в этом случаи они будут по очереди вызываться и не ломанутся толпой на одну станцию) Можно использовать поезда или группы поездов разной длины для разных задач. Можно увеличить размер поезда но нужно будет тогда под него сделать станции и изменить размер значение в blueprint что бы прерывания для этой группы были свои.
Базовые станции (ресурсные) имеют в названии тип поезда и длину так что поезда не перепутаются (это учтено в прерываниях). Станции имеют логику подсчета кол-во поездов + приоритет (поезд ориентируясь по приоритету будет выбирать сам на какую станцию ехать в случаи одной длинны, типа и ресурса) + балансировку погрузки или выгрузки. Все комбинаторы на станциях подписаны. Приоритет определяется по пустоте или заполненности станции. При установке базовых станций (ресурсных) просто нужно выбрать предмет, ресурс или жидкость все остальное уже будет рассчитано и установлено в комбинаторы (в принтах прописаны формулы). Каналом связи будет предмет или ресурс установленный в комбинаторе при установке. Можно расширить станции указав в постоянном комбинаторе значения. Есть те же самые станции но с меньшим кол-вом комбинаторов и работа будет аналогична с большим кол-вом.
Спец станции:
- Станция заправки позволяет заправить поезд от 1 до 4 длинны и двусторонние.
- Станция для запроса жидкости. Применение: cерная кислота для урана или что то подобного.
- Станция мусора. Применение: вывести со спец станций запроса отработанное топливо или мусор (камень дерево и тд) со стен обороны и тд.
Спец cтанция запроса и снабжения:
Станция запроса может запрашивать разные предметы и в разном кол-ве со станции снабжения. Применение: заправка атомки или оборона стены и тд. Станция запроса общается со станицей снабжения через назначенный канал (желательно виртуальный сигнал). Станция снабжения по сути обслуживает станции запроса по разным уникальным каналам и также может обслуживать несколько каналов (станций запроса). Станций снабжения может быть больше одной но важно что бы каналы не пересекались иначе поезда будут путаться. Важно еще не забыть снабжать заправку ) что бы поезда не оказались без топлива.
Надеюсь у меня получилось понятно и кратко описать ) Если что то не понятно пишите комментарий.
Есть момент который я не добавил но его можно реализовать. Каналы в итераторе перебираются по очереди и их можно приоритезировать (менять позицию в списке) автоматически или в ручную и по сути это будет являться балансировкой вызова поездов.