Some Conditions of Macroeconomic Instability
and the Infusion of Maintenance Art
Tynan Sylvester points out in his O’Reilly book Designing Games that designers must be vigilant for the “degenerate strategy.” It's what exploit-hunting YouTubers are hunting for, and unlike a physics glitch, a degenerate strategy sucks the fun out permanently.
The system that undergirds Throughput is a time-tested one: based on the continuous economic system first introduced by SimCity. Residential population creates demand for Commercial, which in order to have goods to supply, creates demand for Industrial. This core gameplay loop works so well that it became the foundation of a whole genre.
When I first developed the system that undergirds Throughput, I created similar requirements for these zones in a 1:1:1 ratio: one resident requires one good, one good requires one unit of freight, and one unit of freight requires one worker.
You can imagine this quickly devolved into a degenerate strategy: small atomic clusters of zones could be placed in a repeated alternating tile pattern for perfect satisfaction—not very interesting.
I had to go back and look at what the ratio looked like in SimCity 4. Simple enough to observe—at least at low densities—the demand for Residential zones far outpaced the demand for Industrial.
So I decided to tweak the ratios. Once again emphasizing the power of a tunable system for defining zone supply and demand, I arrived at these levels:
ADULT (Residential): produces 1 ADULT, needs 1 GOOD → column ADULT: 1 GOOD.
GOOD (Commercial): produces 3 GOOD, needs 1 ADULT + 1 FREIGHT → per unit GOOD: ⅓ ADULT, ⅓ FREIGHT. (the ⅓s come from dividing by the batch size of 3.)
FREIGHT (Industrial): produces 1 FREIGHT, needs 3 ADULT → column FREIGHT: 3 ADULT.
The most important aspect being 1 freight requiring 3 adults.
Empirically, this works. The system demands it grow constantly to be viable, and I’ve watched multiple smart people attempt to develop a degenerate strategy for it to no avail. But can we prove that it works?
One nice thing about human-designed systems: they can be exact fits to what humans conceived of for real-world abstraction—the map is the territory.
And there’s one particular abstraction from macroeconomics that fits perfectly here: a Leontief-style input-output model.
The Hawkins-Simon condition comes from a 1949 Econometrica paper titled "Some Conditions of Macroeconomic Stability." It “guarantees the existence of a non-negative output vector that solves the equilibrium relation in the input–output model where demand equals supply.”
In other words, Hawkins-Simon checks whether a system is “productive:” that every part of the output vector is greater than 0 means that there is only positive output from the system, and nothing is at a deficit.
On the flip side, this means that if any of the parts is less than zero, then the system runs at a deficit. The boundary where the determinant equals zero—the 1:1:1 ratio I mentioned before—describes a degenerate matrix.
Geometrically a determinant is the volume-scaling factor of a linear map. I − A maps gross output → net-output-available. So det(I − A) measures how much net surplus the entire web output per unit of gross activity, as one number.
By looking at the leading principal minors—the determinant of each submatrix—we can determine exactly where this system begins to tip negative.
Leading principal minors of I − A:
1st (Adult alone): 1 ✓
2nd (Adult + Good): 1 − 1/3 = 2/3 ✓
3rd (full system): expanding, det(I − A) = 1 − 1/3 − 1 = −1/3 ✗
The Hawkins-Simon condition is failed at the third minor. The residential/commercial pair would be a viable economy on its own if freight were free. The 3-workers-per-freight cost is where the deficit enters the web.
What we’ve found in the principal minors can be further described by the spectral radius: the characteristic polynomial is λ³ − λ/3 − 1 = 0, whose real root is 1.11.
What the spectral radius tells us is ultimately simple to express: each unit of final consumption demands ~1.11 units of upstream production, compounding ~11% per propagation round. The system fails viability, but barely. Decay is the default, but it’s a slow leak, not a rupture.
The only source of viability in this system is the one thing outside the matrix: the player. Every action is an injection the economy can't generate alone. Mierle Laderman Ukeles called this maintenance art; the work of keeping the system alive is in itself the work.
There’s a certain point at which systems thinking must feed back into systems feeling.
As I was tuning my Degenerate state's pruning of unmatched cells, I looked to sharpen the cut between it and Euphoric, which is a Throughput-induced spurt of unchecked growth. Euphoric and Degeneration name the two open half-spaces, and the uninhabitable degenerate point sits unnamed between them as the threshold you're always crossing.
Degeneration can be difficult to keep up with. When Euphoric mode is reached (and finally disables pruning) I’m like, "phew, I can take a breath for all of two seconds."
Euphoric isn't a reward state, but a release state. Typically only the former is emphasized in game design. But reward states are flat dopamine; you did the thing, here's the cookie.
Release states require prior tension. They're earned by surviving pressure. The difference matters because reward states get less satisfying with repetition (tolerance builds, the cookie gets smaller), while release states stay satisfying as long as the tension is real (because each tension is its own arc).
Spectral radius = 1.00 is subsistence, spectral radius = 1.67 would be freefall, spectral radius = 1.11 is a game.
Soon you’ll be able to feel this for yourself, as the demo launch is imminent. Build your city. Watch it breathe.





