An AI dungeon master has an awkward problem: the world should feel larger than the conversation, but a language model can only attend to so much at once.

If the game simulates only the people currently speaking, everyone else seems to stop existing. A distant government never exploits an opportunity. The villagers cease reacting when the player talks to the blacksmith. A location left behind becomes a vague reconstruction when the player returns.

The brute-force answer would be to give every person and organization its own AI turn. That answer lasts until the setting contains twenty factions, several cities, a trading network, a plague, and one unusually opinionated baker. It is too slow and too expensive, and most of those turns would not matter right now.

Ghostlight Dungeon instead changes the resolution of the simulation. It can consider one person in detail, a village as a group, or several rival powers as one bounded political situation. The underlying people and facts do not get merged or discarded. Only the amount of attention used to simulate them changes.

That is the multiresolution gestalt algorithm.

What “gestalt” means here

A gestalt is a population that can be simulated through a shared Persona turn. “The dockworkers,” “the western villages,” or “the biology faculty” might each begin as a gestalt. They have a common baseline, but that does not mean every member is identical.

Suppose the player enters a village and asks for the blacksmith. Ghostlight can materialize John from the villagers’ baseline, then preserve everything that makes him particular: his name, memories, possessions, grudges, promises, and relationship with the player. While John is directly involved, he receives his own simulation attention.

When the player leaves, John does not disappear and his history is not averaged away. His individual state remains as a durable delta from the villagers’ baseline. The simulator may include him in a cheaper village-level turn until he matters again. When the player returns, the same John is materialized from the same baseline plus the same personal delta.

This distinction is the foundation of the system:

Ghostlight aggregates simulation work, not canonical identity or state.

The agency graph

At campaign creation, the world compiler builds a coarse global map of agency. It does not eagerly invent every street and citizen. It records the major powers, institutions, populations, regions, information channels, and strategic pressures that make the setting move.

Each actor, institution, and active population gestalt becomes a vertex in an agency graph. Typed edges describe how they can affect one another: command, membership, containment, alliance, rivalry, trade, migration, communication, coercion, and shared location.

Each vertex also has an agency profile across six practical axes:

  • geography;
  • ideology;
  • authority;
  • economic role;
  • species or bodily constraints;
  • access to information.

These are not personality statistics. They are clues about where a useful simulation boundary lies. During a blockade, geography and supply routes predict behavior. During an election, ideology and authority matter more. For an epidemic, bodies and transport links may dominate. During an espionage crisis, the important boundary is often who knows what.

This is why Ghostlight does not use one permanent hierarchy such as “continent, country, city, person.” The best cut depends on the pressure currently moving through the world.

From current pressure to a simulation cover

Before a strategic wave, a cheap structured model reads the committed event or planning horizon and proposes weights for the six axes. It may also point to relevant subjects, but only from IDs Ghostlight supplied. This stage can say “information boundaries matter greatly right now”; it cannot invent a new faction or alter the world.

The local algorithm then covers every active subject with a set of simulation cells. A cover obeys three hard rules:

  1. Every active subject appears in exactly one cell.
  2. Every cell is connected through the agency graph.
  3. Foreground subjects that require individual attention remain individual.

The player chooses the desired number of active Persona cells with a budget slider from 1 to 32; the default is 8. This is a detail budget, not a promise to erase people until the number fits. If nine named characters are actively engaged while the budget is four, Ghostlight reports a temporary effective budget of at least nine. The foreground wins.

Pins provide more deliberate control. A subject can be kept at individual detail, several subjects can be kept together, or two groups can be forbidden from sharing a cell. Pins and budget changes apply only at safe boundaries. They change a separate resolution epoch, not fictional time or the campaign’s world revision.

The partitioner starts from fine detail and repeatedly merges the lowest-cost legal pair of adjacent cells. Its loss function asks what would become harder to predict if those cells shared one simulation turn:

