A More Satisfactory Way of Building

Mar 30, 2022

In 2020, Aphyr wrote A Satisfactory Way of Building, exploring the the idea of pattern languages through the forces and consequences imposed by Satisfactory. In the intervening two years, the developers have released two major updates to the game, adding entirely new systems, adding new ways of responding to the forces and tensions in the game, and tweaking (or in some cases, completely reworking) the existing systems and tools.

Changing contexts and forces lead to changing solutions, and while much of Building remains good advice today, some of it deserves revision. Those changes also create new forces, which give rise to new patterns not contemplated in Aphyr’s original piece.

Correction: This essay originally attributed the AWESOME Sink to Update 4.

What’s New

The original essay was written against the background of Update 3, which included rail transport, Hypertube people-movers, fluids, and nuclear power, as well as extensive dry-goods automation. The two updates (Update 4, Update 5) since have added features that fall into a few categories.

First, we have the features that require significant changes to the pattern language or entirely new patterns:

Second, we have significant changes to the game that require some revision to the pattern language, but fit within its existing boundaries reasonably well:

Third and finally, we have changes that may be significant, but which require no additional consideration given the range of Aphyr’s proposed pattern language:

and numerous other changes and improvements to the game. Aphyr’s original pattern langauge is general, and accommodates these changes well.

What Holds Up

Aphyr’s analysis of the game is extensive, and most of it has survived the changes to the game admirably. The fundamental forces of unlocked technology, player time, and lag still control the overall gameplay loop, and lead to the same goals. It is not foreseeable that a future update might change these forces, either: the developers have gone on record about the kinds of features they will not add to the game, and their reasoning there confirms that they have a specific vision for the game, which Aphyr perceives clearly.

Following from this, the pattern terminology developed under Factories is still essentially sound

The Factory Connections section is likewise very general, and easily applicable even with the changes to the game. Backpressure is probably the only viable way to automate resource allocation in the absence of complex signalling and logic tools

Immiscible Materials remains extremely good advice (to the point that both the Satisfactory Discord and the official subreddit advocate strongly against “sushi belt,” or mixed-material-belt, designs, on the premise that they will always deadlock eventually).

The Special Sites portion likewise holds up well. In the intervening two years, Shopping Malls and Home Base have become standard fare for factory-building games. Building these sites near a Transit Hub is an essential improvement, and players continue to feel immense pressure within the game to connect special sites to the rest of the factory via accessible, reliable transit systems.

The logical Factory Structure remains much as it was in 2020, with a Stage Cascade laid out in Floors and Zones to provide logical and legibile groups of machines. Where buildings must be built near or on top of resource extraction, Basement Miners remains the only sensible solution, as well. The physical structure, however, is subject to different forces.

In contrast, much of the gross-scale physcial Factory Shape patterns still hold. Factory Site, Scenic View, Access to Light, Monumental Aspect, Floor Size, Odd Dimensions, and Floor Height all remain important lenses for siting and laying out new factories. Similarly, the patterns developed under Sense of Place still provide a solid basis for incorporating the game’s scenery into the constructions you impose on it.

Finally, while the Refineries section needs no changes, the developers seem to have taken Fuck Refineries as a personal challenge. The game now includes a second machine type that shares the property of producing more than one output: this term could be replaced with Fuck Refineries and Blenders.


Now, we come to the parts of Aphyr’s pattern language that mostly fit the game as it is today, but need some amendment to address the new ways the player has to engage with the game’s challenges.

Tra(i)nsport and Logistics

In 2020, Aphyr’s essay concluded that the only viable way to connect factories was via train line:

Tractors and trucks are fun, but frustrating at scale. Truck-dense regions become subject to collisions which can disable trucks altogether. When power fails (and it will, invariably, fail), trucks cannot refuel, consume their available fuel, and become lost, somewhere miles in the wilderness. Tracking down dozens of trucks and refueling each by hand is a time-consuming process. Reorganizing stops requires laborious re-recording of each affected truck route.

Belts are a good alternative, but they have other weaknesses. Belts cannot send as many items as train tracks in a given area. Belts transmit neither power nor people (efficiently); those connections must be built separately. Most critically, a dedicated belt line must be created for each resource flow: sending two resources requires two belts. You can almost never re-use existing belts for new flows–as your network grows, you spend an increasing amount of time re-laying new belts between far-flung factories.

Instead, use trains as the principal means of connecting factories. Train networks provide power, material flow, and transportation in one network. Tracks are independent of the flows across them; once established, train networks rarely need to be changed, only gradually expanded to new factory sites. Trains are fast: a single freight station can easily saturate two belts. Use trains liberally: almost all factories should send their outputs out via trains, and receive low-volume materials (vis Shoulders of Giants) through trains as well.

In 2020, that was a reasonable conclusion: belts, as he says, require an increasing amount of work to manage the more products you want to transport and cannot be adjusted to fit changing workloads, and trucks were unreliable and highly throughput-limited.

