So, here’s an interesting problem that I’ve been thinking about. Most (if not all) games make very heavy use of random values to determine outcomes and results.
The interesting thing about this though is the idea of luck, or more specifically runs of bad luck (aka incurring the wrath RNG God) where you consistently do not realize the outcome you wish. Ask your average RPG player – what’s more frustrating then attacking a low level spider and missing the next five attacks only to have the spider slay you? Impossible? Not at all. Improbable? Of course. Another infuriating example of this comes in with loot drops. Many bosses drop unique or rare types of loot that people want to collect, and expecting to collect these items can be an exercise in frustration. A 25% drop in no way means that you will have the item within four kills, rather you will need to kill the boss 14 times before you have a 98% chance of collecting said item.
So basically, pure random rolls stink. Over time, the bad runs average out with the good runs, so its not like these situations happen all the time. However it’s human nature to remember the bad runs, and sometimes enough improbable bad strings of luck is enough to make the player quit your game entirely. Sure, it might be _fair_… but who plays a game to die to a lowly spider just because of bad luck? People play games because they want GOOD luck.
So how do we fix this? Well this is what I’ve been thinking about for the past few days. Instead of a pure random number generator, I want a “nice” random number generator that somehow ensures you will get a desired outcome sooner rather than later. Essentially, we want to break up runs of “bad results” with good results in between. The best answer I’ve found so far is the concept of a “grab bag”, which is array of pick results that is shuffled.
I’ll go over this concept more in my next post at some point in the future, and some of interesting properties it brings up. The results are more “balanced”, but does it ruin the concept of a game? Stick around!
(I’m going to try writing more entries to practice my writing abilities, and also to share my thoughts with everyone else on game programming and design. Please share criticism or suggestions with me!)