This is a 2022 update of a situation I've been writing about for more than 5 years. This post is crammed with info that isn't easy to digest, so if you're interested you'll need to focus while reading.
Leveling algorithm
To find the stats for the next level of a card, you need to add 10% to it. This is simple, easy, and obvious. Except, wait a second... Knight deals 244 damage at level 13, and 267 damage at level 14. Isn't it supposed to be 244+24=268 damage?
Once you realize this, you'll start noticing discrepancies like it all over the place. The reason: Adding 10% to the stats of a card is not the true leveling algorithm, it's a little different.
The leveling algorithm in a nutshell: The numeric stats cards have at their lowest level are their base stats. For each level, those base stats are multiplied by a special number, depending on the card's rarity. Let's check out these multipliers:
Level \ Multiplier | Commons | Rares | Epics | Legendaries | Champions | Princess towers & King Dmg | King HP |
---|---|---|---|---|---|---|---|
1 | 1.00 | N/A | N/A | N/A | N/A | 1.00 | 1.00 |
2 | 1.10 | N/A | N/A | N/A | N/A | 1.08 | 1.07 |
3 | 1.21 | 1.00 | N/A | N/A | N/A | 1.16 | 1.14 |
4 | 1.33 | 1.10 | N/A | N/A | N/A | 1.25 | 1.21 |
5 | 1.46 | 1.21 | N/A | N/A | N/A | 1.35 | 1.29 |
6 | 1.60 | 1.33 | 1.00 | N/A | N/A | 1.45 | 1.38 |
7 | 1.76 | 1.46 | 1.10 | N/A | N/A | 1.56 | 1.47 |
8 | 1.93 | 1.60 | 1.21 | N/A | N/A | 1.68 | 1.57 |
9 | 2.12 | 1.76 | 1.33 | 1.00 | N/A | 1.81 | 1.67 |
10 | 2.33 | 1.93 | 1.46 | 1.10 | N/A | 1.99 | 1.83 |
11 | 2.56 | 2.12 | 1.60 | 1.21 | 1.00 | 2.18 | 2.01 |
12 | 2.81 | 2.33 | 1.76 | 1.33 | 1.10 | 2.39 | 2.21 |
13 | 3.09 | 2.56 | 1.93 | 1.46 | 1.21 | 2.62 | 2.43 |
14 | 3.39 | 2.81 | 2.12 | 1.60 | 1.33 | 2.88 | 2.67 |
15 | 3.72 | 3.09 | 2.33 | 1.76 | N/A | N/A | N/A |
16 | 4.09 | 3.39 | 2.56 | 1.93 | N/A | N/A | N/A |
Cards improve by about 10% every level, but Princess Towers improve by 8% until level 9, and then they start improving by 10%. And the King is an absolute mess.
Example: Level 9 The Log deals 240 damage. Level 13 for legendaries has a multiplier of 1.46, so we do 240 x 1.46 = 350.4, rounded down to 350. Level 13 The Log deals 350 damage.
Now that we know the basics, I'll list the problems. This post isn't only about this algorithm, I'll be listing all kinds of problems with the leveling system. My main assumption is that interactions at equal levels should stay the same.
Problem 1: HP to Damage Ratio
Suppose a card has 35 Damage, while another card has 70 HP. This card will kill the other one in 2 attacks. However, upgrade both cards and the first card will have 38.5 --> 38 damage, while the second one will have 70 --> 77 HP. Now it takes 3 attacks.
These interactions make cards take varying number of attacks throughout levels if the HP to Damage ratio is perfect. A few interactions like this have been tweaked in the past, like Minions vs. Goblins. But a few of them remain, such as:
- Goblin taking down shields (switching between 2 and 3 attacks)
- Rascals killing Royal Recruits (4 attacks at tournament standard, 5 attacks at max level)
Rascals start with 52 damage and Royal Recruits start with 208 hitpoints, for example. A 1:4 ratio.
Really, the only solution to this is to balance more carefully, such that perfect ratios are avoided.
Problem 2: Lost Thousandths & Rarity Inconsistencies
This problem is fundamental to the leveling algorithm and uncontrollable by balancing.
X-Bow is great to examine lost thousandths, because at level 6, it has a thousand HP.
Level 7 X-Bow has 1100 HP. level 8 X-Bow has exactly 10% more hitpoints: 1210. But level 9 X-Bow has 1330 HP, which is only 9.9% more. This is related to the multipliers discussed earlier, and not rounding. X-Bow's stats at level 9 are multiplied by 1.33, so 1000 x 1.33 = 1330.
Here, X-Bow basically loses a thousandth of its HP because the multiplier is capped at 2 digits. The one missing hitpoint is what I call a lost thousandth. These lost thousandths vary with levels.
Now, a thousandth is less relevant when a card is already multiplied by a huge number, so let's show the true percentages of card upgrades to show the impact lost thousandths have:
Level | Commons | Rares | Epics | Legendaries | Champions |
---|---|---|---|---|---|
11 | Init | Init | Init | Init | Init |
12 | +9.77% | +9.91% | +10% | +9.91% | +10% |
13 | +9.96% | +9.87% | +9.66% | +9.77% | +10% |
14 | +9.71% | +9.77% | +9.84% | [+9.59%] | +9.91% |
Cumulative | +32.42% | +32.56% | +32.5% | +32.22% | +32.99% |
Do you see the problem? Firstly, because a rarity may lose a lot of the 10% stats upgrade (like legendaries at level 14, in [] brackets) all cards in this rarity may become weaker.
Individually, discrepancies like this are not easy to notice. They mostly affect the stats of big cards. Whether a Dart Goblin kills a Mega Knight in 27 or 28 attacks gets lost in the fog of battle where other units are also attacking the Mega Knight.
And it also happens for other rarities, to a smaller extent.
Cumulatively, the differences become significant. Between tournament standard and max level, Legendaries become 1.55% worse than Champions, for example. Nobody realizes it, but imagine if all legendaries were nerfed by 0.5% and all champions were buffed by 1% - this what top ladder meta is to Challenge meta.
This back-and-forth happens in all levels - between levels 9 and 11, for example, Legendaries are the one to lose 0 thousandths. This is what caused an Ice Wizard to not die to Fireball at levels 9-12 when he was reworked with less HP, but the number was not picked carefully.
Problem 3: Arena Towers Inconsistency
Princess Towers improve by 8% until level 9, then they start upgrading normally. King Tower's damage also upgrades by 8% until level 9, but his hitpoints only upgrade by 7%.
... Why?
There actually used to be a good reason behind it. If the arena towers upgraded by 10% from the start, then they would have to be significantly weaker at the first few levels. There used to be epics in the training camp, and those start at level 6. One more, and you can upgrade them to level 7. Level 7 skeletons survive to level 2 arena towers. Oh no...
But about one year ago, epics were removed from Training Camp and Goblin Stadium. So this doesn't really stop a standardization anymore.
Why is it a problem, anyway? Well, two reasons, besides being needlessly complicated:
- It teaches new players some wrong interactions, such as Minions and spirit cards dying to two tower attacks at level 6.
- Even at high levels, the way they upgrade is inconsistent with all rarities. This isn't a unique problem - all rarities have different multipliers already, as explained - but since it's so different from them, if the leveling system is to be tweaked, arena towers need special treatment to not remain inconsistent.
Problem 4: Rage, Mirror & Clone
Cards that don't have HP or Damage... There are two spices of this issue:
- Mirror and Clone. They upgrade the level they inflict on the affected cards.
- Rage (& Lumberjack): Only alters duration.
The less problematic pair is Mirror & Clone. At low levels, they allow you to upgrade cards way too high. A level 6 Mirror can create level 9 Legendaries, a level higher than it should. Level 6 Clone can make level 11 Champion clones...
But the truly problematic pair is Rage & Lumberjack. Take the following example:
- Something fundamental is that interactions stay the same when you upgrade every card in them the same. A 10% Damage improvement negates a 10% HP improvement.
- You rage your Musketeer with level 11 Rage. She gets 15 attacks.
- You max out the Musketeer and the Rage.
- Likewise, you rage your Musketeer with level 14 Rage. But this time, because of the extra 1.5sec of duration, she gets 16 attacks. Upgraded troops are supposed to get stronger attacks, not more attacks.
Together with the differences involving lost thousandths, the inconsistencies of Rage and Lumberjack make the Top Ladder gameplay slightly different from Challenge gameplay.
All of these cards are quite detached from the rest of the leveling algorithm, so they need individual balancing, like how Freeze was addressed by giving it a little damage. I want to talk math at the bottom of the post, so I'll list some possible balances here:
- Make the rage effect expire a bit earlier for higher-leveled cards
- Turn the spell into a spirit (please!)
- Give Rage a scalable effect, such as damage in a small radius.
Problem 5: Rounding Down
I'm mentioning this last because it's unsolvable and can only be mitigated on case-by-case basis.
Cards that have very weak damage can lose a significant percentage of it from the final rounding down step of the algorithm. Golem loses a tiny 0.01% of its HP from rounding because it has a lot of hitpoints, and that's good.
On the other hand, X-Bow at tournament standard loses 1.4% of its damage (41.6 --> 41). At max level, it loses only 0.2% of it (45.76 --> 45). Which means a max level X-Bow technically deals 1.2% more damage than a tournament standard X-Bow. And at some levels, it's even worse, such as level 12 where X-Bow loses 1.6% of its damage.
The Solution
There is really only one good solution. It's very straightforward and:
- Solves the problem of lost thousandths almost completely
- Makes standardized numbers possible
- Eradicates half of all wrong interactions on its own.
- The more it's delayed, the more time gets sunk into fixing broken interactions that could be fixed by changing the underlying system. (like the messed up Ice Wizard interaction earlier, which forced a maintenance)
Even the transition to this leveling algorithm wouldn't be painful, the introduction of level 14 was also a big change but it didn't change much in terms of meta: card balance is really just not that sensitive*.*
The idea is to also standardize multipliers across rarities for each level. There are a few ways to go about this, I'll detail my favorite one: Instead of starting them as 1.00 from 1-3-6-9-11 depending on the rarity, always use level 3 as the base level. Even if the card doesn't actually have level 3.
In the table below, UM means Universal Multiplier. This number would apply the same to all rarities and arena towers.
Level | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
UM | 0.83 | 0.91 | 1.00 | 1.10 | 1.21 | 1.33 | 1.46 | 1.60 |
Level | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|
UM | 1.76 | 1.93 | 2.12 | 2.33 | 2.56 | 2.81 | 3.09 | 3.39 |
For this, a pretty fundamental shift of balancing would need to be made. Every common, epic, legendary, champion, and arena tower would need their base number to be adjusted. There is also the opportunity to standardize some numbers right off the bat, but for a start I'd just get numbers to as close as possible to where they are today.
I actually already tried this and the result was good.
How does this help with anything?
- Without eradicating lost thousandths, it eradicates all of their bad effects. In fact, better than any additional precision could. As all cards share one multiplier per level, the lost thousandths sync up between rarities. So the differences would only arise between different card levels, which I don't find to be important.
- It would help match more numbers and get more consistent interactions. For example, cards that deal Skeleton damage currently deal 81 or 84 damage based on their rarity, because 81 is for example not a multiple of 2.12, the rare multiplier. When cards are forced to have different numbers, it becomes more likely that different interactions arise from cards that seem to deal the same damage. With this system rework, you just give these cards the same base stats, and it's all sorted out.
- It's simpler, also Arena towers follow it too, so that's cool.
- This could allow cards to exist at a level below the minimum they can be obtained. So maybe a level 6 Mirror would be able to create a level 8 Princess, something that presently can't exist.
I wanted to remake the post to bring attention to the issue again and to reflect level 14, various balance changes, the Freeze rework, the Mirror buff, and the removal of epics from Arena 1. Also, to correct a few mistakes and improve the writing. I'll likely be linking back to this in my future detailed posts.
Thank you for reading.
External link →