RPG Table Helper is a Flutter-powered application with an ASP.NET backend designed to assist Dungeon Masters (DMs) and players in managing their tabletop RPG campaigns, characters, and notes. This tool is tailored for games like Dungeons & Dragons, Daggerheart, and similar physical RPGs to streamline gameplay, remove the need for paper, and provide real-time synchronization. This app focuses on tablets but does work on smartphones as well.
- Create and Manage Multiple Campaigns: Easily organize and handle different RPG campaigns in one app.
- Share Notes with Players: Keep all players on the same page by sharing story notes, quests, and world-building details.
- Customizable Character Sheets: Tailor character attributes, stats, and abilities to fit your gameplay style.
- Digital Inventory Management: Streamline item tracking and management.
- Eliminate Paper at the Table: Say goodbye to printed materials and hand-written notes.
- Real-Time Updates Across Devices: Changes to character states or stats sync across all players and DMs in real time.
- Play Remotely with Friends: Designed for remote play, allowing groups to connect seamlessly and role-play from any location.
- AI-Powered Visualizations: Use AI to generate visual representations of items and characters.
- Grant Items with Ease: DMs can award items to players instantly with just one button press (e.g. for exploration rewards).
- Real-Time Party Overview: DMs can view the full partyβs stats and health to make strategic combat adjustments.
To start using RPG Table Helper, all users (players and DMs) must create an account. Options include:
- Google Sign-In
- Apple Sign-In
- Email & Password Registration
Once registered, DMs can create a new campaign, and players can create their characters. A campaign setup wizard guides DMs through configuring:
- The name of the campaign
- The worldβs currency system
- Default character statistics to be populated by players joining the campaign
- Adding initial items to the world
Below are visual examples of the appβs interface:
Here are some features we plan to implement in the near future:
- "Druid" Characters: A modular character system allowing players to mix and select traits, features, and abilities into a single unified character. This system is similar to shapeshifters or hybrid forms, allowing versatile customization.
- Improved Real-Time Performance: Optimizing SignalR communication to ensure faster and seamless updates when sending real-time updates about characters.
- Decentralized Hosting with Azure: Investigating decentralized hosting with Azure to improve scalability, reliability, and provide hosting options for DMs or campaigns.
- Localization: I am planning on localizing this app at least for english and german. Help is very much appreciated for other languages!
We welcome all feedback and contributions to improve RPG Table Helper. If you find a bug, have feature suggestions, or would like to contribute:
- Report issues or ideas via GitHub Issues.
Your feedback and help are always appreciated! π
To run the app, ensure you have the following installed:
- .NET 9 SDK: Required for backend.
- Flutter SDK: Required for frontend development.
-
Clone the Repository:
git clone https://github.com/3DExtended/RPGTableHelper.git
-
Install Dependencies:
-
For backend dependencies:
dotnet restore dotnet build .
-
For frontend dependencies:
cd applications/rpg_table_helper flutter pub get
-
-
Start the Backend Server:
cd applications/RPGTableHelper.WebApi dotnet run .
-
Start the Frontend:
cd applications/rpg_table_helper flutter run
Run this in the root folder:
dotnet ef migrations add <Name> -c RpgDbContext -s applications/RPGTableHelper.WebApi -p libraries/RPGTableHelper.DataLayer
dotnet ef database update -c RpgDbContext -s applications/RPGTableHelper.WebApi -p libraries/RPGTableHelper.DataLayer
dotnet outdated -u:Prompt -r
NOTE: To find, why a given dependency is in your repository search all obj/project.assets
files.
dotnet test --collect:"XPlat Code Coverage" --results-directory cobertura
reportgenerator -reports:"**/coverage.cobertura.xml" -targetdir:"." -reporttypes:"cobertura"
reportgenerator -reports:"**/coverage.cobertura.xml" -targetdir:"coveragereport" -reporttypes:Html
COVERAGE_VALUE=$(grep -oPm 1 'line-rate="\K([0-9.]+)' "./Cobertura.xml")
COVERAGE=$(echo "scale=2; $COVERAGE_VALUE * 100" | bc)
'echo "TOTAL_COVERAGE=$COVERAGE%"'
- Frontend: Flutter
- Backend: ASP.NET
- Real-Time Communication: SignalR
For feedback, questions, or collaboration, please use the GitHub Issues.
Thank you for supporting RPG Table Helper! Happy role-playing! π²
This project is licensed under the terms specified in the LICENSE
file.
We would like to acknowledge the use of icons from:
Thank you for these amazing resources!