← Instructional Design · Project Management
Case Study
Performance support for a tabletop game. Instead of teaching players to remember and calculate faster, the tools do it at the table, on the screen people already have open, and every one of them runs on the same rules code so none can disagree about a character.
A fight in 20 Below asks a lot of arithmetic from people who’d rather be playing. An attack is two dice under your Element plus the target’s Defense, then one die per point of damage against their wall. Advantage and Disadvantage change which dice count. Boons change what a Skill rolls at. Gifts cost Ki, and a failed check costs more.
The Character Creator’s sheet already had rollers, but they were spread across it: 36 separate roll buttons on one character’s sheet. An attack took two rolls in one window, to hit and then damage, and it asked for the kind of attack twice. Players using Owlbear Rodeo, the virtual tabletop our tables play on, had a dice extension and no sheet at all. The GM’s Battle Tracker kept turn order and damage tracks, but every roll happened somewhere else.
This is a performance-support problem, not a training one. The question isn’t whether players can learn the attack formula; they can. It’s what they need in the ten seconds after the GM says “roll.”
The result of the roll, not the arithmetic behind it.
What their numbers mean, without opening the book.
Every combatant’s state and rolls, with the rules already applied.
Spend experience and carry the character across, without juggling files.
Those four moments set the objectives. Without opening the book, a player can roll an attack and see at once whether it hits normally, with Advantage or with Disadvantage, and how much damage gets through. They can roll a Skill with the right Element and tier, their Boons already applied. They can make a Gift Check and watch their Ki change. And they can roll Initiative and have it reach the GM without saying it aloud.
Six principles came out of the analysis, and every change was held to them.
| Principle | What it meant in practice |
|---|---|
| Do the calculation, show the answer | One roll, read three ways, with the damage already counted. |
| Put it where the work is | One Roll dice button on every page; Ki beside the Gifts that spend it; experience spent on the sheet. |
| Apply the rule; don’t ask whether it applies | A Boon the character owns is applied, not offered. |
| Say what things are | Full names over abbreviations. |
| One source of truth | One set of rules code under every tool. |
| The rules’ limits hold everywhere | No tool grants what the rules wouldn’t, unless the GM does it on purpose. |
The scattered roll buttons became one “Roll dice” button on every page of the sheet, in the same place each time. Initiative, Attack, Skill and Gift Check moved into one window, in the order a fight asks for them. When I saw Initiative sitting on its own button, apart from everything else, my note was four words: “That isn’t intuitive.”
The attack is the heart of it. One roll of three dice is read three ways at once, because Normal, Advantage and Disadvantage only differ in which two dice count. The table sees every outcome before anyone rules on which applies.
The Skill roll follows the same thinking. The Skill comes from the sheet with its Element and tier. A Novice is at Disadvantage automatically, and the window says so in a line rather than ticking a box for the player to second-guess. One sentence reminds them that a Descriptor can argue a different Element, and nothing more.
To check the change was real, I measured it. The same attack went through the Creator before and after the change, counting only the actions a player actually has to take.
Our tables play in Owlbear Rodeo, so the sheet had to live there too. The dice extension became the 20 Below Character Sheet. It isn’t the printed page squeezed into a small window. It carries everything on the sheet, the Vitals and pools that track themselves, and the same Roll dice window, and every roll lands in the room’s log for the whole table.
The GM’s Battle Tracker got the same treatment. Every line in a fight has its own Roll dice window: a creature rolls from its printed stat block, a character from their own sheet. The GM picks Public or Secret for each roll. Health, Poise and Sanity stop at their floors, Exhausted shows its effects, armour loses Health Levels and breaks, and a combatant who’s down is marked.
Next, the tools had to talk to each other. A player’s Initiative roll on their sheet fills their box in the GM’s tracker; nobody reads it out and nobody types it in. The GM can send a Short Rest, a Full Night’s Rest or a Fate Token to one player or everyone, and each sheet applies it and answers with what happened.
The rules’ limits still hold. Fate Tokens stop at the character’s cap. I ruled that the GM can give as many Short Rests as the story allows, while the player’s own button stays at one between nights. And nothing else syncs from the tracker to the players. My call was simple: “I trust my players.” Only what the GM chooses to give travels that way.
An early version of the tracker’s combat line leaned on abbreviations. My first question on seeing it was “what is h2 h3?” That was the whole review. Every label became the full name: Hardness, Health Levels, and each track by name. A label the reader has to decode isn’t doing its job.
Communications and the designers asked for Jack of all Trades, a Boon that makes a character at least Trained in every Skill, to apply by itself on the sheet. I rendered the sheet before the change to see what they’d seen. The Boon’s catch-all row sat wherever the list of bought Skills ended, its name cut off, and in the Roll dice window it was the last of 26 choices.
The rule is now written once and read off the character everywhere. On the sheet, the row sits first and carries the Boon’s name, and the bought Skills follow at the tier they actually roll at. I made one layout call: not all 77 Skills on the page, just the ones they spent points on, with Jack of all Trades at the top for the rest. An older roller still had a manual checkbox for the Boon; it went in the same change.
Gifts run on Ki, so the sheet’s Gifts tab now opens with a Ki ticker and the Gift Check. A failed Check takes its Ki at once, and the count follows. Experience is earned at the table, so the sheet gained an Advance tab. Players add a session’s experience and spend it with the Creator’s own spending rules, without leaving the game.
The last gap was the trip between the Owlbear sheet and the desktop Creator: save a file, find it, import it. There was a hard constraint. A web page can’t choose where its files land, and Owlbear blocks the folder picker. So the design turned the problem around: the Creator looks where the browser saves. A character saved in Owlbear is already waiting in the Creator’s Load menu, marked new or newer. The Creator’s own Save leaves a copy where Owlbear’s Load opens.
Saved encounters didn’t work inside Owlbear. The cause was that Owlbear silently blocks a browser’s pop-up questions. Every question the tracker asked moved into its own window, and I tested it in a sandboxed frame like Owlbear’s.
After a release, the desktop Creator froze on opening. The cause was a character saved with a sub-stat below 0, which sent a loop running forever. It was fixed at the source and released the same day.
An early draft of this study said players had to tick a checkbox for Jack of all Trades. Rendering the old version showed that checkbox was no longer reachable. The draft was corrected to what the sheet actually did.
A player can now resolve an attack from one button, in one roll, and see all three outcomes. Their Boons are applied without asking, Ki sits beside the Gifts that spend it, and experience is spent where it’s earned. The GM can run a fight from one panel, with players’ Initiative arriving by itself and rests and Fate Tokens going out with a click. The Creator, the Owlbear sheet and the tracker share one set of rules code, so a rule fixed in one place is fixed everywhere.
What no measurement here replaces is the table itself. The next playtest sessions are the real test, and what they turn up goes into the record the same way everything else did.
“I review everything visual on 20 Below, down to type that smears and an arrow a few pixels low, and Feral treats every note like it matters. When I asked for Jack of all Trades to apply itself instead of making players do the math, it went from a request to working in the tools, and Feral kept me in the loop the whole way. I always know what’s changing and why.”
| Decisions and rulings | Me, as producer |
| The Jack of all Trades request | Hillary McKey, communications, and the game designers |
| Package Deliverables, tests, measurements and figures | Claude (AI assistant), checked by me |
| Playtesting | The 20 Below playtesters, next sessions |