Claim set · data/claims/factorio-logistics.yaml

Factorio 2.1.23 (base game) — trains, robots, circuits, pollution and enemies, defence, blueprints

Game: Factorio.

A locomotive has a top speed of 1.2 tiles per tick (72 tiles per second), an engine of 600 kW, and a weight of 2000; a cargo or fluid wagon weighs 1000. factorio-logistics/locomotive

About: Factorio Rail transport

Value
{
 "maxSpeed": 1.2,
 "maxPower": 600,
 "weight": 2000,
 "wagonWeight": 1000
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L503-L507weight = 2000, max_speed = 1.2, max_power = "600kW", reversing_power_modifier = 0.6, braking_force = 10,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L1036weight = 1000,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L833weight = 1000,Factorio Prototype API 2.1.23: RollingStockPrototype · max_speedMaximum speed of the rolling stock in tiles/tick.Checked by claude, 2026-10-26 — read the locomotive prototype (L487-L551) and the cargo-wagon prototype (L817-L839) in trains.lua at 2.1.23; the API page gives max_speed's unit

Space Age adds rolling stock of its own; this is the base game's.

A locomotive burns chemical fuel (wood, coal, solid fuel, rocket fuel, nuclear fuel) from three fuel slots. factorio-logistics/locomotive-fuel

About: Factorio Fuel gauge

Value
{
 "fuelSlots": 3
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L546-L551energy_source = { type = "burner", fuel_categories = {"chemical"}, effectivity = 1, fuel_inventory_size = 3,Checked by claude, 2026-10-26 — read the locomotive's energy_source at L546-L551; the fuels are the items in item.lua with fuel_categories chemical

Cited by: Factorio

Better fuels make a locomotive accelerate faster and run faster: solid fuel gives ×1.2 acceleration and ×1.05 top speed, rocket fuel ×1.8 and ×1.15, and nuclear fuel ×2.5 and ×1.15. Wood (2 MJ) and coal (4 MJ) set neither. factorio-logistics/fuel-bonuses

About: Factorio Fuel gauge

Value
{
 "solid-fuel": {
  "energy": 12,
  "acceleration": 1.2,
  "topSpeed": 1.05
 },
 "rocket-fuel": {
  "energy": 100,
  "acceleration": 1.8,
  "topSpeed": 1.15
 },
 "nuclear-fuel": {
  "energy": 1210,
  "acceleration": 2.5,
  "topSpeed": 1.15
 },
 "coal": {
  "energy": 4
 },
 "wood": {
  "energy": 2
 }
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L767-L769fuel_value = "12MJ", fuel_acceleration_multiplier = 1.2, fuel_top_speed_multiplier = 1.05,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L784-L786fuel_value = "100MJ", fuel_acceleration_multiplier = 1.8, fuel_top_speed_multiplier = 1.15,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L2073-L2075fuel_value = "1.21GJ", fuel_acceleration_multiplier = 2.5, fuel_top_speed_multiplier = 1.15,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L72-L73fuel_categories = {"chemical"}, fuel_value = "4MJ",Checked by claude, 2026-10-26 — read the solid-fuel (L764), rocket-fuel (L781), nuclear-fuel (L2052), coal (L62) and wood (L48) item prototypes in item.lua; only the first three set fuel_acceleration_multiplier and fuel_top_speed_multiplier

Cited by: Factorio

A train's top speed is the average of its rolling stock's top speeds times the average fuel bonus of its locomotives. Wagons set no top speed of their own and drop out of the average, so a train of base-game locomotives tops out at 72 tiles per second on coal and 82.8 on rocket or nuclear fuel (1.2 × 1.15 = 1.38 tiles per tick). factorio-logistics/train-top-speed

About: Factorio Rail transport

Value
{
 "coal": 1.2,
 "rocketOrNuclear": 1.38
}
PublisherFactorio Prototype API 2.1.23: RollingStockPrototype · max_speedIn-game, the max speed of a train is average(all_rolling_stock_max_speeds) × average(all_fuel_modifiers_in_all_locomotives). If this value is not provided it is ignored for the average(all_rolling_stock_max_speed) calculation.factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L504max_speed = 1.2,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L2075fuel_top_speed_multiplier = 1.15,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L786fuel_top_speed_multiplier = 1.15,Checked by claude, 2026-10-26 — the rule is the API's; max_speed appears once in base trains.lua (the locomotive, L504), so cargo, fluid and artillery wagons leave it unset; the top-speed bonus is rocket fuel's L786 (nuclear fuel's L2075 is the same 1.15)

Tier 2 because the averaging rule is Wube's documented statement of engine behaviour; the values it combines are read in data. Acceleration also depends on weight, braking force, friction and air resistance, which the engine combines in ways the API doesn't spell out.

A cargo wagon holds 40 stacks of items; a fluid wagon holds 50,000 units of one fluid. factorio-logistics/wagon-capacity

About: Factorio Inventory capacity

Value
{
 "cargoSlots": 40,
 "fluid": 50000
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L821inventory_size = 40,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L1026capacity = 50000,Checked by claude, 2026-10-26 — read the cargo-wagon (L817) and fluid-wagon (L1019) prototypes in trains.lua

Cited by: Factorio

Rail signals cut the track into blocks, and a train may enter a block only when no other train is in it; signals keep trains from colliding or blocking each other, while the train already knows its route. factorio-logistics/signals-and-blocks

About: Factorio Rail signalling

Dev blogFriday Facts #81 - Chain signals · The chain signal in detailIn Factorio, trains know exactly where to go, and signals are mainly just preventing them from crashing to each other or blocking each other.Friday Facts #81 - Chain signals · The definitionWhile normal signal prevents train from entering the occupied blockChecked by claude, 2026-10-26 — read the post's "chain signal in detail" and "definition" sections in the pinned capture

Cited by: Factorio, Rail signalling

A chain signal holds a train back not only when the block beyond it is occupied but also when the exit the train will take out of that block isn't free, so a train doesn't enter a junction or a shared single-track section unless it can leave it. factorio-logistics/chain-signal

About: Factorio Rail signalling

Dev blogFriday Facts #81 - Chain signals · The definitionWhile normal signal prevents train from entering the occupied block, chain signal prevents train from entering the block also when the exit isn't free. When more exits exist, the one relevant to the train path is taken into account.Friday Facts #81 - Chain signals · Deadlock preventionWith chain signals, this problem can be totally avoided by preventing the train from going to the shared section unless it can exit it.Checked by claude, 2026-10-26 — read the definition and the double-crossing and deadlock examples in the pinned capture

FFF 81 (2015) announced the chain signal for 0.12. The rule it states is the one the 2.1.23 chain signal still keeps; nothing later that we read changes it.

Cited by: Factorio, Rail signalling

A rail signal shows red, yellow or green and can send each as a circuit signal; a chain signal adds a fourth state, blue. factorio-logistics/signal-states

About: Factorio Rail signalling

Value
{
 "railSignal": [
  "red",
  "yellow",
  "green"
 ],
 "chainSignal": [
  "red",
  "yellow",
  "green",
  "blue"
 ]
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L1667-L1669default_red_output_signal = {type = "virtual", name = "signal-red"}, default_orange_output_signal = {type = "virtual", name = "signal-yellow"}, default_green_output_signal = {type = "virtual", name = "signal-green"}factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trains.lua#L1691-L1694default_red_output_signal = {type = "virtual", name = "signal-red"}, default_orange_output_signal = {type = "virtual", name = "signal-yellow"}, default_green_output_signal = {type = "virtual", name = "signal-green"}, default_blue_output_signal = {type = "virtual", name = "signal-blue"}Checked by claude, 2026-10-26 — read the rail-signal (L1648) and rail-chain-signal (L1672) prototypes; the prototype field for yellow is named orange

What blue means (some, but not all, of the exits beyond are free) isn't in the data; the in-game tooltip and the wiki say it.

Cited by: Rail signalling

A train that would have to stop at a red signal tries to find a new path; that is the only part signals play in pathfinding beyond the penalties below. factorio-logistics/repath-at-red

About: Factorio Rail signalling

Dev blogFriday Facts #81 - Chain signals · The chain signal in detailThe only role the signals have in the path finding is, that whenever would the train have to stop because of the red signal, it tries to recalculate its path.Checked by claude, 2026-10-26 — read the paragraph in the pinned capture

Written in 2015; the wiki's 2.0 list of repath events still includes braking for a signal the train can't reserve (factorio-wiki-train-path-finder, "Repaths that happen as part of normal train operation").

Cited by: Rail signalling

The train pathfinder searches the rail graph, from both ends of the train when it can drive either way, for any stop with the scheduled name that isn't disabled, scoring each rail segment by its length, plus a penalty for an occupied block of twice its length divided by how many blocks it lies from the start. factorio-logistics/path-cost-length

About: Factorio Pathfinding

WikiTrain path finder · Path finding penaltiesThe pathfinder first builds a list of non-disabled stops that match the name in the schedule, then searches outward from both ends of the train at once, if applicable, in segments.Train path finder · Path finding penaltiesBase cost for a block/segment is the length of the segment (linear grid length along the center of the rail).Train path finder · Path finding penaltiesWhen the rail block is occupied by a train -> Add a penalty of 2 * length of the block divided by the number of blocks from the start, so the far away occupied paths don't matter much.Checked by claude, 2026-10-26 — read the penalties section of the pinned 2026 capture

Cited by: Factorio

On top of length, a path pays fixed penalties: 2000 for each train stop it passes, 1000 for a signal the circuit network holds red, 500 for a train standing at a stop (1000 if it has no other valid stop), 100 for a train arriving at a stop or signal, 100 plus 0.1 per tick waited for a train waiting at a signal, 1000 for a train with no path, 2000 for a manually driven train stopped with a passenger and 7000 without one, and 7000 for an automatic train with no schedule. factorio-logistics/path-penalties

About: Factorio Pathfinding

Value
{
 "train_stop": 2000,
 "signal_held_by_circuit": 1000,
 "train_in_station": 500,
 "train_in_station_no_other_stop": 1000,
 "arriving_to_station": 100,
 "arriving_to_signal": 100,
 "waiting_at_signal": 100,
 "waiting_per_tick": 0.1,
 "no_path": 1000,
 "manual_stopped": 2000,
 "manual_stopped_no_passenger": 7000,
 "automatic_no_schedule": 7000
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · core/prototypes/utility-constants.lua#L318-L331train_path_finding = { train_stop_penalty = 2000, stopped_manually_controlled_train_penalty = 2000, stopped_manually_controlled_train_without_passenger_penalty = 7000, signal_reserved_by_circuit_network_penalty = 1000, train_in_station_penalty = 500, train_in_station_with_no_other_valid_stops_in_schedule = 1000, train_arriving_to_station_penalty = 100, train_arriving_to_signal_penalty = 100, train_waiting_at_signal_penalty = 100, train_waiting_at_signal_tick_multiplier_penalty = 0.1, …Train path finder · Path finding penaltiesWhen the path includes a train stop -> Add a penalty of 2000.Checked by claude, 2026-10-26 — read train_path_finding in core/prototypes/utility-constants.lua at 2.1.23; the wiki's list matches each value and says which situation each applies to

In 2.0 these became utility constants a mod can change; the names say what each covers, and the wiki's list gives the same numbers.

Cited by: Factorio

A new time wait condition defaults to 30 seconds and an inactivity condition to 5 seconds; a temporary stop waits 5 seconds by default. factorio-logistics/schedule-defaults

About: Factorio Rail transport

Value
{
 "temporaryStop": 300,
 "timeCondition": 1800,
 "inactivityCondition": 300
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · core/prototypes/utility-constants.lua#L402-L404train_temporary_stop_wait_time = 60 * 5, train_time_wait_condition_default = 60 * 30, train_inactivity_wait_condition_default = 60 * 5,Checked by claude, 2026-10-26 — read the three constants in core/prototypes/utility-constants.lua

Cited by: Factorio

2.0 added schedule interrupts: each has a list of conditions and a list of target stops with wait conditions. When a train is about to leave a station it checks its interrupts in order, and the first whose conditions hold pastes its targets into the schedule as temporary stops. Interrupts are shared by name between schedules, and one can't fire inside another unless it has the "In interrupt" condition. factorio-logistics/interrupts

About: Factorio Rail transport

Dev blogFriday Facts #389 - Train control improvements · Train Schedule InterruptsThe interrupts are very simple, you specify a list of conditions to trigger the interrupt, and a list of target stations + wait conditions that will be added to the schedule.Friday Facts #389 - Train control improvements · Train Schedule InterruptsWhenever the train wants to leave the current station, it checks all the interrupts one by one, evaluating the interrupt conditions.Friday Facts #389 - Train control improvements · Interrupts are globalSo we made it that interrupts are shared globally (identified by their name)Friday Facts #389 - Train control improvements · Interrupt in interruptNormally, when an interrupt is activated, other interrupts won't be able to interfere until it is finished.Checked by claude, 2026-10-26 — read the interrupt sections of the pinned capture (Train Schedule Interrupts through Interrupt in interrupt)

Written in December 2023, before 2.0 shipped. The post also introduces the "Destination full" interrupt condition, made for sending a train to a depot.

Cited by: Factorio

An interrupt can name a wildcard signal (any item, any fluid, any fuel, any signal): the train tests the conditions against each item it carries, and the first that passes replaces the wildcard in the target stop's name and wait conditions, so one interrupt sends any cargo to the stop named for it. factorio-logistics/generic-interrupts

About: Factorio Rail transport

Dev blogFriday Facts #395 - Generic interrupts and Train stop priority · Generic interruptWhen a train is evaluating an interrupt which uses the 'Any item' signal, it will check the interrupt conditions against each item in the cargo, and the first one that passes will be the 'passing item' for the interrupt. The passing item will replace the 'Any item' in the interrupt target name and target wait conditions.Friday Facts #395 - Generic interrupts and Train stop priority · Generic interruptWe also have similar signals for 'Any Fluid', 'Any Fuel' and 'Any Signal'.Checked by claude, 2026-10-26 — read the generic-interrupt section of the pinned capture

Cited by: Factorio

Since 2.0 a train told to go to a stop that doesn't exist reports "No path" instead of skipping it, and a disabled stop acts as if its train limit were 0: a train already on its way still arrives, and one sent there waits as "Destination full". factorio-logistics/missing-and-disabled-stops

About: Factorio Rail transport

Dev blogFriday Facts #395 - Generic interrupts and Train stop priority · But what if I don't have a ... dropoffSo in 2.0, we have changed it so that trains will 'No path' for stops that don't exist.Friday Facts #395 - Generic interrupts and Train stop priority · Does it still skip if I disable a stopSo in 2.0, disabled trains stops will act as if they have 'Train limit = 0':Friday Facts #395 - Generic interrupts and Train stop priority · Does it still skip if I disable a stopIf a train is told to go to a disabled stop, it will enter the 'Destination full' state and wait until it is enabled.Checked by claude, 2026-10-26 — read both sections of the pinned capture

In 1.1 a missing or disabled stop was skipped.

A train stop has a priority from 0 to 255, 50 by default and settable by circuit: trains choosing a destination prefer the higher priority, and trains at higher-priority stops leave first. A train the player sends somewhere by hand, or one stuck on the main line with no path or a full destination, gets 255. factorio-logistics/stop-priority

About: Factorio Rail transport

Value
{
 "default": 50,
 "min": 0,
 "max": 255
}
Dev blogFriday Facts #395 - Generic interrupts and Train stop priority · Train stop priorityWhen searching for a destination, trains will prefer a higher priority train stop.Friday Facts #395 - Generic interrupts and Train stop priority · Train stop priorityTrain stops have a default priority of 50, and players can adjust it to any number they want from 0 to 255.Friday Facts #395 - Generic interrupts and Train stop priority · Train stop priorityWhen trains are trying to leave a stop, trains at stops with higher priority are dispatched first.Friday Facts #395 - Generic interrupts and Train stop priority · Train stop priorityWe also added the ability to set the priority using the circuit network.Friday Facts #395 - Generic interrupts and Train stop priority · Train stop priorityWhen the player manually tells the train to go somewhere.Friday Facts #395 - Generic interrupts and Train stop priority · Train stop priorityWhen a train has 'no path' or 'destination full' in the middle of the tracks (i.e. not waiting at a train stop).Checked by claude, 2026-10-26 — read the train-stop-priority section of the pinned capture, including both special cases

A construction robot flies at 0.06 tiles per tick (3.6 tiles per second) and a logistic robot at 0.05 (3 tiles per second); each carries one item until cargo research raises it. factorio-logistics/robot-speed

About: Factorio Logistic robots

Value
{
 "construction": 0.06,
 "logistic": 0.05,
 "payload": 1
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/flying-robots.lua#L638-L639max_payload_size = 1, speed = 0.06,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/flying-robots.lua#L697-L698max_payload_size = 1, speed = 0.05,Factorio Prototype API 2.1.23: FlyingRobotPrototype · speedThe flying speed of the robot, in tiles/tick.Checked by claude, 2026-10-26 — read the construction-robot (L614) and logistic-robot (L676) prototypes in flying-robots.lua; the API page gives speed's unit

Worker robot speed research adds 35%, 40%, 45%, 55% and 65% to robot speed over its first five levels and 65% a level after that, without end; worker robot cargo size research adds one item a level over three levels, for four items a robot. factorio-logistics/robot-research

About: Factorio Tech tree

Value
{
 "speed": [
  0.35,
  0.4,
  0.45,
  0.55,
  0.65,
  0.65
 ],
 "cargo": [
  1,
  1,
  1
 ]
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/technology.lua#L4032-L4038name = "worker-robots-speed-1", icons = util.technology_icon_constant_movement_speed("__base__/graphics/technology/worker-robots-speed.png"), effects = { { type = "worker-robot-speed", modifier = 0.35factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/technology.lua#L4161-L4167name = "worker-robots-speed-6", icons = util.technology_icon_constant_movement_speed("__base__/graphics/technology/worker-robots-speed.png"), effects = { { type = "worker-robot-speed", modifier = 0.65factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/technology.lua#L4185max_level = "infinite",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/technology.lua#L4190-L4196name = "worker-robots-storage-1", icons = util.technology_icon_constant_capacity("__base__/graphics/technology/worker-robots-storage.png"), effects = { { type = "worker-robot-storage", modifier = 1Checked by claude, 2026-10-26 — read the six worker-robots-speed technologies (L4032-L4185; modifiers at L4038, L4063, L4088, L4114, L4140, L4167, level 6 with max_level infinite) and the three worker-robots-storage technologies (L4190-L4253, modifier 1 each)

A robot spends 5 kJ for each tile it flies plus 0.05 kJ for each tick in the air (3 kW). A construction robot's battery holds 3 MJ and a logistic robot's 1.5 MJ; a robot heads for a roboport to charge when its battery falls below 20%, and one that runs dry keeps flying at a fifth of its speed. factorio-logistics/robot-energy

About: Factorio Logistic robots

Value
{
 "perTile": 5,
 "perTick": 0.05,
 "construction": 3000,
 "logistic": 1500,
 "chargeBelow": 0.2,
 "chargeTo": 0.95,
 "emptySpeed": 0.2
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/flying-robots.lua#L640-L645max_energy = "3MJ", energy_per_tick = "0.05kJ", speed_multiplier_when_out_of_energy = 0.2, energy_per_move = "5kJ", min_to_charge = 0.2, max_to_charge = 0.95,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/flying-robots.lua#L699-L704max_energy = "1.5MJ", energy_per_tick = "0.05kJ", speed_multiplier_when_out_of_energy = 0.2, energy_per_move = "5kJ", min_to_charge = 0.2, max_to_charge = 0.95,Factorio Prototype API 2.1.23: FlyingRobotPrototype · energy_per_moveHow much energy does it cost to move 1 tile.Factorio Prototype API 2.1.23: FlyingRobotPrototype · energy_per_tickHow much energy does it cost to fly for 1 tick.Factorio Prototype API 2.1.23: FlyingRobotPrototype · min_to_chargeThe robot will go to charge when its battery fill ratio is less than this.Checked by claude, 2026-10-26 — read both robots' energy fields in flying-robots.lua and the API's description of each field

At its base speed a logistic robot spends 5 + 20 × 0.05 = 6 kJ a tile and a construction robot about 5.8 kJ; max_to_charge (0.95) is the fill above which a robot doesn't need to charge before resting.

Cited by: Factorio

A roboport covers a 50 × 50-tile logistic area (radius 25), where logistic and construction robots both work, inside a 110 × 110-tile construction area (radius 55) for construction robots only. It holds 7 slots of robots and 7 of repair packs, and charges robots at four stations of up to 500 kW each, from a 100 MJ buffer it fills at up to 5 MW. factorio-logistics/roboport

About: Factorio Logistic robots

Value
{
 "logisticsRadius": 25,
 "constructionRadius": 55,
 "robotSlots": 7,
 "materialSlots": 7,
 "chargingStations": 4,
 "chargingPower": 500,
 "buffer": 100,
 "inputLimit": 5
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L6943-L6954input_flow_limit = "5MW", buffer_capacity = "100MJ" }, recharge_minimum = "40MJ", energy_usage = "50kW", -- per one charge slot charging_energy = "500kW", logistics_radius = 25, construction_radius = 55, charge_approach_distance = 5, robot_slots_count = 7, material_slots_count = 7,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L6956-L6959charging_offsets = { {-1.5, -1}, {1.5, -1}, {1.5, 1}, {-1.5, 1} },Roboport · MechanicsThe smaller orange square represents the reach of the logistics network where both logistics and construction robots can operate.Roboport · MechanicsAdditionally, a 110×110 tile area is created for construction robots to repair, construct or remove structures.Checked by claude, 2026-10-26 — read the roboport prototype (L6916-L6959): radii, slots, energy source and the four charging_offsets; the wiki says the areas are squares and gives their sizes

Roboports whose logistic areas touch join one network (wiki). Space Age's quality doesn't change the areas.

Cited by: Factorio

Each of the five logistic chests holds 48 slots: an active provider pushes its contents into the network, a passive provider offers them on request, a storage chest takes what nobody asked for (and can be filtered to one item), a requester is filled by robots up to the amounts set, and a buffer chest is both a requester and a passive provider. factorio-logistics/logistic-chests

About: Factorio Logistic robots

Value
{
 "slots": 48,
 "kinds": [
  "active-provider",
  "passive-provider",
  "storage",
  "buffer",
  "requester"
 ]
}
Wikifactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L5803-L5805inventory_size = 48, icon_draw_specification = {scale = 0.7}, logistic_mode = "passive-provider",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L5916max_logistic_slots = 1,Logistic network · Logistic chestsPushes stored items into the logistic network.Logistic network · Logistic chestsPlaces stored items at the logistic network's disposal.Logistic network · Logistic chestsStores items currently not requested.Logistic network · Logistic chestsWill be filled by logistic robots until the configured amount is reached, or the chest becomes full.Logistic network · Logistic chestsFunctions as both a requester chest and passive provider chest.Checked by claude, 2026-10-26 — read the five logistic-container prototypes (L5780-L6105: inventory_size 48 and logistic_mode on each; the storage chest's single filter slot at L5916); the behaviour of each mode is the wiki's

Tier 1 because what each mode does comes from the wiki; the data only names the modes. The sizes and modes alone are T3.

Cited by: Factorio, Production chain

Robots fetch a requested item first from active providers and the player's trash slots, then from storage and buffer chests, then from passive providers; requests are served for players first, then requester chests, then buffer chests. factorio-logistics/logistic-priority

About: Factorio Logistic robots

WikiLogistic network · Chest prioritiesA requested item is first looked up in active provider chests and in the player's trash slots, then in the storage chests and buffer chests, then the passive provider chests.Logistic network · Chest prioritiesRequests are assigned first for player logistics, then for requester chests, then for buffer chests.Checked by claude, 2026-10-26 — read the priorities section of the pinned 2026-10-26 capture

Cited by: Factorio

Once logistic robotics is researched, the character works as a requester: the player sets amounts to keep in the inventory and logistic robots bring them, and items beyond a request's maximum go to trash slots that robots empty. factorio-logistics/personal-logistics

About: Factorio Logistic robots

WikiLogistic network · introductionThe player character can also act as requester chest in the logistic network, allowing them to 'request' various items be kept at a set limit within their personal inventory.Logistic network · TrashItems beyond the maximum amount for that request will be trashed.Checked by claude, 2026-10-26 — read the introduction and the trash section of the pinned capture

Cited by: Factorio

Since 2.0 a robot keeps a queue of tasks, and a new task goes to the robot, idle or busy, with the earliest estimated arrival at its start, instead of to the nearest idle robot as in 1.1. factorio-logistics/robot-task-queue

About: Factorio Logistic robots

Dev blogFriday Facts #374 - Smarter robots · Smarter robot tasksselects the nearest idle robot from that list.Friday Facts #374 - Smarter robots · Smarter robot tasksrobots now have a queue of tasks.Friday Facts #374 - Smarter robots · Smarter robot tasksThe new metric for robot selection is the arrival time.Checked by claude, 2026-10-26 — read Oxyd's section of the pinned 2023-09-01 capture: the 1.1 rule, then the task queue and the arrival-time choice

Written before 2.0 shipped. An idle robot's arrival time is its distance to the task's start over its speed; a busy one's counts its queued tasks first.

A circuit network carries one signed 32-bit number for every item, fluid and virtual signal at once; values wrap around on overflow, and a device reading both a red and a green wire sums them. factorio-logistics/circuit-signals

About: Factorio Circuit network

Value
{
 "min": -2147483648,
 "max": 2147483647
}
WikiCircuit network · SignalsEach circuit network contains a channel for every kind of item, as well as 48 extra virtual signals which act as user-definable channels.Circuit network · SignalsThe channels are separated from each other, so each network can simultaneously carry a number for each item and fluid in the gameCircuit network · SignalsNumbers are in the signed 32 bit integer rangeCircuit network · SignalsThe numbers wrap around on overflowCircuit network · WiresReceiving devices sum all signals from each wire connected to them, even red and green wires.Checked by claude, 2026-10-26 — read the signal and wire sections of the pinned 2026-10-17 capture

Red and green wires that meet at one pole or device stay two networks; only the reading device adds them.

Cited by: Factorio

A red or green wire between combinators, or between most circuit devices, can span at most 9 tiles. factorio-logistics/circuit-wire-reach

About: Factorio Circuit network

Value: 9 tiles

Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · core/lualib/circuit-connector-sprites.lua#L106default_circuit_wire_max_distance = 9factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · core/lualib/circuit-connector-sprites.lua#L211combinator_circuit_wire_max_distance = 9Checked by claude, 2026-10-26 — read both globals; base entities set circuit_wire_max_distance to one of them (the combinators in circuit-network.lua to combinator_circuit_wire_max_distance, the rail signals to the default)

Electric poles carry wires as far as their own wire reach, which the production set covers.

An arithmetic or decider combinator's output appears one tick (1/60 s) after its input, so each combinator in a chain adds a tick. factorio-logistics/combinator-latency

About: Factorio Circuit network

Value: 1 ticks per combinator

WikiDecider combinator · FunctionWith both the arithmetic and decider combinator, there is one tick (60th of a second) of latency before the output signal is ready to be used as an input into a circuit network.Checked by claude, 2026-10-26 — read the paragraph in the pinned 2026-10-17 capture

The brief expected this from Wube's docs; the FFF posts and API pages we read don't state it, so it rests on the wiki. "Each combinator adds a tick" follows from one tick per combinator.

Cited by: Factorio

An arithmetic combinator does one operation on its inputs: add, subtract, multiply, divide, modulo, power, shift left or right, or bitwise AND, OR or XOR. With the Each signal it applies the operation to every input signal separately. factorio-logistics/arithmetic-combinator

About: Factorio Circuit network

Value
[
 "+",
 "-",
 "*",
 "/",
 "%",
 "^",
 "<<",
 ">>",
 "AND",
 "OR",
 "XOR"
]
WikiArithmetic combinator · FunctionEach arithmetic combinator can perform any one of the following mathematical operations on signalsArithmetic combinator · Functionbitwise XORCircuit network · Arithmetic combinatorThis combinator can use the 'Each' signal for both input and output, in which case all non-zero input channels will have the combinator's operation performed and broadcast on the output side.Checked by claude, 2026-10-26 — read the eleven-item operation list in the pinned Arithmetic combinator capture and the Each paragraph in the Circuit network capture

Cited by: Factorio

A decider combinator tests conditions on its inputs and outputs signals when they hold. Since 2.0 one combinator takes several conditions joined by and/or, can read the red and green wires apart, and can have several outputs. factorio-logistics/decider-combinator

About: Factorio Circuit network

Dev blogFriday Facts #384 - Combinators 2.0 · Decider combinator 2.0Multiple conditions with and/or combinations.Friday Facts #384 - Combinators 2.0 · Decider combinator 2.0Selection of input between red and green wires.Friday Facts #384 - Combinators 2.0 · Decider combinator 2.0Multiple outputs.Checked by claude, 2026-10-26 — read the decider-combinator section of the pinned 2023-11-10 capture

Before 2.0 a decider took a single condition. The arithmetic combinator also got 2.0's input/output layout.

Cited by: Factorio

2.0 added a selector combinator, which picks signals out of its input: the signal at a given rank when sorted by value, the count of input signals, a random input signal at a set interval, or an item's stack size. 2.1 added a time mode that outputs the game tick, the time of day and the length of a day, and lets the index mode select the N highest or lowest signals. factorio-logistics/selector-combinator

About: Factorio Circuit network

Dev blogFriday Facts #384 - Combinators 2.0 · The Selector combinatorOutput the signal at the given index (sorted from biggest to smallest or vice versa).Friday Facts #384 - Combinators 2.0 · The Selector combinatorOutput the count of input signals.Friday Facts #384 - Combinators 2.0 · The Selector combinatorOutput a random signal from the inputs (with a custom update interval).Friday Facts #384 - Combinators 2.0 · The Selector combinatorOutput the stack size of the input item.factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · changelog.txt#L642- Added "Time" mode to selector combinator. It allows to read game tick, time of day and duration of a day.factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · changelog.txt#L61- Added index comparator to selector combinator. Allows for selection of N highest or N lowest signals.factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/circuit-network.lua#L1007-L1009default_game_tick_output_signal = {type = "virtual", name = "signal-T"}, default_day_tick_output_signal = {type = "virtual", name = "signal-D"}, default_day_length_output_signal = {type = "virtual", name = "signal-L"},Checked by claude, 2026-10-26 — read the selector section of FFF 384 and the changelog entries under 2.1.7 (L642) and 2.1.21 (L61); the selector prototype's default time-mode output signals are at L1007-L1009

FFF 384 also lists a rocket-capacity mode (Space Age) and quality transfer (the quality mod), outside this base-game set; the post said the modes were "still subject to change".

Cited by: Factorio

The arithmetic, decider and selector combinators each draw 1 kW of electricity; the constant combinator, which outputs the signals set in it, needs none. factorio-logistics/combinator-power

About: Factorio Circuit network

Value: 1 kW

Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/circuit-network.lua#L48active_energy_usage = "1kW",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/circuit-network.lua#L118active_energy_usage = "1kW",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/circuit-network.lua#L1016active_energy_usage = "1kW",Checked by claude, 2026-10-26 — read the four combinator prototypes in circuit-network.lua (arithmetic L29, decider L99, constant L169, selector L994); only the constant combinator has no energy_source

Working machines emit pollution each minute: a boiler 30, a burner mining drill 12, an electric mining drill and a pumpjack 10, an oil refinery 6, a steel furnace, a chemical plant, a centrifuge and an assembling machine 1 each 4, an assembling machine 2 emits 3, a stone furnace and an assembling machine 3 emit 2, and an electric furnace 1. factorio-logistics/machine-pollution

About: Factorio Pollution

Value
{
 "boiler": 30,
 "burner-mining-drill": 12,
 "electric-mining-drill": 10,
 "pumpjack": 10,
 "oil-refinery": 6,
 "steel-furnace": 4,
 "chemical-plant": 4,
 "centrifuge": 4,
 "assembling-machine-1": 4,
 "assembling-machine-2": 3,
 "stone-furnace": 2,
 "assembling-machine-3": 2,
 "electric-furnace": 1
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L1288emissions_per_minute = { pollution = 30 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/mining-drill.lua#L1816emissions_per_minute = { pollution = 12 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/mining-drill.lua#L1753emissions_per_minute = { pollution = 10 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/mining-drill.lua#L1882emissions_per_minute = { pollution = 10 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L8411emissions_per_minute = { pollution = 6 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L4868emissions_per_minute = { pollution = 4 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L8854emissions_per_minute = { pollution = 4 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L9308emissions_per_minute = { pollution = 4 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L3195emissions_per_minute = { pollution = 4 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L3345emissions_per_minute = { pollution = 3 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L1084emissions_per_minute = { pollution = 2 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L5573emissions_per_minute = { pollution = 2 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L4415emissions_per_minute = { pollution = 1 }Checked by claude, 2026-10-26 — read each machine's energy_source emissions_per_minute and confirmed the prototype each line sits in (boiler L1288, stone furnace L1084, assemblers L3195/L3345/L5573, electric furnace L4415, steel furnace L4868, refinery L8411, chemical plant L8854, centrifuge L9308; drills and pumpjack in mining-drill.lua)

Base values at normal speed; modules scale them, and Space Age machines are left out. Which of these the production set also cites is for the merge to sort out.

Cited by: Factorio

Pollution lives on 32 × 32-tile chunks. A chunk holding at least 15 units passes 2% of its pollution to each of its four neighbours per update, which the map settings count per second and the wiki times at every 64 ticks. factorio-logistics/pollution-spread

About: Factorio Pollution

Value
{
 "diffusionRatio": 0.02,
 "minToDiffuse": 15
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L14-L20-- these are values for 60 ticks (1 simulated second) -- -- amount that is diffused to neighboring chunk -- (possibly repeated for other directions as well) diffusion_ratio=0.02, -- this much PUs must be on the chunk to start diffusing min_to_diffuse=15,Pollution · Pollution spreadAs soon as a chunk has reached 15.0 pollution it starts spreading in all four cardinal directions at a rate of 2% per 64 ticks.Checked by claude, 2026-10-26 — read the pollution block of map-settings.lua and the wiki's spread section; the data comment says "values for 60 ticks", the wiki says chunks update every 64 ticks

The two sources disagree on the period (60 or 64 ticks); the engine is closed, so we can't settle it here without a measurement.

Cited by: Factorio

Every tile soaks up pollution each second: water 0.000025 units, grass and dirt 0.000018, sand and red desert 0.000015. A whole chunk of grass takes in about 0.018 a second (1.1 a minute). factorio-logistics/tile-absorption

About: Factorio Pollution

Value
{
 "water": 0.000025,
 "grass": 0.000018,
 "dirt": 0.000018,
 "sand": 0.000015,
 "red_desert": 0.000015
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/tile/tile-pollution-values.lua#L4-L8water = { pollution = 0.000025 }, grass = { pollution = 0.000018 }, dirt = { pollution = 0.000018 }, sand = { pollution = 0.000015 }, red_desert = { pollution = 0.000015 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L21-L22-- constant modifier a percentage of 1 - the pollution eaten by a chunks tiles ageing=1,Pollution · ChunksEvery chunk has a natural absorption rate per second which is determined by the sum of the pollution absorption of its floor tiles.Checked by claude, 2026-10-26 — read tile-pollution-values.lua and the tiles in tiles.lua that use it (absorptions_per_second = tile_pollution.water, .grass, .dirt …); the chunk figure is 1024 × 0.000018; ageing (1 by default) scales tile absorption

Concrete and other player-laid floors are in tiles.lua too; this lists the natural ground.

Cited by: Factorio

A living tree absorbs 0.001 pollution a second (0.06 a minute) and a dead one a tenth of that. Above 60 pollution in a chunk, trees start taking damage, most at 150. factorio-logistics/tree-absorption

About: Factorio Pollution

Value
{
 "tree": 0.001,
 "deadTree": 0.0001,
 "damageFrom": 60,
 "maxDamageAt": 150,
 "perTreeDamage": 50,
 "restoredPerDamage": 10
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/trees.lua#L6-L7local tree_emissions = { pollution = -0.001 } local dead_tree_emissions = { pollution = -0.0001 }factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L27-L30min_pollution_to_damage_trees = 60, pollution_with_max_forest_damage = 150, pollution_per_tree_damage = 50, pollution_restored_per_tree_damage = 10,Checked by claude, 2026-10-26 — read the two emission constants in trees.lua (used as emissions_per_second by trees and dead trees, e.g. L4902, L4999) and the tree-damage settings in map-settings.lua

The wiki adds that each time a tree takes pollution damage it absorbs 10 pollution, the value of pollution_restored_per_tree_damage (factorio-wiki-pollution, Trees: "Regardless of whether the tree loses leaves or gets grayer, 10 pollution are absorbed by the tree."); how pollution_per_tree_damage enters isn't documented in what we read.

Cited by: Factorio

A spawner absorbs pollution at 20 units plus 1% of its chunk's pollution per update. Each unit has a pollution cost to join an attack: a small biter 4, a medium 20, a big 80, a behemoth 400, and spitters 4, 12, 30 and 200. An attack group gathers for 1 to 10 minutes and holds at most 200 units. factorio-logistics/spawner-pollution-values

About: Factorio Enemy spawning

Value
{
 "absolute": 20,
 "proportional": 0.01,
 "joinCost": {
  "small-biter": 4,
  "medium-biter": 20,
  "big-biter": 80,
  "behemoth-biter": 400,
  "small-spitter": 4,
  "medium-spitter": 12,
  "big-spitter": 30,
  "behemoth-spitter": 200
 },
 "gatherMin": 3600,
 "gatherMax": 36000
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L174absorptions_per_second = { pollution = { absolute = 20, proportional = 0.01 } },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L103absorptions_to_join_attack = { pollution = 4 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L346absorptions_to_join_attack = { pollution = 20 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L406absorptions_to_join_attack = { pollution = 80 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L467absorptions_to_join_attack = { pollution = 400 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L574absorptions_to_join_attack = { pollution = 12 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L631absorptions_to_join_attack = { pollution = 30 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L688absorptions_to_join_attack = { pollution = 200 },factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L131-L132-- manual groups created through the API are unaffected. max_unit_group_size = 200factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L106-L108-- pollution triggered group waiting time is a random time between min and max gathering time min_group_gathering_time = 3600, max_group_gathering_time = 10 * 3600,Checked by claude, 2026-10-26 — read the biter spawner's absorptions_per_second (the spitter spawner's L833 is the same), each unit's absorptions_to_join_attack (small spitter L518 is 4 like the small biter), and the unit-group settings in map-settings.lua; the per-update reading of the absorption is the wiki's, in pollution-attacks

The data comment calls the absorption values "ticks per 1 pu", which matches neither the field's name nor the wiki's reading; we follow the wiki (pollution-attacks).

Spawners, not factories, turn pollution into attacks: each update a spawner absorbs 20 plus 1% of its chunk's pollution (the wiki gives two versions of when it stops or what it takes instead, below), and after absorbing a certain amount it sends one of its units to a gathering point; the gathered group attacks after 1 to 10 minutes. The absorbed pollution pays for sending units, not for spawning them. factorio-logistics/pollution-attacks

About: Factorio Enemy spawning

WikiPollution · SpawnersIf a chunk's pollution is greater than 20, each enemy spawner absorbs 20 + 0.01 * [chunk's pollution] every 64 ticks, otherwise it absorbs 3 times the amount of pollution needed for the most expensive unit it can spawn for the current evolution factor.Pollution · SpawnersAfter a certain amount of pollution is absorbed the spawner sends one of its biters/spitters to a rendezvous point.Pollution · SpawnersEvery 1 to 10 minutes (random) the mustered biters launch an attack.Pollution · Spawners (absorption)Every 64 ticks, spawners absorb pollution until they have absorbed more than 3 times the amount needed to send the most expensive unit at the current evolution level.Pollution · SpawnersNote that absorbing pollution is not for spawning biters, but for sending biters to an attack group.Checked by claude, 2026-10-26 — read the spawner paragraphs of the pinned 2026-10-26 capture

The wiki's two versions disagree: its spread section says a spawner in a chunk with 20 or less absorbs three times its dearest unit's cost instead, while its spawner section says it keeps absorbing 20 + 1% until it holds more than three times that cost. The values are in spawner-pollution-values; the wiki times an update at 64 ticks.

Cited by: Factorio

Biters have 15, 75, 375 and 3000 health (small, medium, big, behemoth) and spitters 10, 50, 200 and 1500; a spawner starts at 350, and its health grows with evolution up to tenfold. factorio-logistics/enemy-health

About: Factorio Hit points

Value
{
 "small-biter": 15,
 "medium-biter": 75,
 "big-biter": 375,
 "behemoth-biter": 3000,
 "small-spitter": 10,
 "medium-spitter": 50,
 "big-spitter": 200,
 "behemoth-spitter": 1500,
 "spawner": 350,
 "spawnerEvolutionModifier": 10
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L77max_health = 15,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L305max_health = 75,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L365max_health = 375,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L425max_health = 3000,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L485max_health = 10,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L536max_health = 50,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L592max_health = 200,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L649max_health = 1500,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L137max_health = 350,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · core/prototypes/utility-constants.lua#L348spawner_evolution_factor_health_modifier = 10,Enemies · SpawnersNests in the wild will have their max health increase with evolution factor exponentially, up to 10 times their starting health.Checked by claude, 2026-10-26 — read max_health in each unit and the biter spawner (the spitter spawner's L797 is also 350), and spawner_evolution_factor_health_modifier in utility-constants.lua; the wiki gives the curve's shape

Resistances, which cut most damage to bigger enemies, are on each prototype too and aren't summarised here.

A spawner keeps up to 7 units of its own and spawns one every 6 seconds at evolution 0, quickening to every 2.5 seconds at evolution 1. factorio-logistics/spawner-spawning

About: Factorio Enemy spawning

Value
{
 "maxOwned": 7,
 "cooldown": [
  360,
  150
 ]
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L177max_count_of_owned_units = 7,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L203-L204-- With zero evolution the spawn rate is 6 seconds, with max evolution it is 2.5 seconds spawning_cooldown = {360, 150},Enemies · EvolutionThis interval (spawning_cooldown in the enemy-spawner definition) is interpolated between 360 (0 evolution) and 150 (1 evolution) game ticks (= 6 to 2.5 seconds).Checked by claude, 2026-10-26 — read the biter spawner (the spitter spawner's L836 and L857 match); the data comment and the wiki agree on the two ends

The data gives the two ends; that the cooldown moves between them linearly is the wiki's word ("interpolated").

Evolution picks which units a spawner makes, by weights that rise and fall with it. A biter spawner makes only small biters at first; medium biters join from 0.2, big from 0.5 and behemoths from 0.9, and small biters stop at 0.6. A spitter spawner makes small biters until 0.35, small spitters from 0.25 to 0.7, medium from 0.4, big from 0.5 and behemoth from 0.9. At evolution 1 a biter spawner makes 1/8 medium, 4/8 big and 3/8 behemoth biters. factorio-logistics/spawn-tables

About: Factorio Enemy evolution

Value
{
 "biter-spawner": {
  "small-biter": [
   [
    0,
    0.3
   ],
   [
    0.6,
    0
   ]
  ],
  "medium-biter": [
   [
    0.2,
    0
   ],
   [
    0.6,
    0.3
   ],
   [
    0.7,
    0.1
   ]
  ],
  "big-biter": [
   [
    0.5,
    0
   ],
   [
    1,
    0.4
   ]
  ],
  "behemoth-biter": [
   [
    0.9,
    0
   ],
   [
    1,
    0.3
   ]
  ]
 },
 "spitter-spawner": {
  "small-biter": [
   [
    0,
    0.3
   ],
   [
    0.35,
    0
   ]
  ],
  "small-spitter": [
   [
    0.25,
    0
   ],
   [
    0.5,
    0.3
   ],
   [
    0.7,
    0
   ]
  ],
  "medium-spitter": [
   [
    0.4,
    0
   ],
   [
    0.7,
    0.3
   ],
   [
    0.9,
    0.1
   ]
  ],
  "big-spitter": [
   [
    0.5,
    0
   ],
   [
    1,
    0.4
   ]
  ],
  "behemoth-spitter": [
   [
    0.9,
    0
   ],
   [
    1,
    0.3
   ]
  ]
 }
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L189-L201result_units = (function() local res = {} res[1] = {"small-biter", {{0.0, 0.3}, {0.6, 0.0}}} if not data.is_demo then -- from evolution_factor 0.3 the weight for medium-biter is linearly rising from 0 to 0.3 -- this means for example that when the evolution_factor is 0.45 the probability of spawning -- a small biter is 66% while probability for medium biter is 33%. res[2] = {"medium-biter", {{0.2, 0.0}, {0.6, 0.3}, {0.7, 0.1}}} -- for evolution factor of 1 the spawning probabilities are: small-biter 0%, medium-biter 1/8, big-biter 4/8, behemoth biter 3/8 res[3] = {"big-biter", {{0.5, 0.0}, {1.0, 0.4}}} res[4] = {"behemoth-biter", {{0.9, 0.0}, {1.0, 0.3}}} end …factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/enemies.lua#L848-L855result_units = { {"small-biter", {{0.0, 0.3}, {0.35, 0}}}, {"small-spitter", {{0.25, 0.0}, {0.5, 0.3}, {0.7, 0.0}}}, {"medium-spitter", {{0.4, 0.0}, {0.7, 0.3}, {0.9, 0.1}}}, {"big-spitter", {{0.5, 0.0}, {1.0, 0.4}}}, {"behemoth-spitter", {{0.9, 0.0}, {1.0, 0.3}}}, },Checked by claude, 2026-10-26 — read both spawners' result_units; at evolution 1 the weights are 0.1, 0.4 and 0.3, which is the comment's 1/8, 4/8, 3/8

The comment above medium-biter says its weight starts rising at 0.3, but the point it describes is {0.2, 0.0}: the comment is stale, and the data rules. The weights are normalised per spawner, so the medium biter's share at a given evolution depends on the other entries' weights there.

Cited by: Factorio

Evolution grows from three sources, each with a default coefficient: 0.000004 for every second of play, 0.002 for every spawner destroyed, and 0.0000009 for every unit of pollution produced. factorio-logistics/evolution-drivers

About: Factorio Enemy evolution

Value
{
 "time_factor": 0.000004,
 "destroy_factor": 0.002,
 "pollution_factor": 9e-7
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L34-L43enemy_evolution= { enabled=true, -- percentual increase in the evolve factor for every second (60 ticks) time_factor = 0.000004, -- percentual increase in the evolve factor for every destroyed spawner destroy_factor = 0.002, -- percentual increase in the evolve factor for 1 pollution unit pollution_factor = 0.0000009 },Checked by claude, 2026-10-26 — read enemy_evolution in map-settings.lua; the comments call each value a "percentual increase", but they're fractions of the 0–1 factor, as the wiki's table also treats them

Cited by: Factorio

The three sources add into a total that is squashed into the range 0 to 1 as total / (1 + total), so each gain is cut by (1 − evolution)² and evolution never reaches 1. The pollution that counts is what machines produce, not what spreads, so trees and terrain don't slow it. factorio-logistics/evolution-formula

About: Factorio Enemy evolution

WikiEnemies · Advanced: Evolution factor components and computationAfter totaling up all the evolution from these sources, this quantity is squashed to fit in the range [0, 1) by applying evolution_factor = total_evolution / (1 + total_evolution).Enemies · Advanced: Evolution factor components and computationEquivalently, marginal increases in evolution are reduced by multiplying the increase by (1 - evolution_factor)².Enemies · Advanced: Evolution factor components and computationPollution production is the total pollution produced by buildings, not the pollution spreading on the map, so it is not reduced by trees or other absorbers.Checked by claude, 2026-10-26 — read the evolution section of the pinned 2026-10-26 capture

By this rule, 0.002 for a spawner is the full gain at evolution 0 and a quarter of it (0.0005) at 0.5, the wiki's own example. Since 2.0 evolution is kept per surface, so this is Nauvis's in the base game.

Enemies expand: between 10 and 60 minutes apart, shorter as evolution rises (60 minutes at evolution 0, 10 at 1, on the curve −e² + 2e), a group of 5 to 10 units times 8 to the power of evolution (so 40 to 80 at evolution 1, at the default enemy base settings; 2.1 also scales it with the map's base-size setting) sets out to a chunk 3 to 5 chunks out from the enemy bases already there, where its members turn into new spawners and worms, one every 30 seconds. factorio-logistics/expansion

About: Factorio Enemy spawning

Value
{
 "minCooldown": 36000,
 "maxCooldown": 216000,
 "minDistance": 3,
 "maxDistance": 5,
 "groupMin": 5,
 "groupMax": 10,
 "groupFactor": 8,
 "buildCooldown": 1800
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L48-L52-- Distance in chunks from the furthest base around. -- This prevents expansions from reaching too far into the -- player's territory max_expansion_distance = 5, min_expansion_distance = 3,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-settings.lua#L83-L101-- Size of the group that goes to build new base. settler_group_min_size = 5, settler_group_max_size = 10, -- Exponential factor used to determine the size of the settler group based on the evolution factor. -- The size is calculated as: -- size = random(min_size, max_size) * (evolution_group_size_factor ^ evolution_factor) evolution_group_size_factor = 8.0, -- Ticks to expand to a single -- position for a base is used. -- -- cooldown is calculated as follows: -- cooldown = lerp(max_expansion_cooldown, min_expansion_cooldown, -e^2 + 2 * e), …Friday Facts #445 - The Biters Bite Back · Build base behaviorSo for 2.1.13 we have increased the cooldowns: 30 seconds by default, and 10 seconds for Deathworld.Friday Facts #445 - The Biters Bite Back · Expansion groups were too smallModify group size dependent on the map generator biter base size.factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · changelog.txt#L336-L337- Increased expansion group build base cooldown from 5 seconds to 30 seconds. - Reduced early game max enemy expansion group size from 20 to 10.Enemies · ExpansionWhen the expansion group reaches its target, each unit will begin dying in sequence to randomly create a spawner or a worm after some delay.Checked by claude, 2026-10-26 — read enemy_expansion in map-settings.lua (the group-size and cooldown formulas are in its comments); FFF 445 gives 2.1.13's build cooldown, the 30 * 60 at L101; the changelog at 2.1.13 (L336-L337) records the cooldown going from 5 to 30 seconds and the early group cap from 20 to 10

2.1 reworked the expansion planner (FFF 445): groups scale with evolution and with the map's base-size setting, and candidate chunks favour open or cleared land over thickening infested areas. The candidate-score formula in map-settings.lua's comments may predate that rework, so it isn't stated here.

Cited by: Factorio

Map presets change these rules: Death world multiplies the time factor by 5 (0.00002) and raises the pollution factor to 0.0000012, sets the pollution ageing setting to 0.5 (against 1 by default; the data comment ties ageing to the pollution a chunk's tiles absorb) and the attack pollution consumption modifier to 0.5, and has expansion parties build every 10 seconds; Rail world cuts the time factor to 0.000002 and turns expansion off. factorio-logistics/map-presets

About: Factorio Enemy evolution

Value
{
 "death-world": {
  "time_factor": 0.00002,
  "pollution_factor": 0.0000012,
  "ageing": 0.5,
  "enemy_attack_pollution_consumption_modifier": 0.5,
  "build_base_unit_dispatch_cooldown": 600
 },
 "rail-world": {
  "time_factor": 0.000002,
  "expansion": false
 }
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-gen-presets.lua#L56-L71advanced_settings = { enemy_evolution = { time_factor = 0.00002, pollution_factor = 0.0000012 }, pollution = { ageing = 0.5, enemy_attack_pollution_consumption_modifier = 0.5 }, …factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/map-gen-presets.lua#L152-L162}, advanced_settings = { enemy_evolution = { time_factor = 0.000002 }, enemy_expansion = { enabled = false }Checked by claude, 2026-10-26 — read the death-world (L44) and rail-world (L108) presets in map-gen-presets.lua; Death world marathon (L74) has its own values (time 0.000015, pollution 0.000001, consumption 0.8)

The consumption modifier presumably scales what units cost to join attacks (spawner-pollution-values), going by its name; the data doesn't describe it. Every value can also be set by hand in the map generator's advanced settings.

Cited by: Factorio

A gun turret has 400 health and an 18-tile range and fires bullets every 6 ticks (10 shots a second) from magazines of 10 rounds. A round does 5 physical damage from a firearm magazine, 8 from piercing rounds and 24 from uranium rounds, so a turret on firearm magazines deals 50 damage a second before research bonuses and the target's resistances. factorio-logistics/gun-turret

About: Factorio Ammunition

Value
{
 "health": 400,
 "range": 18,
 "cooldown": 6,
 "magazine": 10,
 "damage": {
  "firearm-magazine": 5,
  "piercing-rounds-magazine": 8,
  "uranium-rounds-magazine": 24
 }
}
Publisherfactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/turrets.lua#L463max_health = 400,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/turrets.lua#L550-L552type = "projectile", ammo_category = "bullet", cooldown = 6,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/turrets.lua#L566range = 18,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L4087damage = {amount = 5, type = "physical"}factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L4095magazine_size = 10,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L4138damage = {amount = 8, type = "physical"}factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/item.lua#L2819damage = {amount = 24, type = "physical"}Factorio Prototype API 2.1.23: BaseAttackParameters · cooldownNumber of ticks in which it will be possible to shoot again.Factorio Prototype API 2.1.23: BaseAttackParameters · rangeBefore an entity can attack, the distance (in tiles) between the entity and target must be less than or equal to this.Checked by claude, 2026-10-26 — read the gun-turret prototype (L457-L571) and the firearm (L4051), piercing (L4106) and uranium (L2771) magazine items in item.lua; the API gives cooldown and range their units

Tier 2 for the 50-a-second figure, which rests on the API's meaning of cooldown; the values alone are T3. Physical damage research and enemy resistances (a flat cut, then a percentage) change what lands.

Cited by: Factorio

A laser turret has 1000 health and a 24-tile range and needs no ammunition: each shot, every 40 ticks (1.5 a second), costs 800 kJ from its 801 kJ buffer, so it draws 1.2 MW while firing and 24 kW idle. Each hit of its beam does 10 laser damage, doubled by the turret's damage modifier, and one beam can hit more than once: it lasts 40 ticks with a damage interval of 20. factorio-logistics/laser-turret

About: Factorio Weapon energy

Value
{
 "health": 1000,
 "range": 24,
 "cooldown": 40,
 "shotEnergy": 800,
 "buffer": 801,
 "drain": 24,
 "beamDamage": 10,
 "damageModifier": 2
}
Publisherfactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/turrets.lua#L597max_health = 1000,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/turrets.lua#L615-L618type = "electric", buffer_capacity = "801kJ", input_flow_limit = "9600kW", drain = "24kW",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/turrets.lua#L692-L703type = "beam", cooldown = 40, range = 24, threatening_asteroid_penalty = -20, range_mode = "center-to-bounding-box", source_direction_count = 64, source_offset = {0, -3.423489 / 4}, damage_modifier = 2, ammo_category = "laser", ammo_type = { energy_consumption = "800kJ",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/turrets.lua#L710-L712beam = "laser-beam", max_length = 24, duration = 40,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/beams.lua#L10damage_interval = 20,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/beams.lua#L23damage = { amount = 10, type = "laser"}Factorio Prototype API 2.1.23: BaseAttackParameters · cooldownNumber of ticks in which it will be possible to shoot again.Checked by claude, 2026-10-26 — read the laser-turret prototype (L591-L720) and make_laser_beam in beams.lua (damage_interval 20, damage 10 laser); the beam it fires lasts 40 ticks (turrets.lua L712)

How many times a 40-tick beam with a 20-tick damage interval hits, and so the turret's damage per second, depends on engine rules we haven't read; it isn't stated here. Tier 2 for the shot rate and power draw, which rest on the API's meaning of cooldown.

Cited by: Factorio

A flamethrower turret has 1400 health and sprays burning fluid from 6 to 30 tiles away; it burns crude oil, heavy oil (5% more damage) or light oil (10% more). factorio-logistics/flamethrower-turret

About: Factorio Ammunition

Value
{
 "health": 1400,
 "minRange": 6,
 "range": 30,
 "fluids": {
  "crude-oil": 1,
  "heavy-oil": 1.05,
  "light-oil": 1.1
 }
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/fire.lua#L495max_health = 1400,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/fire.lua#L885-L888type = "stream", cooldown = 4, range = 30, min_range = 6,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/fire.lua#L896-L902fluids = { {type = "crude-oil"}, {type = "heavy-oil", damage_modifier = 1.05}, {type = "light-oil", damage_modifier = 1.1} }, fluid_consumption = 0.2,Checked by claude, 2026-10-26 — read the flamethrower-turret prototype in fire.lua (from L489; attack_parameters at L883-L926)

Most of its damage comes from the fire the stream leaves on the ground, defined in the same file.

Cited by: Factorio

A stone wall segment and a gate each have 350 health; a gate has an activation distance of 3 tiles. factorio-logistics/walls

About: Factorio Hit points

Value
{
 "wall": 350,
 "gate": 350,
 "gateActivation": 3
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L3424max_health = 350,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L5002max_health = 350,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L5010activation_distance = 3,Checked by claude, 2026-10-26 — read the stone-wall (L3415) and gate (L4996) prototypes in entities.lua

What activation_distance measures (to whom, from where) is our reading of the name; the wall's resistances aren't summarised here.

Cited by: Factorio

The character has 250 health and a healing_per_tick of 0.15; it carries 80 inventory slots, builds and reaches entities up to 10 tiles away, mines resources within 2.7 tiles, picks up items within 1 tile and loot within 2, and hand-mines at speed 0.5. factorio-logistics/character

About: Factorio Inventory capacity

Value
{
 "health": 250,
 "healingPerTick": 0.15,
 "inventory": 80,
 "buildDistance": 10,
 "reachDistance": 10,
 "resourceReach": 2.7,
 "pickup": 1,
 "lootPickup": 2,
 "miningSpeed": 0.5,
 "runningSpeed": 0.15,
 "ticksToStayInCombat": 600
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L708-L725max_health = 250, alert_when_damaged = false, healing_per_tick = 0.15, collision_box = {{-0.2, -0.2}, {0.2, 0.2}}, selection_box = {{-0.4, -1.4}, {0.4, 0.2}}, hit_visualization_box = {{-0.2, -1.1}, {0.2, 0.2}}, sticker_box = {{-0.2, -1}, {0.2, 0}}, crafting_categories = {"crafting", "hand-crafting"}, mining_categories = {"basic-solid"}, character_corpse = "character-corpse", inventory_size = 80, build_distance = 10, …factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L730-L732ticks_to_stay_in_combat = 600, damage_hit_tint = {0.12, 0, 0, 0}, running_speed = 0.15,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L976mining_speed = 0.5,Factorio Prototype API 2.1.23: CharacterPrototype · healing_per_tickThe amount of health automatically regenerated per tick.Factorio Prototype API 2.1.23: CharacterPrototype · inventory_sizeNumber of slots in the main inventory.Checked by claude, 2026-10-26 — read the character prototype in entities.lua (L704-L976)

The data also sets running_speed 0.15 and ticks_to_stay_in_combat 600 (10 s); the API page doesn't describe either, so the running speed in tiles a second isn't stated, and whether the 600-tick combat timer pauses healing (and so what the character regains per second in practice) is unknown. Research and armour add inventory and health; this is the bare character.

Cited by: Factorio

The character hand-crafts recipes in the crafting and hand-crafting categories and hand-mines resources in the basic-solid category. factorio-logistics/hand-crafting

About: Factorio Crafting

Value
{
 "crafting": [
  "crafting",
  "hand-crafting"
 ],
 "mining": [
  "basic-solid"
 ]
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L715-L716crafting_categories = {"crafting", "hand-crafting"}, mining_categories = {"basic-solid"},Checked by claude, 2026-10-26 — read the character's crafting_categories and mining_categories

Which resources count as basic-solid, and which also need a fluid (uranium ore needs sulfuric acid, resources.lua L166), is in resources.lua, outside this claim. How the crafting queue orders and crafts intermediates isn't in the data; that is a gap for this set.

The car has a 150 kW engine, weighs 700, carries 80 slots and one fuel slot, has 450 health, and mounts a machine gun. factorio-logistics/car

About: Factorio Rideable vehicle

Value
{
 "power": 150,
 "weight": 700,
 "inventory": 80,
 "fuelSlots": 1,
 "health": 450,
 "guns": [
  "vehicle-machine-gun"
 ]
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L4063max_health = 450,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L4096fuel_inventory_size = 1,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L4109consumption = "150kW",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L4371-L4373weight = 700, guns = { "vehicle-machine-gun" }, inventory_size = 80,Checked by claude, 2026-10-26 — read the car prototype in entities.lua (L4057-L4373)

Cited by: Factorio

The tank has a 600 kW engine, weighs 20,000, carries 80 slots and two fuel slots, has 2000 health and an equipment grid, shrugs off collisions with trees and rocks, and mounts a cannon, a machine gun and a flamethrower. factorio-logistics/tank

About: Factorio Rideable vehicle

Value
{
 "power": 600,
 "weight": 20000,
 "inventory": 80,
 "fuelSlots": 2,
 "health": 2000,
 "guns": [
  "tank-cannon",
  "tank-machine-gun",
  "tank-flamethrower"
 ]
}
Codefactorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L7958max_health = 2000,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L7964-L7969immune_to_tree_impacts = true, immune_to_rock_impacts = true, immune_to_all_impacts = true, energy_per_hit_point = 0.5, allow_remote_driving = true, equipment_grid = "medium-equipment-grid",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L8010fuel_inventory_size = 2,factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L8023consumption = "600kW",factorio-data: Factorio's Lua prototype definitions, version 2.1.23 · base/prototypes/entity/entities.lua#L8286-L8289weight = 20000, inventory_size = 80, track_particle_triggers = movement_triggers.tank, guns = { "tank-cannon", "tank-machine-gun", "tank-flamethrower" },Checked by claude, 2026-10-26 — read the tank prototype in entities.lua (L7952-L8289)

The data's top speeds come from power, weight and friction in the engine; neither vehicle sets one, so none is stated.

Cited by: Factorio

A ghost marks where an entity or tile is to be built and does nothing else until it is. Placing a blueprint lays down a ghost for everything in it; once construction robotics is researched, a destroyed building leaves a ghost too (trains excepted). factorio-logistics/ghosts

About: Factorio Structure placement

WikiGhost · introductionA ghost is a semi-transparent marker for an entity or tile which can be placed as a planning tool for future manual building or for construction robots to place using supplies from a logistic network.Ghost · BlueprintsPlacing a blueprint will place ghosts for everything contained within the blueprint.Ghost · Destroyed entitiesOnce construction robotics has been researched any blueprintable entities (except trains) that are destroyed (for example by enemies) will leave behind a ghost.Checked by claude, 2026-10-26 — read the pinned 2026-09-02 capture's introduction, blueprint and destroyed-entity sections

Cited by: Factorio

Construction robots build a ghost when its materials are in the logistic network and robots are free, or, for a player wearing a personal roboport and carrying construction robots, when the player has the materials. A ghost the player placed lasts for ever; one left by a destroyed building lasts a week of game time. factorio-logistics/ghost-construction

About: Factorio Construction

WikiGhost · Interaction with construction robotsThe materials required to build the object are available in the logistic network and enough construction robots are free to begin the placing.Ghost · Interaction with construction robotsThe materials required to build the object are available from the player's inventory, the player is equipped with one or more personal roboports and is carrying one or more construction robots.Ghost · Lifetime of ghostsGhosts that are placed by the player will last forever. Ghosts for destroyed entities will last a week of game time.Checked by claude, 2026-10-26 — read the construction-robot and lifetime sections of the pinned capture

Each robot carries one item at base (robot-speed), so a ghost costs one trip per item it needs, plus the construction area's limit (roboport).

Cited by: Factorio

Since 2.0 a train placed from a blueprint switches itself to automatic mode once it is fully built, fuel requests included, so new trains can be stamped down with no setup. factorio-logistics/train-blueprints

About: Factorio Rail transport

Dev blogFriday Facts #395 - Generic interrupts and Train stop priority · Easier train dispatchingNow when a train blueprint is fully built (importantly, including fuel requests), it will switch to automatic mode.Checked by claude, 2026-10-26 — read the dispatching section of the pinned 2024-01-26 capture