Factorio

Factorio

43 ratings
Логистическая Сеть Поездов
By Kotbuz and 1 collaborators

[t.me]
4
3
   
Award
Favorite
Favorited
Unfavorite
Сигналы
В обновлении 2.0 были добавлены прерывания для поездов и новые типы сигналов для использования их вместе с прерываниями.

(Важное уточнение! Все эти сигналы обновляются, когда поезд отъезжает со станции, завершив условие пребывания на ней)




1. Этот сигнал называется "Параметр предмета" и принимает значение сухого груза, который находится в грузовых вагонах поезда.


2. Этот сигнал называется "Параметр топлива" и принимает значение топлива, которое находится в локомотивах


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


4. Этот сигнал называется "Параметр сигнала" и принимает значение, которое игрок может подавать на станцию извне (например с комбинатора)

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



Суть большинства условий понятна из их названия, но для понимания я опишу все.

Есть груз - в вагонах поезда есть груз (в том числе и жидкий).
Есть пассажир и Нет пассажира - в вагонах или локомотивах поезда есть или нет пассажира.
Кол-во жидкости - жидкость в вагонах (> < = != <= >=) какого-то количества или другой жидкости в этом поезде. В этом условии вместо конкретной жидкости можно поставить "Параметр жидкости" и тогда поезд будет сам подставлять вместо этого сигнала жидкость, которая есть у него в вагоне.
Кол-во предметов - аналогично количеству жидкости. Так же можно вместо конкретного предмета выбрать "Параметр предмета" и поезд будет подставлять вместо него груз, который есть у него в вагонах.
Логическое условие - работает по логике сравнивающего комбинатора, только вместо выходного сигнала, будет срабатывать прерывание. Вместо входного сигнала так же можно подставить "Параметр сигнала", который будет принимать значение сигнала со станции, если у нее включена функция "Отослать в поезд".
На указанной станции и Не на указанной станции - проверяет на какой станции сейчас находится поезд. При выборе этого условия игроку предлагают выбрать о какой станции идет речь. Можно выбрать, как имеющиеся станции, так и написать свое название станции.
Полная погрузка - все слоты во всех вагонах должны быть заняты любым предметом и любым количеством, главное, чтобы не было свободных слотов. С жидкостями работает похожим образом. Условие выполнится, если в каждом вагоне-цистерне будет хотя бы по 1 единице жидкости.
Полная разгрузка - все вагоны в поезде пустые.
Полон топлива - все ячейки топлива во всех локомотивах заполнены полными стаками.
Пункт назначения занят или нет пути - станция назначения выключена, лимит на станции занят другими поездами или если ж/д дорога к ней не построена.
Станция занята - лимит на станции занят другими поездами.
Станция не занята - лимит на станции не занят или его просто нет и она включена.
Топливо (все локомотивы) - при выборе этого условия появляется возможность выбрать тип топлива для поезда и условия, как в сравнивающем комбинаторе. Вместо конкретного топлива можно выбрать "Параметр топлива" и поезд сам подставит вместо него топливо, которое есть в локомотиве. В данном условии сравнение проводится со всеми локомотивами и будет "истинным" если все локомотивы выполнят условие, которые вы зададите.
Топливо (любой локомотив) - аналогично предыдущему, только условие будет "истинным" если хотя бы в одном из локомотивов выполнится ваше условие.
Сложности создания копии LTN
При попытке спроектировать систему станций и поездов с логикой работы, как в модификации LTN (Logistic Train Network) возникли некоторые проблемы, связанные с механикой и логикой работы игры.

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

