Jump to content
  • 0

[435] Several possible rounding issues (armors, damage, health, etc.)


ushas

Question

(BBv435 linux)
This bug report will try to bring several issues and feedback to them together. The reason is: I think they are connected, and the connection winner is a rounding function. Please feel free to correct me in case of being wrong, and separate the bug reports. All the problems, which are reported below, stand on it's own, even if my understanding is wrong.

[Overall description]
For the player's convenience, the game shows combat variables, like damage, Damage Reduction (DR) of armors, Endurance, Health, etc., on several places as integer numbers. That is great and useful, of course. The fun starts, when sometimes the integer numbers are not equal, even though they represent the same thing. The common property of the issues is, that the difference is 1; (or 0.1 in case of decimal damage numbers in the combat log formula, see the bug report num. 4). The difference is not always an error, as the Endurance/Health behaviour (see num. 3) is probably a feature. But regardless of features and errors, in the end, the player can be confused by delivered information. And I suppose that is not a goal of the game's communication.

List of the problems:
1) In window descriptions of quality armors show different subtype DR values compare to other sources of the information;
2) Red floating damage numbers and the combat log integers are sometimes not equal;
3) Possible confusion when subtracting damage from Endurance and Health integer variables;
4) From time to time, the combat log formula shows wrong calculation of the difference between weapon damage and the corresponding DR.   

For individual details and discussion see subsequent posts.


[Overall Expected Behaviour]
The information provided to the player should be consistently presented by UI. To minimize the player's confusion, the wrongly estimated (rounded?) integers should be corrected to fit the right ones. But naturally, I would prefer if the exact numbers are shown in all places, if possible.


[speculations]
The common differences by one, and decimal info from the combat log formula, indicate that many of the combat variables are perhaps used as floats (?). Thus the game is displaying the rounded results. My speculation is, that all the calculations are probably done correctly in the real numbers space in the code. But the translation into the rounded decimals or integers, which are shown on screen, is not executed properly in several troubled places.
-> Possible rounding errors after add or subtract operations? Different rounding functions used, and/or used in incorrect places?

There are probably other instances of similar inconsistencies as the listed ones. But besides the obvious errors, I don't know whether it's useful to seek them out further. As some of the confusing information can be connected to the overall design decisions.

  • Like 1
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

(BBv435 linux)

1) In window descriptions of quality armors show different subtype DR values compare to other sources of the information:

[Description]
There are several places reporting an armor's Damage Reduction (DR) profile. In most cases we see integers, but the actual numbers (according to the combat log) are decimals (aka 6.0, 6.4). That is especially important in case of the armor's specific DR subtypes (slash, crush, pierce, burn...), which have noninteger values (aka 6.4).

The issue: In window descriptions of most of the armors with a quality enchantment (fine|exceptional|superb) show different DR subtype values compare to other sources of the information.

This is already reported. For further details (and a screenshot) refer here:
http://forums.obsidian.net/topic/70345-wrong-integer-values-of-dr-subtypes-in-descriptions-of-quality-armors-compare-to-the-character-panel-info/

As an example, I would like to pinpoint this for a Fine Hide armor:

Normal Hide armor:
Description window: DR: 5   (Pierce:6,    Freeze:6,    Corrode:3  )
Character panel      : DR: 5   (Pierce:6,    Freeze:6,    Corrode:3  )
Mouse-over tooltip    : DR: 5   (Pierce:6,    Freeze:6,    Corrode:3  )
Combat log             : DR: 5.0 (Pierce:6.3, Freeze:6.3, Corrode:2.5)

Fine Hide armor:
Description window: DR: 7   (Pierce:9,     Freeze:9,    Corrode:4  )
Character panel      : DR: 7   (Pierce:8,     Freeze:8,    Corrode:5  )
Mouse-over tooltip    : DR: 7   (Pierce:8,     Freeze:8,    Corrode:5  )
Combat log             : DR: 7.0 (Pierce:8.3, Freeze:8.3, Corrode:4.5)

-> Item's description window shows probably wrong numbers...

