Расширенный гайд по железным дорогам в игре Factorio
Описание гайда
Данный гайд отвечает на такие вечные вопросы любого игрока в Factorio, как:
- Как сделать железнодорожную сеть?
- Какие сигналы выбрать и куда их ставить?
- Как настроить станции?
Для чего требуется это руководство?
Некоторые из вещей, о которых я буду говорить, кажутся мне очевидными, но я регулярно встречаю вопросы вида «Как мне настроить железную дорогу в Факторио?». Базовое обучение дает все ответы — но на языке, понятном скорее инженерам, чем простым игрокам. Большинство гайдов в YouTube, к сожалению, просто пересказывают это руководство, и показывают простую схемку из пары станций, рельс и поезда или двух. Несколько хороших мануалов с углублением в особенности ЖД в фактории есть в англоязычном ютубе, но они, опять же, недоступны для тех, кто недостаточно знаком с разговорным английским. Я не умею снимать ролики для ютуба, поэтому решил написать небольшое руководство, и рассказать о некоторых особенностях, которые проявляются на больших размерах ЖД сетей, а также постараться объяснить как не «как требуется делать», а «почему лучше делать так».
Итак, приступим!
Основы железнодорожной логистической сети
Как только у вас вместо одного поезда начинает ездить два, пять, десять… сто — начинают возникать проблемы с пропускной способностью. Опыт использования конвейеров говорит — «просто добавь еще пару путей!». Это неверно! Пропускная способность пути, как правило, крайне высока, и если у вас поезда не идут непрерывно один за другим — нет смысла делать четырех или тем более шести путевую линию. Как правило, проблемы находятся в других местах — это развязки, станции, и общая организация ЖД сети. И если развязки вы можете перестроить, а к станциям добавить буферы — общая организация сети с трудом поддается переделыванию.
Чтобы минимизировать пробки на развязках, желательно с самого начала строить свою базу и ресурсные модули по цепочке зависимостей. Например, на юге, снизу от базы, у вас добывается руда. Эта руда поездами доставляется на переплавку чуть выше. Оттуда другие поезда везут ее дальше вверх — к созданию базовых компонентов. Далее эти базовые компоненты отправляются еще выше, к местам где они требуются на производствах. Это создает некую виртуальную цепочку из добычи — переплавки — производств — продвинутых производств.
Представим ее как цепочку A-B-C-D. В этой цепочке поезда ходят по маршрутам A-B, B-C, и C-D. Конечно, производственные линии не такие простые, и будут добавляться маршруты, которым требуется идти по пути B-D, например, однако основная масса поездов уже перестанет мешать друг другу. Просто для примера — если вы об этом не задумались в самом начале, то к середине игры у вас может возникнуть ситуация, когда поезда с рудой едут с южных месторождений, создавая пробки в самом центре базы — потому что едут по маршруту E-A. Старайтесь избегать таких маршрутов, и если зона добычи у вас на противоположной стороне от переплавки, то лучше создайте отдельный обходной путь для поездов с рудой.
Помимо разделения зон маршрутов, оптимизация такого рода даст уменьшение среднего времени, которое поезд проводит в пути — что опять же повышает эффективность транспортного потока.
Сигналы — основы
Обучение в игре крайне невнятно объясняет разницу между обычными и проходными сигналами, а самые лучшие гайды в интернете,вместо объяснения логики сводятся к простой рекомендации — ставьте обычные сигналы за развязками, а проходные — во всех остальных местах. В принципе, этот совет работает. Но почему?
Давайте сначала разберемся, как работают сами сигналы. В игровой механике все рельсы разделены на виртуальные сегменты, своего рода куски пути. Разделены они как раз этими сигналами. В каждом сегменте одновременно может находиться один поезд. Если у вас нет сигналов на путях, то в вашей сети сможет свободно кататься только один поезд, как только вы добавите второй, произойдет ошибка и они не смогут рассчитать свой маршрут.
Когда в сегменте ЖД находится поезд, все сигналы которые стоят на пути в этот сегмент — то есть отделяют его от других сегментов — показывают красный. Так же, красный показывают проходные сигналы, которые ведут к этому сегменту. Так же красный можно включить логикой, что используют для создания безопасных ЖД переходов.
Когда поезд едет по маршруту, он проверяет сигнал на въезд в следующий сегмент, и если он зеленый — едет дальше. Если красный — ждет. Это может приводить к дедлокам, но про них чуть позже.
После такого базового объяснения становится понятно, что требуется нарезать свою ЖД на сегменты, но все еще непонятно — зачем использовать проходные сигналы. Я придумал конкретный пример, который показывает, какое преимущество они дают при правильном применении.
Проходные сигналы — практическая польза
Итак, давайте представим, что у нас есть две станции — «Отправление» и «Прибытие». Между ними есть два пути, путь А и путь Б, причем путь А — короче, поэтому поезда всегда выбирают его. Но у пути А есть одна проблема — на нем есть станция «Бологое» и, когда на ней стоит поезд, проезд по этому пути заблокирован. Перед станцией есть несколько сегментов, отделенных обычными сигналами — от развилки путей 3 сегмента.
Поезд отправляется из «Отправление» в «Прибытие», подъезжает к развилке, от которой ведут пути А и Б, и выбирает путь А, как более короткий. Он подъезжает к «Бологое», и видит то, что станция по чьему-то недосмотру, установленная прямо на путях, занята поездом, и проехать дальше нельзя. Поезд занимает первый свободный сегмент перед «Бологое» и ждет до тех пор, пока путь освободится. Та же история повторяется еще с двумя поездами — пока не заполнятся все сегменты от развилки до «Бологое». Четвертый поезд, подъезжая к развилке, видит, что путь А занят (точнее, первый сегмент этого пути), и принимает решение ехать по маршруту Б. Первые три поезда все еще стоят…
А теперь представим, что в сегментах между развилкой и «Бологое» установлены проходные сигналы. Что изменится? Обычный сигнал перед «Бологое» показывает красный, проходной сигнал в предыдущем сегменте считывает его и тоже показывает красный, и так до развилки. Первый поезд подъедет к развилке, увидит, что путь А в данный момент заблокирован, и поедет по пути Б.
Мы избежали пробки, материалы оперативно доставлены на станцию назначения, профит!
Отдельный вопрос — какие сигналы ставить на протяжении пути. Если везде будут стоять обычные, то поезда будут набиваться даже там, где проезд в данный момент заблокирован. Если проходные, то поезда не будут заезжать на длинный перегон до тех пор, пока другой поезд его не освободит. Тут требуется придерживаться баланса. Если в сети много путей, и требуется чтобы поезда выбирали свободную дорогу, то ставьте проходные сигналы, а если у вас длинный перегон без вариантов (например, между месторождением руды и базой), то на этом перегоне должны стоять обычные сигналы, с промежутком чуть больше длины поезда.
Сигналы — размер сегментов и длина поезда
Это не интуитивно понятно, но при планировании важно учитывать этот момент. Если вкратце — сегмент пути должен быть длиннее чем ваш состав. Более того, не только виртуальный сегмент, но и реальный, между развязками! Если вы используете составы из поезда и двух вагонов, то сегменты должны вмещать в себя такой состав. Если вы используете длинные поезда, то сегменты должны быть длиннее, если вы используете очень большие поезда, то планируйте свою ЖД сеть очень тщательно! Почему?
Когда поезд въезжает в сегмент ЖД, он может остановиться на его выезде. Возможно, впереди занята станция, на которую ему требуется свернуть, возможно на развязке прямо перед ним сейчас красный. Что произойдет, если поезд длиннее чем сегмент? Его хвост останется торчать в предыдущем сегменте. Это не вызовет особых проблем в случае если предыдущий сегмент линейный, но что если это развязка? Она будет заблокирована до тех пор пока этот поезд не уедет.
Более того, если у нас, например, квадратная сетка ЖД путей, мы можем теоретически получить дедлок — поезд не может выехать на развязку по причине, что она заблокирована, другой поезд подъезжает к хвосту первого, и тоже стоит перед развязкой, блокируя уже третий перекресток, и это будет продолжаться до тех пор, пока не замкнется квадрат. 4 поезда стоят, блокируя друг друга. Вы можете подумать, что это гипотетическая ситуация, для этого должно идеально совпасть время, в которое эти поезда подъедут в место X, но даже если вероятность этого крайне маленькая — однажды это случится. Поездов в вашей системе будет становится все больше, движение все насыщеннее, и в определенный момент где-то поезда совпадут.
Поэтому просто запомните правило — расстояние между развязками должно быть больше, чем самый длинный поезд который будет ездить по этой ветке!
Развязки — расстановка сигналов
В целом, при проектировании развязок можно руководствоваться тем же правилом — на въезде проходные сигналы, на выезде обычные. Но я хочу разобрать это немного подробней.
Когда поезд въезжает на развязку, он ее частично или полностью блокирует для других поездов. Поскольку это может создать пробки, важно чтобы поезд, въезжая на перекресток, имел возможность выехать с него. Ставим на каждом выезде обычный сигнал, а по всей развязке, и перед въездом — проходные. Если поезду требуется после развязки налево, а тот путь сейчас занят — поезд, при правильной конфигурации сигналов, будет ждать перед развязкой, пока путь не освободится.
Любая развязка, особенно сложная, как правило, предполагает возможность поворота любого поезда в любом направлении. Иногда даже разворот. Это выгодно с точки зрения построения кратчайшего маршрута, но превращает развязку, особенно если она четырехполосная, в мешанину из рельс.
Проектируя развязку, и расставляя на ней сигналы, попробуйте установить на нее поезд, и посмотреть, какие направления при этом будут заблокированы (красный сигнал). Идеально спроектированная развязка не должна мешать проезду других поездов. Например, если при правостороннем движении поезд идущий снизу поворачивает направо — он использует развязку, но оставляет свободными все пути кроме пути слева направо. Поезда идущие сверху вниз, справа налево, справа вверх или сверху налево — не должны останавливаться из за первого поезда.
Станции — настройка
Один из эффективных способов экономить топливо и не перегружать ЖД сеть — не гонять поезда порожняком. Я предпочитаю использовать LTN мод для более гибкой настройки, но сейчас расскажу о возможностях ванильной версии — их тоже вполне достаточно, чтобы организовать правильные транспортные потоки.
Как правило, первые эксперименты по настройке сводятся к условиям «Ждать полной загрузки» и «Ждать полной разгрузки», но они не дают достаточной гибкости. Поезд может стоять на станции по добыче руды, и ждать пока в него загрузят руду — а добыча истощилась. Поезд в результате бездействует, непрактично. Или ждет пока его разгрузят — а на переплавке перепроизводство, продукция никуда не идет и сундуки с рудой тоже забиты. В это же время, возможно, на другой станции руда требуется.
Для полноценного использования станций нам, во-первых, потребуется хак, о котором многие не знают — если станции названы одинаково, то поезд едет на любую из них. Во-вторых — логические цепи. Начнем с организации доставки угля, например, добывается он у нас в одном месте, но планируем добавить еще добычу. Потребляется в топливном блоке, на переплавке железа/меди/стали, и на производстве гранат. Итого у нас две станции поставки и пять станций потребления.
Для начала, именование. Назовем обе станции на которых мы загружаем уголь — «Добыча угля», а все станции на которых мы хотим выгружать уголь — «Выгрузка угля». Названия можете придумывать свои, главное, чтобы они повторялись. Теперь, если мы поставим поезду маршрут «Добыча угля» (Ждать полной погрузки) — «Выгрузка угля (Ждать полной разгрузки), поезд будет ездить к любой из этих станций. Но есть проблема — сначала он поедет к ближайшей добыче а от нее — к ближайшей выгрузке. Давайте это исправим.
Если мы присоединим провод к станции и к сундукам — мы можем настроить условие по которому станция будет работать. Для станции добычи нам требуется условие, что в сундуках достаточное количество угля для полной загрузки поезда. Я обычно использую двухвагонные поезда, поэтому ставлю условие включения — больше 4000 угля. Сундуки передают по проводам, сколько в них угля, и как только его накопится достаточно — станция заработает. Для станции выгрузки нам требуется условие, что в сундуках осталось мало угля. Например, мы хотим чтобы в них поддерживалось не менее 2000 угля — ставим условие: если угля меньше 2000, включаем станцию.
Что теперь происходит? Поезд едет к ближайшей включенной станции. Сначала он забрал уголь на ближайшей добыче, и отвез его на ближайшую выгрузку. Например, это оказалась плавка меди. Он вернулся к добыче, загрузился, и едет к ближайшей станции, но на переплавку меди только что выгрузили 4к угля, и она их не успела потребить, поэтому поезд отвез уголь на другую станцию выгрузки. Далее он опять едет за углем, но первая станция еще не успела добыть 4к угля, поэтому он едет на дальнюю. Если все станции отключены — поезд стоит на той, на которую приехал последней, и ждет.
Эту схему можно легко расширять — если первый поезд не справляется, мы добавляем второй с теми же настройками, и он тоже будет курсировать между двумя добычами и пятью выгрузками. Когда у нас появятся новые места добычи/потребления, мы просто называем их тем же именем, ставим логику, и они автоматом включаются в сеть. Так же можно добавить в маршрут станцию буфер — всегда включенную, на которой поезда заправляются топливом.
Самый сложный момент в данном разделе — это логические условия. Объяснение того, как они работают, выходит за рамки этого гайда, но внизу я оставлю ссылки на интересные ресурсы, где эту информацию вы сможете подчерпнуть.
Станции — буферы
Когда у вас на одном маршруте много поездов, они могут приехать к станции одновременно и выстроится в очередь на путях, блокируя движение другим поездам. Это не очень хорошо, поэтому для таких случаев увеличивают количество принимающих станций, а так же используют «буферы» из путей.
Выглядит это достаточно просто — от путей выходит отнорок в сторону, разделяется на требуемое количество линий, каждая из которых в длину позволяет вместить один или два поезда (опять же, учитывайте то, какие поезда у вас будут заезжать в этот буфер), а в конце эти линии опять сходятся и ведут на станцию.
Кажется, это самый короткий раздел, и достаточно простой — но он тоже поможет вам избежать лишних пробок.
Послесловие
Я очень надеюсь, что данное руководство поможет вам организовать большую, красивую и стабильно работающую железнодорожную логистическую сеть! Если я забыл рассказать о каком-то важном моменте, или что-то не совсем понятно, то спрашивайте в комментариях в Steam, отвечу или дополню это руководство.
Полезные ресурсы:
- Русская википедия, посвященная Факторио.
- Официальный мод-портал.
- Канал «fed1s Play» — самый адекватный русскоязычный канал по Фактории.
- Канал «Nilaus» — если вы дружите с английским, то тут тоже много Фактории.
- Канал «Xterminator» — тоже на английском — гайды, прохождения, обзоры модов.
- Канал «KatherineOfSky» — много классных прохождений на английском, с разными сборками модов и без.
Видео гайд по железным дорогам в Факторио
Мы наконец-то дождались выхода видео гайда от Федора — это лучшее руководство по ЖД в русском ютубе, а может быть и не только в русском!
Автор гайда: Wlady.