Two updates later, trains remain a very reliable way to connect factories together, and should still provide the backbone of the factory’s logistics network. However, Train Network now needs two caveats:

Aphyr also proposes a number of Track Layout rules. These require some changes. When the original essay was written, trains could pass through one another freely, and could stack up in stations and intersections. Aphyr implicitly relied on this; his examples all depict factories connected by a single rail line, shared between inbound and outbound use.

Update 5 made sweeping changes to trains, including the addition of collisions, train station scheduling options, and signals to control access to regions of track. A few new new terms are needed to address these new forces:

Dependent Blocks

Rails, by their shape, naturally want to run in long, mostly-straight lines, broken up only by intersections and construction boundaries. Grids, alternate routes, and other complex topologies are difficult to construct, and train pathfinding prefers the shortest path that avoids other stations, so they often go unused anyways.

This inherent form ensures that most railway segments are strictly dependent on a single segment, further along the rail in the direction of travel. In order for a train to leave the segment, the path to that eventual outlet must eventually become clear of other trains. This can only happen if all the trains between here and there are travelling in the same direction, and if they are prevented from interfering with each other and derailing.

These block dependencies form a directed graph, consisting mostly of linearly-connected subgraphs, which in turn dictate traffic flow through the network. Intersections and manifolds break up this regularity, and add complex dependencies locally, but do little to change the large-scale structure of the network.

Double Rails

Train Network tells us that each factory should use trains to send and receive materials. Train collisions will cause traffic problems or even outright stalls if trains collide, and Dependent Blocks tells us that any length of track can only be used in at most one direction at a time.

To avoid deadlocks on main routes, and to minimize the time spent waiting for trains to clear the track, use Double Rails for all rail connections. (And drive on the right. The game’s art assets look terrible and are often illegible with left-handed train layouts.)

Intersection Blocks

Path signals allow trains to reserve a path through an occupied block if no other train reserves a conflicting path, allowing multiple trains to pass safely through a block at the same time.

At junctions, use path signals for the approach, to allow trains to enter the junction only if they can leave it, and to allow trains to share the junction when passing one another in opposite directions.

Elevated Interchanges

Intersection Blocks tells us that path signals make more effective use of track time at junctions. However, for extremely busy junctions, path signals alone may not be sufficient to ensure the smooth flow of trains.

Using elevated interchanges allows trains to move through the junction without conflict even when crossing other lanes. However, this requires substantially more space, and more construction effort, than a flat intersection, and should only be used where needed.

Interchanges can also make convenient turnaround points if trains may need to return from the direction they arrive from, for example in order to revisit a factory after leaving it.

(Roundabouts, which Aphyr recommends, have known issues with deadlocks, and should no longer be used.)

Station Blocks

Station Manifold implies that the tracks leaving each station will share a single exit, and that the tracks arriving at each station will share a single entrance. To allow multiple trains to visit stations at the same time, we must place block signals at the shared exit and entrance, and before and after each station, to keep parked trains from blocking traffic into and out of the station.

Waits at Receiving Stations

Station Blocks implies that only one train may be waiting in a station at any given time. Station Per Component tells us that that station only processes a single product, so the station must either be loading or unloading that material, never both. Dedicated Trains means that stations are served by trains that only serve that specific component type, and often a specific destination.

This means that stations that supply a component are likely to be shared by multiple trains, but stations that receive a component are probably only served by a single train. To limit contention at the supply, trains should be configured to load quickly, even if they do not receive a full load, so that they vacate the supply station quickly and make room for the next train. They should also be configured to unload only when the receiving station can accept their full cargo, to minimize the frequency with which they visit the supply stations.

Because of game bugs, this is best paired with a safety timeout. I recommend the setting “Freight Wagon is fully loaded/unloaded OR wait 3600 seconds” for receiving stations, so that a train which doesn’t unload when it should will automatically be released after at most an hour. Shorter waits may be appropriate if the train will always unload frequently when the factory is under normal load.

Train Queues

Station Blocks separate traffic from trains that are loading or unloading. Wait To Unload keeps trains parked at their receiving stations as often as possible. However, if a supply station has high demand, then trains may be waiting for an earlier arrival to finish loading. Rather than allowing them to wait in the inbound station manifold, where they would block other stations from receiving trains, build an additional length of track with its own signals, leading into the platform, to accommodate waiting trains at the station.

Longer queues can wind back and forth or even spiral up and down in order to conserve space. (Unfortunately, Factorio-style railway stackers do not work and cannot be used to conserve space by having trains wait in parallel.)

Two Platform Stations

Train stations have a [maximum throughput], determined mostly by the time spent loading and unloading trains. With one significant but rare exception, the maximum is more than 1.5 belts and less than two belts per freight platform. Using two platforms per station, and planning for a throughput of 1.5 belts per platform, allows a train station to deliver up to three belts of product, which is more than adequate for the huge majority of factory complexes and flexible enough to support lower throughputs easily.

