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