Alt-F4 #31 — Ускоренный курс по комбинаторах

опубликовали  pocarski, T-A-R, stringweasel, Nanogamer7, Conor_, Therenas, Firerazer

После короткого недельного перерыва Alt-F4 вернулся с выпуском №31. В нем pocarski возвращается, чтобы поговорить о большем количестве способов построения компьютерной логики в Factorio, на этот раз с использованием комбинаторов, которые оказались проще в использовании, чем вы думаете! После этого Big Community Games объявляют об еще одном своем захватывающем мероприятии, на этот раз в центре внимания — Industrial Revolution мод

Комбинаторы и почему их не стоит бояться pocarski

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

Схема сети состоит из четырех основных компонентов: проводов, комбинаторов постоянного, сравнивающего и арифметического.

The 3 combinator types connected with wires

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

Базовые элементы

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

Pulser circuit using Arithmetic combinator

Генератор импульсов самый простой для понимания. Вход немедленно передается на выход по красному проводу, а инвертированный вход добавляется к тому же красному проводу после стандартной задержки комбинатора в один тик. Оба значения, находящиеся на одном и том же проводе, компенсируют друг друга, что означает, что вывод в точности совпадает с вводом, но длится только один тик игры. Здесь использование сигнала «каждый» гарантирует, что схема может принимать любой сигнал в качестве входного. Если вы хотите сделать его специфичным для сигнала, вы можете заменить «каждый» на входе и выходе на нужный сигнал. Эта схема имеет поистине колоссальное количество применений, особенно если она используется в сочетании со счетчиком.

RS Latch made with a Decider combinator

Далее идет RS триггер. Его входы — это либо 1 сигнал «S», либо 1 сигнал «R», обозначающий Set и Reset. Когда он получает сигнал «S», состояние комбинатора становится истинным. Он зациклен сам на себя, поэтому 1 «S», который он выводит, будет добавлен к входу и сохранит условие истинным даже после того, как исходный вход «S» отключится. Точно так же, когда он получает вход «R», условие становится ложным, отключая выход «S» и прерывая цикл. Эта схема лучше всего подходит для систем, в которых требуется какой-то гистерезис, когда одно состояние запускает вход «S», а другое состояние запускает вход «R».

Counter circuit with Decider combinator

Наконец, счетчик. Конструктивно он идентичен RS триггеру, но на этот раз выход установлен на «подсчет всего на входе». Это означает, что пока выполняется условие , он будет продолжать выдавать свои результаты, запоминая их. Для каждого тика, который он получает, он будет увеличивать значение этого сигнала в своей памяти на полученную сумму. Как только условие нарушается, память очищается, так как решающий блок больше не пропускает сигналы. Подобно генератору импульсов, если вы хотите, чтобы он запомнил только один сигнал, замените «все» на выходе желаемым сигналом. Эта схема, как и генератор импульсов, имеет огромное количество применений, но наиболее популярной из них является отслеживание количества предметов.

Примеры

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

Допустим, у вас есть чертеж ядерного реактора, в котором извлечение отработанного топлива вызывает загрузку нового. Такую конструкцию придется запускать вручную, поскольку реакторы строятся пустыми. В идеале вы хотите добавить схему, которая после того, как все сундуки  окажутся с топливом , запускает заправку ровно один раз. Здесь на помощь приходит импульсный генератор. Установите комбинатор в каждом сундуке, сравнивающий, достаточно ли в нем предметов, а затем соедините их все вместе в один комбинатор, который проверяет, все ли сундуки готовы. Затем это сравнивающее устройство выдает сигнал «использовано топливо» в импульсный генератор, который подключен к каждому устройству подачи топлива в реактор. Это приводит к срабатыванию всех устройств для заправки топливом ровно в тот момент, когда топливо становится доступным для всех из них, и реактор запускается автоматически. Кроме того, это также приводит к автоматическому перезапуску реактора, если в нем когда-либо заканчивается топливо.

Reactor fueling circuit setup

