How useful are balancing tests for combat systems?

Godot Version

v4.6.1

Question

Hi everybody! :)
I am currently developing a turn-based combat system.I am developing different enemy-classes with different skills and different tendencies for using actions (attack, defend, dodge, heal, etc.).

I have developed a balancing test, where 1000 fights are simulated for every pairing possible. The first test showed completely imbalanced results (80%-90% loss-rate for certain classes).

My question to you: Do you think that balancing tests for npc-classes are useful? Or are they completely useless, since it only depends on the player to feel the balance of fightin against npcs?

Very curious to hear about your thoughts!
Chris

Be critical of your balance, because players will be ruthless. And you only get one chance at a good impression when putting up a game. It’s really hard to come back from Mixed reviews as an indie developer.

Totally agree. For my game, the combat system will be the heart of my game, which is why I focus on it to work a 100%, then I will continue with the Overworld afterwards.

Do you have experience with balancing for combat? How do you make sure that it works as you intend it to work?

I do. I actually have worked on some MMOs in the past. The best advice I can give you is don’t listen to the players. They are always wrong. Because they only care about their class/playstyle. As a developer, you have to balance the entire game. Here’s some specific things to look out for:

  • A META (Most Effective Tactic Available) that dominates the game. Videogame players are very good at min-maxing. If there’s one playstyle that wins, they’ll figure it out and tell everyone else. Spend time trying to find that game-breaking strategy.
  • Using DPS as the only measuring stick. Given a fast weapon with lower damage and a slower weapon with higher damage, if the DPS is the same, the better choice is ALWAYS the faster weapon. This is because you have more chances to hit in the same timeframe, a miss doesn’t hurt your DPS as much, and you are likely to land a higher percentage of hits than you will with a heavier weapon. Speed builds are always better. So, you need to compensate for that.
  • Boring Classes. A game with four classes that are fun to play is much better than a game with 16 classes where half of them never get played because they aren’t fun to play. Everything comes down to one of four METAs: Tank, Control, DPS, Support. A class can do one of those things well. If it does two, it either isn’t as good or is overpowered. Balancing classes that try to bridge two or more METAs always fail.
  • Dumbing down AI too much. Your AI can see around corners, move at the speed of thought, and never miss. Everything you do to make an AI will be to dumb it down. Don’t dumb it down too much. If you can, put levers in to tweak these values. It make playtesting a lot easier, and will lend itself to difficulty modes later. Make your NPCs god-like monsters that destroy the player, then ratchet them back. Some common levers include: whether or not they can see through walls (a good way to fake sound the player makes), how often they miss, how far they can see, how good their pathfinding to the player is through a maze (Godot has great pathfinding via NavAgent2D/3D and NavRegion2D/3D), how much damage they can absorb, and how much damage they deal. Attack patterns are also a way to dumb an AI down and make it more predictable (and beatable).
  • Not understanding RNG and bell curves. Set aside the fact that random numbers on a computer are not actually random - which is something you don’t need to worry about with Godot because they seed the random number generator automatically for you. In D&D, you roll a d20 for most checks, which gives you a 5% chance of getting any particular number every roll. As soon as you roll multiple dice and add them together, you get a bell curve. This means that numbers in the middle of your range are more likely and numbers at the end are less likely. For a game designer this is important because you can make frustrating results less likely and critical success feel even more rewarding by tweaking the frequency they happen with bell curves. (Here’s a quick explanation and a more technical discussion.)
  • Not knowing the roots of videogame design in board game and RPG design. Understanding how board games and pen-and-paper RPGs are/were designed will help you balance combats in a videogame - especially a turn-based one where there’s an economy of actions. The AD&D 1st Edition Dungeon Master’s Guide is a fantastic source of these discussions. So is the D&D 3rd Edition version of Unearthed Arcana.The Warhammer 40k Rules are another good resource. In board games, Worker Placement games like Agricola are a great study of economy of actions. As are more complex engine-building games like Terraforming Mars.
  • Underestimating the effects players have on other players. Even in a single player game, players can communicate online and share information about a video game. But as soon as you put in any multiplayer functionality, you change the game. Chat allows player to manipulate others creating a whole new way to win through social manipulation. Trading of items will cause inflation in your game. Gold sinks will become a huge focus of player retention. And this is before we even get to gameplay. Multiplayer allows players to effectively combine their reasoning and reflexes and can change the balance of a game - even when it’s cooperative. Since I don’t think you’re making a multiplayer game, I won’t go into this more, but the usual solution of “throw more enemies at them” typically just accelerates character (and wealth) growth.

