From 8055cd01afc333c845f45c1b5c8e2e01027c4c53 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 18 Aug 2026 16:47:40 +0200 Subject: [PATCH] Clarify LLM roleplay failure modes --- content/index.md | 46 ++++++++++++++++++++++++++-------- site/quartz/styles/custom.scss | 25 ++++++++++-------- 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/content/index.md b/content/index.md index 84b6107..5da1a5f 100644 --- a/content/index.md +++ b/content/index.md @@ -52,18 +52,42 @@ description: A persistent, source-grounded AI roleplaying world that remembers w
-

You have felt the seams

-

The dream ends when the world has an owner.

-

A language model can write a convincing room. That does not mean it knows where the room is, who remains inside it, or what the empire outside intends to do next. Ghostlight gives those decisions somewhere durable to live.

-
-
-

THE DREAM

Canon becomes vibes.

Mechanics mutate and distant places become neighbours because nothing beneath the prose owns the setting.Vault-grounded evidence and persistent topology keep the world attached to itself.
-

THE DREAM

People vanish when you look away.

The current speaker consumes the scene. Everyone else waits outside the context window until prompted to react.Every affected participant perceives committed events and may respond from their own state.
-

THE DREAM

Knowledge teleports.

Characters suddenly become experts or reveal secrets because the model saw information the character never earned.Knowledge, perception and authority are validated against the exact character proposing an action.
-

THE DREAM

The narrator always says yes.

A player can declare the impossible, dissolve every obstacle, and discover that a story without refusal has no stakes.You declare an attempt. The world decides whether it is possible, costly, uncertain—or refused.
-

THE DREAM

History waits at the door.

Wars, investigations and journeys freeze until the protagonist returns to make them narratively convenient.Clocks advance, populations move and institutions act during absence without puppeting the player.
-

THE DREAM

Power exists to admire you.

An extraordinary newcomer makes ancient institutions collapse into awe instead of recruiting, exploiting, resisting or containing them.Established powers pursue their interests. Being powerful makes you valuable—and dangerous.
+

Common failure modes

+

How LLM roleplay goes wrong.

+

Good prose can hide a broken game. These are six common failure modes, a concrete example of each, and how Ghostlight is being built to address them.

+
    +
  1. +
    Failure mode 01

    The world contradicts itself.

    +
    Example

    The road that took a week becomes an afternoon. The inn moves across town. A spell quietly gains a new rule.

    +
    How Ghostlight addresses it

    Locations, rules, and committed events live in durable state, with relevant source evidence retrieved for narration.

    +
  2. +
  3. +
    Failure mode 02

    Characters know things they were never told.

    +
    Example

    A guard recognises the alias you revealed privately to a thief three cities away.

    +
    How Ghostlight addresses it

    Each character acts from a local view built from what they perceived, learned, and remember—not from every fact the model can see.

    +
  4. +
  5. +
    Failure mode 03

    NPCs cease to exist offscreen.

    +
    Example

    You leave a refugee convoy for a month. When you return, everyone is still waiting in the same camp for your next line.

    +
    How Ghostlight addresses it

    People persist beyond the active scene, and background change can be resolved at the level the campaign needs so individuals can leave, adapt, and return.

    +
  6. +
  7. +
    Failure mode 04

    Player declarations become facts.

    +
    Example

    “I kick down the fortress gate” works because the player said it confidently—not because the character could do it.

    +
    How Ghostlight addresses it

    An attempted action is separate from its result. Possibility, cost, risk, and resolution are checked before the world changes.

    +
  8. +
  9. +
    Failure mode 05

    The world rearranges itself around the protagonist.

    +
    Example

    A centuries-old order abandons its interests to admire, recruit, or obey the powerful newcomer.

    +
    How Ghostlight addresses it

    Characters and institutions have their own pressures, authority, and relationships, so they can refuse, bargain, exploit, contain, or resist.

    +
  10. +
  11. +
    Failure mode 06

    Consequences vanish from context.

    +
    Example

    The broken treaty, wounded captain, and promised favour disappear once the relevant messages fall out of the chat history.

    +
    How Ghostlight addresses it

    Events and relationship changes are committed to durable state so later scenes can retrieve what still matters.

    +
  12. +
