Ball State Project Tarrasque Manager

An app for Dungeon Masters

A lot of students in the Ball State CS department know me for my interest in D&D because of this project. I've been playing Dungeons and Dragons for over four years now, and over that span of time I've gained a massive appreciation for its versatility and complexity. I would argue that one of the hardest things you can do is build an application for D&D, given all the moving pieces that make its logic so convoluted to design in code.

Tarraque Manager took up three quarters of a semester and way designed by myself and three other students: Nathan Malitz, Emma Jones, and David Tao. Emma focused on front-end development, Nathan focused on testing, David focused on integration, and I focused on backend. I would argue that the work I did in this project was some of my best in addition to being one of my favorites.

Character creation was one of the main features of this project. Not only was it capable of designing all the complex stats for a given character accurately, it was also able to fill those stats into a given character sheet and export it to a PDF such that the user would have to do minimal work to develop a random NPC. The randomied features ranged from ability scores and modifiers to names and backgrounds all depending on the choice of class and race. Alternatively, the class and race chosen could also be randomized.

The PDF editor was probably one of the hardest parts, but it was made a lot easier through Apache's PDFBox library. I spent a lot of time working on this through the backend, but I owe the idea to Nathan who found the library in the first place. We were eventually able to get it working cross-platform such that it could run on Windows, MACs, and Linux (something that was made difficult by directories, but we eventually got around that).

Another function of the application was to make general information from the player handbook available by searching (Races, Classes, Spells, etc.), for which I made my own searching algorithm that worked pretty well to identify what the user was trying to look for, even if there were typos.

One of the hardest parts of the project was when the online API we were using failed days before the first iteration. I had to take it upon myself to completely rewrite the backend integration with the API and exchange it with a local version with minor differences. It was certainly an interesting experience, and something I wouldn't wish upon anyone else, but it was still really fun to build.

I look forward to building another version of this sometime in the future. I would like to have it set up such that it isn't violating any copyrights and can be distributed as an open-source project.

Previous
Next
Home