Dungeon Crawler Carl — TTRPG

A tabletop campaign built inside Matt Dinniman's Dungeon Crawler Carl — and a working experiment in getting an AI narrator to run a mechanically complex, emotionally coherent game without losing the thread. Below: what it is, and how to set it up yourself.

Top-down view of a neon-lit dungeon floor, its chambers glowing red, blue, and magenta, scattered with dice and confetti
Get the files on GitHub Jump to setup

What this is

Half game, half AI-cognition lab. It's a full 18-floor TTRPG campaign, and it's also a record of what it takes to make an AI narrator run one — the design decisions, the failures, and the rebuild that came out of them.

Version 1 proved an AI narrator could run a complex game across many sessions. It worked, and then it broke at scale. A post-mortem named five recurring failures: voice drift, mechanical drift, thread amnesia, contextual compression, and emotional-state loss. All five trace to one root cause — every session starts a fresh conversation with no persistent memory.

What v2 does about it

Version 2 doesn't pretend to fix the memory limit. It restructures the whole campaign to work inside it, on three principles:

Separate what changes from what persists. Stable mechanics live in versioned reference docs that load every session. Cumulative story lives in structured logs that grow over time. Volatile creativity lives in pre-built floor packages. Nothing important depends on the model remembering last week.

Take randomness out of the narrator's hands. An AI left to invent "random" outcomes trends toward tidy storytelling — but chaos is the whole identity of Dungeon Crawler Carl. An external roller (the Chaos Engine) hands the narrator results it has to make meaning from rather than ones it would have chosen.

Build the world before you play in it. World-building, storytelling, and gameplay are split into separate session types, so the narrator arrives at a play session with a world to navigate instead of an empty room to improvise.


Run it yourself

The system is public and free. Setup works with any AI assistant that supports persistent projects; the steps below stay platform-agnostic, with Claude Projects as a worked example.

What you'll need

Set it up

  1. Get the files. Download or fork the repo. The Master File Index is your table of contents — it says what to load and when.
  2. Create a project. Make a new persistent project in your assistant. (Claude: New Project.) This is your campaign's memory between sessions.
  3. Load the docs that never change. Add the persistent references from 00_Campaign — the Architecture Blueprint, the voice bible, and the mechanics — plus the Master File Index. These load every session so the narrator stays consistent.
  4. Wire in randomness. Set up the Chaos Engine (04_Chaos_Engine) so results come from outside the model. This is the step people skip and regret — it's what keeps the narrator honest.
  5. Start a Build session. Follow the Floor 1 build handoff to generate your first floor, then play it.

How a session runs

Every floor moves through three session types, in order:

Build — design the floor's space, mechanics, encounters, NPCs, and Chaos Engine tables. You set direction and constraints; the narrator makes design decisions inside them.

Story — review where the narrative stands, surface open threads, set up payoffs. Collaborative.

Play — run the actual game. You play, the narrator runs the world, the external roll decides the chaos.

Splitting them is the point. The narrator shows up to play with a world already built, instead of improvising one on the spot while also tracking rules, voice, and story.

A note before you start

This is a framework, not a finished product. Version 2 is the rebuilt architecture — a starting kit and a record of how the system works, not a turnkey campaign you press play on. Expect to adapt it to your assistant, your dice, and your table. That tinkering is most of the fun, and most of what the project is actually about.

Get the files on GitHub

A non-commercial fan project, inspired by the Dungeon Crawler Carl series by Matt Dinniman. Built in collaboration with an AI narrator.