Long-term content strategy workshop: 300-world generator model, cultural ingredients menu, three-system NPC architecture (9 patterns x 6 motivations), Sacred/Profane/Middle Kingdom framework. 9 agents across 4 rounds plus lead interview establishing the production path from hand-authored Sova to generated 300 worlds. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
19 KiB
Round 1 — Nigel (Sandbox & Replayability)
Topic 5: Mod Structure — "Add a new NPC to the bar"
The Replayability Thesis for Modding
Here's why I care about this topic even though it sounds like a Tyre question: mods are replayability we don't have to build. Every mod that adds to the content pools — new NPCs, new triangles, new Tier 1 modules — is another seed configuration nobody on this team designed. The modder creates one NPC. The randomizer creates a thousand new playthroughs.
So the mod structure isn't just "how does a modder add a file." It's "how does a modder add to the POOL that the randomizer draws from." If we get this right, the replayability EXPLODES beyond anything we can hand-author.
Concrete Proposal: "Add a New NPC to the Bar"
A modder creates a content pack — a directory with a manifest and content files. Here's the minimum viable set for one new bar NPC:
mods/
my-bar-npc/
mod.yaml # Manifest: mod ID, version, dependencies, load targets
npcs/
fynn.yaml # NPC definition (10-axis profile, all axes)
dialogue/
bar/
fynn-dialogue.yaml # Tagged line pool entries (access, trust, situation, topic, mood)
monologue/
bar/
fynn-monologue-smuggler.yaml # How the smuggler's inner voice reacts to Fynn
fynn-monologue-detective.yaml # How the detective's inner voice reacts to Fynn
mod.yaml declares:
id: "my-bar-npc"
version: "1.0"
game_version: ">=0.1"
extends:
- template: "bar" # Which social site this NPC slots into
role: "regular" # Role slot (regular, staff, outsider, etc.)
tier: 3 # Content tier — modders can aim for Tier 2/3
adds:
npcs: ["fynn"]
dialogue_pools: ["bar/fynn-dialogue"]
monologue_pools: ["bar/fynn-monologue-smuggler", "bar/fynn-monologue-detective"]
fynn.yaml uses the same 10-axis schema as our wiki NPCs:
id: "fynn"
name: "Fynn"
role: "Off-duty pilot"
social_site: "bar"
tier: 3
axes:
want: "Find a reason to stay in Krenn System instead of taking the next cargo run"
routine:
schedule:
- time: "16:00-20:00"
location: "the-last-shift"
activity: "drinking alone, watching the door"
personality:
primary: "restless"
secondary: "observant"
# ... remaining axes
entanglement: "flat" # Not ring-connected (Tier 3 default)
pool_eligible: true # KEY: can the randomizer include/exclude this NPC per seed?
The Critical Field: pool_eligible
This is where it gets exciting. If pool_eligible: true, the randomizer can:
- Include or exclude this NPC from a given playthrough (some seeds have Fynn at the bar, some don't)
- Swap this NPC into different role slots (Fynn is a regular in one seed, an outsider in another)
- Assign this NPC to triangles if the modder defines triangle eligibility
This means a single modded NPC doesn't just add one experience. It adds VARIANCE. Player A has Fynn at the bar. Player B doesn't. Player A tells Player B about this weird pilot who kept watching the door, and Player B says "who's Fynn?"
And it nails replayability without us engineering it!
Additive Modding: The Content Directory Must Support Layering
The directory structure must support:
- Base game loads
content/base/— our shipped content - Mods overlay from
content/mods/{mod-id}/— additive, never destructive - Load order resolves conflicts via
mod.yamlpriority and dependency declarations - Schema validation runs on all mod content at load time — reject malformed NPCs before they enter the pool
What modders can add (additive):
- New NPCs to existing social sites (role slot system)
- New dialogue/monologue lines for existing NPCs (extends the pool)
- New triangles using existing + new NPCs
- New social sites (entire new locations with NPCs and triangles)
- New Tier 1 modules (NEW CONSPIRACIES for the pool — this is the holy grail of mod replayability)
- New contraband types (connected to factions and moral dimensions)
- New PC archetypes (new playable character types with their own monologue pools)
What modders can override (explicit, requires declaration):
- NPC axis values (rebalancing)
- Dialogue lines (voice overhaul)
- Triangle relationships (restructuring drama)
What modders cannot do:
- Silently replace base content (all overrides must be declared in manifest)
- Modify engine schemas (content only, no code)
- Break the tagged pool system (all lines must pass tag validation)
Scaling the Triangle System for Mods
A modder adding an NPC should optionally be able to add that NPC to a triangle:
# In mod.yaml or a separate triangles/fynn-triangle.yaml
triangles:
- id: "pilot-tension"
pattern: "mundane" # Not conspiracy-connected
members:
- role: "outsider" # Fynn
npc: "fynn"
- role: "regular" # Existing NPC
npc: "torek-lintar"
- role: "authority" # Existing NPC
npc: "lera-sessik"
tension: "Fynn is asking too many questions about cargo routes. Torek thinks he's a spy. Lera thinks he's just lonely."
pool_eligible: true # Randomizer can include/exclude this triangle per seed
Now we've got a modded NPC who creates a new triangle with EXISTING NPCs. One mod. Multiple new interaction patterns. The second playthrough where this triangle fires is different from the first where it didn't.
My Big Ask for Tyre
Template role slots need to be defined as part of the social site spec, not just implied by the NPCs we happen to have. The bar template should declare: "I have N regular slots, M staff slots, K outsider slots." Modders fill slots. The randomizer draws from pools to fill empty slots per seed. This means even without mods, different seeds populate templates differently from the base game pool.
Topic 6: Replay Variation — What Makes the Second Playthrough Different?
The Comparison Test
Two players sit down. Both play the smuggler. Same game version, same mods. They finish, compare notes. If they describe the same sequence of events with the same NPCs doing the same things — we've failed. If they describe the same STRUCTURE with different SPECIFICS — we've succeeded. If they can't even agree on what the game was ABOUT — we've created something special.
Three Concrete Things the Randomizer MUST Vary
1. WHO Is THE FRIEND (The Identity Shuffle)
Current state: Kael is always the smuggler's FRIEND. Sera is always the detective's FRIEND. This means playthrough 2 is already partially solved. "Oh, it's Kael again. I know his tell. I know about Corridor B-7. I know he's trying to exit."
Proposal: THE FRIEND is drawn from a pool. Kael is ONE possible smuggler FRIEND. The pool should contain 2-3 FRIEND candidates per character at launch. The FRIEND pattern (D-034) defines the STRUCTURE — relationship phases, contradiction discovery, tell progression, dual-lens notes. But the SPECIFICS change:
| Seed A | Seed B | Seed C |
|---|---|---|
| Smuggler FRIEND: Kael | Smuggler FRIEND: Renn | Smuggler FRIEND: NEW NPC from pool |
| Secret: Exit attempt | Secret: Skimming from ring | Secret: Undercover Commission asset |
| Tell: Looks left when lying | Tell: Touches ear when nervous | Tell: Overexplains routine changes |
| Contradiction: Corridor B-7 meeting | Contradiction: Money in wrong account | Contradiction: Commission comm device found |
Three seeds. Three completely different FRIEND arcs. Three different gut-punches. The pattern is identical (warmth > trust > doubt > conflict). The experience is unique.
And here's the beautiful part: if you played Seed A and learned "Kael's tell is looking left," that knowledge is USELESS in Seed B where your FRIEND is Renn and the tell is something else entirely. Metagaming defeated.
For the detective, same logic. Sera is one candidate. Others could be a Meridian tech, a bar regular who happens to work Commission contract shifts, a newly arrived security officer with a shared institutional history. Same FRIEND pattern, different person, different contradiction, different emotional payload.
Content cost: Each additional FRIEND candidate is ~70-100 authored lines (Tier 1 depth). Expensive per NPC. But the replayability ROI is enormous. Two FRIEND candidates per character = 4x the FRIEND experience space (2 characters x 2 candidates). Three candidates = 9x.
I know this is a stretch for v0.1 given we're already building Kael and Sera at full depth. But the ARCHITECTURE should support it from day one. Even if v0.1 ships with one FRIEND per character, the pool system means v0.2 can add more without restructuring anything.
2. WHAT Is Being Smuggled (The Moral Shuffle)
Current state: Always lattice components. The moral dimension is fixed: "access to capability."
Proposal: The PRIMARY contraband type varies per seed from a pool:
| Contraband | Moral Frame | Investigation Feel | Smuggler Feel |
|---|---|---|---|
| Lattice components | Capability access — people want better minds | Technical, manifest-focused | "We're upgrading people" |
| Medical-grade replacements | Healthcare — people's lattices are failing | Sympathetic, desperate | "We're saving lives" |
| Severance tech | Political resistance — counter-surveillance | Paranoid, ideological | "We're freeing people" |
| Mixed cargo (2+ types) | Complicated — moral lines blur | Confusing, layered | "I don't even know what I'm moving anymore" |
The contraband type changes EVERYTHING downstream:
- The detective's moral calculus shifts. Busting a healthcare ring feels different from busting capability dealers.
- The smuggler's justification shifts. "We're saving lives" vs. "We're arming dissidents."
- NPC attitudes shift. The bar owner who tolerates lattice components might refuse severance tech.
- The investigation vectors change. Medical-grade has hospital connections. Severance has political connections. Lattice has tech connections.
Same triangle structures. Same social sites. Fundamentally different moral texture. On playthrough 1, you bust a healthcare ring and feel terrible. On playthrough 2, you bust a weapons pipeline and feel righteous. On playthrough 3, it's mixed cargo and you can't decide.
Content cost: Moderate. The NPC profiles and triangles work with any contraband type — the ROLES are the same (coordinator, handler, fence, wavering member). What changes is the dialogue flavor and the fact catalog progressions. This is exactly what the tagged pool system is designed for: same structure, different specifics via tag selection.
3. WHO Is Compromised (The Network Shuffle)
Current state: Fixed assignment: Drin has gambling debt to Harek, Voss takes a cut, Maret notices but doesn't report.
Proposal: The ROLES in the conspiracy are fixed, but WHO fills them varies per seed:
| Role | Seed A | Seed B | Seed C |
|---|---|---|---|
| Compromised inspector | Drin (debt) | Resha (blackmail) | Maret (bribed) |
| Schedule manipulator | Voss (cut) | Maret (coerced) | Voss (ideological) |
| Observant civilian | Maret (worried) | Drin (guilty conscience) | Resha (too new to stay quiet) |
| Wavering member | Pell | Torek | Renn |
| Ring courier | Renn | Tav | Kael (dual role) |
Now metagaming REALLY collapses. "Last time Drin was the compromised inspector. I'll pressure Drin again." But this seed, Drin is clean. It's Resha who's compromised. Your investigation follows the wrong thread for 10 minutes before you realize you're chasing a dead end.
The investigation becomes a genuine detective experience every time. You can't memorize the solution. You have to actually OBSERVE, NOTICE, FOLLOW, and DISCOVER — exactly what D-027 demands.
Content cost: This is mostly systemic, not content. The NPC profiles define axes. The randomizer assigns roles. The dialogue system selects from tagged pools based on the NPC's assigned role. A compromised Resha says different things than a clean Resha, but both draw from the same tagged pool filtered by role assignment. This is what the role-based template system was DESIGNED for.
Bonus Variation Axis: Evidence Placement
Where the evidence is should vary per seed:
- Dead drop location: Locker 47 in one seed, maintenance panel C-12 in another, bar back room shelf in another
- Observation opportunity: The Corridor B-7 meeting in one seed, the cargo bay handoff in another, the bar back room exchange in another
- Timing windows: Shift transition gap at 14:00 in one seed, 22:00 in another
Same investigation structure. Different spatial puzzle. You can't walk to the same spot and find the same thing.
PC-as-NPC: The Emergent Story Machine
This concept is INCREDIBLE for replayability and I want to push it further than the workshop brief suggests.
The core idea: When you play the smuggler, the detective exists as an NPC in the world. When you play the detective, the smuggler exists as an NPC.
What this means for emergent stories:
Scenario 1: The Smuggler Sees the Detective NPC You're the smuggler. You're at the bar after a shift. A new face walks in — serious demeanor, institutional bearing, asking Lera about the district. Your monologue fires: "Commission. Has to be. Why are they here?"
That NPC is the detective. They're running their investigation routine as an NPC — visiting the bar, talking to regulars, building trust. You WATCH this happen from the smuggler's perspective. You see the detective NPC talking to Sera. To Hael. Getting closer to Kael.
And then you realize: that NPC is doing exactly what YOU did when you played the detective last time. But from this side, it's terrifying. That's not a player character. That's a threat.
Scenario 2: The Detective Sees the Smuggler NPC You're the detective. You're at the logistics hub, observing shift transitions. A dock worker — efficient, unremarkable, processes containers quickly. Your monologue: "Dock worker. Nothing unusual."
That NPC is the smuggler. They're running their routine — legitimate shifts, occasional ring operations during transition windows. From the detective's perspective, they're background noise. They're part of the wallpaper. You might not even notice them.
But on your second playthrough, when you play as the smuggler, you realize: you were standing RIGHT THERE while the detective NPC watched you. The detective you played as was looking right at you and saw nothing. That retroactive realization is a wow moment.
Scenario 3: The Second Playthrough Gut-Punch You played the detective first. You met Sera. You trusted her. You discovered her concealment. It was emotionally devastating.
Now you play the smuggler. You're at the bar. You see Sera — the Commission woman. Your smuggler monologue: "Commission. Avoid." You barely interact with her.
But YOU the player know. You know Sera is sitting on evidence. You know she's protecting Hael. You know the detective NPC is going to discover her avoidance pattern. And you can't do anything about it because your CHARACTER doesn't know any of this.
That tension — player knowledge vs. character knowledge — is the most powerful replayability mechanic in the game. And it's ENTIRELY EMERGENT. We don't script it. The systems produce it.
PC-as-NPC Implementation Implications
For this to work, each playable character needs:
- A full NPC profile (10 axes, routine, information inventory) — they exist in the world whether or not a player controls them
- NPC-mode behavior routines — what the smuggler does when no player controls them (works shifts, runs operations, visits the bar)
- Observability — the NPC-mode PC must be visible, with tells and patterns that the active player can observe
- Consistent with player experience — if the player saw Kael's B-7 meeting when playing as the smuggler, and then plays the detective, the detective should be able to observe the same kind of event (though timing/details may vary per seed)
The content cost is shockingly low because we're already building these characters as PCs. The smuggler already has a routine, a role, relationships. All we're adding is the NPC behavior layer — and that's exactly what the 10-axis model defines. Want, Routine, Tolerance, Tells — it's all already there. We just need to run it in NPC mode.
The Replayability Matrix
Putting it all together. Variation axes across playthroughs:
| Axis | Seed A (Playthrough 1) | Seed B (Playthrough 2) | Seed C (Playthrough 3) |
|---|---|---|---|
| Character | Smuggler | Detective | Smuggler |
| FRIEND | Kael (exit attempt) | Sera (evidence concealment) | Renn (skimming) |
| Contraband | Lattice components | Medical-grade | Severance tech |
| Compromised inspector | Drin | Resha | Maret |
| Wavering member | Pell | Torek | Pell |
| Dead drop | Locker 47 | Panel C-12 | Bar back room |
| PC-as-NPC visible? | Detective NPC at bar | Smuggler NPC at docks | Detective NPC at bar |
Six axes of variation. Two character choices. Even with just 2-3 options per axis, that's hundreds of unique configurations. Two players comparing notes will describe fundamentally different games.
But what about the SECOND playthrough? The magic is that player knowledge from playthrough 1 creates DRAMATIC IRONY in playthrough 2 — not solution shortcuts. You know more, but you can't act on it because your character doesn't. The tension between "I know" and "they don't know" IS the second playthrough.
And the third playthrough? New seed. New FRIEND. New contraband. New compromised NPCs. The structure is familiar — you know HOW the game works — but the specifics are fresh. You're a veteran detective who's never seen THIS conspiracy before.
Summary: What I Need From This Workshop
- Tyre: Confirm the content directory supports pool-based randomization (NPCs, triangles, contraband assigned per seed, not hardcoded)
- Gestalt: Validate that role-slot templates (N regulars, M staff, K outsiders per social site) create enough mechanical variety without exploding content requirements
- Paula/Mellanie: Confirm that tagged pools can handle role-assigned dialogue (same NPC, different role per seed = different line selection)
- Gore: Does the moral shuffle (contraband variation) serve the philosophical themes or dilute them?
- Everyone: Does the PC-as-NPC concept belong in v0.1, or is it a v0.2 architectural investment?
The test I keep coming back to: Two friends play the game. They sit down after. One says "I can't believe what Kael did." The other says "Who's Kael? My FRIEND was Renn." And both of them realize they played fundamentally different games from the same application.
That's not a feature. That's a reason to exist.