Factorio логическая сеть с комбинаторами

Устройства

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

Условия могут устанавливаться по логической (сигналы по красному и зеленому проводам суммируются) и логистической сетям, которые складываются по логическому И.

Ниже представлены устройства, которые могут быть подключены к логической сети.

Иконка Имя Возможные выходные сигналы Возможные опции управления
Конвейеры Конвейер отсылает информацию о своем содержимом.
  • Импульсный режим: Сигнал, длительностью 1 тик, посылается, когда предмет входит в конвейер.
  • Непрерывный режим: Сигнал посылается пока предмет проходит конвейер.
Конвейер может быть включен по условию.
Манипуляторы Манипулятор отправляет информацию о взятых предметах.
  • Импульсный режим: Сигнал, длительностью 1 тик, посылается, когда предмет взят.
  • Непрерывный режим: Сигнал посылается пока предмет удерживается манипулятором.
Манипулятор может быть включен по условию. Размер пачки может изменяться управляющим сигналом (настраивается).
Фильтрующий манипулятор То же, что и выше. В фильтрующем манипуляторе дополнительно могут настраиваться его фильтры: до 5 предметов, сигналы которых имеют положительное значение.
Сундуки Все сундуки отправляют информацию о их содержимом. Логистические сундуки дополнительно отправляю ту же информацию в логистическую сеть.
Сундук запроса То же, что и выше. Устанавливаются запрашиваемые предметы из логистической сети.
Резервуар Резервуар отправляет информацию о жидкостях.
Ворота Ворота посылают сигнал в логическую сеть. Ворота могут быть открыты по условию.
Ж/д светофор Ж/д светофор отправляет в сеть информацию о своем состоянии. Ж/д светофор по условию может показывать красный сигнал.
Проходной ж/д светофор То же, что и выше.
Железнодорожная станция Ж/д станция передает содержимое и идентификатор остановившегося поезда. Количество поездов, идущих к станции, отправляется в логическую сеть.При чтении содержимого поезда, количество жидкостей округляется вниз до ближайшего целого, исключая случай, когда жидкости < 1, тогда число округляется до 1. Ж/д станция передает сигналы из логической сети поезду, которые используются в условиях ожидания. Помимо этого сеть может включать и выключать станцию. Максимальное число поездов, способных на движение к станции («лимит поездов»), можно установить логической сетью.
Аккумуляторный блок Отправляет значение уровня заряда в процентах.
Дронстанция Отправляет информацию о содержимом логистической сети и/или статистику по дронам. Сигналы статистики по дронам настраиваются.
Бур Бур отправляет информацию об ожидаемых ресурсах, либо только от этого бура, либо со всего месторождения. Бур может быть включен по условию.
Нефтяная вышка Отправляет текущих уровень добычи. Нефтяная вышка может быть включена по условию.
Выключатель питания Выключатель питания может включить электрическую сеть по условию.
Программируемый динамик Показывает предупреждение и издает звук, основанную на логическом сигнале. Может использоваться для создания простейших мелодий.
Фонарь Фонарь может быть включен по условию. Если передается цветовой сигнал, то он будет светиться этим цветом.
Насос Насос может быть включен по условию.
Помпа Помпа может быть включена по условию.

Индикация фонарем выполнения условия


Индикация фонарем выполнения условия.

Это наиболее простое использование логической сети. Фонарь загорается в зависимости от количества предметов в сундуке (в данном примере — от пустых бочек).

Настройка подключения схемы

  • Лампа подключить к сундуку.
  • В лампе настроить условие: она должна загореться, когда в сундуке будет меньше 10 пустых бочек.

Настройка условия

  • Открыть настройки лампы (ЛКМ по ней).
  • На входе выбрать канал пустых бочек.
  • Установить оператор < (меньше чем).
  • Установить константу:
    • Кликнуть ЛКМ по константе.
    • Переместить бегунок до 10 или ввести с клавиатуры.
    • Нажать «установить».

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

Normal commands

