A player clears a bandit camp in the woods because the camp was in the way. Three hours later, a merchant two towns over refuses to sell them a healing potion. No dialogue explains it. No notification fired. Somewhere in your save file, a number called rep_syndicate dropped below -20, and the player has no idea the woods and the shop are the same story.
That is the default outcome of a faction system, not a bug in yours. Reputation is one of the few systems where the design work is almost entirely about legibility: the maths is trivial, and the whole thing lives or dies on whether players can predict and read it. Here is a way to build one that survives contact with players.
Decide what reputation is for before you decide how it works
Write one sentence. Not a paragraph — one sentence that names the player behaviour you want to reward or constrain.
- "Reputation makes players commit to one way of solving problems instead of doing every quest."
- "Reputation turns the mid-game into a choice between two supply lines."
- "Reputation is how the world remembers that the player is a thief."
Each sentence implies a different machine: exclusivity with a visible cost, two competing economies, or a value that only ever drops and eventually forgives. If you can't write the sentence, you are about to build a number that does nothing but gate a vendor.
Pick a shape, then pick numbers
There are four shapes that cover almost every game. Choose deliberately; most problems with faction systems are a shape mismatch, not a tuning issue.
| Shape | How it works | Good for | Cost |
|---|---|---|---|
| Single axis | One value from -100 to +100 (lawful ↔ criminal, order ↔ chaos) | Short games, strong tone | No room for "allied with A and B" |
| Independent scalars | One value per faction, no interaction | Open worlds with 3–6 groups | Players max everything out |
| Zero-sum pairs | +10 with A means -5 with its rival | Forcing commitment | Punishing if players can't see the pairing |
| Separate praise/blame | Each faction tracks fame and infamy independently | Morally messy worlds | Two numbers to teach |
Fallout: New Vegas used the last one — a player could be both famous and infamous with the same faction, and the combination produced a distinct standing like "wild child" rather than averaging out to neutral. Dishonored used the first, with a hidden chaos value crossing one threshold that rewrote NPC dialogue and level populations. Skyrim kept crime local with a per-hold bounty, so the consequence was always attached to a place the player could name.
Note what those three have in common: a small number of states, and a state the player can describe out loud.
Tiers, not gradients
Players cannot feel the difference between 41 and 46 reputation. They can absolutely feel the difference between "the guards watch me" and "the guards attack me." Store a continuous value if you like, but design against named tiers.
Five is plenty:
| Tier | Range | What actually changes |
|---|---|---|
| Hunted | -100 to -50 | Attacked on sight; faction territory becomes a combat zone |
| Disliked | -49 to -10 | Prices +25%; two quest-givers refuse you; escorts decline |
| Neutral | -9 to +19 | Baseline. All public services available |
| Trusted | +20 to +59 | Prices -10%; faction-only quest line unlocks; one fast-travel point opens |
| Sworn | +60 to +100 | Unique item or ability; a companion joins; rival faction drops to Disliked |
Two rules make this table honest. Every row must contain at least one change the player will notice without opening a menu — a door, a price, a guard's behaviour, a line of dialogue. And every tier needs content, which is the real budget: three factions times five tiers is fifteen states, and if you have not written fifteen states' worth of material, you have three factions too many or two tiers too many.
Build a cost table, and derive it from a pace
Don't assign deltas by vibe. Decide how long a tier should take, then divide.
Say Neutral → Trusted is 20 points and you want it to represent roughly four meaningful commitments. That makes a "meaningful commitment" worth 5. Everything else scales off that anchor:
| Action | Delta | Rationale |
|---|---|---|
| Complete a faction side quest | +5 | The anchor: one commitment |
| Complete a faction story quest | +15 | Three commitments in one beat |
| Sell a faction-relevant item to their broker | +1 | Grindable, so it must be nearly worthless |
| Kill a faction member (unwitnessed) | 0 | Nothing happened if nobody knows |
| Kill a faction member (witnessed) | -10 | Two commitments undone |
| Kill a faction officer | -25 | Crosses a tier boundary on its own |
| Get caught stealing in their territory | -5 | One commitment undone |
The grindable row is the one to watch. If any repeatable action is worth more than a fifth of the anchor, players will find it and your tiers will stop meaning anything. Cap repeatables per in-game day, or set them to +1 and accept that they are flavour.
Make the consequence legible
Three techniques, cheap to implement, that fix most "why do they hate me?" complaints:
- Name the witness. The feedback is not "-10 Syndicate." It is "A Syndicate runner saw that." Attribution turns a number into a cause.
- Pre-announce thresholds. Before the change, not after: "One more incident and the Syndicate will post a bounty." A warning one step before Hunted converts a frustrating lockout into a decision.
- Show the standing somewhere other than a stat screen. A faction banner in a town, a greeting line that changes at each tier, a bulletin board with the player's own bounty on it. If the only surface is a menu, most players will never learn the system exists.
And expose the rival link if you have one. Zero-sum reputation is a good mechanic and a terrible surprise — if +10 with the Harbour Guild costs 5 with the Freeport Crews, the quest-accept screen should say so before the player commits.
Decay, forgiveness, and the lockout question
Decide these three up front, because they are what players ask about on day one of a playtest:
- Does it decay? Drifting toward Neutral by 1 per in-game week keeps the world from freezing after hour ten. Skip decay if permanence is the point.
- Can Hunted be undone? Either provide a path (pay a fine, complete a reparation quest, kill a named rival) or make the lockout explicit and permanent on purpose. Silent permanence reads as a bug.
- Can a player be Sworn with everyone? If yes, your factions are vendors with lore. If no, say so in the fiction early, before the player has spent fifteen hours assuming otherwise.
Playtest checklist
Run these five questions with someone who has played two hours. All of them are answerable in a corridor; none need telemetry.
- Can they name the factions without opening a menu?
- Can they name one action that would raise standing with a faction, and one that would lower it?
- Can they explain, unprompted, why any faction currently dislikes them?
- Did they notice at least one tier change at the moment it happened?
- Did they make one choice because of a faction, rather than noticing the consequence afterwards?
A "no" on the third question means attribution is broken. A "no" on the fifth means the system is bookkeeping, not design — it is recording choices rather than creating them.
Keep it in one document
Faction reputation goes wrong in production because it lives in four places: the fiction in the lore notes, the deltas in someone's spreadsheet, the tier perks in quest scripts, and the UI strings nowhere at all. Then a new quest hands out +40 and the curve is dead.
Keep the whole thing on one surface: the faction roster and rivalries on a relationship map, the tier table and cost table on a balance sheet beside your other tuning data, and the unlocks linked to the actual quests and items they open. In GameDesignerX that means the faction nodes and their rival edges live on a relationship map, the deltas sit in a balance sheet, and each tier's perks link to the objectives and items that deliver them — so the person writing quest #31 can see the budget before spending it.
Then write one line in your decision log explaining why you chose the shape you chose. In six months, when someone proposes a fourth faction, that line is what tells you whether to say yes.