anydyce – Application experiments for dyce
anydyce is a testing ground for various interactive interfaces to dyce (the dice mechanic modeling library).
Currently, it includes:
- A JupyterLite graphing widget using Matplotlib and
Jupyter Widgetsfor visualizing histograms and pools: - 💥 New! 💥 A fully functioning, (mostly1) compatible, pure-Python AnyDice language interpreter and interactive playground. Quite a bit of detail is provided on how it was built, how it differs from the original, and all the pitfalls and nuances discovered along the way.
JupyterLite may not save your work!
JupyterLite attempts to make use of your browser’s local storage for saving notebook changes. Browser environments vary, including how long local storage is persisted. Further, Binder loses all state once its instances shut down after a period of inactivity. Be careful to download any notebooks you wish to keep.
If you find anything lacking in any way, please don’t hesitate to bring it to my attention.
Running locally
anydyce is also available as a PyPI package and as source.
To try it on your own hardware, use the quickstart-local.sh script to create a local virtual environment and bootstrap a local copy.
1 2 3 4 | |
Once loaded, try the following:
- Introduction Jupyter Lite notebook - http://127.0.0.1:8000/jupyter/lab/?path=anydyce_intro.ipynb
- AnyDice-compatible playground - http://127.0.0.1:8000/playground/
Requirements
anydyce requires a relatively modern version of Python:
It has the following runtime dependencies:
dycefor dice mechanic modeling- Lark for the AnyDice interpreter
- Matplotlib (optional) for visualizing histograms and pools
Jupyter Widgets(optional) for interactivity in Jupyter
anydyce is proudly 100% Bear-ified™! 👌🏾🐻
License
anydyce is licensed under the MIT License.
See the included LICENSE file for details.
Source code is available on GitHub.
-
It is not bug-compatible, instead including fixes for several longstanding implementation errors in AnyDice itself. Further, it does not support AnyDice’s
legacy "..."syntax. ↩