Вступление
Начнем с состава нашей сети:
Станции погрузки
Станции разгрузки
Депо для твердого груза
Депо для жидкого груза
N ко-во поездовВ данном руководстве будет обзор на создание ванильной сети поездов, по типу мода LTN
БазаБазовая Логика LTN:
У нас есть поезда, которые находятся в депо и ждут своего часа и при получении запроса необходимое количество поездов выезжают по динамически собранному расписанию: погрузка -> разгрузка -> депо
Новая базаПрерывания
Благодаря новой системе прерываний, разработчики дали нам возможность создавать расписания поездов динамически, по некоторым правилам настраивая условия для запуска поездов. Таким образом наши поезда становятся универсальными и у нас отпадает необходимость настраивать каждый поезд на определенный тип ресурса.
Все станции и депо обмениваются между собой сигналами для корректной работы сети с помощью радаров. Если вы не хотите пускать по всей фабрике ЛЭП с логическими проводами
Поезда
По поездам у нас две логистические сети:
1. Поезда с твердым грузом
2. Поезда с жидким грузом
У нас тут ванильная игра, а не LTN, соответственно поезда не знают какого типа груз они перевозят и какой длины являются.
И депо не расчитано на настройки длины поезда и тип груза.
Поэтому у нас должно быть как минимум два депо под разные типы груза и поезда одинаковой длины
Ниже представлены настройки прерываний для поезда
По условиям прерывания:
Поезд должен стоять в депо для получения запроса
На станцию, где располагается поезд (ДЕПО) должен поступить сигнал с запросом
Поезд должен быть пустой, иначе он не поедет
Запрошенная станция погрузки может принять к себе поезд
Запрошенная станция разгрузки может принять к себе поезд
Если все условия выполняются, поезду назначается временное расписание и он выезжает на запрошенные станции.
Для справки:
Этот сигнал называется "Параметр сигнала" и принимает значение, которое игрок может подавать на станцию извне (например с комбинатора)
Для нас он создает название запрашиваемой станции в расписании поезда.
Подробнее про сигналы и прерывание вы можете почитать в других руководствах. Например тут: https://steamcommunity.com/sharedfiles/filedetails/?id=3362592267
Станции запроса
Станция Разгрузки генерирует сигнал запроса в зависимости от вместимости сундуков или лимита поездов. А также уменьшает сигнал запроса, если на станцию едет поезд. Для чего это было сделано можно почитать в разделе работа с сигналами запроса
По умолчанию в данном чертеже 6 стальных сундуков, и станция может вызвать максимум 7 поездов, но если мы ограничиваем лимит поездов, то станция отправит запрос ориентируясь на этот лимит.
Данная станция является параметризируемой для любой длины поезда и количества стальных сундуков
Станции снабжения
Станция Погрузки уменьшает сигнал запроса, если к ней едет поезд. Для чего это было сделано можно почитать в разделе работа с сигналами запроса
По умолчанию в данном чертеже 6 стальных сундуков, но на лимит поездов тут влияет заполненность сундуков, а не их количество. Так что ставьте сколько хотите, соедините проводом только.
Лимит поездов выставляется в зависимости от количества груза в сундуках и пользовательского лимита.
Данная станция является универсальной для любой длины поезда. Чертеж параметризированный
Депо
В депо, как вы уже знаете, стоят поезда и ждут когда к ним придет запрос.
На каждое депо выделяется одна радарная установка, которая обрабатывает и фильтрует запросы.
Важное уточнение: запросы на твердые грузы хранятся в зеленой сети, а запросы на жидкость хранятся в красной. Соответственно чертежи радарных станций отличаются в зависимости от того, какие поезда сидят в депо.
Отправка запроса в депоФильтрация запросов нужна на тот случай, если вы решили раскидать несколько депо одного типа по всей фабрике на планете. А сама фильтрация заключается в том, чтобы не пропускать один и тот же запрос в несколько депо одновременно.
Радарная установка: На выбирающий комбинатор попадает сигнал из общей сети и случайным образом выбирается сигнал запроса с интервалом обновления ~ от 100
Выбранный сигнал умножается на -1 и отправляется обратно в общую сеть, таким образом выбирающий комбинатор еще хранит в себе выбранный запрос, но в общей сети этот сигнал отсутствует или является отрицательным числом.
Проводится проверка на тот случай, если в двух депо выбирающие комбинаторы выбрали одинаковый запрос. В таком случае в общей сети будет отрицательный сигнал, мы его превращаем в положительный для сравнения с сигналом запроса.
Если в системе есть дублирующий запрос, то в депо на поезда мы не пропустим никакой запрос ВАЖНО На выбирающих комбинаторах необходимо ставить разный уровень интервала обновления иначе все запросы будут дублирующие и на депо не будет подаваться сигналы.
Распределение запроса между поездамиЗапрос к поезду подается через радарную установку и обрабатывается посредством комбинаторов между станциями и светофором.
Вводные: у нас есть запрос на доставку 2 медной руды, то есть нам нужно отправить в путь максимум два поезда;
На первую станцию депо подается чистый запрос -> 2 руды;
Проверяем по светофору, стоит ли сейчас на этой станции поезд, если стоит, то на следующую станцию депо мы отправим -> 2 - 1 руды = 1 руды;
Если на след. станции нет поезда, то пропускаем сигнал дальше -> 1 руды;
Таким образом два поезда получат свой сигнал запроса и покинут станцию вне зависимости от их расположения в депо.
Следующие поезда сигнал запроса не получают, так как он равен 0, соответственно лишние поезда стоят на месте. Когда поезд покидает станцию депо, из общей сети отнимается 1 сигнал запроса, так как уже назначен поезд на его выполнение. А как он отнимается из общей сети мы узнаем позже.
В моем варианте в депо поезда еще и заправляются. Если у вас отдельная заправочная станция, то смотрите руководства по прерываниям.
https://steamcommunity.com/sharedfiles/filedetails/?id=3353212873
Работа с сигналами запросов
Уровень сигнала запроса показывает, сколько поездов нужно для его выполнения. Он изменяется следующим образом:
На станциях погрузки и разгрузки мы устанавливаем настройку, которая считывает количество поездов, которые направляются на станцию.
Также на каждой станции стоит арифметический комбинатор, который умножает сигнал С на -1 и отправляет на выходе ресурс нашего запроса с отрицательным знаком.
Выходной сигнал арифметического комбинатора отправляем в сеть для того, чтобы сигнал нашего запроса уменьшился на то количество поездов, которые этот запрос выполняют.
Или попроще, когда поезд поехал выполнять запрос, он будет удерживать за собой свой сигнал запроса, пока не покинет станцию разгрузки.
В совокупности с обработкой сигналов в депо это устраняет проблему, когда на 1 запрос могло приехать 2 или более поездов на станцию погрузки.
Прочее
Хочу поделитьсяХочу поделиться своими наработками. Я использую поезда с 4 грузовыми вагонами и у меня иногда возникает проблема на станциях погрузки и разгрузки, которые не всегда могут равномерно загружать или разгружать поезд, и поезда могут долго стоять на станции и ничего не делать. Можно подключить логику к манипуляторам и контролировать равномерную разгрузку/загрузку, но мне так не нравится потому что не уверен в хорошем влиянии на производительность в этом методе. (Поправьте, если я дурак)
Вот мое решение выдуманной проблемы: Станция погрузки и разгрузки
Тут 4 сегмента по 12 сундуков
На станции погрузки высчитывается минимальный заполненный сегмент сундуков и я разрешаю отправить поезд только тогда, когда во всех 4 сегментах есть ресурсы хотя бы на 1 поезд
На станции разгрузки высчитывается максимально заполненный сегмент сундуков и я разрешаю отправить поезд только тогда, когда во всех 4 сегментах есть место для разгрузки хотя бы для 1 поезда
Чертежи
Все чертежи будут по ссылке:
https://factorioprints.com/view/-OBohahKeCm-VvhBlK59 (новая версия, меньше комбинаторов)
https://factorioprints.com/view/-OBfkr0mcvPPv0iF7-dz (старая версия)
У меня тут кастомные параметризированные станции для сухих и жидких грузов и отдельные станции для разной длины поезда с подчетом кол-во предметов по сегментам.
Чертежи поездов, депо и радарных установок для разных типов грузов.
Конец
Вот и все. Нет не все! В предыдущий раздел не влезла важная информация: все комбинаторы в чертежах подписаны, и если вам трудно разобраться, обращайтесь к описанию комбинаторов.
ТЕПЕРЬ КОНЕЦ. Это было мое первое руководство, поэтому если вам что то не понятно или чертежи работают неправильно, то пишите в комментарии, постараюсь помочь.
Скинуть на пиво: Бусти[boosty.to]
Source: https://steamcommunity.com/sharedfiles/filedetails/?id=3365538448
More Factorio guilds
- All Guilds
- Train Logistic Network Based on Interrupts
- Gleba with logistics bots modular production strategy
- The basics of Gleba
- Automatic Structure Builder
- Resources sorting on Fulgora
- Factorio Guide 1140
- Rail Signals - How NOT to pull your hair out!
- Modded Game Achievement Enabler
- Tutorial (Paso a Paso): Estacin Inteligente de carga [1.0 - 2.0]