Далее классический пример: резервное питание. Представьте, что у вас есть набор аккумуляторов, и вы хотите активировать свои паровые генераторы, если накопленная энергия станет слишком низкой. Вы можете просто подключить переключатель непосредственно к аккумулятору и сказать ему, чтобы он активировался, если уровень заряда аккумуляторов ниже, скажем, 20%, но это просто приведет к его быстрому включению и выключению, постоянно поддерживая аккумуляторы на уровне ровно 20%. Вместо этого следует использовать RS триггер. У комбинатора на выходе «S», когда заряд аккумулятора ниже 20%, и на другом выходе «R», когда заряд выше 70%. Подсоедините их оба к триггеру и подключите выход триггера к переключателю, установленному для активации, если S> 0. Переключатель активируется, как только заряд упадет ниже 20%, и поддерживает работу резервного питания, пока заряд не поднимется выше 70%.

Backup power circuit setup

Наконец, процесс, который многие опасаются внедрять: обогащение урана. Нам нужно рассмотреть 3 манипуляторы: ввод, вывод и переработка. Последний не является манипулятором, мы заботимся только о первом звене цепочки манипуляторов. манипулятор ввода не нуждается в какой-либо управляющей логике, он просто захватывает 3 элемента U-238 и загружает их, когда они нужны. Выходной манипулятор должен быть отключен во время переработки , чтобы не удалить какие-либо элементы катализатора. Манипулятор для утилизации должен выводить ровно 40 U-235, а также 2 U-238. Манипулятор для переработки получает постоянный сигнал U-238, что вносит его в черный список. Он начинает вынимать U-235 и каждый раз увеличивает счетчик на полученное количество. Манипулятор также получает постоянный сигнал -39 U-235, который не влияет на фильтр. В конце концов, манипулятор будет считывать 40 U-235 с зеленого провода и -39 U-235 с красного провода. Теперь он видит положительное общее количество U-235, и, поскольку U-235 находится раньше в списке сигналов, он имеет приоритет над сигналом U-238. Теперь манипулятор заносит U-235 в черный список, что означает, что он переключается на извлечение двух предметов  U-238. Это делает две вещи: очищает счетчик и запускает манипулятор вывода, которому теперь ничего не остается, кроме как вынуть оставшийся U-235. 2 переработанных предмета из U-238 будут вставлены в начале следующего цикла. Переработка U-238 не требует какой-либо дополнительной логики, поскольку входной манипулятор ограничен максимум 3 предметами, оставляя 2 других места для переработки урана.

Kovarex enrichment circuit setup

Заключение

Каждый из приведенных примеров может быть улучшен и конкретизирован в соответствии с потребностями пользователя. Иногда это можно сделать с помощью базовой математики и логики, а иногда нужно добавить еще пару базовых модулей. Например, вы можете добавить второй счетчик в контур обогащения, чтобы предотвратить переполнение и остановку центрифуги, если во входном потоке присутствует U-235.

Каждую веху в логических сетях продвигали шаг за шагом, разделяя целое на части, а затем разделяя части еще дальше. В конце концов, именно так были разработаны современные компьютеры — сделать логический вентиль из транзисторов, затем сделать триггер памяти и сумматор из логических вентилей, затем сделать RAM и ALU из защелок и сумматоров памяти, а затем сделать компьютер . Если вам удастся иногда подумать: «Эй, я уже решил это раньше», то с помощью схем можно добиться всего.

Полный вперед! T-A-R

Big Community Gamesрада объявить об очередном ивенте Factorio MMO. Был обнаружен очень богатый рудой кусок Nauvis , что дало нам прекрасную возможность вместе запустить ракету в эту субботу! Темой этой вечеринки будет Steampunk. Deadlock989’s Industrial Revolution 2 принесет весь пар и тлеющее топливо, которые мы любим, и, возможно, даже немного больше.

Сборщики IR, представленные в FFF #311

По сравнению с ванилью, наш набор инструментов расширен за счет всевозможных технологий. Новые материалы и процессы сделают создание ракеты немного более сложным и очень увлекательным. На странице события есть полный набор модов и дополнительная информация. Сервер будет запущен в обычном многопользовательском лобби в субботу в 18:00 UTC / GMT.

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

Смазывайте свои экзоскелеты и наслаждайтесь событием!

Содействие

Как всегда, мы ищем людей, которые хотят внести свой вклад в Alt-F4, будь то отправка статьи или помощь с переводом. Если у вас есть что-то интересное, чем вы хотите в изящной форме поделиться с сообществом, то это место для вас. Если вы не совсем уверены в этом, мы с радостью поможем, обсудив идеи содержания и вопросы структуры. Если это похоже на то, что вас интересует, присоединяйтесь к Discord, чтобы начать!

Comments: