Перейти к основному содержимому

Логическая сеть и комбинаторы

Вся статья, кратко

Логические сети в Factorio - это наше всё для управления и автоматизации чего там.

С помощью разноцветных сигнальных проводов, зелёных

Green wireGreen wire
и красных
Red wireRed wire
, которые соединяют различные игровые элементы як сундуки, резервуары, конвейеры и прочую лабуду, можно контролировать поток ресурсов, управлять производственными линиями и оптимизировать эффективность работы почти всего и вся. Основой логической сети являются комбинаторы, хотя иногда можно и без них.

Комбинаторы и сигналы по проводам

Имеется три типа комбинаторов, которые работают на основе заданных математических операций и логических условий. Арифметический комбинатор

Arithmetic combinatorArithmetic combinator
выполняет базовые арифметические операции, сложение, вычитание, умножение и деление. Сравнивающий комбинатор
Decider combinatorDecider combinator
сравнивает два сигнала и что-то решает. Постоянный комбинатор
Constant combinatorConstant combinator
генерирует заданные сигналы каждый квант игрового времени.

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

Создаём простую логическую сеть

Нет ничего проще, чем соединить между собой две игровые сущности в Factorio посредством сигнального провода,

Green wireGreen wire
или
Red wireRed wire
. Вот пошаговый алгоритм создания такой сети:

Как создать логистическую сеть

  1. Выбираем цвет сигнального провода на панели инструментов, красный или зелёный.
  2. Кликаем выбранным сигнальным проводом на первом участнике будущей логической сети (манипулятор), потом кликаем на втором участнике (конвейер).
  3. Задаём условия чтения на конвейере.
  4. Задаём условия реакции на манипуляторе.

Тут мы забираем стальные балки

Steel plateSteel plate
с конвейера, если их скопилось больше определённого значения.

Простой пример

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

Steel chestSteel chest
, и фонарь
LampLamp
зелёным сигнальным проводом
Green wireGreen wire
и зададим следующее условие на фонаре:

Простой пример с фонарём

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

Storage tankStorage tank
.

Можно вообще создать полоску из фонарей и иллюминировать ими в зависимости от наполняемости сундука или цистерны. Пример:

Простой пример с фонарями

В сундуке лежат 224 железные плиты

Iron plateIron plate
. Соответственно, светят три первых фонаря, а последний не светит. Всё просто. Ещё разные примеры без комбинаторов.

Простой пример с комбинаторами

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

Допустим мы хотим держать какое-то минимальное количество жидкости в цистерне

Storage tankStorage tank
и расходовать её при заполнении цистерны. Для этого понадобиться всего два комбинатора и помпа
PumpPump
. Первый, сравнивающий комбинатор
Decider combinatorDecider combinator
, будет открывать помпу если количество жидкости скопилось больше, скажем 20K единиц в цистерне. Второй, арифметический комбинатор
Arithmetic combinatorArithmetic combinator
будет вычитать количество жидкости, которую можно слить при переполнении, пусть это будем 15K.

Простой пример с жидкостью

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

Чертёж для воды (меняйте жидкость на любую другую)
0eNqdVNuOmzAQ/Zd5rGAFDuTCQ6V+R7VCDkyyo4Jt+ZI2ivj32lBBtjHbdF+QBo+P55wzMzc4dg6VJmGhugE1Uhiovt/A0FnwLvyzV4VQAVnsIQHB+xAZKzU/Y2q5+AFDAiRa/AVVPrwmgMKSJZxwxuBaC9cfUfuEGUG5Xnk8JY1PliK85AFYmSVwhSo9FC+lx21JYzOdbxPw1Vktu/qIb/xCUodLDenGka39WTsjnUgbWz9wuJC2zv9ZaIwZ6bdAIVD3dLwOWQh6xTW34Q34CsN0LqZaTIDMw+esEcU9T2qhKpO5qBCy4XXw9x+kYIsUpLySMj1r6UQbEaXYv5RrsrAI9CbuU0RtNgNvRuDPksxXSBZzJVyTfevRUpN6cY8kRnEjXA9LSe+ZFvEGWICXHjCfbQKDAaNeeiEvs8z3g1Tou2EsA774q9JZ5SLgp85Ru0D/5NarMKy1j8b2ieZJgD2XvGZCOdfTYkMt6o8dKLN3DsQ0/4PznOBxTe4HjmWjyH8N3brK/5hjdfWFOWHrk5Z9TcJjQHXincH/MKJ4MCKJT8LmQ4uKB4tWYNbM2z6/JspiNo49bM/w8LjDq7uVn8AFtZn2yD4vdge22+9Zvtlth+E3uQIOkA==

Ещё разные примеры с комбинаторами.

Больше подробностей

Дополнительные материалы, смотрите радуйтесь:

Примеры логических сетей на комбинаторах