Posted January 31, 2024 by Nowhere Games
#Game Design #RNG #Devlog #Indie
Hello everyone! In this second devlog I want to talk about a design issue I’ve encountered in the past week regarding how I’ve handled RNG, and my thoughts on how to fix it.
Dungeon Master is an auto-battler where the player chooses monsters for the hero to slay. To keep these battles interesting and prevent the game from being pre-solved, some degree of variance (aka RNG) is required.
In the prototype, this took the form of a 10-sided spinner which determined various outcomes, such as whether an attack hit, or whether the hero got a new item. While originally just a simple way of implementing RNG in a pen-and-paper setting, I came to appreciate the fact that a spinner helped visualize the different outcomes of an encounter, and resolved to implement it into the final game.
In theory, one of the problems the spinner solved was helping the player visualize the outcome of random events. It’s a known fact that, as humans, we’re bad at fully understanding how random outcomes work, and we’re often shocked and outraged when, for example, a 90% chance-to-hit attack misses. By showing the player the outcome landing on the 1/10 slice of the wheel, they should better understand the outcome.
In practice however, I found that having the hero miss lead to the same outraged feeling as in any other game, even as the person who coded that outcome in the first place. I went searching for help in online groups and someone pointed out something I hadn’t really considered in the first place.
Regardless of the chance, missing an attack isn’t fun.
My initial bandaid solution to this was to replace misses with crits, inspired by the story of how Blizzard implemented Rested XP into WoW. The problem there was that is removed the crucial variance from my game. Now every action would result in damage (and usually a dead monster), trivializing encounters. Instead, the replacement needed to do something other than damage, while still advancing the game state to be fun and exciting.
The (proposed) solution to this right now is to rope in another half-baked system from the game in held items.
Original held items would trigger a certain effect under a certain condition (eg. drinking a potion below a certain HP threshold), but I was never fully convinced of their impact on the game as a whole. Instead, I’ve decided that the held item will trigger on that X/10 chance the hero doesn’t hit with their weapon.
With this, the hero still does something every turn, and the player can factor the held item’s effects into their build, creating more depth of strategy. Of course, this remains to be seen with further playtesting, so I’ll share the results of this experiment in a later update.
That’s this week’s update. Though in other news, adding content is going much faster than expected, so the playable demo might be available in a matter of weeks rather than months.
Let me know if you have any thoughts regarding this issue and my solution, and thanks for giving this your time of day!