There’s a lot that goes into balancing a game, and the playstyle has a lot to do with it. What I like to do is figure out how to break the game. How can I cheat (within the rules/constraints of the game) to always win? (Coincidentally, my family and friends hate playing board games with me; and why I stopped playing FPS games competitively a decade+ ago.) Then when balancing a game I look to see what I can do to bring other parts of the game up to that level. Nerfing something is almost always counter-productive. Conversely, having more power, etc. always makes a game feel more fun.

If you can’t break the game, try to get other people to break it. If they can’t, then you focus on tweaking things.

And balancing a realistic wargame is an exercise in statistical conformance with Monte Carlo runs and the ilk.

Combat balancing will be very different according to genre and the type of battle systems : human reaction based (inputs and code), RPS vs stats (or a combo), etc.

But yeah, automated testing with runs in the 1k+ to see how the math plays out can be good for most if not all combat systems.

You can always nerf the munchkins after release, especially in PvP, where abusing the systems to always win can make the game inaccessible for new players, leading to failing player counts in the long term.

@dragonforge-dev approach is great for MMOs and some RPGs, just wanted to mention the bit about RNG and bell curves is the part that would see benefits from monte Carlo style automated testing using well defined inputs for each run, and needing a set of such inputs to do batched runs with each of these sets.

The more math influences combat results, the more automated testing will help you find oddities, abberations, mistakes, gotchas, etc.

Cheers !

Some very good suggestions so far.
I would second that it depends on the genre. Sometimes the balance is adjusted to the player stats. E.g. with low health of the player, the damage or hitchance of NPCs are tuned down, to force the effect of a close fight. “Phew, I have killed the end boss with just a few HP left!”. That can make it hard to tune and test.

@dragonforge-dev I really like going for tabletop rules of RPGs, Wargames, etc. for inspirations. Good point.

Civilization was not a Sid Meier design originally, but one of the greatest 80s tabletop gsmes, with no dices or complex combat involved. Published by Avalon Hill. I heartily recommend checking it out for brilliant design and to play it with friends around a table if you can :slight_smile:

Cheers !

Er, this can be deceptive. The chance of getting a single number remains at 5% and there is no greater likeliehood of getting numbers like 10 or 11 over 1 or 2 or 19 or 20. So long as you use random numbers.

Great advice …

This is a very astute point, because DPS seems to be the best way to figure out a balancing system. The speed idea is great, but you could also factor in weapon mass as a method for reducing block chance or parry chance, since a heavy weapon swung by a strong opponent could cause real trauma even if it hits the shield.

Everything can be a percentage, so perhaps the player can hit bad guys of the same level with 5 shots, so each hit takes 20 percent, then at level 2 the bad guy can have twice the health, but the player does double damage. Then the scaling numbers can also be an exponential curve, or you can improve the player at a different rate.

Another point … Balancing can only go so far. There was an incredible amount mathematics and simulation devoted to balancing the game of Chess, and it still isnt considered a solved or np-complete problem. Chess is actually a relatively simple game, with complexity arising from the large branching factor. If you have a branching effect then I think its best to take a DPS based method for balancing and factor in dodge and parry modifiers, dont over do it …

I’m sure we are saying the same thing, but I’m unclear on how I was unclear.

Yeah, well ok, say theres a variable that can be measured in a population like game playing ability … this number is variable between people and the worst and best game players are rare, with most people have average game playing ability … that would quite likely form a bell shaped curve.

With Dice rolling the actual number 2 is physically the same as any other number, so there is always an equal chance of getting a 2.

The chance in consecutive rolls, of two of a specific number, like 5, is (1/20)*(1/20), but the chance of another 5 given a 5 is just 1/20. They are not dependant events, but two 5’s in a row depends on the first.

(Ok i had to double check Quora answers for that last paragraph)

I think we are talking about two different things. 3d6 (rolling 3 dix-sided dice and adding them to get a number) is a common pen-and-paper bell curve.

Your most likely outcomes are 10 and 11, and the numbers next to them are the next most likely, etc. This article explains it more in-depth: 3d6 Probability Curve

You can create bell curves and tweak the outliers by doing the same thing with other random numbers. If you generate multiple random numbers and add them together for a final result, you can get your numbers to trend toward the middle.