Planet Roguelike-Dev

September 11, 2017

The Ground Gives Way

Predictable Armour and Resistance

The Problem With Armour and Resistance

I quite like the idea of how armour and elemental resistance work in the game. But I don’t quite like how it works out in practice.

The idea is that if you have x% armour (or elemental resistance), then every point of damage will be rolled against x% and be absorbed if successful.

I like this because it is a very simple idea, very easy to communicate and scales well with damage without using complicated formulae.

The problem is that it is extremely unreliable and random in practice. If you have 25% armour and take 4 damage, you may take 0,1,2,3 or 4 damage. It is both possible to block more than 25% and less than 25%. On average it will block 25% which also sounds good in theory. However, the reason it works badly in practice is:

  • TGGW is a short and focused game. The number of elemental attacks done in a game are typically not too many. An avarage of e.g. 25% lack meaning if it is about one or two hits.
  • 1 point of damage is a huge deal in TGGW (10% of starting Hp), so the difference between taking 0 and 4 points of damage (for example) is an extreme difference. In a game where damage hits were typically 100 points of damage I think the current system would have worked much better.

Making Absorption Predictable

I have come up with a more predictable armour/resistance scheme that is a little bit more complex, but still similar to how it used to work.

The idea now is that armour and resistance absorb the percentage flat. E.g. if you take 4 damage and have 25% armour you will always absorb 1 damage exactly. However, in most cases the percentage of the damage is not an integer but a fractional number. A fractional number (with non-zero decimals) represent a number lying in-between two integers. For example 25% of 7 is 1.75 which lies between 1 and 2. In the new system, if you have 25% armour and take 7 damage you will absorb 1 damage, but you also have a 75% (coming from the .75 part) to absorb a second point of damage.

Generally: if you have x% armour and take y damage, then the damage absorbed will be x%*y rounded down + a chance to absorb one more. This chance is determined by the fraction. I think this is simplest to explain with some examples:


35% armour, take 4 damage: 4*35% = 1.4 -> absorb 1 damage, with a 40% chance to absorb 2 damage.

10% armour, take 6 damage: 6*10% = 0.6 -> absorb 0 damage, with a 60% chance to absorb 1 damage.

50% armour, take 1 damage: 1*50% = 0.5 -> absorb 0 damage, with a 50% to chance absorb 1 damage (just like before).

As a consequence, the system works exactly like before if you only take 1 damage. The difference and predictability starts to show for higher damage hits.

The same principles is applied to resistances and weaknesses. As you can see, the randomness in how many points of damage to absorb is limited to one single point: either you absorb x damage or you absorb x+1 damage.


This makes armour and resistances more valuable as they give a guarantee to absorb some high damages. It also gives monster resistances more impact as they give similar guarantees.

Overall change makes armour and resistances more important both for monsters and the player and makes elemental damage more interesting and less random and arbitrary.




The post Predictable Armour and Resistance appeared first on The Ground Gives Way.

by BtS at September 11, 2017 12:25 PM

September 09, 2017

Roguelike Radio