Async Master: Telegram Bot for Playing TTRPGs
TTRPGs are fun. You play with your friends, crushing goblins, eating snacks and chatting. That’s great! However, we are not in high school anymore and clearing the schedule for a game night was becoming increasingly difficult. Then, life spread us across the world and in-person play is not an option anymore. So, as a small winter project I decided to make a Telegram Bot, where we will play some TTRPG with my friends.
In this article I want to share why I am doing it and some general decisions about it. In the next article I will dive a little bit deeper into the technical side of the project. This article is an overview of what’s and why’s.
Why Telegram Bot?
I want to play by communicating with players with text messages. I am aware of text role-playing tradition, forums etc. But I have never participated myself. Basically, I need to make a decision on what I will force my players to use. If I will make any kind of website, then they will need to visit it to receive updates on the game. So if the player does not visit the website, the player does not play. I would probably just message a person, and remind them that “You need to reply, buddy”. But it does not sound very sustainable for my mental health.
Soo, if the mountain does not get any closer, I will go to the mountain. I will use the place where my players live for play. And my players live in Telegram. Therefore, decision is made.
Telegram provides the Bot API, which creates a unique handle for a bot, so a person can start a conversation with it , but with some additional features. This is quite handy, because I do not need to use my personal chat with players for gaming purposes.
In my case Telegram Bot was a quite logical decision to make, but it would not fit everyone, because of different requirements. But if your players use something like Discord, you should be able to utilize Discord’s Bot API.
Why Asynchronous?
I found my players, so the next thing is to fix the “find time-slot for everyone” problem. If we are already communicating by text, then we have some interesting properties - you can treat the Bot messages as a mail inbox, and answer only when you want to. In theory it makes it convenient for everyone to read and write when you have time to do so. However, all of this is just a substitute. This is not the same as playing at one table with your friends. But this is the “time convenient” option.
So what is asynchronous about it? If we think about how TTRPGs work in general: you have a master that describes something, then give players an opportunity to do something in return. If we give the master an option to make those requests and the player to answer them in text, we will recreate how it works at the table. Telegram Bot in this case is a mediator. It will accumulate all requests and responses.
What to Play?
The last question to answer: how will this be played?
There is at least one important thing to address. Usually at the table we play party-based adventure game, where players take the role of an individual person and they travel together. There are definitely other types of games that exist, but I am pretty sure that the most played ones are D&D-like structured games. In case of my game, I thought that making party game would be tricky. With not real-time play one scene can span weeks, while players are deciding when and how they want to respond, and for Master to react.
My solution was to separate players into different factions, where each player takes a role of the leader of the faction. They all have similiarish goal, but they make decisions separately. Each time the player answers, it changes something in the world and players that feel effect of it will be notified by the Master. In this setup Master solves all conflicts and connects all of the actions that players make (just like in regular TTRPGs). But because each player takes control of a separate faction, they can play at their own pace, and still communicate with the rest of the players.
For now, I have started this game with my party group, and still cannot comment on how successful it is, I will maybe comment on it later. Next, I am planning to write article(s) on the Bot implementation.