Эту проблему я решил с использованием радаров, для передачи сигналов, которыми я выставлял лимиты на обоих станциях...
KLTS (Kotbuz's Logistic Train System)

Представляю вашему вниманию, мою разработку железнодорожной системы KLTS.

Factorioprints/KLTS[factorioprints.com]


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

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


Далее после постройки "Каркаса" депо, необходимо его настроить. В зависимости от выбранного типа нужно будет поставить чертеж из этой книги (Сухая Или Влажная станция) поверх станций "Каркаса" и затем поставить в удобном для вас месте чертеж с подписью (Сигналы) и подсоединить зеленый провод между столбами:
https://www.youtube.com/watch?v=yKL4COqmLgI

Так же не рекомендуется ставить разные типы станций депо (Влажное и Сухое) в одном депо и под одним проводом, т.к. система не предусмотрена для этого и будет давать сбои в работе.
Строительство станций
Крайне рекомендуется использовать для сети поезда с одинаковой конфигурацией Локомотивов и Вагонов.

Как такового ограничения длины поезда тут нет, но в книге имеются чертежи с максимальной длиной поезда 5. Из станций, которые будут работать "из коробки" есть заправка и депо для такси (добавил для места стоянки одноименного поезда, созданного для быстрого перемещения по базе). Заправка есть нескольких видов и имеет улучшенную логику работы. Идею взял у Остина, после просмотра его видео по теме поездов. Логика работы в целом такая же, как и в его видео, за исключением добавления настройки для выгружающего из поезда манипулятора. Так же были добавлены варианты заправок для поездов конфигурации 1-1-1, 1-2-1 и 1-3-1 (Локомотив-Вагон-Локомотив).

Шаблоны станций

Для удобства строительства была добавлена книга со станциями - шаблонами, рассчитанными под разные длины поездов, от 2 до 5. Так же были добавлены чертежи съездов и выездов со станции для двухсторонних поездов.
Станция снабжения / погрузки в вагон

При попытке поставить чертеж вас встретит окно Параметризованной сборки:


В ячейке "Тип ресурса" необходимо выбрать тот ресурс, который будет храниться на этой станции и предоставляться поездам.
В поле "Кол-во Вагонов" необходимо вписать сколько вагонов имеется у поезда. От этого параметра зависит настройка равномерной загрузки сундуков на станциях и настройка работы самой станции. Если в вашем поезде вагонов больше чем 1, в чертежах предусмотрены шаблоны для модульного расширения станций, который нужно просто сопоставить со столбами и направляющими объектами (сундук и манипулятор). Провода сами соединятся как надо и равномерная погрузка будет работать корректно.


Станция cухого cнабжения, принцип работы:
https://www.youtube.com/watch?v=uGzuuH7gAMc

Станция снабжения жидкостью работает аналогичным образом:
https://www.youtube.com/watch?v=o1V2NzkpIUc

Станция запроса/ разгрузки из вагона

Здесь аналогично с снабжением нас встречает Параметризованная сборка:


"Тип ресурса" и "Кол-во Вагонов" свою суть не изменили, а вот "Кол-во Составов" уже что-то новое.

Этот параметр отвечает за порог запроса ресурсов на эту станцию. Это означает сколько полностью загруженных составов смогут разгрузиться на этой станции. Если ввести в это поле "1", то поезд будет привозить на эту станции новую партию ресурсов, только когда сундуки на станции полностью опустошатся. А если, например ввести в это поле значение "5", то на этой станции максимум смогут разгрузиться 5 полностью загруженных составов поездов и затем станция программно отключится, пока количество предметов в сундуках станции не уменьшится.

Вас никто не ограничивает в количестве составов на станцию, но в ванильной игре станция с 12 стальными сундуками на вагон сможет максимум полностью разгрузить 14 составов!

На станциях запроса жидкости не советую ставить Кол-во составов больше 2, если вы не планируете пристраивать к станции дополнительные цистерны, т.к. станция "из коробки" сможет вместить в себя максимум 2 полных поезда с жидкостью.

Важное замечание! Станция подключается к общей сети с момента ее подключения к электросети. Если станция включена, но пути к ней нет, поезда с большей вероятностью погрузятся тем ресурсом, который запрашивается на новой станции, и встанут в депо загруженные. Если вы почините дорогу к новой станции, то они сами поедут туда разгружаться и система восстановит работу в штатном режиме.
Запуск поездов
В этом книге так же имеются заготовленные чертежи с поездами на любой вкус и цвет (почти), от 1-1 до 1-4, включая двухсторонние.

Для того, чтобы ваша система полностью заработала вам необходимо построить Депо и Заправку. Затем необходимо поставить любой подходящий для вас поезд и заправить его хотя бы стаком любого топлива (желательно чего-то из: Уголь, Твердое топливо, Ракетное топливо, Ядерное топливо) и поезд сам сначала поедет в депо своего типа, а затем вероятнее всего на заправку и вернется в депо.
Слова благодарности
13 Comments
magnus the red 11 Nov @ 9:59am 
Сделал примерно похожим образом сеть, работало больмень. Однако потом потребовалась кастомизация и мне стало лень, поставил cybersyn и закрыл для себя вопрос.
Гайд отличный! Спасибо
Poldnik999 11 Nov @ 8:11am 
Kotbuz, учитывая что у тебя есть какое то решение этой проблемы, то это уже замечательно. Я честно говоря тоже заколебался 50 часов тратить на решение проблемы, которую раньше решал ltn. Тоже хочу руководство выложить, если уменьшу кол-во комбинаторов хотя бы на четверть.
Kotbuz  [author] 11 Nov @ 7:41am 
Poldnik999, все эти решения из-за одной проблемы, которую я в сложностях описал. Пока что никто ничего дельного не придумал. У меня была цель сделать универсальные чертежи, которые работают без как таковой настройки. У меня получилось. Я постарался оптимизировать насколько мне хватило мозгов. Честно говоря я особо и не вижу смысла как то улучшать это дальше, если хочется повысить эффективность, проще и лучше будет поставить мод.
Kotbuz  [author] 11 Nov @ 7:22am 
Poldnik999 спасибо за замечание на счет нескольких станций снабжения и одного запроса. Не думаю что это можно корректно пофиксить, иначе нужно создавать отдельный сигнал с кол-вом станций у каждого ресурса и делить запрос на количество станций, но часто будет происходить так, что при деление результат будет 0 и запрос вообще не выполнится. Тут рассчитано, что если поезд с грузом попал в депо, то в первую очередь этот поезд поедет выгружаться, а если его не хватит, то уже новые поезда поедут на загрузку и затем разгрузку.
Poldnik999 11 Nov @ 7:02am 
Насчет стаков тоже понял, довольно удобно, у мене жидкости и предметы просто по красной и зеленой сетке отдельно идут
Poldnik999 11 Nov @ 7:01am 
Логика не дает ставить на одной станции лимит поездов больше чем нужно, но если станций снабжения несколько, то поездов из депо отправится кратно больше чем нужно
Poldnik999 11 Nov @ 7:01am 
А, понял тебя, станции разгрузки и погрузки обмениваются по красному сигналу друг с другом, а по зеленому уже идет запрос. Было бы удобно и надежно, но я нашел косяк.
Вот вводные:
1. 1 станция запроса требует 2 поезда;
2. 2 станции снабжения: на одной станции лимит поездов 2, на второй станции лимит поездов 2;
(лимит станции ставится по твоей логике, я там ничего не трогал, просто накидал ресы в сундуки)
Kotbuz  [author] 11 Nov @ 5:27am 
Poldnik999 на счет стаков - т.к. на радарах в одной сети и жидкости и предметы, то в депо приходится их разделять. У жидкости нет стака, поэтому если выводить с радара размер стака, то сигналы жидкости выводиться не будут. Конечно можно было разделить сигналы разными качествами, но это дополнительные комбинаторы на самих станциях, а их там и так немало.
Kotbuz  [author] 11 Nov @ 5:24am 
Poldnik999 На счет депо - из-за настроек лимита станций, когда на поезда поступает сигнал с ресурсом, который запрашивается, игра отправляет ровно столько поездов, сколько по лимиту влезут на станцию. Сразу все поезда по одному запросу не едут
Kotbuz  [author] 11 Nov @ 5:23am 
Poldnik999, руководство по настройке самой системы в процессе, надеюсь что до конца недели успею выложить