Factorio логистическая сеть гайд
В последнее время много копий сломано вокруг технических собеседований. Очевидно, что инвертирование двоичного дерева на доске практически никак не связано с практическими навыками реального программиста. Примитивный Fizzbuzz по-прежнему остаётся самым эффективным тестом. Как следствие, выросло внимание к опенсорсным проектам, но оказалось, что это тоже не очень хороший показатель, потому что у большинства профессионалов нет на них времени.
Все эти методы интервью не сравнятся с очень простой метрикой: совместная игра в Factorio. Прохождение всего цикла Factorio — практически идеальный показатель, насколько хорошо человек решает общие технические проблемы. Можно даже настроить прохождение игры на основе будущей должности, чтобы лучше понять, как кандидат справится со своей ролью.
Factorio — это игра об автоматизации. Вероятно, лучшим введением будет этот трейлер, но, по сути, ваша задача — построить автоматизированный завод, способный запустить ракету в космос.
Начинаете с нуля. Добываете вручную железную руду и камень, строите плавильную печь, чтобы плавить руду в железные пластины, из которых можно скрафтить автоматический твёрдотопливный бур. Можно самостоятельно забирать железную руду из бура и закладывать её в плавильню, но более эффективно использовать автоматический конвейер. Потом можно использовать полученное железо, чтобы сделать другой бур, который автоматизирует добычу угля. Затем строится конвейер для забора угля и конвейер для его передачи в бур. Эта крошечная фабрика производит железные пластины, из которых можно сделать третий бур — и начать добычу медной руды, которая позволяет крафтить медные плиты, а из них можно сделать медный провод, необходимый для работы погружного насоса. В сочетании с паровым котлом и паровым двигателем это даёт нам первую электроэнергию. Её можно использовать для исследовательского центра и изобретения новых технологий, таких как сборочный автомат. Как только разблокируете сборочные автоматы, можете использовать сделанный вручную провод для создания сборочной машины, которая будет автоматически изготавливать эти провода.
Игра начинается без установленной цели и почти без направления. Ведущий программист должен быть способен изучить UI и определить цель, а затем разработать план для её достижения. От джуниора ожидают правильного выполнения задач, поставленных ведущим разработчиком. Предполагается, что стажёр работает с наставником, но джуниор должен быть в состоянии самостоятельно устранить основные проблемы со своим кодом, прежде чем просить помощи от старшего. Миддл должен уметь работать независимо, как только ему дают задание, но от него не ожидают архитектурного проектирования.
Конкретные ожидания можно сформулировать так:
Важнейшим аспектом разработки программного обеспечения является умение работать в команде. Это означает координацию усилий с другими людьми, удовлетворение потребностей чужих проектов и сотрудничество с командой, а не самостоятельную работу, когда вы отказываетесь изменить свой дизайн, чтобы помочь интегрировать его с чьей-то работой. Естественно, такие ситуации всё время возникают в Factorio, потому что стандартные чертежи ограничены физическим пространством. В результате нужно тщательно изучить действия других людей, а иногда скорректировать свой дизайн, чтобы вписаться в ограничения по размеру или приспособиться к какому-то чужому чертежу, который занял больше места, чем ожидалось.
Если игрок уйдёт в себя, начнёт делать всё сам или молча исправлять проблемы, это быстро навлечёт на него гнев команды по тем же самым причинам, по которым коллеги злятся на программистов-ковбоев. К счастью, в Factorio есть встроенный эквивалент git blame : он показывает последнего игрока, который изменил любую сущность. Таким образом, если кто-то поставил костыль и не сообщил команде о проблеме, то когда этот костыль наконец сломается — все узнают, кто виноват. Если хотите выиграть, придётся плотно сотрудничать с товарищами по команде.
Одним из главных навыков для программиста является отладка. Это, пожалуй, самая очевидная параллель между Factorio и реальной разработкой ПО. Что-то может сломаться очень далеко от фактического источника проблемы. Способность быстро выяснить реальную проблему — это критический навык, и процесс мышления почти идентичен отслеживанию причины сбоя в реальной программе. Если перестал работать сборочный автомат, сначала нужно проверить выходящие потоки. Потом проверить, какого ингредиента не хватает на входе. Затем проследить ингредиент по фабрике, чтобы узнать, где он производится. И повторять процесс снова и снова, до тошноты.
Отладка в Factorio быстро усложняется. Как только вы построите нефтеперерабатывающий завод, то займётесь крекингом, где на выходе три разных трубы (мазут, дизельное топливо и попутный нефтяной газ), и если какая-то из них по какой-то причине стопорится, то весь завод прекращает работу.
Бывали случаи, когда весь завод останавливался, потому что вы начали исследовать что-то, не требующее жёлтой науки. В результате вы перестали использовать каркасы дронов, которым перестали поставляться электрические двигатели, где использовалась смазочная жидкость, для производства которой забирался мазут. В итоге стопорилась выходящая труба на нефтеперерабатывающем заводе, из-за чего у вас заканчивался попутный нефтяной газ (petrolium), что останавливало производство пластмассы. Как результат, прекращался выпуск сигнального красного провода — и вся фабрика выходила из строя. Опытные игроки предвидят подобные сценарии и внедряют самобалансирующийся крекинг нефти, чтобы всегда гарантировать баланс системы. Такой завод остановится только при закупорке выходящей трубы с попутным газом. Если хорошему программисту дадут сломавшийся нефтеперерабатывающий завод, он обычно сможет проследить проблему до источника, понять, что произошло, и быстро попытаться найти решение. С другой стороны, если человек просто плюхает на землю пару новых резервуаров без веской причины (он абсолютно уверен, что смазочная жидкость будет нужна всегда), то это большой красный флаг на методы решения проблем в его программах.
Подобные ситуации позволяют Factorio точно сымитировать сложные взаимозависимости, с которыми обычно имеют дело программисты. Сложность возрастает по мере добавления в геймплей новых концепций. Это очень похоже на рост сложности от дополнительных уровней абстракции в отладке сбоя, который мог произойти глубоко внутри одного из используемых вами фреймворков.
Сопротивление фидбеку без веских причин — хорошо известный красный флаг. Кроме того, настороженность вызывает программист, который неохотно принимает предлагаемые изменения и отказывается соответствующим образом корректировать будущие проекты. В итоге ему придётся постоянно напоминать о необходимости придерживаться какого-то стандартного способа решения проблемы. При этом человек не объясняет, почему ему не нравится предлагаемый метод. Это потенциально бомба замедленного действия в организации, потому что без присмотра он может быстро накопить технический долг для своих коллег. Такого рода проблемы практически невозможно уловить на традиционном собеседовании, только на стажировке.
Отказ следовать советам — лишь часть гораздо большей проблемы, когда программист не способен нормально интегрироваться в существующую структуру. Есть много способов построить фабрику в Factorio, и каждый требует стандартных методов сборки. Несоблюдение стандартов быстро затормозит всю фабрику, часто тонкими способами, которые не очевидны неосторожному разработчику.
Конструкция магистрального ленточного конвейера включает 4-8 конвейеров, разделённых на две секции (для подземных конвейеров). Он помещается в центре фабрики, и всё производство происходит перпендикулярно ленте. Эта конструкция опирается на несколько правил, нарушение которых может привести к полному хаосу. Во-первых, всегда следует использовать разделитель на выходе с конвейера. Никогда нельзя перенаправлять всю ленту: пустое пространство для другой ленты означает, что вы теряете целый конвейер ресурсов, даже после апгрейда. Во-вторых, все заводы должны масштабироваться перпендикулярно основному конвейеру. Невозможность быстрого масштабирования приведёт либо к огромной потере пространства, либо к невозможности масштабирования производственной линии, потому что она окружена другими производственными линиями.
Логистическая сеть
Есть разные способы построения логистических сетей. Самый простой — с сундуками пассивного снабжения. Но есть другой метод — сундуки хранения с фильтром, который решает проблему с мусором. Оба метода требуют правильной установки ограничителей в нужных местах. Сундуки пассивного снабжения обычно ограничены пространством сундука. К сундукам хранения нужно поставить манипулятор для подключения сундука к логистической сети. И обеспечить не менее N предметов перед установкой манипулятора. Если забыть про эти шаги, то будут впустую потрачены огромные ресурсы. Если программист постоянно забывает про ограничители на выходах — это красный флаг, что человек небрежно относится к производительности в реальных приложениях.
В других случаях команда может применять заранее разработанные чертежи, такие как проект ядерного реактора или роботизированного завода на дронах (bot factory). Они могут быть крайне сложными, но если сделать над собой усилие и разобраться, то они чрезвычайно экономят время. Остерегайтесь кандидатов, которые не хотят настраивать на заводе новый элемент просто потому, что не могут отследить сложную управляющую логику. Или кто бросает попытки разобраться в алгоритме функционирования такого завода, несмотря на очевидные преимущества дронов перед конвейерами.
Неоптимальный дизайн завода на дронах, источник
Поезда в Factorio — прямой аналог многопоточности: один поезд — это один поток выполнения, а каждое пересечение поездов или остановка — место в памяти, куда два потока потенциально могут писать одновременно. Светофоры — это блокировки (или мьютексы). Все баги в железнодорожной сети проявляются точно так же, как состояние гонки в ПО, потому что они буквально являются физическим состоянием гонки. Все компромиссы применимы и здесь — слишком длительная блокировка уменьшает пропускную способность. Неправильное проектирование светофоров обычно вызывает взаимоблокировку, точно так же, как в программном обеспечении, потому что в итоге возникает циклическая зависимость блокировок. Самая распространённая взаимоблокировка — это когда поезд слишком длинный и неожиданно блокирует второй перекрёсток, ожидая входа в первый. Затем этот второй перекрёсток препятствует отправлению другого поезда, предотвращая разблокировку первого перекрёстка.
Количество путей в железнодорожной сети соответствует количеству ядер CPU. Один железнодорожный путь трудно масштабировать больше, чем на несколько полос, потому что пропускная способность всей системы очень быстро ограничивается, даже с зонами ожидания. Наиболее распространённой конструкцией является двухполосная конструкция, по одной полосе в каждую сторону. Здесь появятся проблемы с пропускной способностью, когда возникнет необходимость постоянно разгружать поезда. Поэтому в больших железнодорожных сетях минимум по четыре полосы, причём две внешние действуют как объездные пути, чтобы избежать пересечений, когда это возможно.
Проблемы со светофорами в этих системах могут проявиться через фантастический промежуток времени. Единственный пропущенный светофор в одной железнодорожной сети однажды вызвал взаимную блокировку после корректной работы в течение двух недель. Так же и в программах состояние гонки может проявляться только раз в месяц, когда под сильной нагрузкой возникает высокая конкуренция потоков.
Как и в программном обеспечении, масштабирование производства в Factorio вводит новые проблемы в оригинальный дизайн чертежей и часто требует полной перестройки для максимального повышения производительности, с установкой модулей продуктивности и модулей скорости с маяками. Конвейеры становятся узким местом производительности даже на максимальной скорости ленты, заставляя искать способы разделить конструкции так, чтобы позже можно было вставить больше лент, или разделить заводы на модули.
Управление логистической сетью само по себе становится логистической задачей в конце игры из-за того количества проблем, какое вызывают экспансивные дрон-сети. Как правило, нужно приступить к сегментированию логистической сети и либо использовать поезда для транспортировки товаров между сегментами, либо строить сундуки запроса и снабжения, которые будут передавать товары через границы.
В конце игре для управления поездами требует перехода с push-архитектуры на pull-архитектуру, поскольку push-архитектура не справляется с высокой пропускной способностью. Это неизбежно приводит к использованию функции Train Limit и изучению, как использовать логические сети для кодирования базовой логики, чтобы станция запрашивала поезд только тогда, когда действительно готова полностью заполнить его ресурсами, вместо обычной игровой тактики в начале игры, когда куче поездов просто даётся команда ехать за железом. Новая схема сводит к минимуму количество поездов и при этом гарантирует, что в сети обслуживаются все станции.
Часто бывает, что ограничения входных линий в сборочный автомат и лимиты скорости манипулятора требуют перепроектирования заводов вокруг, точно так же, как высокоскоростные вычисления требуют знания узких мест в работе CPU. Эти узкие места почти никогда не являются проблемой, пока вы не достигнете определённого масштаба, но после этого начинают ограничивать производительность.
В конце концов, заводы становятся настолько огромными, что приходится отказаться от простого дизайна с основным ленточным конвейером или спагетти-дизайна — и перейти на более масштабируемую структуру. Чтобы выйти на мега-уровень, заводы обычно используют либо систему поездов, либо модульную систему, которая примерно соответствует микросервисам или архитектуре с плагинами.
Модульная архитектура пытается сохранить некое подобие основного конвейера, но вместо этого разделяет ленты на заводе и использует модульные блоки, которые принимают стандартные входы и стандартные выходы. Иногда этого можно достичь полностью с помощью дронов, но обычно материалы приходится доставлять по конвейеру на большие расстояния. Это очень похоже на систему модулей для монолитного приложения с теми же компромиссами.
Такие мегабазы представляют верхний уровень дефолтного сервера Factorio. Конечно, существует много модов, которые гораздо усложняют игру.
Space Exploration — полностью переделанная версия Factorio для колонизации космоса. Здесь планеты становятся ограниченными ресурсами, требуя от игроков колонизировать другие миры и использовать ракеты для передачи ресурсов между планетами. Из-за огромной задержки с доставкой материалов между планетами, координация этих баз приводит к возникновению проблем, сходных с глобально распределённой системой баз данных. Даже в логической сети приходится бороться с задержкой, потому что автоматическая система теряет из виду элементы, которые запущены, но ещё не достигли целевой планеты. Если это не учитывать, возникают дубликаты запросов для всех нужных элементов. С точно такой же проблемой сталкиваются распределённые системы при попытке обеспечить согласованность между узлами.
В целом софтверная индустрия не имеет ни малейшего представления, как находить и нанимать лучших разработчиков. Наверное, совместная игра в Factorio стала лучшим техническим собеседованием, которые мы когда-либо проводили. И это нас сильно смущает. Такое собеседование дико непрактично, занимает более 20 часов в мультиплеере с первого раза или 8 часов для команды опытных игроков. Что из этого можно извлечь? Не знаю. Мы, конечно, не можем перейти на Factorio в качестве метода собеседований — с таким же успехом можно просто дать кандидату домашнее задание.
Основы железнодорожной логистической сети
Чтобы минимизировать пробки на развязках, желательно с самого начала строить свою базу и ресурсные модули по цепочке зависимостей. Например, на юге, снизу от базы, у вас добывается руда. Эта руда поездами доставляется на переплавку чуть выше. Оттуда другие поезда везут её дальше вверх – к созданию базовых компонентов. Далее эти базовые компоненты отправляются ещё выше, к местам где они требуются на производствах. Это создаёт некую виртуальную цепочку из добычи – переплавки – производств – продвинутых производств.
Представим её как цепочку A-B-C-D. В этой цепочке поезда ходят по маршрутам A-B, B-C, и C-D. Конечно, производственные линии не такие простые, и будут добавляться маршруты, которым требуется идти по пути B-D, например, однако основная масса поездов уже перестанет мешать друг другу. Просто для примера – если вы об этом не задумались в самом начале, то к середине игры у вас может возникнуть ситуация, когда поезда с рудой едут с южных месторождений, создавая пробки в самом центре базы – потому что едут по маршруту E-A. Старайтесь избегать таких маршрутов, и если зона добычи у вас на противоположной стороне от переплавки – лучше создайте отдельный обходной путь для поездов с рудой.
Помимо разделения зон маршрутов, оптимизация такого рода даст уменьшение среднего времени, которое поезд проводит в пути – что опять же повышает эффективность транспортного потока.
Сигналы – основы
Туториал в игре крайне невнятно объясняет разницу между обычными и проходными сигналами, а самые лучшие туториалы в инете ,вместо объяснения логики сводятся к простой рекомендации – ставьте обычные сигналы за развязками, а проходные – во всех остальных местах. В принципе, этот совет работает. Но почему?
Давайте сначала разберёмся, как работают сами сигналы. В игровой механике, все рельсы разделены на виртуальные сегменты, своего рода куски пути. Разделены они как раз этими сигналами. В каждом сегменте одновременно может находится один поезд. Если у вас нет сигналов на путях – то в вашей сети сможет свободно кататься только один поезд, как только вы добавите второй, произойдёт ошибка и они не смогут рассчитать свой маршрут.
Когда в сегменте ЖД находится поезд, все сигналы которые стоят на пути в этот сегмент – т.е. отделяют его от других сегментов – показывают красный. Так же, красный показывают проходные сигналы, которые ведут к этому сегменту. Так же, красный можно включить логикой, что используют для создания безопасных ЖД переходов.
Когда поезд едет по маршруту, он проверяет сигнал на въезд в следующий сегмент, и если он зелёный – едет дальше. Если красный – ждёт. Это может приводить к дедлокам, но про них чуть позже.
После такого базового объяснения становится понятно, что нужно нарезать свою ЖД на сегменты, но всё ещё непонятно – зачем использовать проходные сигналы. Я придумал конкретный пример, который показывает, какое преимущество они дают при правильном применении.
Проходные сигналы – практическая польза
Отдельный вопрос – какие сигналы ставить на протяжении пути. Если везде будут стоять обычные – поезда будут набиваться даже там, где проезд в данный момент заблокирован. Если проходные – поезда не будут заезжать на длинный перегон пока другой поезд его не освободит. Тут нужно придерживаться баланса. Если в сети много путей, и нужно чтобы поезда выбирали свободную дорогу – ставьте проходные сигналы, а если у вас длинный перегон (например, между месторождением руды и базой) без вариантов – то на этом перегоне должны стоять обычные сигналы, с промежутком чуть больше длины поезда.
Сигналы – размер сегментов и длина поезда
Это неинтуитивно, но при планировании важно учитывать этот момент. Если вкратце – сегмент пути должен быть длиннее чем ваш состав. Более того – не только виртуальный сегмент – но и реальный, между развязками! Если вы используете составы из поезда и двух вагонов – сегменты должны вмещать в себя такой состав. Если вы используете длинные поезда – сегменты должны быть длиннее, если вы используете очень большие поезда – планируйте свою ЖД сеть очень тщательно! Почему?
Когда поезд въезжает в сегмент ЖД, он может остановиться на его выезде. Возможно, впереди занята станция, на которую ему нужно свернуть, возможно на развязке прямо перед ним сейчас красный. Что произойдёт если поезд длиннее чем сегмент? Его хвост останется торчать в предыдущем сегменте. Это не вызовет особых проблем в случае если предыдущий сегмент линейный, но что если это развязка? Она будет заблокирована до тех пор пока этот поезд не уедет.
Более того, если у нас, например, квадратная сетка ЖД путей, мы можем теоретически получить дедлок – поезд не может выехать на развязку потому что она заблокирована, другой поезд подъезжает к хвосту первого, и тоже стоит перед развязкой, блокируя уже третий перекрёсток,и это продолжается, пока не замкнётся квадрат. 4 поезда стоят, блокируя друг друга. Вы можете подумать, что это гипотетическая ситуация, для этого должно идеально совпасть время, в которое эти поезда подъедут в место X, но даже если вероятность этого крайне маленькая – однажды это случится. Поездов в вашей системе будет становится всё больше, движение всё насыщеней, и в определённый момент где-то поезда совпадут.
Поэтому просто запомните правило – расстояние между развязками должно быть больше, чем самый длинный поезд который будет ездить по этой ветке!
Развязки – расстановка сигналов
В целом, при проектировании развязок можно руководствоваться тем же правилом – на въезде проходные сигналы, на выезде обычные. Но я хочу разобрать это немного подробней.
Когда поезд въезжает на развязку, он её блокирует для других поездов, частично или полностью. Поскольку это может создать пробки, важно чтобы поезд въезжая на перекрёсток имел возможность выехать с него. Ставим на каждом выезде обычный сигнал, а по всей развязке, и перед въездом – проходные. Если поезду нужно после развязки налево, а тот путь сейчас занят – поезд, при правильной конфигурации сигналов, будет ждать перед развязкой, пока путь не освободится.
Любая развязка, особенно сложная, как правило, предполагает возможность поворота любого поезда в любом направлении. Иногда даже разворот. Это выгодно с точки зрения построения кратчайшего маршрута, но превращает развязку, особенно если она четырёхполосная, в мешанину из рельс.
Проектируя развязку, и расставляя на ней сигналы, попробуйте установить на неё поезд, и посмотреть, какие направления при этом будут заблокированы (красный сигнал). Идеально спроектированная развязка не должна мешать проезду других поездов. Например, если при правостороннем движении поезд идущий снизу поворачивает направо – он использует развязку, но оставляет свободными все пути кроме пути слева направо. Поезда идущие сверху вниз, справа налево, справа вверх или сверху налево – не должны останавливаться из за первого поезда.
Станции – настройка
Один из эффективных способов экономить топливо и не перегружать ЖД сеть – не гонять поезда порожняком. Я предпочитаю использовать LTN мод для более гибкой настройки, но сейчас расскажу о возможностях ванильной версии – их тоже вполне достаточно, чтобы организовать правильные транспортные потоки.
Для полноценного использования станций нам во первых потребуется хак, о котором многие не знают – если станции названы одинаково, то поезд едет на любую из них – во вторых – логические цепи. Начнём с организации доставки угля, например. Добывается он у нас в одном месте, но планируем добавить ещё добычу. Потребляется в топливном блоке, на переплавке железа\меди\стали, и на производстве гранат. Итого у нас две станции поставки и пять станций потребления.
Если мы присоединим провод к станции и к сундукам – мы можем настроить условие, по которому станция будет работать. Для станции добычи нам нужно условие, что в сундуках достаточное количество угля для полной загрузки поезда. Я обычно использую двухвагонные поезда, поэтому ставлю условие включения – больше 4000 угля. Сундуки передают по проводам, сколько в них угля, и как только его накопится достаточно – станция заработает. Для станции выгрузки нам нужно условие, что в сундуках осталось мало угля. Например, мы хотим чтобы в них поддерживалось не менее 2000 угля – ставим условие: если угля меньше 2000, включаем станцию.
Что теперь происходит? Поезд едет к ближайшей включённой станции. Сначала он забрал уголь на ближайшей добыче, и отвёз его на ближайшую выгрузку. Например, это оказалась плавка меди. Он вернулся к добыче, загрузился, и едет к ближайшей станции, но на переплавку меди только что выгрузили 4к угля, и она их не успела потребить, поэтому поезд отвёз уголь на другую станцию выгрузки. Далее он опять едет за углём, но первая станция ещё не успела добыть 4к угля, поэтому он едет на дальнюю. Если все станции отключены – поезд стоит на той, на которую приехал последней, и ждёт.
Эту схему можно легко расширять – если первый поезд не справляется, мы добавляем второй с теми же настройками, и он тоже будет курсировать между двумя добычами и пятью выгрузками. Когда у нас появятся новые места добычи\потребления, мы просто называем их тем же именем, ставим логику, и они автоматом включаются в сеть. Так же можно добавить в маршрут станцию буфер – всегда включённую, на которой поезда заправляются топливом.
Самый сложный момент в данном разделе – это логические условия. Объяснение того, как они работают, выходит за рамки этого туториала, но внизу я оставлю ссылки на интересные ресурсы.
Станции – буферы
Выглядит это достаточно просто – от путей выходит отнорок в сторону, разделяется на нужное количество линий, каждая из которых в длину позволяет вместить один или два поезда (опять же ,учитывайте, какие поезда у вас будут заезжать в этот буфер!), а в конце эти линии опять сходятся и ведут на станцию.
Кажется, это самый короткий раздел, и достаточно простой – но он тоже поможет вам избежать лишних пробок. 😀
Factorio (фишки, стратегии, схемы, идеи) запись закреплена
kovarex описал процесс оптимизация кода и ускорение разработки
Нравится Показать список оценивших
Factorio (фишки, стратегии, схемы, идеи) запись закреплена
Порядок прохождения модов в Factorio
Были несколько тем когда спрашивали какой модпак проходить, что сложнее/легче. Решил опубликовать такой список. Если у вас есть какие другие идеи или я забыл какие то моды или неправильно расставил, то пишите в комментариях
Нравится Показать список оценивших
Сначала интересные
Как я понял из статьи, все перечисленные бигмоды добавляют технологии, ресурсы и рецепты, тем самым усложняя производственные цепочки для запуска ракты. И только Space Exploration даёт много новых механик в плане развития после запуска ракеты, что значительно продлевает "сюжет" и интерес. Или в других бигмодах есть развитие после запуска ракеты?
Нравится Показать список оценивших
Нравится Показать список оценивших
Вова, вот поэтому из всех бигмодов я выбрал SE (без K2) и одновременно начал осваивать логистику.
Чужой компьютер
Просмотр темы 378
Комбинаторы
Мне таки удалось организовать оптимизированную погрузку комплекта ресурсов, причём вся система оказалась весьма простой. Мне потребовалось всего 3 комбинатора на одной станции, 2 на другой и симафор (это для погрузки комплекта из 2х ресурсов). Если мне потребуется увеличить комплект скажем до 5 разных ресурсов, то мне потребуется ввести в систему по 1 модулятору на каждый ресурс, так что всё весьма компактно и не займёт много места на любой, даже самой тесной станции.
Нравится Показать список оценивших
Алексей,
никак. конвеер либо работает либо нет.
Нравится Показать список оценивших
Andrey, также задался таким вопросом.. Вы не нашли его решение?
Нравится Показать список оценивших
Роман, Система из логических элементов, которая может сохранять сигнал. Два элемента тут - исключающии или (на выход 1, если оба входа 0). Собственно R будет сигнал, когда мы достигли 500 пластин и S - когда упали до 100. (схема от Игорь Шарапов спасибо ему)
gif 106 КБ
Нравится Показать список оценивших
Ребят, подскажите, как вывести число в комбинаторе, если на входе например четырех значное число 7356 и мне на выход нужно сделать трех значным 356. Цифры всегда меняются и нужна точность последних трех. Дайте формулу пожалуйста.
Нравится Показать список оценивших
Нравится Показать список оценивших
Нравится Показать список оценивших
Алексей, А как ты сделал? мне просто интересно, я всё немного однобоко делаю, может твой метод лучше чем мой. И можно по подробнее что за ноль, и куда его отобразить? в принципе любое отсутствие сигнала - это и есть ноль.
Нравится Показать список оценивших
Нравится Показать список оценивших
Максим, и я отнимал с 1000. Потом с 100 и далее с 10.
Нравится Показать список оценивших
Алексей, да не вроде понятно
Нравится Показать список оценивших
Максим, у меня просто дисплей 4х значный и поэтому там 0 появляется.
Нравится Показать список оценивших
Привет народ, собрал из комбинаторов счетчик, систему зарядки аккумуляторов и запрос материалов с жд станций. Куда ещё можно применить комбинаторы для дела именно, а не для красоты. Придумать не могу.
Нравится Показать список оценивших
Алексей, каким образом можно сделать так, чтоб из вагона выгружалось фиксированное количество бочек? Проблема в том, что когда нужное количество выгружено, бочки из сундука идут по конвейеру и система по новой набирает бочки. Мне нужно чтоб определённое число бочек выгружалось единожды по прибытию на станцию поезда. Можно ли как-то связать логистической сетью станцию?
Нравится Показать список оценивших
Алексей, попробуй поставить комбинатор на выгрузку манипулятор, чтоб они запустились только в том случае если в сундуке есть определенное количество вещей
Нравится Показать список оценивших
Алексей, а если на конвейер комбинатор поставить чтоб останавливал после выгрузки?
Нравится Показать список оценивших
Алексей, всё просто, сделайте так, чтобы манипулятор выкладывающий ресурсы из буферного ящика включался тогда, когда поезда нет на станции. Сигнал отсутствия поезда можно получить с семафора.
Нравится Показать список оценивших
Максим, отличная идея, теперь нужно придумать как это реализовать
Нравится Показать список оценивших
Максим, подскажи(те) пожалуйста, как сделать простой таймер-счетчик, который бы сам себя сбрасывал при достижении определенного условия? (числа, скажем). Счетчик, который увеличивает число в себе, сделать получилось (входы-выходы двух арифм. комб-в по кругу кинул), а как его сбрасывать? В сравн. комбинаторе ставлю условие, "1" больше 100 к примеру, а выход на что цеплять? По-идее надо, чтобы в один из арифм. комбинаторов на вход пришел "0" (число), но что-то не робит.
Нравится Показать список оценивших
Алексей, могу описать подробнее. Комбинаторы можно вообще не использовать. Ставим манипулятор на выгрузку из вагона, потом буферный ящик, затем манипулятор который выкладывает из буферного ящика; на въезде станции ставим семафор.Выгружающий из вагона манипулятор связываем логической сетью с буферным ящиком, и задаём условие включения если в ящике ресурса недостаточно (к примеру <20 если надо выгружать по 20 штук) манипулятор перестанет выгружать как только в ящик наполнится до заданного значения.Манипулятор выкладывающий из буферного ящика связываем логической сетью с семафором, и задаём условие включения при зелёном сигнале семафора (тоесть когда станция пуста и на путях нет поезда). Остаётся только задать условие для отправления поезда. тут есть несколько вариантов. Если эта операция единственная на станции, то можно выставить 5 секунд бездействия. если же есть и другие манипуляции с выгрузкой, то можно их выставить на станции дополнительно. Есть ещё вариант связать буферный ящик со станцией логической цепью, и задать условие отправления по определённому количеству ресурса в том самом буферном ящике, но это не совсем хорошо будет работать, так как если поезд привезёт недостаточное количество ресурса, то поезд просто застрянет на станции в ожидании пока из пустых вагонов выгрузят недостающего ресурса, так что этот вариант я бы не использовал.
Читайте также: