A character sheet app for Dungeon World, a popuplar tabletop game, as an open-source Flutter application.
Available now on Android and iOS!
Dungeon Paper
Dungeon World players, this is the app for you!
Keep all your characters’ bio, stats, moves and possessions with this interactive character sheet. Join for smoother, zero-hustle Dungeon World campaigns!
Dungeon Paper is an interactive character sheet for your Dungeon World characters. This is the source of this app, but to fully use it you must set up your own firebase credentials and sign your own app. Once that is properly set up, the app should create entities based on logins to the app, so nothing else should be created for the database beforehand. No one in this repository will provide any secret keys to anyone, ever.
Features
- Unlimited number of character sheets
- Create your own classes and races to use for your characters
- Add basic details (character name, image, race and alignment)
- Set and view stats and modifiers, life, experience, armor and damage dice
- Add moves and spells from the playbook, or add your own homebrew
- Keep track of inventory items, coins and load
- Add notes, moves, spells, and other custom content with rich text, checkboxes and tables using Markdown
- Roll any dice or roll your actions directly
Contributing
I am developing this package on my free time, so any support, whether code, issues, or just stars is very helpful to sustaining its life. If you are feeling incredibly generous and would like to donate just a small amount to help sustain this project, I would be very very thankful!
I welcome any issues or pull requests on GitHub. If you find a bug, or would like a new feature, don’t hesitate to open an appropriate issue and I will do my best to reply promptly.
Development Set Up
-
Download Flutter
Use whatever Flutter channel you deem necessary, this should be compatible with master and beta, dev breaks a lot so no commitment. More information on Flutter.dev.
-
Fork this repository
-
Connect your Firebase credentials for the app
TL;DR: Create Firebase app, setup authentication, and run
dart pub global activate flutterfire_cli flutterfire configure
-
Copy the
secrets.example.dart
tosecrets.dart
in the same directory:cp "lib/core/utils/secrets.example.dart" "lib/core/utils/secrets.dart"
Sentry DSN can remain empty to disable error reporting.
-
To run build scripts, use script_runner by running
dart run script_runner -h
to see a list of all available commands. Alternatively, you can manually run the command inscript_runner.yaml
, or installscript_runner
globally and shorten the command toscr
.
As mentioned above, Firebase secret keys must be your own, and so are the databases and services related to them. This project requires Firebase auth and Cloud Firestore to function.
Build Tools
Use script_runner
to run build scripts.
You can use these examples to start:
dart pub global activate script_runner
scr -h # see all commands + help
scr -ls [search_term] # find scripts by name, or list all scripts
# e.g.
scr -ls android # see all possible android-related scripts
scr android:build:release # build for android release
Translations
This app is currently only available in English. However, it’s possible to contribute translations if you wish to help localize the app to your language. The app should be fully-localizable easily by updating the translation files, and once we ave more than one language we will add UI to change it at will.
-
The current main translations file is at
lib/i18n/messages.i18n.yaml
-
To add a new localization file, copy this file to
lib/i18n/messages_<lang code>.i18n.yaml
(for example, for Hebrew you would usemessages_he.i18n.yaml
) -
For help using the translation syntax, see the i18n docs
-
To translate the playbook data (classes, items, moves, spells, etc) we must localize a separate package containing all the Dungeon World base data. This package is available here, see the localization docs there for more help.
-
The app and data may be translated separately and do not depend on each other.
-
Use the build_runner package to generate Dart files from the yaml files.
# run in watch mode, re-generates as you update the yaml dart run build_runner watch # generate files once dart run build_runner build
Help by bug reporting or requesting features
- Feel free to use the GitHub issues to post one of the issue templates.
- We are also active on Discord