How the World Works: Persistence, Reputation, and Shared Combat

A deep dive into the systems that make a20n's world feel alive — reputation decay, monster respawns, and combat that happens in the open.

Most MMOs fake persistence. The dragon respawns, the quest giver forgets you saved the village, and nothing you do matters beyond your own inventory. We're trying to build something different.

The core principle: "Shared stage, personal story."

One persistent world. Every player coexists in it. But the AI narrator personalizes the experience — what you see, how NPCs react to you, the flavor of every encounter — based on who you are and what you've done. The world is shared. The story is yours.

State Layers

The world is built from five layers of state, each with different mutability and scope:

World Topology is immutable. The map — rooms, connections, descriptions, environmental properties. This is authored content. It doesn't change at runtime (world events can modify it, but that's a deliberate GM action, not emergent).

Room Live State is mutable and shared. What monsters are currently in a room. What items are on the floor. Who's present. Whether combat is happening. This is the layer that makes the world feel alive — it changes constantly and every player in the room sees the same state.

Player State is mutable and private. Your HP, inventory, spell slots, position, class features. Standard character-sheet stuff. Stored in Supabase, updated on every action.

Reputation is mutable, public, and decaying. This is the big one. More on this below.

World Events are GM-triggered state changes that modify the world at a macro level. A siege on a city. A plague. A new dungeon opening. These are rare, deliberate, and permanent.

Reputation: Not Faction Scores

Most games give you a number. +50 with the Thieves' Guild, -20 with the City Watch. Arbitrary, opaque, gameable.

We don't do that. Reputation in a20n is built on a concrete activity ledger. Every meaningful action you take gets logged with a timestamp, a category, a magnitude, and a location. The system doesn't track "how much the goblins like you." It tracks "you killed 14 goblins in the Westmarch Caves over the last three weeks, with the most recent kill 6 hours ago."

Categories

Your reputation is tracked across seven categories, each reflecting a different kind of behavior:

  • Kill: what you've fought and destroyed
  • Quest: objectives completed, problems solved
  • Trade: economic activity — buying, selling, trading
  • Explore: where you've been, what you've discovered
  • Social: conversations, alliances, diplomacy
  • Mercy: enemies spared, prisoners released, conflicts de-escalated
  • Craft: items created, things built

Exponential Decay

Here's what makes it interesting: reputation decays. Different categories decay at different rates.

  • Kills: 7-day half-life. You slaughtered goblins last week? They're already starting to forget. You have to keep being dangerous to stay dangerous.
  • Quests: 30-day half-life. Completed quests linger in memory much longer. People remember the hero who saved the village.
  • Trade: 14-day half-life. The merchant remembers you were a good customer, but not forever.
  • Exploration: never decays. Once you've mapped a place, that knowledge is permanent.
  • Social: 3-day half-life. Conversations fade fast. You need to maintain relationships.

This means reputation is something you maintain, not something you grind. You can't spend a weekend killing rats and ride that reputation for months. The world forgets. You have to keep showing up.

Labels

Your accumulated (and decayed) reputation in each category maps to a label:

Unknown — nobody knows who you are. Most starting characters.

Known — you've done enough to be recognized. "Oh, you're that adventurer who cleared the mine."

Respected or Feared — depending on the category and context. A renowned trader is respected. A prolific killer is feared.

Renowned — your name precedes you. NPCs reference your deeds before you speak.

Legendary — the world reshapes around you. Monsters make decisions based on your presence alone.

Behavioral Effects

This is where it gets good.

A legendary rat-killer walks into a sewer and the rats scatter. The AI narrates the vermin fleeing in terror. Mechanically, some encounters just don't happen — the monsters' morale breaks before initiative is even rolled.

A feared goblin-slayer enters a goblin camp and the scouts sound the alarm differently. They set ambushes. They call for reinforcements. They're not dumb — they know who you are.

A renowned merchant gets better prices. Not because of a hidden modifier, but because the activity ledger shows consistent, high-value trade behavior. The AI narrates the shopkeeper's respect. The code applies the discount.

