How to

How do you organise NPC relationships?

Record relationships as directed, named links between two named people, stored once rather than restated on both pages. "Alder Cass owes a debt to Vess Marrow" is a fact with a direction and a reason; a list headed "Allies" on each character's page is not, and it will drift out of step the first time the relationship changes. Keep the direction, the reason, and whether the party knows about it.

Why lists on character pages fail

The default habit is to give each NPC an "allies" and "enemies" list. It breaks for two reasons. First, it duplicates: the same relationship is written on two pages, and after a session where it changes, one of them is wrong. Second, it flattens direction. Loyalty, debt, blackmail and unrequited affection all run one way, and that asymmetry is usually the interesting part.

Storing the relationship as its own thing — a link with a label — fixes both. One record, one place to edit, and the label carries the direction: A owes B, B protects A, A does not know that B reports to C.

What each relationship should record

  • Direction From whom, to whom. Reciprocal relationships are two links, not one, and they are frequently unequal — she considers him a friend; he considers her an asset.
  • A verb, not a category "Owes a gambling debt to", "informs on", "was pardoned by". Categories like ally or rival tell you nothing you can play.
  • Why it exists One clause. The reason is what determines whether the relationship survives pressure.
  • Who knows Public, known to the party, or secret. This is the field that most often decides what a scene can be about.
  • What would break it Optional, and worth writing for the four or five relationships your plot rests on.

Example

A worked example: five links, one situation

The same cast written as links rather than lists. Read them in order and a scenario assembles itself without anyone having planned one.

Vess Marrow → Alder Cass
Holds a forged writ in his name. Secret. Kept as insurance, not yet used.
Alder Cass → the Harbour Assize
Sworn magistrate. Public. His standing is the only thing he has.
Alder Cass → Nell Cass
Estranged sister. Known to the party since session 9.
Nell Cass → Vess Marrow
Runs cargo for her. Does not know about the writ.
The Harbour Assize → Vess Marrow
Has been trying to prosecute her for two years and cannot get a witness.

Keep the web small on purpose

The failure mode at the other end is a relationship map with two hundred edges that nobody consults. Relationships are worth recording when they can change, when they are leverage, or when the party can act on them. An NPC's landlord is not a relationship; it is a detail.

A practical ceiling: no more than three or four recorded links per NPC who matters, and none at all for the ones who do not. If a character has fifteen, the page has become a biography rather than a tool.

The other habit worth keeping is drawing a distinction between what is true and what the party believes. Track them separately. Half of what makes relationship-driven play work is the gap between the two, and it disappears the moment you merge the two into one line.

A working relationship record

  • It runs in a stated direction between two named people.
  • It uses a verb you could put in a sentence at the table.
  • It says who knows about it.
  • It could plausibly change during the campaign.
  • It is stored in one place, not restated on both pages.

How Codex Cryptica stores this

In Codex a relationship is a typed link between two entities, held once and rendered on both — so editing it on either side edits the same fact. The graph view then draws the web, which is mainly useful for the thing lists cannot show: clusters, chokepoints, and the person three links from everyone who you had thought was a minor character.

The spatial canvas is the other half of this. It is closer to a conspiracy board — nodes you place by hand, grouped the way you think about them rather than the way the data is shaped.

See the knowledge graph

Related

Tools

Guides

Other answers