On Automatic
Characters on Automatic · the NPC engine

Every guard has a sheet.

Characters on Automatic builds real Dungeon Fantasy NPCs: templates and packages from the books, gear scaled to station, disadvantages and skills chosen from closed menus, combat effectiveness computed from the finished sheet, and a GURPS Character Sheet file at the end. Today it lives inside Dungeons on Automatic, where it peoples every dungeon the generator keys. A standalone app is the next product in the family.

Inside Dungeons on Automatic today · standalone app next

What it builds

Deterministic first — same seed, same person — with an optional local model choosing from the menus the rules already allow.

Templates and packages

Dungeon Fantasy delver templates at the 62 / 125 / 187-point tiers, henchman and class packages as budgeted menus, ancestry packages with their traits — the same building blocks the books use, extracted from GURPS Character Sheet libraries.

Roles, not just stats

Forty-odd recipes — guards, hirelings, rivals, captives, lieutenants, cultists, bosses, guides, merchants, sages, henchmen of every stripe — each with a narrative role, a reaction disposition and a combat-effectiveness band, so the generator can cast the right person for the room.

Gear to station

Cheap, stock, fine or elite kit by tier and role (bosses and lieutenants climb a step; captives are stripped), with catalog prices, weights and citations, and the mechanical effects of grades and enchantments carried onto the sheet.

Rated, not guessed

Offense and Protection Ratings computed from the finished sheet with an auditable per-trait breakdown — the same CER calculator the monster library uses — so an NPC's threat class means the same thing as a monster's.

Monster-native sheets

Monsters from the library that carry an ancestry template can be built as full NPCs too: monster-native attributes, no delver profession layer, gear only where the creature can hold it.

GURPS Character Sheet out

Every NPC exports as a .gcs file for the free GURPS Character Sheet application — open, print, or edit it there.

Vorga, the chooser

The model-in-the-loop half. Vorga takes each package menu and loadout slot as a single-purpose question — which primary weapon of these three, which two disadvantages of these six, which armour kit — and a small local model answers from the closed list, with the individuating context (role, tier, tags, what the room needs) in front of it. Every pick is validated against the menu; a rejected pick falls back to the seeded choice by name; and the finished build is captured so it replays without the model. No model configured? You get the deterministic build, always.

Where to find it today

It ships inside Dungeons on Automatic; there is nothing separate to install.

  1. Generate a dungeon. Eligible rooms receive coded NPCs as encounters — guards on the doors, a lieutenant in the guardroom, captives in the cells, a boss at the climax — placed deterministically before the monsters, so the two never fight over a room.
  2. Read them in the room key. Each NPC's role, disposition, tier, race, build and CER band sit on the encounter; the GM key prints the summary and its citations.
  3. Export the sheets. The GCS NPC bundle export regenerates every NPC in the dungeon as a .gcs character document from its recorded build, so the saved dungeon never has to carry the full sheet.
  4. Let Vorga choose by setting up local AI in Dungeons (built-in one-click runtime, or your Ollama / LM Studio / llama.cpp server); the directors can then cast and gear NPCs through the guided chain.

What the standalone app adds. The same engine with its own front door: build a person from a role, a seed or a brief without a dungeon around them; a roster; GURPS Character Sheet and Markdown out; and NPCs written into your Campaign Vault as npcs/<slug>.md notes with faction membership and relationships, where Hexes, Dungeons and a settlement app can pick them up. The engine is already a shared package inside the family's codebase; the app around it is what comes next.