We as a group were interested in Dungeons and Dragons because we were just enthralled by the amazing world that could be and that we thought could be possible if only we all had more time to meet each other and play the game. A typical session of D&D lasts several hours and that amount of spare time is simply something that we don't have given that we are all from different Secondary Schools and can't meet up very often. So, we decided to make use of this Hacknroll to create a bot that enables us all to experience the fun of D&D on the go.
What it does
The DM_Helper bot essentially helps the Dungeon Master to keep track of all the character attributes, player health, gold and EXP. This makes it so that the DM can have an easier time with managing the game and doesn't have to keep track of everything at once. It automates the game making it easier on everyone's part to play the game and have fun worldbuilding as opposed to stat tracking and character sheet balancing.
How I built it
We listed many different criteria for our bot and then set goals for ourselves based on the time. For example, the 1st Prototype (Named: Barebones) was supposed to be finished at 9pm with basic stats, dice rolls, monsters and players which we then proceeded to finish at 12 midnight. The schedule for later iterations was then pushed back and the objectives were thought about again and redone to better suit our coding speed. Overall, although we did not finish implementing all the features that we wanted to implement, we still managed to make a robust game that was fun to play.
Challenges I ran into
We had many problems with the documentation of the Telegram API as it was not very clear to us. The lack of online videos or tutorials for Telegram Bots in Python also made it even more difficult to code the DM_Helperbot. We particularly had trouble with the custom keyboard function which was what we wanted to implement but would eventually find to be poorly documented and unusable for us. We overcame this problem by simply deciding that another way of gathering player inputs is to require the player to input a response manually so we just went with it.
Accomplishments that I'm proud of
Finishing so much on time! Our group used to struggle with timed submissions of projects but I think that we accomplished a lot in the short period of time that we were given. Normally our group would delay and avoid doing difficult tasks, but this time we took the difficult tasks head on without deflecting them to others and were accomplished in a relatively short time. Although we didn't meet our first deadline due to various issues with syntax and some lack of experience with the Telegram API, we did meet our second and consequently our third deadline.
What I learnt
As mentioned over and over, we learnt more about time management and appropriate goal-setting. Our goals at the start of Hacknroll were lofty and in hindsight were definitely not possible to accomplish. We also learnt to not underestimate our tasks, because early on we were pretty sure that everything would be finished very early on, however that was simply not the case. Later on, we started estimating timeframes better and not being afraid to say whether something would take a long or short time.
What's next for DM_Helperbot
We want to allow more input from the DM, including custom races and classes that the DM can implement, custom stats for each character and extra functionality for the players to have more fun with the game. Ultimately, D&D is a very open-ended game with loads of different mechanics and nuances, so there is a lot that we can continue adding to DM_Helperbot