Alt-F4 #28 — РОФЛ

опубликовали   Ph.X, stringweasel, Nanogamer7, Conor_, Therenas, Firerazer

На этой прекрасной мартовской неделе Ph.X рассказывает об  системе для размещения базы с использованием изолированных модулей и соединения их через сеть LTN. Черпая вдохновение из разработки программного обеспечения и извлеченных из этого уроков, Ph.X использует концепции модульного программирования в своих интересах.

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

Рецепто-Ориентированная Факторио Логистика (Recipe-Oriented Factorio Life) Ph.X

Factorio имеет сложную сеть производственных линий (например, спагетти), которые делают игру увлекательной и сложной. Это сложная инженерная проблема, схожая с проблемами, связанными с разработкой программного обеспечения, поэтому я думаю, что стоит использовать некоторый реальный опыт, чтобы улучшить игровой процесс.

Что такое «РОФЛ»

Люди с опытом программирования должны были слышать о модульном объектно-ориентированного программировании, теории, которую Рецепто-Ориентированная Факторио Логистика(РОФЛ) / Recipe-Oriented Factorio Life (ROFL) стремится подражать. Модульное программирование — это метод разработки программного обеспечения, который подчеркивает разделение функциональных возможностей программы на независимые, взаимозаменяемые модули, каждый из которых содержит все необходимое для выполнения единственного аспекта желаемой функциональности. В РОФЛ мы делим всю фабрику на независимые, взаимозаменяемые заводские модули, каждый из которых содержит все необходимое для обработки только одного рецепта.

Как и большинство философий, ROFL пытается найти одну вневременную Arche как источник всего; В нашем случае мы выбираем рецепт. Красные схемы могут быть созданы на сборочной машине любого уровня, на которую могут влиять различные модули, а необходимое сырье может поступать из конвейера, логистического сундука или даже соседней машины для сборки медной проволоки, но независимо от того, как другие условия могут измениться, по самой рецептуре остаются медные провода, зеленые схемы с пластиком для красной схемы. Рецепт — это своего рода атомарная операция в Factorio: неделимая единица, поскольку ее нельзя разбить дальше.

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

Чтобы лучше реализовать эту идею, в следующих примерах используются моды LTN — Logistic Train NetworkAAI Containers & Warehouses и Miniloader Чертежи всех приведенных ниже примеров можно скачать здесь.

Дизайн интерфейса

Прежде чем фактически строить какие-либо модули подзавода, нам необходимо спроектировать универсальную логистическую сеть в качестве интерфейса между модулями. Хотя шина или логистические роботы могут быть реализованы в качестве такой логистической системы в некоторой степени, сеть квадратов железных дорог ( ситиблок / cityblock) намного превосходит другие решения с точки зрения пропускной способности, возможности повторного использования.

В ванили поезда могут ходить только по заранее определенному расписанию, которое не очень гибкое и «логистическое». Здесь вам пригодится сеть логистических поездов. С LTN поезда припарковываются на станциях депо, так же как логистические роботы припарковываются в робопортах. Когда возникает логистическая потребность, система найдет подходящий поезд в депо и сгенерирует для него расписание доставки указанных товаров на станции поставщика, затем отправится на станцию отправителя запроса для разгрузки, затем вернется на станцию депо, аналогично снова к поведению логистического робота. Но, в отличие от логистических роботов, поезда не загружаются и не разгружаются, поэтому на станциях необходимы манипуляторы или погрузчики. LTN мощнее сети логистических роботов из-за огромной грузоподъемности, высокой скорости и поддержки транспортировки жидкостей.(хмм а бочки дронами уже не перевозят?)

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

Rail grid
Только центральный квадрат будет содержать модуль крафта.

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

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

Rail yard module
Топливо, используемое для пополнения локомотивов, также запрашивается через LTN.

Дизайн модуля

Начнем с простейшего примера — железной шестерни. рецепт с одним ингредиентом и одним продуктом. Остановка логистического поезда в нижней части сетки запрашивает 8000 железных пластин, а остановка логистического поезда в верхней части сетки обеспечивает товары (то есть шестерни) с подключенного склада.

Gear module
Станция сырьевых материалов находится внизу, производственная станция — вверху.

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

Alt gear module
Без смены станций, только производственная линия между станциями.

Затем давайте посмотрим на усовершенствованный модуль с тремя типами сырья. Установив остановку логистического поезда для запроса нескольких ингредиентов, мы можем выгружать все наше сырье на одной станции. На этом этапе все сырье смешивается на одном складе, затем мы используем минипогрузчики с фильтрами (аналогичные фильтрующим манипуляторам) для отделения каждого материала на отдельной ленте для подачи на сборочные машины.

Advanced circuit module
Использование одной станции для получения сырья.

То же самое работает с рецептами, которые производят / потребляют жидкости, если вместо этого мы используем вагон-цистерну.

Oil refinery module
Обратите внимание, что управление насосом через сигнал LTN позволяет загружать или выгружать разные жидкости на одной станции без смешивания.

Есть также некоторые нетрадиционные рецепты, такие как исследования, производство пара и ракетная шахта.

Research centre module
Модуль исследовательского центра, для которого не требуется станция вывода.
Thermal power plant module
Паровая электростанция  для размещения на воде. Или вы можете использовать Landfill Everything для подготовки площадки.
Rocket silo module
В модуле используются независимые логистические сети роботов. Нижняя станция предназначена для материалов, необходимых для создания ракет, а станция справа предназначена для полезной нагрузки ракеты, обычно спутников.

Плюсы и минусы РОФЛ

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

ROFL не оптимизирован для идеального производства, так как это не идеальная производственная линия, поэтому часто конструкции перестают работать из-за недостаточного количества сырья или переполнения продукта. Каждый товар необходимо загружать в вагон и выгружать из него, что приводит к появлению множества узких мест на входе и выходе, чаще всего в медной проволоке, где количество продуктов превышает количество сырья и количество стаков велико, а спрос огромный. Для каждой ячейки существует очень значительный запас из-за складов, что не поможет вам вовремя идентифицировать предметы с недостаточным производством (хотя определенно железная руда). Железнодорожная сеть, используемая для межмодульной логистики на заводе, является дорогостоящей в строительстве, а также создает большое количество опасностей дорожно-транспортных происшествий (хвала Spidertron).

Заключение

РОФЛ — это скорее образ мышления, который пытается упростить сложные проблемы, а не книгу с чертежами. Приведенные выше примеры — лишь одно из решений, в котором ROFL используется в качестве руководства. Некоторые могут посчитать использование LTN для построения железнодорожной сети немного читерным, но эту идею также можно использовать для игрового процесса с шиной и многого другого. Никогда не будет одного «правильного» способа играть в Factorio, разнообразие — вот что делает игру потрясающей.

База SE с использованием РОФЛ

Содействие

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

Comments: