WesnothExperimental Feature RNG

From The Battle for Wesnoth Wiki


Reduce RNG influence


Implementation / Test


1. What's the idea?

The influence of the RNG upon outcomes of battles should be reduced or its distribution be made closer to expected values (EV).

2. Why do i want this?

A couple of players think, that the RNG has too great an influence on the outcome of battles. They get frustrated because they have the feeling that the RNG decides who wins or loses a game (most of them feel uncomfortable either way). They want to increase their fun by reducing the RNG influence or by changing its distribution in a way that the results are closer to expectations.

Another reason for introducing this is to improve balance of factions or maps. For this, a deterministic damage would be ideal, as the influence of luck hides or at least covers up results: ("Yes, this seems to be an overpowered strategy to play Northerners vs Undead, but we can't be completely sure because luck also favoured you quite a bit").

The most common scenario where this applies is 1v1 playing. Ladder players for example (or competitive players in general) repeatedly asked for this feature. But it also applies to team games of course and it can be just as useful to playing campaigns.

3. How exactly does this work?

There are a lot of ideas and some implementations already. I will try and give a summary of them:

Sauron's mod

Sauron's mod doesn't change RNG mechanics but instead the way in which damage is calculated. Damage is split into two parts, one that is controlled by the RNG and a second one that is deterministic.

A dark adept does 10-2 against an enemy, damage split is set to 50% respectively, chance to hit is 70% due to magic.
The RNG part of the damage will do 5 damage per hit (=50%). If a strike hits or not will be determined by the RNG and the defenders terrain defense (or like in this example defense is always 30% because of magic).
The deterministic part of the damage will do 0.7 * 5 damage (magic = 70% chance to hit and 50% deterministic percentage), which gets 3.5 damage. TODO: Describe rounding.
So, how much damage will our adept do?

  • 0/2: 0 + 3.5 * 2 = 7 damage
  • 1/2: 5 + 3.5 * 2 = 12 damage
  • 2/2: 10 + 3.5 * 2 = 17 damage

Sauron's mod also takes slow and poison into account. This is a potential problem as a deterministic damage might lead to slow and poison always hitting. The mod works around this, however and sticks to the RNG results for applying these effects.

The amount of RNG damage and deterministic damage is configurable when setting up the game. It can reach from 0% RNG + 100% deterministic (no RNG influence altogether except for slow and poison) to 100% RNG + 0% deterministic (mainline wesnoth) or anything in between.

Damage System Mod (ArtuR & NarajinX)

The damage system mod changes the damage done to a defender depending on its current defense (quote of the corresponding forum thread):

Damage each unit inflicts is centered around (100%-Defender.Defence). The range is from -25% to 25% of the original damage. Ex: If the attacker can make 10hp damage on a particular turn, and attacks a 70% defence unit, it'll do anywhere between 5% and 55% of its original damage, or from 1 to 6(rounding up). In a more obvious way, if the unit could do 100hp damage, then while attacking a unit on 70% defence, it would inflict anywhere between 5hp and 55hp. Thus the unit always inflicts damage. But the average damage is the same as it was in the original game. Thus old statistics applies. Note that in the MOD the defence influences the damage in a direct way, there are no misses.

So in other words, defence in the original game influenced the chance to hit so it might take many attacks for the statistics to balance out due to. In our mod, defence directly modifies the damage to reflect those changes so you don’t need as many attacks.

Minimum damage is 1hp (It does change the game a slight bit). Minimum drain is 1hp unless at full health. Poison and slow are the same as before. Although you always inflict damage, you are not guaranteed to poison your enemy's unit.

Fosprey's mod

Status and RNG functionality of this mod are currently unknown, but there seems to be a ready-to-use solution.

Less Luck era (zookeeper)

The less luck era realizes a reduction of the RNG via WML.

TODO: Add description how this works.

4. Testcases

Set up testcases for your idea. Try to think of testcases that cover every aspect your idea might have. Remember that it must always be possible to tell if the testcase is successfully fulfilled. Try to avoid general descriptions like "If the player's recall list is strong enough". Instead give detailed information like "If the player's recall list contains more than 4 level 3 units". It is not important that those details make too much sense as long as they enable you to set up a testcase that tells us if the feature works as expected or not.
This page was last edited on 10 June 2010, at 20:44.