Koel's reactive story system
Told through the moments it produces. A narrative designer's wet dream and nightmare
1. Faction disposition, and the fact that nobody tells you the number
You come back to the counting house eight days after the salt job. Amachi does not look up.
"Sit."
You sit. Last time she made you stand through the entire briefing and used your full name twice.
"There's a second thing," she says, still writing. "Off the books. You can hear it or you can leave before I say it, and I'd think about which one you want, because I'm not going to offer twice."
That is what a tier change looks like from inside the game. Ten factions each hold a disposition spectrum : Trusted, Friendly, Neutral, Hostile, Enemy. Nothing surfaces the number. The tier expresses itself as a chair being offered, a price dropping, a door being unlocked, a guard deciding not to ask. Crossing from Neutral into Friendly with the Ainnurruvar does not produce a notification. It produces an off-books job that did not exist in the conversation tree yesterday.
The reason this works as feel rather than bookkeeping is that dialogue is the delivery mechanism. Amachi at Neutral runs the standard briefing. Amachi at Friendly adds a branch. Same character, same room, different amount of her attention.
---
2. Events, not accumulation
You break a guild crate open on the wrong side of the weigh station. A porter looks up, looks away, keeps moving.
Nothing happens. No sting, no meter.
Two mornings later the crate is gone, the broken slats are gone, and there is a fresh notice nailed to the weigh station post about the reporting of damaged cargo.
Disposition moves through evaluated events, not through per-action nibbles. Killing one guard does not subtract one point. It triggers an evaluation that identifies who witnessed it, applies context multipliers, and then writes a single delta. Completing a mission for a faction is worth roughly +8 to +20 depending on difficulty and discretion. Betraying a faction's intelligence to a rival is −35 and sets a floor that ordinary play cannot climb back out of.
Context does the interesting work. The same act costs more inside faction-controlled territory, because visibility is higher there. It costs even more if it directly contradicts something you promised that faction. It drops to 30% if the evidence never resolves into a name. A held disguise halves it.
The player-facing consequence of that last multiplier is the whole design in one line: you are not managing a reputation, you are managing an evidence trail.
---
3. Witnessed and unwitnessed are two different games
The Harbor Watchman finds you in the storeroom you should not be in. He is genuinely disappointed.
"I liked you! I genuinely liked you!"
He goes down. Nobody else is in the room. You put him behind the rice sacks, take the ledger, and leave by the water stair.
He is found at dawn. The garrison writes it up as a robbery. Nobody writes your name on anything.
A witnessed killing of a faction member costs −20. The same killing, unwitnessed, body discovered later with partial evidence, costs −5. Witnessed theft is −15. Unwitnessed theft is −3. That is a 4x to 5x spread, and it is the mechanical spine holding up the stealth pillar. Combat in Koel is lethal and discouraged, but the discouragement is not a difficulty setting. It is arithmetic. Getting seen is what makes an act expensive.
This also means the game has a real answer to the classic stealth question of what to do with a body. It is not a hiding-spot minigame. It is the difference between a −5 event that fades and a −20 event that never fully does.
---
4. Recognition states, and the disguise that is a loan rather than a gift
You come through the Temple Quarter in a Nagaram clerk's wrap. The priest who watched you argue with a garrison sergeant last week looks straight at you and sees a clerk.
Three streets on, past the crowd, you pull the wrap off because it is hot and you are nearly home.
He is still on the same street. He sees your face. He does not say anything.
The next morning the guard captain who attends the morning rites is standing at the end of your alley, not looking at anything in particular.
Every named NPC tracks a recognition ladder roughly: Unknown, Seen Before, Knows Name, Hunting. A good disguise suppresses Seen Before and Knows Name. Suppression is not deletion. Remove the disguise in that NPC's sight and the prior state snaps back immediately.
This is the single most valuable stealth idea in the design, because it converts identity into a spendable resource with a repayment schedule. Hitman-style social stealth usually resets the moment you leave the level. Here the priest carries what he half-saw into next week, and the disguise you relied on becomes the thing that indicts you the moment you take it off in the wrong place.
---
5. NPC memory is not faction opinion
The Ainnurruvar want you off the docks. You are Hostile with the guild and every guild space is a problem.
Selvam, the dock worker whose cargo hook you returned after you were done with it, does not care about any of that.
"They've got two on the north gate since yesterday," he says, not stopping, not looking at you. "One of them sits down about an hour after dark."
Then he is gone up the pier and you have a route.
Faction disposition is what the institution thinks. NPC memory is what this person knows. They are stored separately and they can disagree. An NPC whose faction is Hostile toward you can still help you privately if he holds a strong positive memory, and the docs weight those memories heavily. Saving an NPC's life is +40, the highest single entry in the table, and it is described as rarely forgotten. Paying more than asked is +8. Being caught in a lie is −30.
Each memory entry stores what happened, its valence, its weight, the in-game day it was recorded, whether the NPC witnessed it directly, and who told them if they did not. Memory arrays cap at twenty entries per NPC and prune the oldest decayed ones, which is a scoping decision that matters as much as a design one.
---
6. Rumors travel at walking speed
You kill a merchant on the east side after dark. Nobody sees it.
Nobody has to.
By the next morning a warehouse keeper on the west side is telling a colleague he heard something about the east quarter. He has it slightly wrong. He thinks it was two men.
By the second morning a guild factor stops you at the weigh station and asks, pleasantly, where you were on Tuesday.
An NPC with a sufficiently strong negative memory propagates it once to socially adjacent NPCs after about an hour in-game. The propagated copy arrives as hearsay, unverified, at 60% weight. Dock workers pass to other dock workers and the nearest official. Priests pass to other priests and to the guard captain who attends morning rites. Information does not jump social layers in a single step.
Two rules make this feel like gossip rather than a broadcast. First, hearsay can be wrong : if you were disguised, the rumor may attach to the wrong identity entirely, and the system will happily let a false description circulate. Second, reinforcement converges. If an NPC hears the same thing from a second source, weight increases by half the new source's base value. Consistent rumor hardens into certainty over days.
The design also includes a check I would not have thought to write until it broke something: an identity-inconsistency resolver. If two NPCs hold contradictory verified memories about where you were and who you were, the lower-weight memory gets demoted to unverified. Without that, gossip generates impossible knowledge and the fiction tears.
---
7. A guard becomes a person
First time, you walk past him on the gangplank without eye contact. He notes it. Nothing else happens.
Second time, he is outside the counting house when you leave. He steps into your path.
"You again. I've been making notes."
He has a name now. Commander Vikram. He did not have one an hour ago.
This is the emergence system and it is the feature most likely to be the game's calling card. A generic Garrison Officer carries a counter. Cross a threshold of significant interactions and the system promotes him: `isNamed` flips, a display name is assigned, an escalation level is set, and an emergence scene fires.
The important design property is that he is not placed. He is earned, by you, through repetition you did not know was being counted. In the current build the counter is deliberately crude, an integer incremented by any of the three arrival options, with emergence at two. That crudeness is correct for a vertical slice. The thing being tested is whether a player who is handed no information feels the promotion land.
---
8. Faction A tells Faction B, but only if they talk
You present your papers at the gangplank. Clean, correct, unremarkable. The officer waves you through.
An hour later you walk into the counting house and Amachi speaks before you sit down.
"Word came from the Chola garrison about a new arrival. I assume that's you."
Factions are not omniscient. Information moves between them only along diegetically justified channels, gated by a faction-to-faction disposition matrix. Two factions share witness reports only if their mutual score sits at or above +30. At game start that means the Chola share with the Ainnurruvar and with the Shaivite temple network. The Lanka Resistance shares only with the Theravada Sangha. The Pirate Crew shares with nobody.
The felt consequence is that the same clean, cooperative action can arrive ahead of you as a warning. Presenting your papers was the polite choice and it was also the choice that put your name in a report. The system never punishes it directly. It just means Amachi opens the conversation from a different position and you spend the first thirty seconds explaining yourself.
That matrix is initialized from historical relationships, which is where the setting stops being decoration.
---
9. The history is load-bearing
The letter of credit is a folded palm leaf, sealed in clay and wax, stamped with a seated tiger in red ochre. It obliges any guild-affiliated house between Nagapattinam and Kaveripattinam to pay the bearer.
The seal breaks once. After that it is not money. It is evidence.
The Ainnurruvar are not invented. The historical Ainnurruvar, the "Five Hundred" associated with Ayyavole, were a real transregional South Indian merchant guild whose inscriptions appear across South India, Sri Lanka, and Southeast Asia, including a Tamil merchant-guild inscription at Barus in Sumatra dated 1088. They maintained their own armed retainers, negotiated with states rather than simply obeying them, and operated across borders that empires could not.
That fact generates the mechanics. Because guild power ran parallel to imperial power historically, the game can legitimately let you hold high standing with the Chola and the Ainnurruvar simultaneously. They were separate ledgers. The Anjuvannam were a real West Asian merchant corporation on the Malabar coast appearing in copper-plate charters. The Nagaram was the mercantile town assembly of Chola administration. The Chola thalassocracy under Rajaraja I and Rajendra I could project naval force across the Bay of Bengal, and the Srivijaya raid the game lets you accelerate is a real event from around 1025.
Koel bends this knowingly: it stages a ~1025 event in a ~1010 world, invents a composite island port, adds a Pirate Crew with no geopolitical basis, and reduces messy politics to clean numbers. Read it as historically informed fiction. The engagement payoff is real regardless. A setting this specific sends players out of the game to read about the Ayyavole 500, and that curiosity is one of the few marketing engines a small historical game gets for free.
---
10. The world state variables you cannot take back
The mission brief says the Guild Master will not survive it. Nobody asks you to confirm. There is no prompt.
Three days later the acting Guild Master is a different person with a different opinion of you, the market has reopened at reduced capacity, and there is a bounty notice on the board for an assassin nobody can describe.
World State Variables are permanent flags. They flip once and stay flipped. Some are boolean, some are counters, some are enums with several resolved states. The Tooth Relic can be Hidden, held by you, captured by the Chola, or returned to the Sangha, and that state governs how an entire faction behaves.
The design explicitly refuses "are you sure?" confirmation prompts. Irreversibility is communicated through NPC dialogue, environmental cues, and mission briefings that name what will change. That is the right call and it is also a heavy authoring burden, because every permanent act needs enough diegetic foreshadowing that a player never feels ambushed by permanence.
Some flips are gated behind others. Starting the Srivijaya war early requires port tension at level 3 and either a dead Guild Master or an expelled envoy. That dependency graph exists so that major world changes require investment rather than accident.
---
11. News takes days, and that is the point
The Srivijayan envoy pays you for the ledger and disappears the same evening.
That night, the warehouse door you used has two guards instead of one.
Two days later the market is quieter. Guild stalls near the dock road are attended by people who look like they would rather be elsewhere.
On the third morning the board carries a notice: reward for information regarding a recent theft of guild property. Under it, a job. The guild wants to know who did it. The guild will pay.
The Consequence Queue delays cascades across one to three in-game days rather than firing them all at once. The queue is capped at three pending entries.
Mechanically it is a scheduling buffer. Experientially it is the single strongest contributor to the game's core feel, because it models information friction. The port stops behaving like a state machine that updates on your input and starts behaving like a place where people talk to each other while you are asleep. It also produces the game's best structural joke: the investigation into your own crime, offered to you, for money.
---
12. Districts as weather
The Western Docks last week: vendors calling, warm light, people everywhere, a guild enforcer bored at the gate.
The Western Docks tonight: a Chola warship at the primary berth, naval soldiers where the guild enforcers used to stand, every Srivijayan-flagged hull impounded, torchlight instead of lamplight, and a checkpoint where the crowd used to be.
The crowd is the part that matters. You needed the crowd.
Each district holds one of four states: Stable, Tense, Disrupted, Controlled. Each state is a bundle of ambient parameters. Guard density climbs from normal to +50%, +100%, +200%. Civilian density falls. Audio moves from vendors and music to hushed voices to wind to barked orders. Lighting cools and hardens. Stalls shutter, notices appear, barricades go up.
Transitions are driven by world state changes and disposition thresholds rather than timers. An AI director reads district state and adjusts patrol frequency, routes, NPC schedules, and ambient event spawning. Individual NPC behavior stays in their own behavior trees. The director sets the weather; the NPCs decide how to stand in it.
The line in the docs that turns this from set dressing into a mechanic: a Controlled district cannot host a social stealth mission, because there are no crowds.
---
13. Your playstyle rewrites the map you need
You have been loud. Efficient, but loud. Three districts have tipped and the fourth is going.
You arrive at the market for a job that assumed a market: bodies to hide among, noise to move under, a stall to stand behind.
The market has 60% fewer people in it than it did when the job was written.
The job is still available. It is now a different job.
The docs describe three method profiles. Ghost: rarely detected, minimal kills, information first. Operator: efficient, some detection, strategic violence. Disruptor: frequently detected, chaos-driven.
These are not difficulty labels. They are trails the world reads back to you. Ghost play keeps districts Stable, which preserves crowds, which preserves social stealth as a tool. Disruptor play pushes districts toward Controlled, which strips out the civilians, which removes the cover that stealth depends on. Loud play does not simply raise an alarm. It destroys the conditions under which quiet play is possible.
That loop, where your method degrades the map's suitability for your method, is the most sophisticated idea in the design and the one I would protect above everything else.
---
14. Information as the actual currency
While you are seeing through it, you are a person standing very still in an alley with their eyes closed.
The timer runs out. You are back in your body. You know the roof.
The companion bird shares your senses on a time limit. It sits in the Dishonored-Heart and drone-recon lineage: buy information ahead of commitment, pay for it with vulnerability. It reinforces the pillar that information is the primary resource and violence is the failure state.
The rest of the information economy runs through conversation and documents. Rumors, schedules, and secrets unlock paths and dialogue. The guild board posts jobs and riddles, and piecing together local mythology through conversations and favors is a running subplot. Knowledge is a key, not a collectible.
---
15. The double agent problem
You are Friendly with the Chola. You are Friendly with the Lanka Resistance. Both of those took work and neither knows about the other.
You finish a job. Nothing goes wrong. You get paid.
Two days later there is a new job on offer from the Chola side, and the phrasing of the brief is slightly wrong in a way you cannot immediately name.
It is a loyalty test. Nobody has said so.
If you hold above +40 with two known rival factions at once, a hidden timer runs a periodic check at mission completion. If it fires, agents notice the pattern and flag you. It does not trigger immediate hostility. It opens a mission: prove your loyalty or be exposed.
This is the design's best expression of its theme, which is the moral ambiguity of survival. The system does not punish double-dealing. It escalates it into a choice with a cost on both sides.
---
16. The world moves on, mostly
You avoided the Foreign Quarter for two weeks after the thing with the Anjuvannam factor.
When you come back, the factor is civil. Not warm. Civil.
The guild is still not civil. The guild is never going to be civil, because what you did to the guild set a floor.
Disposition decays toward a resting value. Positive standing erodes at about −1 per two in-game days once you have been absent for a week, because relationships need maintenance. Negative standing recovers faster, about +1 per day starting after three, because the world has other problems.
Certain events set a decay floor. Betraying faction intelligence floors you at −50, and that relationship cannot heal on its own. Only a specific redemption event moves it. Faction-to-faction scores decay far more slowly, roughly half a point per in-game week, because historical grudges are old and do not care about you.
---
17. Failing all the way down
Every faction is Hostile. Services are closed. Nobody will talk to you except to price-gouge you.
One job appears on the board. Just one.
It is called The Invisible Man and the brief is four lines long.
If every major faction reaches Hostile at once, the game enters a Full Lock-out State and surfaces a single high-difficulty extraction and reputation-reset mission. The docs are explicit that this should be difficult but not impossible to reach, and that it is a designed failure mode rather than a soft-lock.
There is a second, harsher failure path. If the Pirate Crew dissolves before you have secured a replacement patron at Friendly or better, you lose your resource network. You get a three-day grace period before scarcity fully bites. That is enough time to read the situation and act, and not enough to be comfortable.
---
The narrative designer's Wet dream
Here is why a writer wants to build this.
Reason 1
The Consequence
You stop writing "the story" and start writing reactions. The player assembles the sequence. Amachi's opening line carries the weight of a decision you made on a gangplank an hour earlier and had already forgotten. A guard becomes an antagonist because you kept crossing his path, not because someone placed a boss. A dock worker breaks faction discipline for you because of a cargo hook.
What players leave with is anecdotes instead of plot summaries. "The priest recognized me and I had to stay out of the Temple Quarter for a week until it cooled." Nobody wrote that sentence. The system and the player wrote it together, and it is the kind of sentence people repeat to their friends unprompted, which for a small historical game is worth more than a trailer.
Reason 2
The Emotional Side of a Mission
Difference between your Mission and a Chore of a cheack list is the attachment you have with experience and story that woud lbe result of your actions. the story is ultimatly the story is what make you care about the game you play. The Emotional connection and impact is what you makes you play 1 more hour.
A fight sequence without the weight of context is inconsquencial and forgetable. such story is disrespectfull of the auidence. As Creators of an experience that is the worst possile scenario.
---
The narrative designer's nightmare
Here is the same document at 3am,
Combinatorics. Amachi's single scene already branches on faction tier, on whether a report preceded you, on personal disposition, and on relationship stage. Multiply that across an episode, ten factions, and dozens of NPCs with their own memory arrays. Every reactive variable multiplies the states each scene must be authored for. This is exactly why the slice is capped at two factions and one rival, and why memory caps at twenty entries and the consequence queue at three. Those caps are survival, not tidiness.
Most of your work is invisible. You will write branches most players never see, because they chose otherwise. You will build the propagation network and watch a tester Ghost the mission cleanly and encounter none of it. The deeper and more honest the system, the smaller the fraction any single playthrough touches, and that is a hard cost to justify to anyone counting hours.
Legibility versus telegraphing is a knife edge you re-walk every scene. Too subtle and players conclude the world is random and their choices were cosmetic. Too loud and you are back to a popup reading "Reputation −10," which kills the immersion the no-UI philosophy existed to protect. Getting a player to notice the second guard on the warehouse door without a marker pointing at him is an unsolved problem per scene, and there are a lot of scenes.
Paradoxes are a QA hole with your name on it. The identity-inconsistency resolver and the info-paradox pass exist because a systemic memory model will generate contradictions, and every one that reaches a player reads as a broken world. The mitigation is architectural: one write path through the game instance, immutable definition assets, mutable runtime state persisted to save. It is also why build order is not negotiable. World state and consequence queue before faction disposition, before districts, before NPC memory. Invert that and you get propagation paradoxes you cannot trace.
Emergent tone drift. The more the system recombines, the more it can produce combinations that are valid and emotionally flat. A solemn line landing in a context that no longer earns it. Guarding against that means writing defensively and accepting that some emergent moments will be duds. That is the price of the ones that sing.



Comments