Command Example Description Admin only
/alerts <enable/disable/mute/unmute> <alert> /alerts disable turret_fire Enables, disables, mutes, or unmutes the given alert type. Available alerts: entity_destroyed, entity_under_attack, not_enough_construction_robots, no_material_for_construction, not_enough_repair packs, turret_fire, custom, no_storage, train_out_of_fuel, fluid_mixing. No
/clear /clear Clears the console. No
/color <color> /color 20 255 255 Changes your color. Can either be one of the pre-defined colors or RGB value in the format of “# # #”. Available colors: default, red, green, blue, orange, yellow, pink, purple, white, black, gray, brown, cyan, acid. No
/evolution /evolution Prints info about the alien evolution factor. No
/help /help Prints a list of available commands, the optional argument can specify the command that should be described. No
/h /h Same as /help. No
/mute-programmable-speaker <mute/unmute> <local/everyone> /mute-programmable-speaker mute local Mutes or unmutes the global sounds created by the Programmable Speaker. Use “local” to mute just the local client. Admins can use “everyone” to mute the sounds for everyone on the server. No
/perf-avg-frames <number> /perf-avg-frames 100 Number of ticks/updates used to average performance counters. Default is 100. Value of 5-10 is recommended for fast convergence, but numbers will jitter more rapidly. No
/permissions /permissions Opens the permissions GUI. Yes
/permissions <action> <parameters> /permissions add-player DeveloperGroup kovarex Available actions are add-player <group> <player>, create-group <name>, delete-group <group>, edit-group <group> <input_action> <true/false>, get-player-group <player>, remove-player <group> <player>, rename-group <group> <new_name> and reset Yes
/reset-tips /reset-tips Resets the state of the tips and tricks as if the game was just started for the first time. No
/screenshot /screenshot Takes a screenshot with the GUI hidden, centered on the player. It is saved in the «script-output» subfolder of your User data directory. Resolution is optional and defaults to the current window size. Zoom is optional and defaults to 1. No
/seed /seed Prints the starting map seed. No
/time /time Prints info about how old the map is. No
/toggle-action-logging /toggle-action-logging Toggles logging all input actions performed by the game. This value isn’t persisted between game restarts and only affects your local game in multiplayer sessions. Yes
/toggle-heavy-mode /toggle-heavy-mode Used to investigate . Will slow down the game and make multiplayer unplayable. Yes
/unlock-shortcut-bar /unlock-shortcut-bar Unlocks all shortcut bar items, including blueprint string import, copy & paste, deconstruction and upgrade planner. No
/unlock-tips /unlock-tips Unlocks all tips and tricks entries. No
/version /version Prints the current game version. No

Базовый уровень

Задача: соединить генераторы с потребителями.

  • Все ЛЭП имеют свою зону работы. Ее можно увидеть при установке ЛЭП.
  • Каждое электрическое устройство (генератор, потребитель, хранилище) имеют свою зону, в которой необходимо устанавливать ЛЭП.
  • Постройте Паровой двигатель для производства электричества (Смотри Power production/ru).
  • Проведите от генератора к потребителю ЛЭП.
  • Кликните по ЛЭП, чтоб увидеть информацию о сети.

Столбы и сети.

  • Несоединённые столбы формируют собственную сеть! Вы можете создать столько отдельных сетей сколько нужно.
  • Чтобы отсоединить столб от сети достаточно кликнуть левой кнопкой мыши с зажатым шифтом.
  • Возможно вручную соединить два столба с помощью медного провода, протянув его от одного к другому. (Кликнув левой кнопкой мыши по основанию столба)
  • Автосоединение столбов между собой не требует проводов.
  • Возможно протянуть ЛЭП автоматически, если установив первый столб, не отпуская кнопки мыши, побежать в нужном направлении.

Выбор робопорта для подзарядки

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

Это решение определяется соотношением:

<расстояние до следующего робопорта> / <количество роботов в очереди на подзарядку>

В настоящий момент, чтобы робот выбрал другой робопорт для подзарядки, дистанция до него должна быть не менее чем:

<количество роботов в очереди и на пути> / 2

Таким образом чтобы был выбран робопорт, который на 10 клеток отдалённее, он должен иметь на 20 роботов в очереди меньше.

Это соотношение возможно должно быть изменено, возможно на «один робот в очереди на одну клетку»…

Автоматизация исследования

Итак, уже много что произошло. Теперь нам нужно перейти к следующему этапу игры и начать исследовательский бум. Для этого нам нужно автоматизировать производство исследовательских пакетов и их доставку в лаборатории. После этого мы не будем отвлекаться на исследования.
Вариантов размещения может быть уйма, я вам покажу общий принцип, просто для понимания как все устроено. Я настоятельно рекомендую вам следующим исследованием взять Логистику и вручную создать пакеты, которые для этого потребуются. Логистика даст вам важные штуки: разделители, подземные конвейеры и быстрые манипуляторы. Разделители и подземные конвейеры – одни из самых важных вещей на этом этапе. Собственно они делают то, о чем подсказывают их названия.

Итак, что требуют исследовательские пакеты? Нам нужны медные плиты и железные шестерни. До этого мы занимались только с сырьем, как же нам делать предметы? Сборочный автомат – это ответ на наш вопрос. Разместив его и открыв меню можно указать, что бы вы хотели сделать с его помощью. Теперь осталось загрузить компоненты будущего предмета и сборочный автомат начнет производство. Затем нужно будет извлечь готовый продукт. В случае с крансными исследовательскими пакетами нам нужен сборочный автомат, который делает шестеренки и автомат, которые делает собственно исследовательские пакеты. Неплохим вариантом будет проложить конвейер с одной стороны, который будет доставлять медные плиты, и еще один конвейер, который будет доставлять шестеренки, вышедшие из другого сборочного автомата.

На этой картинке есть еще несколько милых хитростей, о которых я расскажу поподробней. Если детали идут по разным конвейерам, у вас могут возникнуть трудности, чтобы забрать детали с дальнего конвейера. Да, можно использовать длинный манипулятор, но вы можете по каким-либо причинам не хотеть его использовать (например вам нужен быстрый манипулятор, чтобы быстро закидывать детали в сборочный автомат).

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

В синей рамке показан способ позволить меди идти по магистрали, забрав отведя ветку для наших исследовательских пакетов

Обратите внимание, еще один маленький кусочек конвейера и теперь медь поменяла свое направление и идет по правой (ближней) стороне, оставляя дальнюю сторону для выгрузки шестеренок. Дальше просто: шестеренки и медь помещается в автоматы, выходят исследовательские пакеты

Флаконы направляются к лабораториям, где вы исследуете что хотите, вот пример:

Электроэнергия

Сохранение пара


Схема оптимизирующая расход пара.

  • Паровой двигатель к электросети подключается не напрямую, а через выключатель питания.
  • Выключатель питания подключается к одному из аккумуляторов в основной сети.
  • Выключатель питания коммутирует сеть тогда, когда A < 10, что значит, что заряд аккумуляторов упал ниже 10%.

Оптимальное использование топлива ядерным реактором

В отличие от обычного парового двигателя, расход топлива которого зависит от потребления электроэнергии, ядерный реактор расходует топливо за определенное время. Если быть точным, 1 урановый топливный элемент расходуется за 200 секунд.

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


Схема оптимизирующая расход урановых топливных элементов.

На рисунке справа показана установка из 4 ядерных реакторов, которая потребляют 1 топливный элемент, когда заканчивается пар.
Примечание: GUI на картинке был изменен, чтобы показать всю важную информацию без увеличения размера картинки.

Устройство установки представляет собой:

Резервуар генерирует сигнал о количестве содержащегося в нем пара

При этом, важно чтобы все резервуары были объединены трубами, а информация о паре вычитывалась только из одного резервуара.
Сундук, содержащий урановые топливные элементы для реактора.
Манипулятор, выгружающий отработанные урановые топливные элементы из реактора, который подсоединен к резервуару и сундуку. Если уровень пара слишком низкий и в сундуке есть топливные элементы, то манипулятор забирает из реактора отработанные топливные элементы и посылает сигнал по каналу «Отработанный урановый топливный элемент» (в настройках манипулятора выставлена опция «Считывание содержимого манипулятора»).
Манипулятор, загружающий топливные элементы в реактор, который подключен к выгружающему манипулятору

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

Поскольку в схеме используется сигнал от отработанных топливных элементов, для ее старта в реактор необходимо самому загрузить 1 топливный элемент.

Приоритет использования урана в производстве топливных элементов


Схема оптимизирующая производство урановых топливных элементов.

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

Используя разделитель, уран, в зависимости от его вида, разделяется на 2 параллельных конвейера, рядом с которыми установлены манипуляторы для погрузки урана в сундуки, уже из которых уран доставляется в сборочный автомат, где производятся топливные элементы. Топливные элементы, в свою очередь, для хранения загружаются в третий сундук, из которого они попадают в реактор. По каждому виду урана, два манипулятора (загружающий в сундук и выгружающий из него в сборочный автомат) и тайл конвейера, идущий сразу после тайла, из которого берется уран, соединены проводом. В манипуляторах, загружающих уран в сундуки, установлено условие включения: «меньше либо равно x единиц урана (вид определяется конвейером)», а для выгружающих — резервируемое количество (оптимально соотношение 1:19 235 и 238-урана соответственно). Для конвейеров установлены условия: «больше либо равно x единиц урана».