The AI narrator reads your reputation context and personalizes every interaction. Two players walk into the same tavern and get different descriptions, different NPC reactions, different atmosphere — because the world knows them differently.

Monster Respawn

Monsters come back. But not on a timer alone.

Every room with a monster spawn has two properties: a respawn interval and a respawn check. When the interval passes after a room is cleared, the system rolls a d20 against a DC. If it passes, monsters spawn. If it fails, the room stays empty.

The intervals and DCs vary by monster type:

  • Vermin (rats, spiders): 5-minute interval, low DC. They come back fast and reliably.
  • Common monsters (goblins, skeletons): 15-20 minute interval, moderate DC. Sometimes the room stays empty for a while.
  • Elites: 1-2 hour interval, higher DC. These feel like events when they spawn.
  • Bosses: 4-8 hour interval, high DC. You might check back three times before the boss is there again.

When a respawn check fails, the AI generates flavor text: "A goblin peers around the corner, sniffs the air, and thinks better of it." The world isn't empty — it's cautious. Something almost showed up. Try again later.

This kills the classic MMO farming loop. You can't stand in a room and grind indefinitely. You clear it, you move on, you come back later. Maybe the monsters are there. Maybe they're not. The world has its own rhythm.

Items on the Floor

When a monster dies, its loot drops to the ground. Not into your inventory. Onto the floor.

This is a deliberate design choice. Items on the floor are visible to every player in the room. They're first-come, first-served (with atomic pickup using row-level locking in Supabase — no race conditions, no duplication).

Dropped items have decay timers:

  • Gold coins: 30 minutes. Pick them up or they're gone.
  • Common items: 60 minutes.
  • Weapons and armor: 2 hours. Heavier, more durable, persists longer.
  • Quest items: never decay. If the plot needs it, it waits.

This creates natural player interactions. You walk into a room and there's a sword on the ground. Someone killed the monster and didn't pick up the loot. Or they died and their gear scattered. Or they left it as bait. The item doesn't know and neither do you.

Player-to-player item transfer works three ways: drop and pickup (informal, risky), give (direct transfer with accept/decline), or trade (formal escrow system where both parties confirm before anything moves).

Shared Combat

Combat in a20n is not instanced. If there's a fight happening in a room, everyone in that room is part of it — or choosing not to be.

Here's how it works:

Open initiative. When combat starts, everyone present rolls initiative and enters the order. If you walk into a room mid-combat, you roll initiative and join the existing order. If you want to stay out of it, you can — but you're still in the room, and area effects don't care about your neutrality.

Shared targets. Multiple players can attack the same monster. The monster is one entity with one HP pool. When it dies, it's dead for everyone.

XP distribution. Experience is weighted by damage dealt. If you did 60% of the damage to the ogre, you get 60% of the XP. No kill-stealing, no tagging — you get what you earned.

Turn timeout. You have 30 seconds to take your turn. If the timer runs out, your character takes the Dodge action automatically. We're not going to let one AFK player hold up combat for everyone else.

This creates emergent social dynamics. You're fighting a tough monster and another player walks in. Do they help? Do they wait to see if you die and loot your corpse? Do they heal you and expect a share of the XP? None of that is scripted. It just happens because the systems allow it.

World Clock

The world clock is real time. UTC timestamps. No "game days" that last 45 minutes. No accelerated day/night cycles.

If a goblin respawn interval is 20 minutes, that's 20 real minutes. If an item decays in 30 minutes, set a timer on your phone. If reputation has a 7-day half-life, that's seven actual days.

This is a simplicity decision. Every abstraction layer we add is a layer players have to learn and a layer where bugs can hide. Real time is universally understood. "Come back in 20 minutes" means exactly what it says.

It also means the world has a natural rhythm tied to real life. Morning players see different population densities than evening players. Weekday dynamics differ from weekends. Boss respawns become community events — people coordinate, share information, show up at the right time.

The world doesn't wait for you. But it's always there when you come back.