Back to Articles
15 min read

Why Every Game Fails at Simulating a Living City (And What Might Actually Work)

Every RPG promises a living world full of people with their own lives. Every RPG breaks that promise the moment you look closely. The problem isn't engineering. It's that real economies don't work without political resistance.

RustSimulationEmergenceGame DesignEconomics

Every RPG makes the same promise: a living world full of people with their own lives. And every RPG breaks that promise the moment you look closely. The blacksmith stands at his anvil forever. The guards rotate on a timer. The beggar outside the tavern has no story for why he's there. The city is a stage set, not a place.

I've been trying to build something different. A city simulator where every NPC has a real life. Not a scripted routine, but an actual economic history. The blacksmith owns his shop because he bought it fourteen years ago with money he earned. The beggar is broke because his family has been in debt for three generations. The wealthy district is wealthy because land economics concentrated property there over centuries. None of it is authored. All of it is simulated.

It sounds impossible. And based on the track record, maybe it is. But I think the people who've tried before were solving the wrong problem.

The Graveyard of Simulated Economies

Dwarf Fortress is the gold standard for emergent simulation. Every dwarf has memories, preferences, relationships, skills earned through actual labor. The Legends mode lets you read the complete history of every character in the world. It's the closest anyone has come to “every NPC has a real life.”

But Dwarf Fortress tried to add an individual economy (wages, spending, property) and it broke so badly they disabled it. That was over a decade ago. It's still off. Tarn Adams, one of the most talented simulation developers alive, couldn't make it work.

Clockwork Empires promised AI colonists with traits, memories, and goals that would produce emergent stories. The studio went bankrupt. The game shipped buggy and unfinished. Reviews described an “identity crisis” between the simulation and the game.

These aren't failures of engineering. The code worked. The simulations ran. The problem was that the economies they simulated produced garbage: either everyone converged to the same wealth level (boring) or one actor consumed everything (broken). No amount of parameter tuning fixed it.

For a long time, I assumed this was a tuning problem. Surely with the right constants, the right decay rates, the right price formulas, you could find a sweet spot where wealth stratifies naturally into something that looks like a real city. I was wrong. It's not a tuning problem. It's a knowledge problem.

What Game Developers Get Wrong About Economics

Game developers treat economics as a closed system. You set up rules for production, consumption, trade, and pricing. You run the simulation. You expect a functioning economy to emerge.

It never does. And the reason isn't that the rules are wrong. It's that real economies don't work as closed systems.

Thomas Piketty demonstrated that returns on capital naturally exceed economic growth. Left alone, wealth concentrates. That's not a bug; it's the fundamental tendency of any system where capital generates returns. The rich get richer isn't a cliche; it's a mathematical inevitability in any economy with property and interest.

Walter Scheidel went further in “The Great Leveler.” He studied every period of significant wealth redistribution in human history and found that only four things have ever reversed concentration: mass warfare, transformative revolution, state collapse, and lethal pandemics. That's it. No peaceful mechanism has ever produced a lasting middle class. The middle class is a political achievement, maintained by the constant threat of social upheaval. Remove the threat and concentration resumes immediately.

This means that Dwarf Fortress's economy wasn't broken. It was working correctly. Economics without political resistance does produce absurd concentration. That's what economics does. The simulation was faithfully reproducing a real phenomenon, but it wasn't reproducing the counterforce that keeps real economies from collapsing into feudalism.

You can't simulate economics independently. That's why the best have failed at it.

The Coupled System

The fix isn't better economic rules. It's modeling economics and social resistance as a single coupled loop:

  1. Economics produces concentration. Wealth flows upward. Property generates rent. Rent buys more property. Debt compounds. This is the natural direction and always will be.
  2. Social pressure builds. As inequality grows, so does misery, resentment, and desperation among those at the bottom.
  3. Resistance emerges. When pressure exceeds thresholds: crime (informal redistribution), labor refusal (strikes), property destruction (riots), organized uprising (revolution). These aren't random events. They're consequences of economic conditions.
  4. Redistribution occurs. Through resistance: property seized, debts forgiven, power structures disrupted. Partially. Unevenly. Violently.
  5. Restabilization. New power structures form. The cycle begins again.

The Coupled Loop

Economics and social resistance as a single system

ConcentrationWealth flows upward
PressureMisery & resentment build
ResistanceCrime, strikes, riots
RedistributionProperty seized, debts forgiven
RestabilizationNew power structures form

An interesting city doesn't exist at any single point in this cycle. It exists because the cycle is always running. The wealthy district exists because concentration is happening right now. The slums exist because redistribution is incomplete. The debt ledgers exist because the powerful learned to manage the cycle, forgiving just enough debt, offering just enough concessions to prevent revolution without surrendering real power.