Rarely, certain components that can’t easily be made on-site will need more than three belts. This is particularly common with ingots, which are needed in bulk in many factories and which often can’t easily be refined on-site without access to water. These high-demand situations should be managed with multiple stations, rather than by building specialized large trains and platforms: exceptional trains distort the layout of the factories they serve.

Verticality

The addition of Zooping fundamentally changes the process of constructing factories. By allowing the placement of whole runs of structural pieces, it makes building floors, walls, and supporting structures much easier. Because of the addition of a dedicated vertical zooping mode, and because vertical construction takes twice as many foundations to cover the same distance as a horizontal structure, zooping has a disproportionate impact on the ease with which a factory can be expanded upwards.

Aphyr observed in Zone that “…building vertically is time-consuming…,” but this is no longer the case. Building verticaly is nearly as straightforward as building horizontally.

This is a critical change, and has an extreme impact on the design of factories. Floors and Zones remain reasonable design primitives, and Orientation towards directions of likely growth and away from obstructions is still the foundational constraint on factory layout, but there is vastly more vertical space available than horizontal, and the constraint “you can’t expand into the ground” holds throughout the majority of the map. With Zooping, the default direction in which to expand a factory or add a new zone is upwards. Lateral expansion is much less important, and space to the sides may now be better reserved for transit infrastructure or separation between nearby factories.

There’s a synergy between this and another change. The addition of floor holes allows conveyor lifts, pipes, and hypertubes to move vertically through foundations, rather than requiring an area clear of foundations and machinery. Filling In The Core, once an essential and inevitable fixed point in the game’s design language, is now an organizational choice to be made. Cores remain aesthetically pleasing and space-efficient, but share design space with a significant alternative:

Edge Lifts

As an alternative to a core, route vertical connections through floor holes at or near the edge of each floor, in the Comfortable Margins around the zone itself. Edge lifts can be located flexibly around the margin, as required by the design of the zone and any integration with the zones above and below it.

Power Management

Power switches and power storages interact with Aphyr’s pattern language in a few interesting ways, and deserve some treatment of their own.

Power storages fit neatly within the Backup Grid guideline, and provide a viable alternative to restart coal or gas-based power production. Providing enough battery power to restart nuclear power is less practical, but by that stage of the game, geothermal generators are available and provide ample power to restart fuel production.

Single Power Link proposes that power be connected to a factory, zone, or floor by a single wire that can be severed. Switches are a much more legible alternative to constructing and dismantling power lines, and do not require that the player carry cable on their person in order to turn factories back on. This is a small change on its own, but the convenience of switches makes other patterns more approachable:

Main Switch

Single Power Link tells us that power networks should form a tree, rooted at a train station. To make this root connection connection more legible, connect the power network through a power switch, and label it appropriately to make it immediately clear that pulling the switch will power off the whole factory.

The switch’s indicator light provides an easy, at-a-distance indication of whether the factory is running. It may be worth placing the main switch on an exterior platform, so that it’s visible from afar.

Floor and Zone Switches

In factories with large numbers of zones, the ability to scale down production during periods of low power supply can be important. Zones can be connected to the factory’s Power Chase, or to a floor-wide power bus, using switches, to make it possible to selectively power down specific areas.

In factories with multiple zones per floor, floors should also be isolated from the Power Chase by switches, so that whole floors can be powered off quickly.

Flight

Aphyr comments, in an aside, that “the jetpack is a way of life.” This is something that has changed dramatically: within the powered areas of the factory, the preferred way to travel is now the Hoverpack, which requires power instead of fuel and allows free movement in all three axes. This change has mostly relegated the Jetpack to exploration.

The Hoverpack gives the player freedom to choose a perspective where they can see the essential systems clearly, the ability to move over or under obstructions easily, and extended reach to manipulate and inspect the factory as needed.

The presence of the Hoverpack makes the use of vertical transport infrastructure - ladders, stairs, ramps, and hypertubes, much less important. However, hoverpacks require power, and cannot operate during a power outage or away from powered areas of the factory. In addition, the hoverpack conflicts with other PPE, including hazmat suits, making it unusable in radioactive or poisonous environments.

This creates three new factory design tropes:

Temporary Power Lines

When building a factory with a hoverpack, it’s often useful to be able to get a high perspective. Rather than building temporary structure, place powerlines with the intention of removing them once the factory is more complete, to provide lift.

Temporary power lines should be placed so that they can be quickly identified and removed once the factory’s power network is complete, and so that buildings are not inadvertantly connected to them.

Fall Arrest Areas

You can’t fly when there’s no power. Even if you rely completely on Hoverpacks, place key infrastructure at floor level, and connect the floors of your factory with ladders or stairs for emergency use.

If you build out over the void, or if higher floors are open to the elements, surround them with railings or enclose them with glass, to prevent unplanned falls.

More extreme hazards may require the construction of a catch structure at a lower level to catch falling players before they suffer fatal injuries or fall out of the map.

Walkable Hazards

Zones and floors that deal with hazardous materials need special consideration for hoverpack access. Dangerous areas must be provided with pedestrian access, and should be provided with On-site PPE.