Notes:
- Description window is accessible by a right-click on the respective armor item;
- Character panel shows DR numbers after equiping the armor;
- Mouse-over tootltip is displayed after hovering the pointer over character's doll in the game window;
- Combat log values are taken from the the mouse-over tooltip formula, after being successfully attacked by the corresponding DR subtype.


[Expected behaviour]
I would expect either to show real numbers of DR and DR subtypes in all places, or at least use the same rounding mechanism, if that is the issue.


[Comments and speculations]

Perhaps, the description window is using different rounding function after a quality enchantment?

While testing armors with proofing enchantments, the issue was not detected. (for the applied DR subtype)

  • Like 1
Link to comment
Share on other sites

  • 0

(BBv435 linux)

2) Red floating damage numbers and the combat log integers are sometimes not equal:

[Description]
In a mouse-over tooltip formula in the combat log, a damage calculation (subtraction of DR) is shown in decimal numbers. The same resulting damage info is presented as an integer in the normal combat log mode, and as well as a red floating damage number on a game screen.

The issue: The floating damage number is sometimes lower by one than the corresponding integer in the combat log.

To imagine how to reproduce the problem, see pictures below. However, the damage numbers will not always end up different, so it may take several tries.
BB Priest attacking the BB Fighter with his own morningstar (a fine quality), the targer wears Hide armor:
19.9 - DR:5.0 = 14.9 Crush
   Combat log: 15
Floating num.: 14
7CTMfkg.jpg

The same weapon, this time with Fine Hide armor:
16.6 - DR:7.0 = 9.6 Crush
   Combat log: 10
Floating num.: 9
17IPJ5a.jpg

Freeze damage with Fine Hide Armor:
13.2 - DR:8.3 = 5.0
   Combat log: 5
Floating num.: 4
TivMHZm.jpg

-> The floating damage number is the wrong one?

 

 

[Expected behaviour]
Simply to see the same damage values in all places. I would advice to show numbers in all their decimal glory everywhere to prevent player's confusion. Or at least in the normal combat log. And then of course, correct the rounding for the floating damage value, in case this report is right. Also simultaneously, there is a possibility for an inequality of an integer subtraction from the health bar (see the issue num. 3).


[Comments and speculations]
It feels to me that the floating damage numbers are being rounded down as floor(D - 0.1) or floor(D), and the combat log integers like floor(D + 0.4) or floor(D + 0.5). I'm not sure, as the behavior wasn't consistent entirely (eg. once it was 9.5->9 and the second time 9.5->10). The reason may be connected to the fact that combat log decimal numbers are rounded too (see the bug num. 4).

  • Like 1
Link to comment
Share on other sites

  • 0

(BBv435 linux)

3) Possible confusion when subtracting damage from Endurance and Health integer variables:

[Description]
If I understand it properly - when being hit, the damage extracted from the Endurance and Health should be equal? Well that's probably in a way true, but similarly as in the issue 2, sometimes there is a difference by one. In this case I'm not talking about the same variable, but about an extraction of the same amount of damage from two variables. On screen it is done in an integer space.

The issue: Sometimes the damage taken is not the same when comparing Endurance and Health decreases in game. And the integer damage taken is not always the same as presented by combat log (or the floating damage number).

Lets demonstrate it again on BB Fighter with the Fine Hide armor. Several tries are probably needed to replicate.
Attacking by piercing weapon (a fine quality spear).
19.5 - DR:8.3 = 11.2
Endurance: -12
Health       : -11
RZnKdb7.jpg

Or with a morningstar (crushing)
12.4 - DR:7.0 = 5.4
Endurance: -6
Health       : -5
F1ZXhP6.jpg

Note: In all cases, in the beginning, the BB fighter has full health and endurance bars.

 

[Expected behaviour]
Seeing the Health and Endurance as integers in game, one would expect that the damage taken is the same as presented in the combat log, and that both their decreases are equal integers.

 

[Comments and speculations]
The difference between Health and Endurance behavior is probably a feature of the rounding in game. Again, both variables aren't truly whole numbers. I will try to present this on BB fighter, below.

