Skip to content
Artifice
All posts
designrules

The rules engine rolls the dice, not the model

Why Artifice resolves combat in deterministic code and leaves the language model to do the part it is actually good at.

Ask a language model to run a combat round and it will do something remarkable: it will describe the swing of the blade beautifully, and then quietly get the arithmetic wrong. Not every time. Just often enough that by the third session someone at the table has started keeping their own notes, and the game has become a game about auditing the Dungeon Master.

We built Artifice around a hard split, and it is the single most consequential design decision in the product.

Two jobs, two systems

There are two jobs at a tabletop. One is adjudication — what does a 17 hit, how far can you move, how much damage does that take off. The other is narration — what the ambush looks like, what the bandit captain wants, whether the villager is lying.

The first job has exactly one correct answer, and it is a matter of arithmetic. The second job has no correct answer at all, and that is the point of playing.

Language models are extraordinary at the second job and structurally unsuited to the first. So in Artifice the rules engine owns adjudication end to end. Initiative order, attack resolution, cover, conditions, movement across a 5ft grid, hit points — all of it runs in ordinary deterministic code, the kind you can write tests for.

What the Dungeon Master actually does

The model never sees a d20. It receives the outcome — the attack landed, the target is at 4 hit points, the captain is now flanked — and it does the thing it is good at:

The blade turns on his shoulder plate and skids wide. He grins at you, which is worse than if he’d shouted.

That sentence is generated. The 4 hit points are not.

This has a consequence that surprised us in playtesting. When the mechanics stop being negotiable, players stop arguing with the Dungeon Master and start talking to it. Nobody says “that’s not how grappling works.” They say “I try to get behind him.” The conversation moves back up to where the fun is.

The part we won’t paper over

A deterministic engine means every rule we support, we support explicitly. There is no prompt you can write that adds a subsystem — someone has to implement it. That makes us slower to cover the long tail than a pure-model approach would be, and we think that trade is obviously correct. A game that handles eighty percent of situations exactly right is far more playable than one that handles a hundred percent approximately.

You can always improvise around a rule that doesn’t exist. You cannot improvise around a rule that silently lies to you.

Play it, don't read about it

Pick a map, muster a party, and the Dungeon Master opens the scene.

Begin a campaign