How to make a Discord RPG: part 2
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.
Part 2: Combat, Exploration, Channels and Onboarding
Welcome to the latest in our Devblog series about the making of our first Discord RPG: Torn Tales. (Check it out for yourself here: https://discord.gg/JVKjCuZ)
In part 1 we talked about the basic philosophy behind the react interface. Time to go into a bit more detail… the Torn Tales Discord RPG has both combat and exploration mechanics: first of all let’s talk about the combat.
Each round in an enemy encounter gives players a choice of moves: for example special attacks based on the moves from the Steam game, using amulets and so on. Each player makes their own individual choice of which move to make, but they all contribute to attacking the enemy: it is fundamentally a multiplayer mechanic, that scales to large numbers of simultaneous players.
Our server tracks the damage caused to the enemies, and lets them attack the players back. Once the enemies have been defeated, a new set are posted to the Discord channel.
Note also the composited image above - we use 2D renders of the enemy assets from the Steam game superimposed (by server code) onto simple environmental backgrounds.
The exploration is a voting system: users vote using direction reacts (North, East, South, West), and at the end of the round that’s the direction the party travels. This leads to entertaining social factors: people disagreeing on which way to go (à la classic tabletop RPG gaming arguments), and encouraging others to vote in order for the player to get the result they want.
Another great yet subtle example of our use of reacts is the secret bookbinders channel that lets privileged players vote on which enemies appear for players in the other channels. The design intent here is to both reinforce connection with our Steam game, and allows players to aspire to a degree of control over the game itself.
We also have a player auction house. Users can direct message to our Auctioneer bot and post items with a starting price. Other players can then use the Money Bag react to bid on the item. The auctions occur in rounds, with players able to outbid each other: we achieve this by resetting the react to 1 each time a player has outbid another player, so that the first player can place a higher bid.
This particular flavour of our server is setup, quite deliberately, with a number of distinct realms themed strongly to the Torn Tales Steam game. We’ve stayed true to the lore of the game, using the same realms and abilities. Each realm has separate combat, exploration and questing channels, with a distinct bot setup to control each one. This has allowed us to build the whole server into more of a complete game: you can progress through the realms as you level up, like any good fully-fledged RPG.
There are also dedicated “town” channels for the Inn, Shop and Auction Houses, and separated channels for discussion. There was a debate about whether chat should be allowed within the combat and exploration channels (it would have lead to interesting social interactions as people debated their moves), however the chat would have quickly scrolled off the bottom of the screen meaning users needed to scroll up to see the state of the action.
A possible solution to this we considered is reposting the enemy combat messages, with the possible reacts, at the bottom of the channel whenever someone messaged - however this would have generated a lot of messaging and led to users fighting with the chat itself.
What we’d really like to solve this is a new type of pinned/sticky message that stays visible at the top of the screen within a channel irrespective of the other messages below (again, another hint to the Discord devs!)
After our initial Beta rollout, we found some players didn’t really know what to do when first joining - for example it wasn’t obvious how the combat worked if you are not used to this kind of react system.
So just like game design in a Steam, console or mobile game, we needed to design an onboarding system that instructed new players in what they needed to do, but without writing a long manual (that no-one wants to read). So we hid the forest realm for just joined players, and setup a custom combat channel in a cave, where users encountered their first spiders to fight.
Once the spiders are defeated, players are gently redirected to our message board, which signposts them with which channels to go to next; Discord has a neat system for hyperlinking between channels using hashtags.
…the message board also displays a list of which users have escaped the first cave, which allows us to monitor, at least in a high level way, how successful the onboarding has been.
We’ve been asked a number of times whether our bots can be added to someone else’s server; that isn’t really how it’s setup at the moment due to the heavy theming, and because we wanted to gather our community together in one place.
However, we are certainly considering in the near future making a vanilla version of each bot that can operate standalone (e.g. a combat reaction based bot with a customisable set of moves and enemies). Let us know if you’d like one for your server; perhaps we should setup a Discord react vote for that too!
Thank you again for reading - next time we’re going to delve into some of the technology we used to make the game.
If you’d like to try the Discord game yourself, here’s an invite: https://discord.gg/JVKjCuZ