Статья про тонкости игрового процесса в игре Factorio.
В этой статье рассказывается о примере применения арифметического комбинатора в Factorio.
-----------------------------------------
Важное
замечание! Эта статья была написана для первой версии игры Factorio.
Несмотря на некоторые несовпадающие механики игры, предметы или их
свойства, статья по-прежнему актуальна и для текущей версии игры.
-----------------------------------------
Предисловие.
Арифметический комбинатор в игре Factorio выполняет обычные арифметические действия по заданному условию. Его работа в логической цепочке довольно проста. На вход комбинатора приходят определённые сигналы, с которыми производятся простейшие арифметические действия. Результат передаётся на выход комбинатора.
В текущей статье будем рассматривать не типичный для игры пример, когда использование арифметического комбинатора не требуется. Но это всё же будет сделано для удобного понимания принципов работы арифметического комбинатора.
Задача с сундуками.
Создаём условие задачи: пусть где-то расположено нефтеперерабатывающее производство. Излишки продукции нефтепереработки идут на создание твёрдого топлива. Излишков мало – твёрдое топливо создаётся понемногу. Мы проложили железную дорогу и готовы поездом забирать твёрдое топливо. На станции погрузки установлены 4 деревянных сундука, они медленно и неравномерно заполняются. В сумме, объём наших сундуков превышает объём вагона. Нужно как-то сделать чтобы поезд приезжал и забирал твёрдое топливо, когда оно заполнит каждый сундук наполовину или больше.
Сразу оговоримся, что в игре это решается очень просто: никаких изобретений не требуется – поезд приезжает, стоит до полной загрузки, затем уезжает. Либо сундуки соединяются сигнальным проводом со станцией и она включается/выключается по условию, когда общее количество твёрдого топлива в сундуках превышает половину.
Здесь, для ознакомления с работой арифметического комбинатора задача немного нелогична, но зато позволяет посмотреть на работу с его настройками.
В нашей задаче требуется найти среднее арифметическое значение от количества всех четырёх сундуков. Эдакий «общий» средний объём одного сундука. И когда этот средний объём сундука будет больше половины – включить ж/д станцию.
Пускаем на станцию погрузки твёрдое топливо. Сундуки начинают заполняться:
В зоне действия электричества ставим арифметический комбинатор:
Соединяем сундуки между собой сигнальным зелёным проводом для того чтобы считывать общее количество твёрдого топлива из всех сундуков. Далее соединяем сундуки сигнальным зелёным проводом с входом арифметического комбинатора. Теперь по сигнальному проводу на вход арифметического комбинатора будет поступать общее количество твёрдого топлива со всех четырёх сундуков:
Щёлкаем по арифметическому комбинатору, в открывшемся окне настроек выбираем сигнал, который ожидаем на входе в комбинатор. Для этого щёлкаем по пустой ячейке под словом «Вход» и находим твёрдое топливо. Именно твёрдое топливо в нашем случае выступает в качестве сигнала поступающего от сундуков:
Из уроков математики помним, что среднее арифметическое значение находится путём деления общей суммы всех членов выражения на их количество. А значит, сумму всего твёрдого топлива, которое собирается по сигнальному зелёному проводу из сундуков, нужно разделить на количество сундуков, то есть на 4. Для этого выбираем знак выражения – деление «/»:
Вместо нуля во второй ячейке вручную вписываем 4 (количество сундуков):
Получив на вход количество твёрдого топлива из всех сундуков, арифметический комбинатор разделит это значение на 4. Таким образом, он выполнит поставленную перед ним задачу, выступив в роли простейшего калькулятора.
Но полученное значение нужно куда-то записать чтобы можно было им воспользоваться. Для этого щёлкаем по пустой ячейке под словом «Выход» и выбираем любое обозначение для выходного сигнала. Например, латинская буква «O»:
Вот теперь всё идеально: количество твёрдого топлива из всех сундуков разделится на 4 и присвоится латинской букве «O»:
Для того чтобы включать/выключать ж/д станцию при помощи нашей логики, соединяем выход арифметического комбинатора со станцией сигнальным зелёным проводом:
Щёлкаем по железнодорожной станции и в настройках подключения логической сети ставим галочку на пункт «Включить/Выключить»:
А для того чтобы ж/д станция по логическому сигналу могла включаться/выключаться, необходимо настроить условие включения. Для этого в левой части условия выбираем тот самый сигнал «O», идущий от арифметического комбинатора:
Так как требуется вызвать поезд, если в «общем среднем сундуке» твёрдого топлива оказалось больше половины, то в условии устанавливаем знак «больше»:
Один деревянный сундук имеет 16 ячеек для хранения. Каждая ячейка может хранить 50 твёрдого топлива. Значит весь сундук при максимальном заполнении может хранить 16х50=800 твёрдого топлива. По условию требуется больше половины, то есть больше 400. Поэтому в правой части условия вручную вписываем 400:
Теперь ещё раз пробежимся по всей логической цепочке:
- Деревянные сундуки, по условию, заполняются неравномерно. Один может быть заполнен почти доверху, другие быть почти пустыми. Общее количество твёрдого топлива из всех четырёх сундуков суммируется в сигнальном зелёном проводе и подаётся на вход арифметического комбинатора.
- Арифметический комбинатор делит входящее количество на 4 (по количеству сундуков) и присваивает полученное значение сигналу, обозначенному латинской буквой «O». С выхода арифметического комбинатора сигнал «O» с присвоенным значением поступает в ж/д станцию.
- В станции происходит проверка условия: если значение пришедшего сигнала «O» больше 400 (в среднем, больше половины сундука) – станция включится. Если меньше 400 (в среднем, меньше половины сундука) – ничего не произойдёт. То есть, ж/д станция выключается, если «среднеарифметический сундук» заполнился твёрдым топливом меньше половины. Но включается, если «среднеарифметический сундук» заполнился твёрдым топливом больше половины.
И, если в среднем, сундуки заполнились больше половины – ж/д станция включится и на неё приедет поезд для погрузки твёрдого топлива:
Послесловие.
В статье использовался не самый актуальный пример работы ж/д станции с сундуками, но показательный для примера работы арифметического комбинатора. Наглядно удалось посмотреть как несколько сундуков передают общее значение хранимого в них твёрдого топлива на вход арифметического комбинатора. А комбинатор, в свою очередь, выполняет деление на количество этих сундуков, получая среднее арифметическое значение.
Используя арифметический комбинатор, игрок сможет выполнять необходимые арифметические действия в своих собственных логических схемах.
Чертежи.
К этой статье нет чертежей. Чертежи к другим статьям можно скачать в текстовых файлах в моём канале Telegram.
-----------------------------------------
Прямая ссылка на канал Telegram: https://t.me/format_aa
☕️ Если вы хотите угостить меня кофе или вкусняшкой за старания, сделать это можно с помощью доната: https://boosty.to/format_aa/donate
-----------------------------------------
Подпишись на канал и узнавай больше +
#Формат_АА
#Factorio
#схемы
#чертежи
#арифметический
#комбинатор