Why Koel Has No Morality Meter
- karthi keyan
- Jun 21
- 3 min read
Every designer's first instinct when building a reactive world is to add a morality meter.
It makes sense on paper. You want the player to feel the weight of their choices. You want those choices to matter. A bar that fills or empties is clean, readable, unambiguous. It tells the player: you are becoming something.
I built one for Koel. Then I deleted it.
The Problem with Meters
Morality meters don't measure morality. They measure optimization.
The moment a player sees a meter, they stop asking "what should I do?" and start asking "which way does this move the bar?" The story becomes a resource management problem. Paragon/Renegade. Good/Evil. Light side/Dark side. The framing changes but the behaviour doesn't — players chase the ends of the spectrum because that's where the rewards are, and they make choices based on the UI rather than the world.
Koel is set in a dense medieval port city on a single island. The 10th-century Indian Ocean trade world — Chola, Srivijayan, Anjuvannam guild merchants, Islamic traders, displaced monks, and a pirate crew who are nominally your employers. Everyone has interests. Everyone has memory. And there is nowhere to go when things go wrong.
A meter in that setting would be a lie. It would suggest that your relationship with the world is a single number, that a Srivijayan envoy and a Shaivite temple priest are both reading the same scoreboard. They're not. They have completely different relationships with you, built from completely different information, and they don't talk to each other unless the docks make it unavoidable.
What I Built Instead
Koel's reactive system runs on four interconnected layers:
Faction Disposition is a float from −100 to +100, one per faction. It is never shown to the player. It doesn't tick up by one every time you do a small favour — it changes in response to events. Completing a mission for the guild might move it +12. Getting caught stealing from them moves it −15. Being exposed as a double agent by a rival can crater it −35. The numbers are internal accounting. The player never sees them.
World State Variables are permanent flags. A burned warehouse stays burned. A smuggling route that was exposed stays exposed. These never decay. They are facts about what happened, not a running score of who you are.
NPC Memory is per-character and fades. A guard who saw you do something will remember it for a while — but if nothing reinforces it, it fades. His colleague might remind him. A faction captain with a grudge might keep the memory active. Or it might simply dissipate, and the next time you walk past, he says nothing.
District Evolution is the layer I'm most interested in. As events accumulate, physical spaces change. A district where the guild has lost trust in the player starts looking different — fewer open stalls, more private conversations that stop when you approach. A district where you've built strong reputation with the resistance starts having people leave food on your path. The feedback is spatial. You see it before you understand it.
The Design Mandate
The guiding principle I wrote for the system was simple: legible without being telegraphed.
The player should feel the consequences of their choices through the world's behaviour — not through a notification. A changed district is the feedback. A closed door is the feedback. A merchant who used to meet your eyes and no longer does is the feedback.
What this required was restraint in a place where most systems reach for clarity. The game cannot explain to the player why things are different. It can only be different, and trust the player to read it.
That's a harder design problem than a morality meter. It means every consequence has to be expressed spatially or behaviourally rather than numerically. It means the world has to be dense enough that the player notices when something shifts. It means writing NPCs with enough specificity that their changed behaviour is legible.
But it produces something a meter never can: a world that feels like it has its own logic, independent of whether the player is paying attention to it.
The island remembers. The player learns that it does by watching what happens — not by looking at a bar.
Koel is in development alongside Unkindness of Ravens. Both have playable demos targeting IGDC 2026, Chennai, October 28–29.
Design case studies and full systems documentation at keian.org.
Comments