Back in the early 2000s, there was a Java program called OSU-GT (the GT stood for Gametable). It's not called that now and I'm pretty sure it's not even in development anymore. But I always thought it had a clever way of addressing complexity with simplicity.

A couple decades later, when I looked around for dice apps in the Play Store, I could never find one that did all the things I wanted it to do. Most of them would roll beautiful virtual dice with wonderful physics engines and sounds, but fell short in other meaningful ways. Most were rigid in terms of the game mechanics they could support or just felt incomplete.

So, a few years ago I started thinking about making one. I didn't, of course, mostly because I haven't coded in forever and I already have enough to keep me busy. And then I decided to build it anyway. I modeled it after the old calculator I always brought with me to play Champions at my buddy's house, back in the 80s — because those carrying capacity formulas were no joke.

Here's what it does

  • Roll all of a character's dice simultaneously — see every attack, save, skill, and modifier roll all at once via the Roll All mode with character tabs.
  • And still reroll per macro — long-press any single roll to edit or reroll just that macro without rerolling the rest, even in Roll All mode.
  • In-depth macro inspection — Roll Macro mode focuses on macro options, allowing players to inspect rolls, rename, edit, and sort the macro list. Sort order here is also preserved in Roll All mode.
  • Cryptographically secure random number generation — true unpredictability, not the pseudo-random shortcuts most dice apps use.
  • Sortable character tabs with up to 100 macros each — whether you're running or playing the campaign, organize by character, encounter, monster, game system, or any other way you like.
  • Every major TTRPG dice mechanic in one app — keep high/low, target numbers (successes), botches, exploding dice, critical detection, multi-roll comma separation.
  • Constraint validation with red-highlighted error feedback — pathological expressions are caught before they run, no infinite loops or broken math.
  • Persistent 300-roll history with timestamps — every roll logged with full roll breakdown, no truncation, and no rolls lost.
  • Tap-and-hold context menus throughout — edit, duplicate, delete, rename, reroll wherever it makes sense.
  • Localized in 7 languages — English, Spanish, Portuguese, German, French, Italian, Polish, with complete in-app manuals for each.
  • 12-page in-app user manual — every feature documented with examples, no need to leave the app.
  • No ads. No tracking. No telemetry. Works offline. Your rolls stay on your device, period. Well, until the Roll Log truncates them after 300 new rolls. Then I don't know where they go.
  • Pay once. Own it forever. — no subscription, no in-app purchases, no upsells.
  • Supports Android 6.0 and above — runs on devices going back a decade.
  • Custom QWERTY keyboard for macro names — with locale-specific diacritics via long-press.
  • Independent horizontal scroll per output row — nerd out inspecting long expressions, results, and roll details without truncation.

And here's what it doesn't do

  • It doesn't "roll" dice — no complex physics simulator to roll artfully stylized virtual dice across a table, with stunning sound effects.