0.25 facet divergence
+ 0.20 hidden causal-boundary mass
+ 0.15 information-scope divergence
+ 0.15 spatial divergence
+ 0.10 clock/obligation divergence
+ 0.10 salience burial
+ 0.05 partition churn

In plain language: do these subjects want different things, affect one another in ways a summary might hide, know different facts, live too far apart, owe different duties, contain something important, or require a disruptive change from the previous cover?

The exact weights make the decision reproducible and inspectable. The current pressure changes the meaning of facet divergence, so a geographic boundary can be cheap during an ideological dispute and expensive during a flood.

After reaching the budget, Ghostlight performs a small boundary-refinement pass. It accepts a local move only when it improves the compression cost by at least five percent. It also prefers the previous cover unless a replacement is at least ten percent better, apart from forced splits and explicit budget changes. Merged cells receive short leases. These measures stop the world map from jittering between equally plausible partitions every turn.

The implementation uses deterministic ordering and content-addressed cell IDs, so the same state and demand produce the same cover. Candidate scoring samples large cells to keep local work bounded, but it never samples the rules that protect authority, hostility, knowledge, pins, connectivity, or complete coverage. Those are checked exactly. The release test partitions 1,000 subjects to a budget of 8 in about 50 milliseconds on the development host.

Two very different kinds of cell

Putting several subjects in one cell does not automatically create a collective mind. Ghostlight distinguishes two modes:

ModeWhat it representsWhat it may do
CohesiveA real collective with shared authority and sufficiently compatible behavior and informationSpeak or propose one action as a plural Persona
ArenaSeveral distinct or opposed subjects considered in one situationAppraise their interaction and propose separately attributed actions

A cohesive cell might represent a patrol acting through its accepted command structure. It requires a real common authority, no active hostile relation, and low enough behavioral and information divergence.

An arena might contain a guild, its striking workers, and a city ministry. It exists to save inference work, not to pretend they have become one faction. An arena has no actor ID. It cannot issue collective speech, pool everyone’s secrets, or spend one member’s resources on behalf of another. Every proposed action names the exact constituent responsible, and the world kernel validates that constituent’s knowledge, authority, location, relationships, and possessions.

Cross-faction aggregation always produces an arena. This single distinction prevents a great deal of cheap-model political alchemy.

One cell, one Persona pipeline

Once the cover is selected, every active cell runs through Ghostlight’s Persona projection machinery:

flowchart LR
    A["Canonical world state"] --> B["Current-pressure demand"]
    B --> C["Agency graph and budgeted cover"]
    C --> D["Private Projector stream per cell"]
    D --> E["Persona response"]
    E --> F["Interpreter appraisal and proposals"]
    F --> G["WorldKernel validation"]
    G --> H["One atomic strategic commit"]

The Projector converts permitted typed state into a private lived narrative. A cohesive cell receives genuinely shared state plus clearly attributed exceptions. An arena receives a polyphonic account that keeps each constituent’s perspective and knowledge separate.

The Persona sees only that narrative stream. It does not see database schemas, action syntax, or raw world state. It responds as a person or group inhabiting the situation.

The Interpreter converts the response back into a typed appraisal and action proposals. A cohesive cell may propose one collective action. An arena may propose a small bounded number of constituent-attributed actions—at most four, even for a very large cell.

All cells in a wave bind to the same world revision and resolution epoch. Only after every pipeline completes does the WorldKernel validate reach, knowledge, authority, resources, clocks, and conflicting proposals. It then commits the accepted consequences in one transaction. A stale response, invalid cover, malformed model output, or illegal action aborts the entire wave without a partial world mutation.

The number of model requests allowed to run simultaneously is a separate operator setting. Raising concurrency makes an eight-cell wave faster; it does not change which eight cells exist. Lowering the player’s cell budget changes simulation resolution; it does not silently change the provider configuration.

Keeping quiet parts of the world alive

Salience alone would still create a spotlight problem. Important conflicts would receive attention forever while quiet populations slowly became static summaries.

