Virtual Dice

Tinkering around with different virtual table-top applications this morning, I realized one could make an entire app just around rolling dice. They’re such complicated little objects, and we use them in so many ways, that making a robust system for virtual dice actually has quite a lot of requirements. Of course I have no time to execute a project like this (though it is totally within my wheelhouse), still I found it entertaining to write up a list of all the things I’d want out of the perfect virtual dice roller.


3D – They’ve got to be 3D rendered, and bounce around, and occasionally have those exciting moments when it just tips over onto a different face than what you expected. The nearly-a-20 is just about as exciting as the natural 20.

Render Anywhere – Ideally, the app would consist of a pretty slim little bar of buttons to roll the dice, which would then render wherever I want. This should include options for:

  • On top of my entire desktop, rolling around over all other applications.
  • Constrained to the bounds of a single monitor for those of us with multiple.
  • Constrained to a specific window of my choosing. In which case other windows should render on top of the dice. But in this case it should be any window – eg, on top of my whiteboard app or my chat window or whatever.
  • Ability to open a blank “dice tray” window, either private or shared (see “Networked” below). Kind of the same thing as above, but creates its own window rather than using an existing app window.

Customizable – I should lots of options for what my dice look like, whether that’s old school pastel with chipped edges, shiny metallic, or whatever. I want to choose a default look so you can tell my dice from another player’s, and I want to be able to re-create my special lucky black and gold English d20 (which I bought on my first trip to England).

Object Permanence

Basic object permanence rules – dice should behave like real physical dice:

  • They stay in place after being rolled, until I click to remove them back to my virtual dice bag.
  • A button to clear all my dice, all dice from a specific window, all dice everywhere, and maybe a toggle to auto-clear on each new roll.
  • They can be moved around after being rolled, or turned to show a different face.
  • Ownership can be transferred to another player.
  • They can be organized into groups, with options to operate per-group (re-roll, clear, ungroup, etc). Thinking of what’s needed to play Fiasco here.


Sharing – I should be able to connect to other players so we can see each other’s dice and have shared rolling surfaces. Each player can specify where and how to render the shared surface (eg. in this specific window, across my entire screen, etc.)

Synchronization – Rolling animations should be synchronized so we all see exactly the same thing. When someone’s d20 hesitates and then tips over to a “1”, we should all see that at as close to the exact same time as possible.

Spaces – We should be able to have shared space where we can push dice around, change ownership of dice, etc, but also private dice trays that others can see but not touch.


Platforms – working on as many different kinds of devices as possible would be great. Maybe I want to use my computer screen for the VTT and have the dice app running on my iPad sitting next to me on the table. Maybe including a web version would be nice too, for those players who can’t be bothered to install yet another app. Probably the web version would limit to display within its own browser pane.

Audio – dice should be able to make a pleasing clatter when rolled, but also I should be able to turn that off when it drives me nuts.

Bonuses – it would be nice if I could roll 1d20+4, and see the natural roll of the die, plus maybe a little overlay that shows the final value separately.

Tallies – if I roll 20d6, it should show the total somewhere for me automatically. This should update if I re-roll all the 1’s.

Well, that’s all I’m thinking of for now. It would be pretty sweet I think to have this as a separate stand-alone app, so it could be used alongside whatever other tools you want to use for online gaming. Unfortunately most virtual dice are just another bullet on an already very long list of features for virtual table tops, which I think means they are often not as feature rich as I’ve outlined above. But if by some miracle there already exists an app that does all of the above, please let me know! I suspect not, as otherwise surely we’d all be using it already, right?

7 thoughts on “Virtual Dice

  1. I’d love a program that hits on certain points; 3D, customizable, object permanence, networked (all 3 subpoints), bonuses, and tallies; for around the price of a decent set of dice (maybe around $10+/-5 US, depending on the full breadth of features and how well it actually works). I wouldn’t mind it being PC-only (or 3D features being PC-only with a plain number readout GUI on phones), though of course being able to use it more platforms would be nice.

    Render anywhere is the least interesting of your requirements for me, since I’d probably want to keep them constrained to avoid covering my notes or other important windows if I’m using it while running a game (I’d be less resistant to spraying it like buckshot while playing 🙂 ). If it could integrate with a 3rd-party virtual whiteboard to share the dice display with other users without going through further convolutions, that’d be fantastic (though I accept that being able to do that in a universal way is probably nigh-impossible), but otherwise, just having a shared dice tray that can be toggled between opaque and transparent+always-on-top would be enough for me on that front.

    Between sharing, object permanence, and your implication from 3D of treating them as objects with physics, you could retain the element of actual physical play which is among the easiest to lose online: players complaining about getting bad rolls because their dice hit something else while rolling 🙂

    1. I think it’s all ultimately do-able. Possibly the trickiest one is taking over full monitors or other windows, but really this is just a matter of creating top-most invisible windows over existing windows. I’d probably build the thing in Unity since it would be easy to use their asset store for initial models and animations, and leave the door open for portability to secondary platforms.

      Sigh, another project I don’t really have time for. It’s so tempting though.

  2. Thinking “medium is the message”, brainstorming about something as close to the actual metal as possible. I wonder as a stopgap if a very simple application, networked, that showed a digital number display might scratch the itch — like show changing numbers in the fashion of a slot-machine display, say. Note I think that most of the VTTs are indeed simulating physical 3D dice for their rolling mechanic, pretty different. Like in my thinking, maybe N steps down a pseudorandom number generator formula might be interesting to watch?

    1. Very promising. Sadly the lag in the multiplayer version is pretty rough. I had two machines running it side by side, and clocked a 1.8 second lag between a single d20 roll completing on one screen vs. the other.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.