diff --git a/site/quartz/styles/custom.scss b/site/quartz/styles/custom.scss index c84e16d..4e421fb 100644 --- a/site/quartz/styles/custom.scss +++ b/site/quartz/styles/custom.scss @@ -69,15 +69,18 @@ body { .gd-proof span { color: #8f95a9; font-size: .82rem; line-height: 1.55; } .gd-world, .gd-plans, .gd-breaks { max-width: 1180px; margin: 0 auto; padding: 5rem 1.5rem 7rem; } -.gd-breaks { display: grid; grid-template-columns: .72fr 1.28fr; gap: 5rem; } -.gd-compare { border-top: 1px solid rgba(255,255,255,.1); } -.gd-compare article { display: grid; grid-template-columns: 6rem 1fr; column-gap: 1.5rem; padding: 1.7rem 0; border-bottom: 1px solid rgba(255,255,255,.09); } -.gd-compare article > p { grid-row: 1 / span 3; margin: .2rem 0; color: #697086; font: 600 .58rem/1.4 "IBM Plex Mono", monospace; letter-spacing: .12em; } -.gd-compare h3 { margin: 0 0 .45rem; font: 600 1.12rem "Space Grotesk", sans-serif; } -.gd-compare span, .gd-compare strong { font-size: .78rem; line-height: 1.55; } -.gd-compare span { color: #858ca0; } -.gd-compare strong { margin-top: .5rem; color: #cbd1df; font-weight: 500; } -.gd-compare strong::before { content: "↳ "; color: var(--mint); } +.gd-breaks { display: grid; grid-template-columns: .66fr 1.34fr; gap: 5rem; } +.gd-failure-list { margin: 0; padding: 0; border-top: 1px solid rgba(255,255,255,.13); list-style: none; } +.gd-failure-list > li { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem 2rem; padding: 2rem 0 2.2rem; border-bottom: 1px solid rgba(255,255,255,.1); } +.gd-failure-heading { grid-column: 1 / -1; display: grid; grid-template-columns: 8rem 1fr; gap: 1.25rem; align-items: baseline; } +.gd-failure-heading > span, .gd-failure-detail > span { font: 600 .6rem/1.4 "IBM Plex Mono", monospace; letter-spacing: .11em; text-transform: uppercase; } +.gd-failure-heading > span { color: var(--violet); } +.gd-failure-heading h3 { margin: 0; font: 600 1.28rem/1.25 "Space Grotesk", sans-serif; } +.gd-failure-detail > span { display: block; margin-bottom: .45rem; color: #777f96; } +.gd-failure-detail > p { margin: 0; color: #9da4b7; font-size: .86rem; line-height: 1.62; } +.gd-failure-response { padding-left: 1.25rem; border-left: 2px solid rgba(115,239,209,.6); } +.gd-failure-response > span { color: var(--mint); } +.gd-failure-response > p { color: #cbd1df; } .gd-world { display: grid; grid-template-columns: .8fr 1.2fr; gap: 6rem; } .gd-section-intro { position: sticky; top: 2rem; align-self: start; } .gd-section-intro h2, .gd-final h2 { margin: .9rem 0 1.3rem; font: 550 clamp(2.7rem, 5vw, 4.8rem)/1 "Space Grotesk", sans-serif; letter-spacing: -.055em; } @@ -144,7 +147,9 @@ body { .gd-proof { grid-template-columns: 1fr; margin: 0 1.15rem 5rem; } .gd-proof div { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.08); } .gd-feature-grid { grid-template-columns: 1fr; } - .gd-compare article { grid-template-columns: 4.7rem 1fr; column-gap: .8rem; } + .gd-failure-list > li { grid-template-columns: 1fr; gap: 1rem; } + .gd-failure-heading { grid-template-columns: 1fr; gap: .45rem; } + .gd-failure-response { padding-left: 1rem; } .gd-feature-grid article { min-height: 240px; border-left-width: 1px; border-bottom-width: 0; } .gd-feature-grid article:last-child { border-bottom-width: 1px; } .gd-callback { margin-inline: 1.15rem; padding: 2.2rem 1.5rem; grid-template-columns: 1fr; gap: 1rem; }