Ghostlight prevents that with detail debt. A subject accumulates this non-fictional scheduling value while it is represented only inside an aggregate. Each strategic wave reserves detailed focus for the eligible subject with the highest debt. Receiving individual or explicit focus clears it.

Even at a cell budget of 1, the global arena must focus on one overdue subject while retaining the larger situation around it. With N subjects, deterministic debt rotation gives every subject direct simulation attention within at most N strategic waves, unless foreground requirements temporarily take precedence.

Detail debt is not something characters can perceive, and it cannot be spent inside the fiction. It is bookkeeping for fair computational attention. World clocks and deterministic obligations advance whether a subject receives focus or not. If a cell does nothing, that inaction must be an appraisal, not an omission from a prompt.

A worked example

Imagine an Aetheria campaign with 24 powers. A river blockade has interrupted food shipments while an opposition movement tries to turn the shortage into a general strike.

At a budget of 4, Ghostlight might preserve:

  • the player’s location and directly engaged cast as mandatory individual cells;
  • upstream producers and transport authorities in a geographically shaped arena;
  • dockworkers, guild leadership, and the ministry in a workplace-and-authority arena;
  • distant powers in a coarse arena, with the highest-detail-debt power selected for explicit focus.

If the player uncovers a secret ministry order, information divergence becomes more important. The next safe repartition may keep the informed conspirators separate from people who have not seen the order—even if they share a building or faction.

If the player then confronts a particular dockworker, that character becomes a mandatory singleton. Ghostlight may exceed the configured budget rather than fold a live conversation back into “the workers.” After the relevance lease expires, the character can return to aggregate simulation while retaining the same individual history.

The cut changes because the situation changed. The world underneath it does not.

Refining the world is different from simulating it finely

Sometimes the Vault establishes that a broad population really contains durable subdivisions: three ideological tendencies, several species with different vulnerabilities, or villages on opposite sides of a material route. That is a canonical fact, not merely a convenient simulation cut.

Ghostlight handles this through approval-gated gestalt fission. The compiler previews a split along an enumerated facet and always includes an other/unknown remainder. Approved children inherit the parent baseline and own only their later deltas. The parent remains as inactive lineage, and known member deltas are reassigned without rewriting anyone’s identity.

Ordinary cover changes are reversible and need no approval because they alter no fiction. Fission changes the canonical population model, so evidence, preview, and approval are required. Keeping these operations separate prevents an optimization decision from quietly becoming lore.

How it appears in Ghostlight Dungeon

For players, the main control is the active Persona-cell budget. A higher value allows more simultaneous detail and usually costs more inference time. A lower value asks Ghostlight to summarize more of the strategic world without freezing it. The interface also shows the effective budget when foreground obligations force an overage.

For operators, the inspector exposes the agency graph, current cover, cohesive and arena modes, merge-loss components, pins, leases, detail debt, and the reason for each cut. It also shows model-stage and resolution receipts without publishing private Persona streams or chain-of-thought.

Under the hood, the implementation is divided by authority:

  • domain.rs defines the persistent subjects, agency contracts, covers, appraisals, and control commands;
  • compiler.rs builds the global agency skeleton and previews canonical fission;
  • resolution.rs plans and validates covers, manages detail debt, validates cell proposals, and applies approved fission;
  • persona.rs owns the Projector → Persona → Interpreter membrane for cells;
  • scheduler.rs projects demand and runs cell pipelines in bounded parallel waves;
  • kernel.rs is the only authority that changes canonical campaign state;
  • surface.rs projects player and operator controls through Ghostlight’s Eve interface.

The result is not an omniscient simulation of every citizen. It is a controlled allocation of attention over a persistent world. The dungeon master can zoom in without inventing a new world and zoom out without erasing the old one.

That is the practical promise of multiresolution gestalts: the world keeps moving, disagreement survives compression, and the blacksmith is still John when you come back.