Let’s say I asked you to think of a random number in your head. Okay? Was it 6? No? Yes? I’m not sure. That’s really not the point of this video. We’re going to focus on random numbers, and how much power they hold to enhance the player experience more than a developer might realize. Let’s start with my own project, Realm of Discourse, or RoD for short.
RoD was a game I developed on a Discord bot as a test project to get a better understanding of SQLite and what it’s capable of. The game worked off a very general RPG system, where you had health, mana, and attack, and you could use a text command like “^heal” to recover health. Something I noticed about the game is spamming ^heal tend to be extremely repetitive and boring, especially for a core mechanic that allowed you to play the game.
Now a simple solution I applied was increasing the health scaling as you progressed, letting you get more healing from items and ^heal the higher level you became. This greatly reduced the amount of times you had to spam the command, but it still felt extremely boring. So, I decided to add on a special feature to my code, Math.random(). This was a JS function that allowed me to make random numbers, and with this I added it so ^heal would either heal from a range between the usual number, and double that. Though it’s silly, it made ^heal not feel the same every single time.
I also applied this method on the monsters you fight, the damage you deal, and the amount of XP / Money you get from defeating monsters. This would always make the experience feel slightly different than the other, rather than fighting the same 10k health 5k attack every. Single. Time. It added variance, though there was the occasional frustrating 1 damage when you had like 100k attack, it was not common enough to get salty about. Plus, monsters had the same opportunity to deal almost no damage as well, so it was even. The XP and gold you get were limited to a reasonable amount, with the chance of being even better, so you couldn’t really get frustrated at how much you got. Monster encounters didn’t force you to fight them, you could just spam ^fight until you found the monster you wanted, so getting bad luck made you type in a command a few more times.
I’m not saying I’m the best game developer out there because I applied random numbers to a game. I think there’s a big distinction with healthy RNG (Random Number Generation) and frustrating RNG. I think the biggest factor as to why there isn’t much frustration with RNG in my game is cause the stakes are incredibly low. If you die, you only lose XP and gold, stuff you can easily grind back. As I said, enemies you can find them just by spamming the same command over and over. Nothing has the potential to completely ruin your game, just either benefit you more or give you a slight setback.
Now let’s compare this to a game that I personally consider one of my favourites, Darkest Dungeon. I consider myself extremely unlucky in games, and Darkest Dungeon showed it with extreme passion. The game is a rogue-like RPG and it does not hesitate to punish you for your mistakes, but it also punishes you for incredibly bad luck. When heroes die in that game, they are gone forever. There is a random event that is rare where they can potentially revive, but besides that, all your love and effort put into that hero is gone. This means every fight, even the easier ones, come with high stakes.
It was nice knowing you Groovy Bot. Frustrating RNG in this game in my opinion, is critical hits. It never feels good to be hit by a crit. Your team stresses out, it deals heavy damage, and nothing good comes of it. Now imagine getting crit over, and over, and over, to the point your character doesn’t even die from damage, but the stress involved in being crit so many times. This, was frustrating, because this was in the final level too, where you have max level characters. I still managed to beat the level, but I lost a character I had invested so much time into not because of lack of preparation, but because she got slaughtered by the wrath of RNG.
Don’t get me wrong, even after this, I still loved the game. I still beat the game. As a fan of turn based RPGs, this is one of my all time favourites. I’m not one to get salty about RNG and push away a game forever cause of it. Heck, that’s probably why I played Teamfight Tactics for so long. However, I feel games should be aware of worst case scenarios when it comes to RNG, especially when they increase the stakes of a game. Maybe you lose a character, or maybe it changes the outcome of the game forever. While random numbers provide variance, the player should always feel like even against all odds, there’s still a chance to win.
Plus these are good things to keep in mind as I work on another Discord bot game, Discord Delta.