On Random Encounter Rates

Almost everyone who’s played a game with random encounters has reached a point where they don’t feel like fighting them anymore, whether it be they just want to get on with the story, or are downright bored of the enemies in the area. Having an especially high encounter rate can be a really good way to drive away a player from your game or certain areas within it. For example, the Zubats of Rock Tunnel in Pokemon Red/Blue are infamous for spamming the player with unrelenting and unwanted encounters. It’s… it’s not like I just wanted to get to a freakin’ Pokemon Center ’cause my Wartortle is paralyzed, and it’s dark, and I’m lost ’cause I didn’t want to go get Flash, and I just CAN’T GET AWAY FROM THESE DUMB BATS! Ahem… My apologies, my old childhood traumas resurfaced for a second there. The point is, players can get frustrated when they meet a high volume of encounters that don’t let them get on with what they want to do.

So, my experience with random encounters in developing Draconic Echoes: The Ardent War was a bumpy one for sure. During early stages of testing, I was using an unedited version of RPG Maker MV’s system for generating random encounters. During the first time I had someone other than me play test my game, and after she got a random encounter on a few occasions probably less than 10 steps after running from a previous one, I knew something needed to be tweaked for sure.

Thus, I began poking around to see how exactly the engine was handling random encounter generation. From what I could tell, the only initial control over the encounter rate the engine provided was setting the top end of the RNG range for the step counter. That is, the engine generated a random number in the range 1 – X, where X is what I designated for each map. Once the player moves the randomly generated number of steps, a random encounter occurs. Now, this system is fine and it serves its purpose, but it is prone to creating what I called in my head throughout development as “The Zubat Effect” (described with my childhood trauma above).

Once I had identified the problem as such, it was time to get to work on a solution. First off, I needed to crank up the minimum encounter range value. If you’re using RPG Maker MV, like I did, Fallen Angel Olivia’s Anti-Player Stress plugin provides this functionality for when the player without the need to dig through code. That, however, only seemed to mitigate encounters only after the player initially entered the map, and inconsistently after subsequent encounters. I’m not sure whether this is due to a bug, plugin incompatibility, or me misunderstanding the function of the plugin. Anyway, it helped, but it wasn’t enough.

Fortunately, I was running Yanfly’s Repel & Lure Encounters plugin already to make in game items that temporarily remove random encounters. This plugin streamlines RPG Maker MV’s natural method of temporarily removing encounters from a state applied to an actor, into a variable, making it much more reliable and easy to work with. Basically, it allows you to set a variable to a number of your choice and as long as this variable > 0, the game does not generate random encounters. Each step reduces this variable by 1. So, I increased my encounter variable higher and made the item, “Warding Pearls” more affordable for the player. Again, doing this helped remedy the problem, but I still wasn’t addressing the initial issue I set out to solve. At this point, I had thrown tape and bandages all over this deep and gushing wound in my game’s design, but I hadn’t found a way to stitch it up properly yet.

At this point, it was time to refocus on the case that caused my friend her frustration. What was the common condition in her situation that wasn’t appearing to be touched by my previous fix attempts? It was in fact, that she was running from encounters. Now that’s interesting. This problem is expressly caused by running from combat. Therefore, I cobbled together a solution using two different plugins. First, is Yanfly’s Repel & Lure Encounters, mentioned above. The second, Sumrndmdde’s Battle End Events, which, as the name suggests, allows the developer to designate certain events to run at the end of battle. I used this plugin to add an event to when the player runs from battle. I added the following condition to running away:

If:
the encounter removing variable = 0: (this makes it so the following effect does not conflict if the player is already using the item to ignore encounters and wants to run from one not generated randomly)

Then:
set the encounter removing variable = 30


Effectively, this condition made it so that running away from a fight gave the player 30 free steps of no encounters (as long as they were not already using the item to ignore encounters). Adding this small change to the system made the simple act of walking around the game’s world feel so much smoother. And so, with the help of a few plugins, the problem was solved.

All this may seem like a long process to fix something that’s a non essential problem for the game to run, but random encounters can make or break a game that uses them. Therefore, it is very important to properly balance their rates. It might seem like something small to a developer, but one of the biggest things you’re asking from a player is their time. When a player feels like the game is wasting time throwing undesirable encounters one after another, it could ultimately end in the game being turned off. So, if you’re developing a game, keep an eye on your encounter frequency!

If you’re curious about how all my nonsense actually plays out in a game, check out Draconic Echoes: The Ardent War on Steam!