That last point is crucial. The most interesting emergent behavior isn't the riots. It's the powerful families that learn to prevent riots through strategic concession. A dynasty that accumulates aggressively gets destroyed by upheaval. A dynasty that manages social pressure (forgiving some debts, funding a temple, allowing a guild to organize) survives for centuries. That behavior doesn't need to be authored. It emerges from the coupled system, because families that don't manage pressure simply don't survive.

The Graphics Layer Is Just a Camera

Here's the thing that took me the longest to accept: if the simulation is deep enough, the presentation layer really is just a skin.

The blacksmith's shop looks worn because the simulation tracks its age and repair state. His family is upstairs because the simulation put them there. The neighbors are talking about the new shop that opened down the street because the simulation generated that social event. The poor district is crowded because immigration economics concentrated cheap housing there.

The graphics layer asks the simulation “what's happening at this tile, right now?” and renders it. That's it. No scripting. No hand-placed NPCs. No dialogue trees. Just a camera pointed at a living system.

This sounds like it undersells the presentation work. But think about what it means: every question a player could ask about an NPC has a real answer in the simulation data. Where do you live? How long? Who do you owe money to? What do you do for a living? How did you end up here? Are you happy? None of these require authored content. They're all lookups into simulation state.

Giving NPCs a Voice

There's one piece that the simulation can't do alone: natural language. The simulation knows that two villagers are discussing rising rent. It knows their opinions, their economic positions, their relationship. But it produces structured data, not dialogue.

This is where a small, embedded language model comes in. Not a cloud API, but a quantized 1–3B parameter model running locally, fine-tuned on the writing style of the world. The simulation provides the structured context:

NPC: Theron, blacksmith, 53, owns shop on Market Street. Worried about material costs. Mild debt to a wealthy family. Speaking to: a newcomer with no reputation.

The model generates dialogue that reflects all of it. Theron talks like an established craftsman. He mentions the new tannery. He doesn't mention his debt because you don't tell a stranger about that.

The key insight: this is a presentation concern, not a simulation concern. The simulation decides who talks, about what, with what opinion. That's deterministic. The LLM generates the words. That's non-deterministic, and that's fine, because conversation doesn't write back to simulation state. It's read-only. The LLM is a renderer. It renders words instead of pixels.

This means you can swap models, update fine-tunes, or change prompts between sessions without affecting the simulation. The world stays deterministic. Only the words change.

The strict rule: the model can only say things supported by simulation state. If the simulation doesn't track Theron's daughter being sick, the model can't mention it. This prevents coherence problems. NPC A can't invent a detail that NPC B doesn't know about. It also creates the right pressure on the simulation: if dialogue feels shallow, the fix is deeper simulation, not a cleverer prompt. The LLM can't paper over gaps.

What This Would Actually Produce

Imagine entering a city in an RPG. You don't know it yet, but this city was generated from a seed and run forward for three hundred simulated years. During that time:

  • An economy developed. Some families accumulated property. Others fell into debt.
  • Social pressure built and released in cycles. There were riots, strikes, periods of stability.
  • Dynasties rose and fell. The ones that survived learned to manage discontent.
  • Institutions formed (guilds, temples, a garrison), each serving a function in managing the cycle.
  • Immigration waves changed the demographics. A refugee crisis fifty years ago created a densely packed poor district on the eastern edge.

You walk through the streets. The wealthy district has large buildings, well-maintained, near the center. The edges are crowded, loud, cheaper. You overhear fragments of conversation about rent going up. A shopkeeper mentions the new trade tariffs. A laborer mutters about working double shifts.

You talk to the blacksmith. He tells you he's been here fourteen years. He came from the east with some savings, bought this shop when the previous owner defaulted on a debt. Business was good for a while, but material costs are rising since the trade route disruption last year. He's worried. His family lives upstairs. His wife, two children. The older one wants to be a scholar but they can't afford the fees.

None of that was written by a human. All of it happened in the simulation. The LLM just gave it words.

Is it possible? I don't know. Dwarf Fortress couldn't do the economics. Clockwork Empires couldn't ship the game. Nobody has tried the coupled system with embedded LLM dialogue. It might produce cities that feel generic, or economies that still degenerate despite the social feedback loop, or dialogue that sounds hollow despite the grounding.

But the architecture is sound. The theory is grounded in real economics. And the alternative, hand-authoring every NPC in every city, doesn't scale and never has.

The real test is simple. Run the simulation for a hundred years and check the Gini coefficient. If wealth concentrates into a single actor, the economics are working but the social model isn't. If everyone converges to equality, neither is. But if inequality oscillates, rising and falling in long waves as pressure builds and releases, then something real is happening. Something no city simulator has done before.