RPG Dice is intended to be a universal RPG dice roller. It's not there yet, but it's coming along. It currently has what I believe to be a universal dice parser, which is the core of what makes this work. For the app itself to be truly universal, though, it needs to directly support more game systems than what is represented currently. I hope to get feedback on that soon.
Dice specifications are provided via a mini-programming language. This is the core of what can make RPG Dice a universal roller. Currently it handles every dice-based system I'm aware of and some I've not seen in the wild. The systems I know it supports include traditional (A)D&D, Shadowrun 2nd Edition, Palladium (including initial attributes) and White Wolf's Storyteller system from World of Darkness and others. It also supports house rules from several of them. For instance, I used to roll AD&D stats by rolling 4D6 and discarding the lowest die. That can be done with the 4D6:>3 spec.
The following is an attempt to summarize all the parts of the dice spec.
- Roll n dice with s sides. Examples: 2D6 (roll two 6-sided dice), 4D10 (roll four 10-sided dice)
- Use the JS font loader so the selector doesn't get positioned until fonts are loaded.
- Add a clear button to the history.
- Get the history to take up the entire extra visible section of the page without adding a scroll bar to the page. A scroll bar on the history section itself is probably necessary.
- Try to get the dice count selection for WoD to better match styling for the rest of the page.
- Consider adding buttons for number of dice for WoD. Would help with the above.
- Handle chance dice and willpower dice for WoD.
- Fix sizing on the spec input/button. There's a mismatch there.
- Display (somehow) the currently selected page. This could just be by using the
:checkedselector as the WoD selector does.
- Add the ability to click on a history item to get details and/or re-roll that dice spec.
- Select heading of result to change label in history. That makes the above more useful.
Savebutton on the result to save the roll definition. Should eventually save to a server, but initially will use local storage.
- Add a spec builder, or maybe a natural language parser along the lines of “roll 6d6. Discard the lowest roll” or “Roll 5d10. Count the number of dice with a value of 8 or higher. Re-roll 10s, adding values of 8 or higher to the number of successes. Continue to reroll 10s until none are rolled”.
- Add a means to save specs and add them to pages.
- Simplify adding pages. Right now you need to add the
aelement as well as the actual page. It should be possible to just add the page.
- Make the different pages into plugins, allow each one to be self-contained, including the custom JS/CSS needed.
- Utilize the JS history API to control and use the URL.
- Make the initially open page/group persistent. That is, if nothing is specified in the URL, open to the last page that was open.
- Split the Help page into three tabs: Help, To Do, Credits.
- Center the Help page. Probably easiest with media queries. So if page width > 40rem, set it to 40rem and use standard centering techniques. Otherwise, set to 100% (minus nice margin).
- Copyright ©2013 Michael D Johnson. All rights reserved. However, it will soon be released under an open source license. I'm not sure which one yet, but I'm leaning toward AGPL. The core dice library may be released under a more liberal license. I'm still contemplating how it should work.
- Entypo pictograms by Daniel Bruce used for various control icons (e.g. the close buttons and menu buttons).