Steady State Auto-Balancing


Looking at the scale of some of the online multiplayer games, it’s always fascinating to see how people always complain that only a small subset of things are usable in competitive play. In Halo or Counter-Strike, only a handful of weapons are considered good and the rest are never touched unless you’re in very constricted situations and the less-preferred weapon is the only option. League of Legends has over 100 champions to select from, but you only see about 30-40 played the majority of the time. Player-vs-player (PVP) in World of Warcraft tends to have the same team layout in their 2v2 and 3v3 arenas making the meta-game predictable after playing for so many iterations.

Developers do try and balance these problems, but re-balancing takes a long time to complete. When you make something (gun, character, class) weaker or stronger, it changes many other aspects of other classes. Which character’s are good to support them, who does the original character do well against, who does well against this character. Many aspects change because of small changes that the developers make to try and re-balance the game, making things that were perceptively weaker -> better and making things that seemed overpowering -> weaker.

What my concern is that with the amount of plays that each of these games have per day/hour/second, it seems silly that it takes such a long time to gather data in determining who should be stronger, weaker and which aspects of each character to tweak. That’s why my idea for a solution is closer to a continual re-balancing approach.

If only all of you weren't useless.
If only all of you weren’t useless.

Take the system we have now with a game like League of Legends. With over 100 champions to have to balance, each with varying mechanics and abilities, it takes a while to re-balance them by hand. But what are we trying to balance? Well, we want each grouping of characters to have as much of a chance of winning against any other group of characters given the same player ability on each side. This means that we want the win-rate of any group of champions to be 50%.

The race to 50

Say we have a few characters in the game that make or break the game. If you pick Riven or Yi, then your team has a much higher change of winning. Likewise, if you pick Gragus or Annie, you have a much lower chance of winning. Then the obvious things to do are the lower the ability of Riven or Yi and increase the ability of Gragus or Annie. But which stats to you pick to buff? You can pick one at random, tweak it a bit, and see what the win-rate is. Did the win-rate go up or down. How far from 50 are we?

The idea is that with a almost one million games per day, (27 [1] million players per day / 10 people) per game, you can make a very small number of tweaks and have a few thousand people test it during the day to see what the outcome of the change is. If the characters get picked more often while still preserving the win-rate near 50%, then the change was a good. You can keep this up for all characters for all stats. Given a long enough period, the stats and the win-rates will find their equilibrium and hopefully have the game be (near)-balanced to a point where all characters are chosen (relatively) equally, i.e. finding a steady-state for the game and its tweak-able variables.

Spreading the word.

While make changes, we don’t necessarily want a given character to completely break the game, making it un-fun for the any other team to play against. So it’s probably better to settle the changes in pockets first, before sending them into the wild. Have a smaller subset of people try out the new stats and see what happens to the win-rate, say 1% of the player-base. Even with 2.7 million people over the day, you can get a hundred thousand plays to see what happens with each change. This way, if a change makes a character completely unstoppable, then not everyone is having a terrible time and the change will be shown in the new win-rate for a character.


For competition though, it would be best to have an even playing field for everyone, so locking the current changes in periodically (week, month, season), then everyone in competitive play will have the same set of advantages/disadvantages instead of what is currently being tested.

Comment below if you think there’s something wrong with this system, or you want to discuss elaborating on it.