Inspiration
DNDBeyond is a useful tool for tabletop players because it allows for players to quickly and easily create characters with nearly everything automatically filled in for you based on what you want to have. The main problem is that, without paying either a monthly charge or a heft sum of money for lifetime licenses, you have next to no options for what your characters can have removing a lot of the creativity from DND. On top of this, there are no other legal options because Wizards of the Coast, the company behind DND, is very strict about licensing where you can have the information available for the DND data, but you are not allowed to create a character builder that uses any of the expansions of the game.
What it does
Godot5E is a project built in Godot which is able to download publicly available data on DND character traits such as classes, subclasses, spells, races and more and allow the user to easily create a character with none of the fuss of researching to make sure they don't miss anything as they would with a pen and paper. We get around the legal issues because the code written has none of the copyrighted material in it.
How we built it
Godot5E pulls from 5e.tools' (a publicly available repository of the DND rules) github repository using Github's API in order to install the json files that hold the class data. We then parse these highly unorganized and often confusing files into forms that the program can easily handle.
Challenges we ran into
The json files barely had any semblance of structure, most likely they were automatically generated from the books themselves. These files were commonly thousands of lines long and had many inconsistencies. For example, every class has features formatted as a list of strings following the format: "feature name|source|level feat is gained", except Barbarian, which had some of it's features formatted like "feature name||level|source."
Accomplishments that we're proud of
We managed to create an incredibly modular system for handling DND character sheet generation which is able to handle inconsistently formatted json files. We also learned how to use the Github API such that we don't need to provide a token or user identity while downloading the json files. This Json system also works fully asynchronously in order to not take hours to download and is instead able to install in minutes to seconds depending on internet speed.
What we learned
We learned how to parse inconsistent json, use Github's HTTP api, Godot and it's c# methods, UI and UX design, object oriented programming, teamwork skills, delegation, Linux, Dotnet, GDScript, and many more.
What's next for Godot5e
The current state of Godot5e is no where near the level of polish that DNDBeyond has but given the rapid progress and the hardest parts of the design behind us, future versions could easily be made to handle more edge cases and guide the player through the character creation process more clearly.
Log in or sign up for Devpost to join the conversation.