To my limited knowledge the game calculates the damage taken like this:
Damage_Taken_Float.jpg
Assumptions:
Fighter lvl 4 with 18 CON (24% health increase) -> Endurance (E) = (42 + 14*3)*1.24 = 104.16; Health (H) = 5*E = 520.80.

The rounding of health variables is slightly different, it's something like floor(E+0.9), so it rounds up. In the case of BB fighter -- Endurance:105, Health:521.
Therefore in game the player sees info like this:
Damage_Taken_Integer.jpg

Here I made also assumptions about the rounding of the damage info, but the real game behavior is prehaps similar(?).

What is interesting is the highlighted part of the table, where we can see what may confuse the player. Apart of damage done inequality of the combat log and the floating number, for some damage ranges there will be different numbers subtracted from Endurance and Health compare to each other, or compare to the damage done info. I see this as one of the features of rounding tendency of the game.

Some possible not-easy solutions (which solve the other issues and bugs as well):
a) Show all the numbers as they are (eg. the first table) in game, as already suggested several times.
b) Accommodate rounding to integer numbers earlier in calculations. For example:
   - use whole numbers for DR sybtypes (eg. 4.3 -> 4) (so you don't need to deal with descriptions of armors)
   - round the weapon/ability damage after applying all the multipliers (eg. quality enchantments, % from Might, etc.), aka 15.57 -> 16

   - the Endurance of the character will be rounded right after the level up (eg. E = 104.16 -> 105, H = 5*E = 525).
       --> Then the combat log tooltip formula will look like 16 - DR:4 = 12 (this will be the real calculation already)
       --> And therefore, the real damage taken will work as an integer calculation too: E = 105 - 16 = 89; H = 525 - 16 = 509.

Not knowing whole game mechanics and the source code, I guess this will have it's own issues. So please take suggestions just as a discussion on the quest to seek possible solutions...
 

  • Like 1
Link to comment
Share on other sites

  • 0

(BBv435 linux)

4) Sometimes, the combat log formula shows wrong calculation of the difference between weapon damage and the corresponding DR:  

[Description]
When checking the combat log tooltip formula for damage calculations, some of the results don't seem to look right. And the difference is often 0.1.

For example like this:
24.6 - DR:6.3 = 18.4 Pierce
zFBgeSb.jpg
 

 

[Expected behaviour]
When you are going to show formulae with solutions, good manners are to have left and right sides equal (L=P). Otherwise it can look slightly unprofessional?...


[Comments and speculations]
Having an idea where it's coming from - the rounding! ;):) : ) Although not sure about the mechanisms of calculation. With all the multipliers like 1.15x and 3% per point of Might etc. and combination of thereof, it's inevitable for the real damage numbers to be more complex. If all works as additions, we have damage numbers like 24.62 etc.
-> Then there are perhaps two roundings applied, not knowing about each other?...

For example, if the damage number before DR subtraction is 24.62, then the formula work like
24.62 - DR:6.30 = 18.32 Pierce
Then, for whatever reason when showing this in game, the numbers are individually rounded by different function:
- 24.62 by normal rounding -> 24.6,
- 18.32 with some magic like floor(n+0.1) -> 18.4, so
24.6 - DR:6.3 = 18.4 Pierce

But there are other possibilities, how that can happen...
(eg. 24.66 -> floor(24.66) = 24.6 & (24.66-6.3) = 24.36 -> floor(24.36+0.5) = 24.4; etc)
 

  • Like 1
Link to comment
Share on other sites

  • 0

Thanks for your feedback, ushas. While some of the rounding is negligible I have reported some of these to the team, as discrepancies in some of the displayed values can be confusing. Keep it up!

 

Thanks cRichards. It can sound as an overreaction:). A lot of players, including me, will probably not detect nor analyze small differences like the combat formula stuff and health/endurance, etc. But the point is to highlight overall picture build up from details -- When you have several inconsistent behaviours or even accumulate negligible operations one over each other...

Link to comment
Share on other sites

×
×
  • Create New...