Наконец, манипуляторы, выгружающие уран из сундука в сборочный автомат, соединены с сундуком, хранящий топливные элементы, и следующим условием включения: «урановые топливные элементы = 0». Для создания резерва топливных элементов, условия в манипуляторах необходимо изменить: «меньше либо равно x единиц урановых топливных элементов».

Функции установки:

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

Player character scripts

Commands concerning the player directly.

Get player position

Prints coordinates of your current position.

c game.player.print(game.player.position.x .. ", " .. game.player.position.y)

Teleport player

Moves the player to the specified location. You should be able to teleport to a specific player if you obtain their coordinates via them executing the previous command and giving them to you.

c game.player.teleport({X, Y})

To teleport to the world’s origin, use 0,0.

Enable god mode

God mode removes your player character allowing you to fly over obstacles and take no damage.

Disassociate your controls from the player:

c game.player.character=nil

Then, hover the mouse over the useless player and destroy it by typing:

c game.player.selected.destroy()

To undo, spawn a player character. This will spawn a new player at the spawn point of the world, and connect your controls to it.

c game.player.create_character()

Enable long reach

Enables long reach, which allows the player to build and interact with entities at a greater distance. The default reach is 10.

c local reach = 10000
game.player.force.character_build_distance_bonus = reach
game.player.force.character_reach_distance_bonus = reach

Find player corpses

Pings player corpses on the map.

c local found_corpses = game.player.surface.find_entities_filtered{type="character-corpse"}
for _,corpse in pairs(found_corpses) do
    local player = game.get_player(corpse.character_corpse_player_index)
    local name = player and player.name or "????"
    game.player.print(name .. " --> ")
end

Dedicated/Headless сервер

С 0.12.0 версии headless/dedicated сервер может быть запущен из командной строки, с опцией ‘—start-server ВАШМИР.zip’.

В этом режиме:

  • Графическая часть игры не инициализируется совсем (быстрее загрузка, уменьшенное потребление памяти, полностью работает на серверах, где нет графической оболочки. К примеру можно запустить headless сервер на Debian)
  • Игра запускается мгновенно и загружает сохранение(мир), который был передан в опциях запуска.
  • Сервер не помещает игрока в игре, как это делает обычный хост.
  • Игра останавливается, когда на сервере отсутствуют игроки.
  • При закрытие сервера, сохраняется игра. (так же нормально функционирует автосейв)

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

Чуть ниже расположена инструкция для запуска сервера на Windows или Linux

Windows/Steam версия

  • Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
  • Откройте Steam и выберите factorio
  • Нажмите на неё правой кнопкой мыши и выберите пункт ‘Cвойства’
  • Далее выберите вкладку ‘ЛОКАЛЬНЫЕ ФАЙЛЫ’
  • И наконец нажмите на кнопку ПРОСМОТРЕТЬ ЛОКАЛЬНЫЕ ФАЙЛЫ
  • Перейдите в папку bin/x64 или bin/x32

Windows/Обычная версия

  • Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
  • Откройте папку установки factorio
  • Для x64 систем по умолчанию
C:\Program Files\Factorio\bin\x64\

Для x32 систем по умолчанию

C:\Program Files\Factorio\bin\x32\

Далее не имеет значение, Steam или обычная у вас версия игры

  • Создайте текстовый файл и откройте его для редактирования Notepad’ом
  • Скопируйте в него следующее
Factorio.exe --start-server ВАШЕСОХРАНЕНИЕ.zip

Замените ВАШЕСОХРАНЕНИЕ на ваше название мира
Сохраните файл, назвав его server.bat

ВАЖНО: При сохранении выберите тип файла ‘Все файлы’.

Используйте server.bat, чтобы запустить сервер.
Чтобы закрыть сервер, используйте сочетание клавиш Ctrl+C. Только этим способом вы завершите сервер нормально и он сохранит игру перед завершением.

Linux

Данный гайд был проверен на Debian версии 8.2 jessie. Так же он не объясняет настройку firewall, в Debian этим промышляет старый добрый iptables, а для этого есть Google.
Так же данный гайд подразумевает, что у вас есть хоть какое-то представление о работе Linux, иначе вы обречены 😉

