Factorio: Engineering Addiction#
Week 2 — Base Design Philosophy
Furnace stacks#
A yellow belt runs at 15 items per second. A stone furnace takes 3.2 seconds to smelt one ore, so it takes about 48 stone furnaces — two rows of 24, one on each belt side — to fully consume a saturated yellow belt of ore.
- steel and electric furnaces smelt in 1.6 seconds, half the time, so half as many furnaces (about 24) saturate the same yellow belt
- inserters on both sides of the belt is what makes “two rows” the standard shape — a stack with furnaces on only one side wastes the other lane
- this ratio, not vibes, is what “how many furnaces do I need” actually means
Footprint is a design variable#
Smaller footprint means less travel and cheaper power/belt runs to build. It also means less room to add a second furnace row later without tearing out what’s already there.
- footprint cost is paid once, at build time
- footprint benefit (or regret) is paid continuously, every time the base needs to grow past what was planned
- everything from here on is a different answer to that same trade-off
Spaghetti#
The default. No plan, no named structure — belts and pipes go wherever the last problem needed them to go, crossing and doubling back as the base grows around whatever was already there.
- fast to build, because there’s nothing to design first
- not automatically bad at small scale — the problem is what it costs later, not what it costs now
- the specific cost: nobody, including the person who built it, can trace a belt by eye once enough of it exists
Spaghetti, in practice#

Source: Factorio Wiki, CC BY-NC-SA 3.0.
Everything below this slide is a way of not ending up here by accident.
The bus#
A small number of parallel belts, carrying the handful of intermediates almost everything else needs, run the length of the base — production branches split material off sideways instead of building their own supply line.
- the fix for spaghetti’s actual cost: a belt’s contents and position are now readable on sight, because the bus’s lane order doesn’t change
- a bootstrapping tool, not the most efficient layout — plan for 2-3x the capacity you think you need, since widening a bus later means rebuilding it
- eventually outgrown: high-volume intermediates eat too many lanes, distant branches pull unevenly, and a hard width limit forces new branches further down its length, costing more time per branch, not less
The bus, in practice#

Source: Factorio Wiki, CC BY-NC-SA 3.0.
Read a bus by lane, not by belt — the discipline that keeps it readable is exactly the discipline spaghetti never had.
Bot base#
Logistics robots move items between named chest types instead of belts carrying them, and “provider” and “requester” aren’t the whole taxonomy — five distinct chest types is what actually makes the network legible.
- passive provider: sits until something requests it. active provider: highest pickup priority, robots proactively empty it even with nothing requesting yet — for output that can’t afford to back up (a nuclear reactor’s spent fuel cells is the wiki’s own example)
- storage: catch-all for anything unrequested, optionally filtered to one item. requester: pulls up to 1,000 request slots from the network — paste a recipe onto one to auto-request 30 seconds of its ingredients
Bot base: buffer chests#
- buffer: requests like a requester, but its stock is invisible to ordinary requesters and other buffer chests by default — only construction bots, personal requests, and a requester with “request from buffer chests” explicitly enabled can draw from it
- stocking a buffer and expecting any nearby requester to pull from it is the standard beginner mistake this invisibility causes — a buffer is a reserve, not a fifth kind of passive provider
Bot base, continued#
- robots only travel where roboport coverage overlaps — two roboports connect their logistic ranges the same way two belts connect lanes
- a logistic robot carries one item by default (four with the cargo-size research) at 3 tiles/second, dropping to 20% speed once network power runs low — trades belt-routing complexity for power draw and bot-count overhead, not for a free win
- a careless active-provider chest full of the wrong thing gets emptied into storage immediately, by design — provider chests want a deliberate job, not “somewhere to put stuff”
Bot base, in practice#

Source: Factorio Wiki, CC BY-NC-SA 3.0.
Each chest here is a named request, not a generic buffer — the grid reads by chest type and contents, the same way a bus reads by lane.
Tileable base#
A single production block, sized and shaped so it can be blueprinted once and stamped down again identically as many times as the base needs — the opposite of a bus’s “one long readable line,” this is “one small readable block, repeated.”
- expansion is copy-paste, not redesign — the block that works at 10 copies works at 100, because each copy is self-contained
- needs a shared grid to connect to: a belt or rail spine the blocks all align to, or the copies don’t line up
- the community shorthand for this at full scale is “city blocks” — uniform blocks, commonly on the order of tens of tiles square, tiled across the whole base
Tileable base, in practice#

Source: Factorio Wiki, CC BY-NC-SA 3.0.
The green outline is the actual unit of design here — not the individual machine, and not the whole base, just this one repeatable block.
Train base and megabases#
Once one main bus can’t carry the volume a base needs, trains take over as the backbone between distant production areas and outposts — bulk cargo instead of belt lanes.
- scales close to indefinitely once station and junction design is solid, but front-loads complexity into signalling, train limits, and stacker capacity that a bus never had to think about
- “megabase” has no official definition, but the community’s rough benchmark is a base sustaining around 1,000 science packs a minute — past the point any single bus or bot network can keep up unassisted
- most megabases combine all of the above: tileable blocks for production, trains between them, bots for local delivery inside each block
Train base, in practice#

Source: Factorio Wiki, CC BY-NC-SA 3.0.
This one station is the same idea as the bus’s “one branch” or the tileable block’s “one copy” — the repeatable unit, just moved onto rails.
The base doesn’t need a name. The trade-off it made does.
None of spaghetti, bus, bot, tileable, or train is “correct” — each answers the footprint trade-off differently, and most real bases mix more than one.
This week’s practical#
Goal: compare two supplied bases — one spaghetti, one bus
Measure: actual throughput, and whether a fault can be traced by eye
Write up: which design coped better, and whyKeep the write-up. Assignment 1 asks you to diagnose a base under the same lens.