Originally shared on the public FactorioPrints / Factorio School archive (factorioprints.com · factorio.school). Authorship preserved from the public catalog.
This is a basic building block for a self-expanding city block setup.
100% vanilla.
Designed for 1-2 RHS trains, no left turns. Tweak rail signals for larger trains.
10x10 chunk city blocks.
Expand your factory without having to go anywhere, ever.
Quick start
Construct the first square by hand by placing the full blueprint 4 times.
The square has a global circuit network running in the middle of rails, the one with 2 wires for each power pole. Connect two signals to the RED network:
A clock signal (C for 1 tick every second),
A flood fill reset signal (R for 1 tick every minute or so).
Place down a train station that supplies all components listed in constant combinators found in intersections. Make these components accessible to the logistic network inside the square.
Every cell has an internal green wire circuit. Connect a constant combinator with 1 white dot signal to the circuit running along the inside of the square.
You're done. From now on you can extend city blocks by placing down blueprints. They will be built by bots using resources from neighbouring cells. These resources will be distributed from the initial square across the entire structure.
Extra blueprints are provided to build city blocks on water.
If you want to supply the network from multiple points, repeat steps 3 and 4 for any additional source of resources.
In-depth README
For me, the holy grail of Factorio automation is ascending from your body and expanding the factory using only the map, blueprints and ctrl-c-v-x. Mods make it too easy. Vanilla makes it fun.
The goals of the city block system I built were as follows:
Vanilla, no mods.
Biters on, biter expansion off.
The following actions should be possible by placing down blueprints on the map and nothing more:
Expanding city blocks.
Placing train stations for city blocks.
Placing trains.
Building any kind of infrastructure within city blocks.
The design should be scalable and shouldn't end up unreasonably slow.
Separate bot networks
The only way to do all these things listed above is to use logistic networks. However, it's impossible to make a functional city block setup with a single bot network covering it. For performance, logistic networks ignore distance when serving requests, so a gigantic bot network is incredibly slow. The solution to this is .
for every city block to have a separate inner logistic network
Every intersection has 4 ports belonging to 4 different networks in corners. Adjacent ports' logistic radii are separated by a single tile. Circuits and chests placed in the middle of each intersection are designed to move components necessary for building more city blocks as well as train stations. Any network that has less than required number of supplies requests more supplies from adjacent networks via requester-chest-inserter-provider-chest triples.
Solving supply cycles
This design alone is not sufficient to distribute resources within the network. If two adjacent blocks are missing some items, they end up wasting time exchanging the same items over and over instead of being resupplied from the outside. To fix this, an ordering system is implemented. A 'flood fill' signal is emitted at all sources of construction supplies and spreads through the network, ordering the system so it spreads resources in a single direction. In detail:
Every bot network has its own inner circuit network on a green wire.
A network that has an external supply of all resources has a constant 1 white dot signal attached to its network.
Every supply point from block A to block B is accompanied with a combinator that outputs 1 white dot signal to network B when a positive white dot signal is preset in network A.
When a white dot signal is present in block A, but not in block B, supply from block A to block B is enabled. When the signal is present in block B, but not in block A, supply is disabled.
Periodically, a reset signal R is sent globally which sets all white dots signals in all cells to less than 0.
Misc
Resources circulated with bots are enough to build supply stations that ferry in further resources, e.g. for mining or production, as well as place trains and distribute nuclear fuel. Designing supply stations is left to user.