И так, вы решили использовать headless сервер на Linux, в нашем случае на Debian, ну что ж, приступим:

Скачиваете последнюю версию игры отсюда, в нашем случае сейчас это Generic Linux tar package (64 bit .tar.gz) (Внимание: только для авторизованных пользователей)

Распаковывайте её

tar -xzf factorio.tar.gz

Создайте папки mods, saves

mkdir factorio/mods
mkdir factorio/saves
  • Загрузите предварительно созданный мир в factorio/saves
  • Скорее всего вам потребуется установить libasound2
aptitude install libasound2

Попробуйте запустить сервер

factorio/bin/x64/factorio --start-server world.zip

Если сервер не запустился, ругаясь на отсутствие нужных библиотек, то установить их можно просто поискав в репозиториях из консоли

aptitude search название_библиотеки
  • С большой вероятностью эта библиотека найдётся в репозиториях, если нет, то поищите в Google или напишите на нашем форуме.
  • Установить библиотеку можно командой
aptitude install название_библиотеки
  • Попробуйте снова запустить сервер, если он опять не запустился, повторите предыдущие два пункта
  • Можно посмотреть список используемых библиотек сервером
ldd factorio/bin/x64/factorio

Dedicated/Headless сервер для 0.11.X версии

Как ни странно, есть способ запуска сервера в 0.11.X версии игры, но он немного требует доработки.

Что необходимо сделать 0.11.x:

Инструменты для моддинга

Список всех объектов и предметов игры можно найти в data.raw.

Доступ к данным мода

__rso-mod__ — это название мода в формате __mod-name__. Указание __mod-name__ в начале строки заставляет работать код в контексте указанного мода. Ниже представлен код, выводящий информацию моде Resource Spawner Overhaul.

c __rso-mod__ game.player.print(serpent.dump(global))

Вывод всех исследованных технологий в файл

Файл отправится в директорию приложения в подкаталог «script-output».

c local list = {}
for _, tech in pairs(game.player.force.technologies) do 
	if tech.researched then
    list#list+1 = tech.name
  end
end
game.write_file("techs.lua", serpent.block(list) .. "\n", true)

Вывод всех доступных рецептов в файл

Файл отправится в директорию приложения в подкаталог «script-output».

c local list = {}
for _, recipe in pairs(game.player.force.recipes) do 
	if recipe.enabled then
    list#list+1 = recipe.name
  end
end
game.write_file("recipes.lua", serpent.block(list) .. "\n", true)

Вывод списка модов в файл

Записывает все текущие активные моды и их версии в файл script-output/mods.txt находящейся в директории приложения.

c game.write_file("mods.txt", serpent.block(game.active_mods))

Electric network info screen


The Electric network info GUI


Slight stress on the electric system’s satisfaction.

The Electric network info GUI can be accessed by left-clicking any electric pole nearby.

You can see only the info from the electric network to which that pole is connected! Unlike the production-info (press P) the electric network info is not measured globally, but by network.

  1. Satisfaction – The current amount of energy consumed by the network. This bar should be full. If it is not full, it means that the machines connected to the network are consuming more power than is produced, and the bar will change color to yellow (>50%) or red (<50%).
  2. Production – The current energy produced by the network. This bar should never be full. If it is full, it means that the machines connected to the network are consuming all available energy. The less full this bar is, the more surplus energy is available.
  3. Accumulator capacity – How much energy is currently held inside of the accumulators connected to your network. Measured in joules; 1 Joule = 1 Watt * 1 second (see also wikipedia:Joule). This bar should be able to fill fully before emptying again.
  4. Timespan — Set the time span for the graphs below. «5s» means over the last 5 seconds.
  5. Consumption Graph – Shows the consumption of the different parts of the network over time.
  6. Production Graph – Shows the production of the different producers of the network over time.
  7. Detailed Consumption – A list of consumers from highest power consumption to lowest. In the picture example, 47 radars consume the most power, at 14.1 MW.
  8. Detailed Production – A list of producers from highest power production to lowest. In the picture example, 1,300 accumulators produce the most electricity in the factory.

Note that the timeframe influences the shown detailed production/consumption: the displayed watts is the total average power production or consumption over the full time. Setting longer timeframes also allows seeing the past production or consumption of machines even if they are not currently connected to the network.