Часть 5. Логические элементы BC.
Как я уже говорил, автоматизация – неотъемлемая часть геймплея "индустриального" Minecraft. Ручной контроль и наблюдение за большой схемой, вмещающую в себя целую цепь различных процессов, превращает игру в беготню с перещелкиванием десятков рычагов, путаницу и невозможность оставлять работу без присмотра. Это отнимает массу времени и нервов. Грамотно используя логические элементы BC, можно добиться эффективного и бесперебойного производства, а так же обезопасить себя и имущество от непредвиденных сбоев и ЧП без вмешательства игрока и его постоянного контроля.
Как все происходит на деле? Мы определяем условия для запуска механизмов или двигателей, запускающие другие машины. Если все условия верны - работа будет выполнятся. Условия не выполнены - работа прекратиться или вовсе не начнется. Если вы понимаете основные принципы работы машин - вам не составит труда подобрать нужные правила. По-сути, здесь ничего сложного и нет: мы или будем генерировать сигнал редстоуна, или нет, отталкиваясь от обстоятельств. Забегая наперед (или назад), отмечу, что некоторые механизмы работают только при наличии редстоун-сигнала. В случае с машинами TE - условия могут настраиваться на наличие/отсутствие, либо полного игнорирования сигнала красного камня. IC и GT машины вообще работают только если поступает энергия, а генераторы вырабатывают электричество, только если в этом есть необходимость (тут попроще).
Проверяет и реагирует на условия - гейт.
Это прибор, который крепится на трубу BC. В зависимости от того где он будет расположен, он может принимать разные условия. Например, гейт, расположенный на транспортной/водонепроницаемой/электрической трубе содержит стандартные условия распознавания предметов/жидкостей/энергии, когда тот(или та) проходит через данный участок трубы, а также реагирует на пустые трубы и сигнал редстоуна. Гейт, расположенный на трубе рядом с механизмом или блоком, который имеет резервуар для жидкости, помимо стандартных условий, может еще и проверять на наличие жидкости в резервуаре, наличие или отсутствие свободного места для нее. При этом можно указать конкретный тип жидкости, на который он будет срабатывать. Еще гейты могут проверять наличие/отсутствие места для предметов в инвентаре машин или блоков, запас топлива, работать с вагонетками, контролировать температуру двигателей, срабатывать на показатели заряда аккумуляторов механизмов IC, прочее.
Гейты BC также тесно работают с механизмами модов IC, GT, RC, TE, Forestry.
Примечание: крафт самих же гейтов отнюдь недешевый по энергозатратам и о-очень долгий по времени. Рекомендую вешать на энерготрубы не меньше 5 лазеров. Лазеры служат для передачи энергии двигателей к сборочному столу - механизм, в котором крафтятся провода, микросхемы для гейтов и сами гейты. Чем больше лазеров – тем больше энергии они смогут передавать. Но имейте ввиду, что максимальная пропускная способность каждого аппарата составляет 4MJ\t. Если энергии будет больше, чем времени на передачу - она тратится зря.
Как работают гейты.
GUI гейтов
Условия и действия задаются щелчками ЛКМ/ ПКМ в полях 1 и 2 соответственно.
Условия для жидкостей или предметов задаются перетаскиванием иконки итема в поле 3.
Красная или серая черточка означает истинность или ложность условия соответственно - 4.
В случае истинного условия, гейты посылают сигнал.
Всего можно задать 5 сигналов: красный+, синий+, зеленый+, желтый+ и сигнал редстоуна. Делается это с помощью прикрепленных проводов на трубе соответствующего цвета.
Запомните раз и навсегда: редстоун сигнал по проводам не передается! Это не RP2, здесь передаются только фактические условия для его работы. Сам же редстоун активируется лишь на гейте и смежных с ним блоках.
Гейты могут реагировать на сигналы других гейтов (провода), тем самым координируя свои действия и действия других гейтов. Таким образом, мы можем связать их в единое звено, логическую самоуправляемую цепь правил, которые приводят машины в рабочий режим или их выключают.
Гейты бывают: обычные, железные, золотые и алмазные.
- Обычные - количество условий: 1. Реагируют только на сигнал редстоуна, генерируют только сигнал редстоуна.
- Железные - количество возможных условий: 2. Срабатывают на редстоун, основной набор правил и на красный провод. Генерируют редстоун и красный+.
- Золотые - количество условий: 4. Срабатывают на все, кроме желтого и зеленого проводов. Также, распознают жидкости и предметы в трубе или механизме. Генерируют редстоун, красный+, синий+.
- Алмазные - количество условий: 8. Реагируют на все доступные условия. Распознают жидкости и предметы. Генерируют редстоун, красный+, синий+, зеленый+, желтый+.
Существует два типа логических наборов правил:
"И",
"ИЛИ".
В случае с
И-гейтом, нужно одно (если условие всего 1) или сразу несколько (2 и больше) правил для истинного условия подачи сигнала.
Элементарная задача: нужно запустить редстоун-двигатель, который стоит в одном конце комнаты, рубильником, находящимся в другом. Возле двигателя – потенциальный потребитель (не важно, какой).
Возле двигателя и рубильника размещаем по одному железному И-гейту, и соединяем их красным проводом по трубе. ПКМ активирует меню гейта, где мы выставляем следующие условия:
Для гейта возле рубильника: ЕСЛИ "активный редстоун", ТО "красный+".
Для гейта возле двигателя: ЕСЛИ "красный+", ТО "активный редстоун".
Рубильник в положении ВКЛ подает сигнал редстоуна, гейт реагирует и отправляет красный+ по проводу. Тот зажигается и на другом конце гейт считывает информацию, незамедлительно включив свой редстоун. Таким образом запускается работа двигателя.
Давайте усложним схему. Все BC двигатели имеют свойство нагреваться. В случае, если потребитель по каким-либо причинам перестанет принимать энергию, та станет накапливаться, нагревая движок еще больше. В конце концов, он взорвется*. В И-гейт возле двигателя впишем условие на контроль температуры: синий и зеленый - степень нагрева движка – это безопасные уровни.
На деле получается: ЕСЛИ "красный+"
И "безопасная температура", ТО "активный редстоун".
Здесь мы задействовали сразу два условия, если оба будут верны (условие И условие) - двигатель будет работать. Если хоть одно из них пропадет - тот выключиться или не запустится.
Это первые шаги к тому, что я называю "системы защиты". Даже при включенном рычаге двигатель может остановиться, когда сменит цвет на оранжевый, означающим большую степень нагрева. Когда он охладится вновь до зеленого, работа продолжится (два условия снова будут истинны).
*Редстоуновские движки, конечно же, не будут взрываться, если есть хоть какой-то потребитель. Я сделал чисто схематический пример.
Давайте оптимизируем схему.
Нам не нужно, чтобы двигатель отключался так быстро. "Оранжевый" - это еще не предел. "Красный" - вот опасная зона. Тут железными гейтами уже не обойтись, поэтому поставим золотые И-гейты и добавим по трубе синий провод.
Для гейта возле рубильника: ЕСЛИ "активный редстоун"
И "пассивный синий", ТО "красный+".
Синий послужит предупреждением о перегреве двигателя, и если тот сработает, одно из условий для "красного+" будет ложным ("синий+). Следовательно, сигнал отключится, а за ним и двигатель. Как только он остынет, работа возобновится.
Для гейта возле двигателя: ЕСЛИ "красный+", ТО "активный редстоун", ЕСЛИ "критическая температура", ТО "синий+".
Обратите внимание, логика "И" используется только для одинаковых сигналов с разными условиями.
Для разных сигналов условия могут быть как одинаковые, так и разные, но не объедены между собой "И".
"ИЛИ"-гейту достаточно одного любого истинного условия для подачи сигнала. ЕСЛИ "первое условие" истинно ИЛИ "второе условие" истинно, ИЛИ "n-условие истинно", ТО "дать сигнал".
Гейты-пульсары отличаются от обычных лишь тем, что, будучи установленными на деревянные транспортные или деревянные водонепроницаемые трубы, могут подавать импульс энергии, выкачивая предметы из сундуков, жидкости – из цистерн. Или всасывать предметы обсидиановой трубой. Импульс может быть как одиночный, так и постоянный. Так же делятся на "И", "ИЛИ".
Начав осваивать гейты, вы не раз столкнетесь с проблемой "нехватки проводов", т.к. их всего 4 (красный+, синий+, желтый+, зеленый+), а условий работы схемы - с несколько десятков. Здесь важно понять, какие основные элементы вашей сети нужно контролировать. Повесить все на 1 рубильник, как в случае, описанным выше, невозможно. Так что
придется учиться контролировать одни схемы с помощью других, построив целые иерархические цепочки. И результат будет выше эмоций!
Немного (или много) практики – и у вас все получится. В следующей части я постараюсь описать самые популярные схемы автоматизации производства. По-настоящему интересные применения разумнее будет выкладывать в отдельной статье или теме на форуме, т.к. это довольно большой и запутанный объем информации.
Напоследок добавлю, что когда перед вами будет стоять, казалось бы, не решаемая головоломка – не отчаивайтесь! Сделайте перерыв, развейтесь на свежем воздухе. Часто-густо самые гениальные решения приходят в голову совершенно случайно
P.S. Не стоит также недооценивать мысленные эксперименты -)
__________________________________________________________________________________________
Часть 6. Шаблоны гейтов и примеры настройки схем.
Начнем практиковаться. Рассмотрим самые популярные схемы автоматизаций для производства.
Охлаждение* ДВС.
Особенность этих двигателей в том, что, помимо топлива, их еще нужно заправлять водой, дабы те не перегревались. Делать это вручную бессмысленно, поэтому нужно подключить к двигателю еще водонепроницаемый трубопровод, на другом конце которого будет стоять помпа с редстоун-двигателями у "бесконечного" источника воды (резервуар 3х3х1).
Схематически это выглядит так:
Как работает:
Возле рычага (1) вешается гейт (2), который будет генерировать сигнал "красный+", если получит сигнал редстоуна (рычаг вкл). Возле двигателя (4) вешается гейт (3), срабатывающий на красный+ и генерирующий редстоун (он запустит двс). Заполненная труба (5) ничего не проводит, кроме проводов. Ее часто придется использовать для того, чтобы перебросить провод с одного типа труб на другой (в моем случае – с электрической на водонепроницаемую). Еще я применил ее, чтобы повесить гейты возле рычага и редстоун-движков. Пара гейтов (6) так же срабатывают на красный+ и генерируют редстоун, запуская механические двигатели (7) и приводя в рабочее состояние помпу (8). (9) – условный потребитель энергии.
Таким образом, нажатием одного рычага мы контролируем работу сразу 3 процессов: подача энергии потребителю, энергия для помпы и подача воды.
*Если установлен мод Additional BC Objects, то про логику для охлаждения можно забыть, поставив одну трубу-помпу. Размещена ровно над источником воды она станет всасывать воду и передавать по водонепроницаемым трубам, обеспечивая жидкостью 5-6 двс.
Автовыключатели двигателей.
По завершению работы механизмов, запитывающие их двигатели сами отключаться не умеют и продолжают вырабатывать энергию. Топливо расходуется нерационально + есть вероятность перегрева и взрыва двигателя с неприятными последствиями. К сожалению, не всегда получается реализовать подобную автоматику по причине банального отсутствия нужных настроек у гейта для какого-нибудь механизма из другого мода (например, я не нашел настроек для электролампового завода Forestry). Так что делать, если нужно оставить работу без присмотра и не ждать окончания процесса, нервно поглядывая на рубильник?
Все просто: нужно определить момент, когда машина работает или готова работать, а когда – нет (и не будет). А затем отправлять сигнал о статусе на гейт около двигателя или рычага, который запустит\остановит\вовсе не запустит движок.
Для BC машин это будут настройки
(
work scheduled – в процессе работы) и
(
work done - работа завершена или невозможна).
Для TE можно использовать проверку наличия места для энергии в механизме
(can store energy).
Для RC и Forestry иконки
(есть работа) и
(есть работа) соответственно.
Пример для машин BC, настройки гейта должны выглядеть так:
Если условие выполнение операции в механизме истинно, гейт генерирует сигнал, который потом принимается гейтом возле рычага или двигателя, проверяется на истинность и генерирует сигнал редстоуна, дающий старт работе движка:
Для других машин механика та же самая, а правила могут быть другими.
Метод дизъюнкции
Лично я всегда стараюсь настраивать отправку команды "старт", когда все условия для начала работы удовлетворительны (истинны). Но порой проще и разумнее использовать прием дизъюнкции (логическое сложение). Т.е. мне не приходится собирать и проверять кучу условий ДА, если можно обойтись одним НЕТ, или не проверять множество НЕТ, когда есть хоть одно ДА.
Мнемоническое правило для дизъюнкции с любым количеством входов звучит так: На выходе будет:
- "1" тогда и только тогда, когда хотя бы на одном входе есть «1»,
- "0" тогда и только тогда, когда на всех входах «0»
Как это работает, можно понять на следующем примере. Допустим, работает карьер, от него идет транспортная труба к ряду сундуков. Количество сундуков – любое. Если все сундуки станут заполнены – нужно остановить работу карьера, чтобы итемы не вываливались на землю и не пропадали в отсутствие игрока.
Я не стану проверять, пустой сундук или полный. Кроме того, проверить каждый будет невозможно, т.к. сигналов всего 4, а сундуков может быть и 100. Если какой-нибудь сундук заполнится – тот даст сигнал о невозможности работы. А как же остальные, ведь там может быть еще место? Здесь применяется дизъюнкция. Если во всех или хотя бы в одном сундуке будет наличие свободного места – карьер будет работать.
Если все сундуки будут заполнены – карьер остановится. Понятное дело, чтобы остановить двигатели придется добавить условие в гейт возле двигателя или рубильника, проверяющее истинность доступного места в сундуках. В таком случае, синий+ будет означать запуск двигателей при наличии сигнала редстоуна и красного+.
То же самое применимо и к цистернам.
Метод отрицания.
Иногда бывают случаи, когда красный+ уже где-то задействован в схеме (например, вы включаете двигатели красным сигналом). Проверять большое количество сундуков или цистерн синим+ довольно дорого, поскольку придется ставить золотые гейты. В таком случае, нужно задействовать метод отрицания.
Мнемоническое правило для отрицания звучит так: На выходе будет:
- "1" тогда и только тогда, когда на входе «0»,
- "0" тогда и только тогда, когда на входе «1»
Как показано на рисунке, красный+ включает двигатель. Возле карьера стоит гейт, который генерирует сигнал двигателю, если получит сигнал редстоуна (рычаг стоит за гейтом) и пассивный синий.
Гейт дальше на транспортной трубе настроен следующим образом:
Он и будет отрицающим элементом.
Поскольку любой сундук, у которого есть наличие места для приема предметов будет генерировать красный+. Когда места не станет, красный+ гаснет, и генерируется синий+. Если синий+ загорается, гейт на рычаге остановит работу. Таким образом мы задействовали всего 2 золотых гейта, сэкономив ресурсы за счет железных.
Еще раз повторю, это нужно для того, чтобы разделять одинаковые сигналы с разными условиями, не путать их и не сливать воедино, когда этого делать не надо.
Передача редстоуна между измерениями.
Напоследок хочу рассмотреть вариант, когда вам нужно включить механизм в одном измерении, находясь при этом в другом. Для 1.4.7 существуют моды, позволяющие это делать, для 1.5.2, к сожалению, пока нет (или не нашел). Мод
WirelessRedstone позволяет осуществлять беспородную передачу сигнала, но только в одном и том же измерении. Но, включив фантазию, можно обойтись только трубами-телепортами или тессерактами. Также нам придется задействовать блок из
ChickenChunksMod, который будет имитировать присутствие игрока там, где его сейчас нет, не давая игре "выгрузить" чанк.
Итак, нам нужно отослать сигнал редстоуна в Нижний мир, чтобы включить механизм (обычно – помпу). Тут понадобится конструкция подобная картинке ниже:
1 – сундук, в котором будет лежать один любой итем. Он послужит "посылочкой" для включения редстоуна.
2 – рычаг, генерирующий сигнал редстоуна, который мы хотим якобы передать в Нижний мир.
3 – гейт-пульсар, срабатывает импульс, когда получен сигнал редстоуна (2). Так же он проверяет наличие итема в сундуке, генерируя красный+ в случае истинного значения:
4 – труба-телепортер, настроена на прием и посылку одновременно. Частота "1".
5 – провод, служащий передачей сигнала о наличии итема в сундуке (1), и передающий статус гейту (8).
6 – сундук, в котором лежит еще один итем. Он так же служит посылочкой для выключения редстоуна.
7 – рычаг, генерирующий сигнал о прекращении работы в Нижнем мире.
8 – пульсар срабатывает, если получен сигнал рубильника (7) и пассивный красный (или "красный-"):
Второе условие нужно для того, чтобы "посылка" не летала туда-обратно, получив сигнал об отключении редстоуна в другом мире. Иначе схему попросту зациклит.
9 – телепорт-труба, прием-посылка, частота "2".
Строим портал в ад, размещаем там следующую конструкцию:
1 – сундук, куда попадает посылка с верхнего мира через трубу (9) для подачи редстоун сигнала. Он послужит своеобразной "ячейкой памяти".
2 – пока итем находиться в сундуке, гейт будет генерировать сигнал редстоуна (в настройках гейта указано правило "есть предметы в сундуке").
3 – индикатор редстоун сигнала. Когда с "верхнего" приходит посылка, гейт (2) зажигается, редстоун включен:
4 – телепорт-труба, прием-передача, частота "2". Тут заходит и выходит предмет, служащий для отключения редстоуна.
5 – если гейт улавливает движения итема по трубе, он генерирует красный+ по проводу (7).
6 – железная труба. Отправляет итем в обратную сторону, возвращая опять в Обычный мир (не пропадать же добру).
8 – еще один пульсар. Получив красный+, оповещающий о необходимости выключить сигнал редстоуна, тот вытаскивает итем из сундука и отправляет обратно в верхний мир (9). Гейт (3) обнаруживает ложный результат проверки наличия итема в сундуке и перестает генерировать сигнал. Редстоун выключен.
10 – чанк-лоадер. Без него провернуть данную схему было бы невозможно.
Данный пример отлично подходит для заправок геотермальных генераторов в "верхнем" мире лавой из "нижнего". Редстоун будет включать механические двигатели BC, которые приведут в действие помпу. Так же можно и выключать их, без нужды телепора игрока в ад (потому что там страшно)
__________________________________________________________________________________________