Armor balance discussion

Post ideas & suggestions you have pertaining to the game here.
User avatar
0xABCDEF
Militia Lieutenant
Militia Lieutenant
Posts: 124
Joined: Thu May 19, 2016 12:58 am
Location: Was destroyed by a Phobos-class dreadnought in the Eridani system

Here is a sample of the armor balance algorithm, in case anyone is wondering about how it works. Balance is calculated in Balance Points; a positive amount means overpowered and a negative amount means underpowered.

You will have to look at the standard armor stats, damage fractions per level, and standard weapon damage per 180 ticks

1. Compare max HP to standard at level: 100 * log2(maxHP / stdMaxHP). For instance, if our max HP is half the standard, subtract 100 BP. If twice the standard, add 100 BP.
2. For each damage type: Compare adjustment percentage to standard value. If either value is 0, treat it as 1. 100 * log2(stdDamageAdj / damageAdj). If we reflect this damage type, add 50 BP. Multiply the total by the damage type fraction at the level.
3. If we are radiation immune and below the intrinsic immunity level (7), then add 25 BP. If vulnerable and above level 7, then subtract.
4. If our blindingDamageAdj < 50 (immune) and our level is below 6, then add 10 BP. If blindingDamageAdj > 50 (vulnerable) and our level is above level 6, then subtract.
5. If our EMPDamageAdj < 50 and our level is above 9, then add 25 BP. If EMPDamageAdj > 50 and level is above 9, then subtract.
6. If deviceDamageAdj < 50 and our level is above 11, then add 25 BP. If deviceDamageAdj > 50 and level > 11, then subtract.
7. If shatter immune, add 20 BP
8. If disintegration immune, add 10 BP
9. Compare regen per 180 ticks to standard weapon damage per 180 ticks. If regen < damage, then add 100 * log2(damage / (weapon - regen)) BP. Otherwise, add 500 BP because we are essentially immune to the standard weapon.
10. If we have a decay per 180 ticks, then compare it to standard weapon damage per 180 ticks. Add 300 * log2(damage / (damage + decay)) BP.
11. For distribution, the formula is the same as regen, except the bonus caps at 125 BP.

These are only a few of the factors that the algorithm accounts for because it is very complicated. I will document the rest of it on the wiki later. The algorithm code is on GitHub.

One obvious limitation of the algorithm is that it does not take much context into account. All the standard values are simply assumptions and actual balance will vary.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

0xABCDEF wrote:
Mon Mar 27, 2017 6:25 am
Here is a sample of the armor balance algorithm, in case anyone is wondering about how it works. Balance is calculated in Balance Points; a positive amount means overpowered and a negative amount means underpowered.

You will have to look at the standard armor stats, damage fractions per level, and standard weapon damage per 180 ticks

1. Compare max HP to standard at level: 100 * log2(maxHP / stdMaxHP). For instance, if our max HP is half the standard, subtract 100 BP. If twice the standard, add 100 BP.
2. For each damage type: Compare adjustment percentage to standard value. If either value is 0, treat it as 1. 100 * log2(stdDamageAdj / damageAdj). If we reflect this damage type, add 50 BP. Multiply the total by the damage type fraction at the level.
3. If we are radiation immune and below the intrinsic immunity level (7), then add 25 BP. If vulnerable and above level 7, then subtract.
4. If our blindingDamageAdj < 50 (immune) and our level is below 6, then add 10 BP. If blindingDamageAdj > 50 (vulnerable) and our level is above level 6, then subtract.
5. If our EMPDamageAdj < 50 and our level is above 9, then add 25 BP. If EMPDamageAdj > 50 and level is above 9, then subtract.
6. If deviceDamageAdj < 50 and our level is above 11, then add 25 BP. If deviceDamageAdj > 50 and level > 11, then subtract.
7. If shatter immune, add 20 BP
8. If disintegration immune, add 10 BP
9. Compare regen per 180 ticks to standard weapon damage per 180 ticks. If regen < damage, then add 100 * log2(damage / (weapon - regen)) BP. Otherwise, add 500 BP because we are essentially immune to the standard weapon.
10. If we have a decay per 180 ticks, then compare it to standard weapon damage per 180 ticks. Add 300 * log2(damage / (damage + decay)) BP.
11. For distribution, the formula is the same as regen, except the bonus caps at 125 BP.

These are only a few of the factors that the algorithm accounts for because it is very complicated. I will document the rest of it on the wiki later. The algorithm code is on GitHub.

One obvious limitation of the algorithm is that it does not take much context into account. All the standard values are simply assumptions and actual balance will vary.
Thanks, that should be useful. :)
Mischievous local moderator. She/Her pronouns.
PM
Fleet Admiral
Fleet Admiral
Posts: 2570
Joined: Wed Sep 01, 2010 12:54 am

Kiting Ventari is possible, but people still get fried by them. Ventari do have respectable attack range, and sometimes, player may not have the option of kiting either due to no howitzers (e.g., uses slam/tritium/plasma cannon or Lamplighter for WMD), stuck on a (timed or escort) mission and attacked by drive-by Ventari, trying to kill the Ventari station (because cruisers just keep coming until station is gone), or simply ambushed.

And that is only for player vs. Ventari. AI does not kite, and AI vs. Ventari tends to result in ionized AI ships.

Point is device-disrupt is a significant danger to the player and a powerful debuff to enemies, and just because Ventari can be kited does not always mean that it is easy, not to mention that the AI does not kite Ventari. Then there may be more adventures or extensions that feature enemies with ionizing weapons. Device disrupt balance should not be based on Ventari alone.
Download and Play in 1.9 beta 1...
Drake Technologies (Alpha): More hardware for combat in parts 1 and 2!
Star Castle Arcade: Play a classic arcade game adventure, with or without more features (like powerups)!
Playership Drones: Buy or restore exotic ships to command!

Other playable mods from 1.8 and 1.7, waiting to be updated...
Godmode v3 (WIP): Dev/cheat tool compatible with D&O parts 1 or 2.
Derakon
Militia Lieutenant
Militia Lieutenant
Posts: 175
Joined: Sat Jan 21, 2017 2:53 am

JohnBWatson wrote:
Mon Mar 27, 2017 2:48 am
Damage falloff reduction introduces problems - the Flenser is already the only weapon you need from the Battle Arena to Jiang's Star, and a well enhanced turbolaser turret can handle any gunships up until the Ares show up. While I like the idea of some factions making use of outclassed weapons, the key to such a faction's relevance should be its use of interesting tactics or gimmicks to overcome its disadvantage, rather than the mechanical reduction of said disadvantage.
The LOTOR (or whatever Shrike calls them now) are able to make good use of lasers in the endgame chiefly because they a) bring a massive weight of fire to bear on the player, and b) have access to unusually powerful laser weapons (dealing IIRC in the neighborhood of 40 damage/shot). Even with all that I think they feel more scary than they actually are -- if you get swarmed by a dozen ships all firing lots of fast projectiles at you with your shields dropping in under a second, you're going to be worried, even if it turns out those projectiles aren't doing a whole lot to your armor.

Personally my hot take on damage types and armor is that the level-based damage reduction should be removed. Let the listed resistances for the armor be the actual resistances; this will probably require tweaking the listed resistances. But this gives the developer a lot more control over which weapons are effective against which targets; you can let the Flenser continue to be effective against targets whose armor doesn't have strong kinetic resistance, but make the set of ships that show up with such armor become increasingly rare as time goes on.
JohnBWatson
Fleet Officer
Fleet Officer
Posts: 1452
Joined: Tue Aug 19, 2014 10:17 pm

The only change that would introduce would be the addition of very many largely meaningless numbers to the interface(as, as you said, most high level ships would have to have arbitrarily high resistance to low level damage types) and forcing modders to specify said large numbers for every new piece of armor.

If one wants to introduce a high level enemy that doesn't resist low level damagetypes, a negative resistance to them can simply be specified. As the default is strong resistance, it makes more sense to have the UI point out when an armor doesn't fit the trend.

PM wrote:
Mon Mar 27, 2017 12:46 pm
Point is device-disrupt is a significant danger to the player and a powerful debuff to enemies, and just because Ventari can be kited does not always mean that it is easy, not to mention that the AI does not kite Ventari. Then there may be more adventures or extensions that feature enemies with ionizing weapons. Device disrupt balance should not be based on Ventari alone.
* It's worth noting that any station guarded by slow capships can be bombarded with a howitzer until the capital ships approach the player, at which point the player can retreat, wait for the capital ships to return to patrolling, and finish the station off. Indeed, this is the only way to kill many such stations without severely overleveled equipment. I've suggested adding spawn delays and/or spawn limits to major station guards in order to limit this.

The issue there is that how a status effect is presently used plays a huge part in balancing it. Right now, the only users of device disrupt are a sluggish capital ship with poor range and a station guarded by same, so considering immunity to it valuable will leave you with underpowered armor. If device disrupt were instead fielded by a fast, agile gunship that could pursue a weakened player, it would be much more of a threat, and nobody would want armor that isn't immune.

Regarding the recent topic of discussion, I like the idea of some factions prioritizing more primitive damage types more than others. In particular, groups like the Sung and Iocrym, used to fighting 'lesser' civilizations, should be weaker against advanced damagetypes but be much more resistant to attack from more primitive ones. Military factions like the Fleet and Ares spend most of their time and resources fighting other advanced state funded armies, so they probably wouldn't care as much about protecting themselves from blast and laser weapons. Perhaps a more elegant solution to the innate resistances question would be the implementation of a 'Specialized' tag that halves them?
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

JohnBWatson wrote:
Mon Mar 27, 2017 6:44 pm

If one wants to introduce a high level enemy that doesn't resist low level damagetypes, a negative resistance to them can simply be specified.
This is massively harder than you think. It is by no means a 'simple' thing to accomplish.
Mischievous local moderator. She/Her pronouns.
PM
Fleet Admiral
Fleet Admiral
Posts: 2570
Joined: Wed Sep 01, 2010 12:54 am

JohnBWatson wrote:The issue there is that how a status effect is presently used plays a huge part in balancing it. Right now, the only users of device disrupt are a sluggish capital ship with poor range and a station guarded by same, so considering immunity to it valuable will leave you with underpowered armor.
Maybe after armor gets rebalanced, but currently, not really; the only standard armor with ion-immunity is the first place is Taikon's carbide armors, and their hp is comparable to balanced armor of the same level. Carbides pay for immunity with higher mass (but still low enough for Sapphire to equip) and higher cost. Once solar armor becomes less useful for whatever reason (usually by Ares space), I look for either Taikon or Iocrym armor to equip. They are strong and immune to radiation, EMP, and device damage. The spreadsheet indicates that the Taikon carbide armors are relatively overpowered, and I agree with that.

Also, range 60 (for disruptors) is not poor, that is the baseline, and not short in any case. Only howitzers and lancers consistently have more range. Sluggish does not mean that much when they have turrets and average or better range, especially if you are forced to go into their space unexpectedly or unprepared.

As for things being used playing a huge part of balance, by that reasoning, laser resistance should be worth significantly more than kinetic resistance because the vast majority of enemies that appear in missions at low levels (and in Charon) is Charon Pirates. Kinetics get used by Centauri (less important now that Arco has random weapons) and other insignificant enemies.
The reason simply adding resistances to armor is hard is because the armor quickly get inflated resistance numbers as level rises. -100 resistance on a high-level armor that innately has +300% or +600% or more resistance is a drop in the bucket. Armor level is extremely sensitive to the built-in damage level curve.

In addition, damage that is six or more levels below armor or shield level (e.g., laser or kinetic on level 7+ item) is not displayed, presumably because it is considered obsolete. Someone who adds high-level armor that takes high damage from laser/kinetic probably needs to add custom tag to indicate vulnerability.
Download and Play in 1.9 beta 1...
Drake Technologies (Alpha): More hardware for combat in parts 1 and 2!
Star Castle Arcade: Play a classic arcade game adventure, with or without more features (like powerups)!
Playership Drones: Buy or restore exotic ships to command!

Other playable mods from 1.8 and 1.7, waiting to be updated...
Godmode v3 (WIP): Dev/cheat tool compatible with D&O parts 1 or 2.
Derakon
Militia Lieutenant
Militia Lieutenant
Posts: 175
Joined: Sat Jan 21, 2017 2:53 am

PM wrote:
Mon Mar 27, 2017 9:13 pm
As for things being used playing a huge part of balance, by that reasoning, laser resistance should be worth significantly more than kinetic resistance because the vast majority of enemies that appear in missions at low levels (and in Charon) is Charon Pirates. Kinetics get used by Centauri (less important now that Arco has random weapons) and other insignificant enemies.
Yes, that's correct. :) Ideally any "balance number" would take into account how many red-faction ships use that damage type, how common those ships are, how hard that damage type is to dodge (based on projectile velocity, firing rate, and range for the ships that use it, weighted by how common those ships are), how hard the ships that use it are to kill...it's very difficult to accurately boil down armor quality to a single number.
PM
Fleet Admiral
Fleet Admiral
Posts: 2570
Joined: Wed Sep 01, 2010 12:54 am

That is fine if Human Space always assumes Stars of the Pilgrim. It may be different in another possible adventure in New Beyond that downplays Charon and Korolov, features and promotes kinetic users (like say... Urak), and/or gives most ships random weapons.

Tangentially related, until Sung armor resistance was changed from particle to blast recently, particle damage weapons was almost useless after New Beyond for the player because almost everyone aside from midgame factions with early-game enemies (i.e., Outlaws or Marauders) resisted or reflected particle. Because of that, resistance of Sung (the equivalent of Charon Pirates in Ungoverned Territories) was changed to blast and now both particle and blast weapons are useful for player.
Download and Play in 1.9 beta 1...
Drake Technologies (Alpha): More hardware for combat in parts 1 and 2!
Star Castle Arcade: Play a classic arcade game adventure, with or without more features (like powerups)!
Playership Drones: Buy or restore exotic ships to command!

Other playable mods from 1.8 and 1.7, waiting to be updated...
Godmode v3 (WIP): Dev/cheat tool compatible with D&O parts 1 or 2.
PM
Fleet Admiral
Fleet Admiral
Posts: 2570
Joined: Wed Sep 01, 2010 12:54 am

For modders, damageAdj field overrides the damage curve for specified types, where damage taken is (damageHP * resist / 100). damageAdj="laser:100" makes laser do normal damage, damageAdj="laser:400" takes four times as much damage, and damageAdj="laser:0" makes the armor immune to lasers. However, lasers that hit for four times normal damage show up as -75% on the item stats. It is confusing. I guess it means (damage / (1 + onscreen stats)).

hpBonus adds to the damage curve, it is okay if you want to make armor comparable to standard, but not if you do not want interference from damage curve.
Download and Play in 1.9 beta 1...
Drake Technologies (Alpha): More hardware for combat in parts 1 and 2!
Star Castle Arcade: Play a classic arcade game adventure, with or without more features (like powerups)!
Playership Drones: Buy or restore exotic ships to command!

Other playable mods from 1.8 and 1.7, waiting to be updated...
Godmode v3 (WIP): Dev/cheat tool compatible with D&O parts 1 or 2.
Derakon
Militia Lieutenant
Militia Lieutenant
Posts: 175
Joined: Sat Jan 21, 2017 2:53 am

PM wrote:
Mon Mar 27, 2017 10:52 pm
That is fine if Human Space always assumes Stars of the Pilgrim. It may be different in another possible adventure in New Beyond that downplays Charon and Korolov, features and promotes kinetic users (like say... Urak), and/or gives most ships random weapons.
Yes, that's a good point. Item balance can only ever be considered in the context in which that item may be used. Which just adds to the impossibility of deriving an accurate-but-context-free value for armor balance!

Regarding resistance displays -- as I understand it, the displayed numbers are meant to be read as an effective multiplier of the armor's health against that damage type. I.e. 600% particle resistance means that the armor has effectively 600% more health against particle damage. IMO it would be less confusing if resists were displayed as percentile damage reduction. The same amount of resistance would display as 83% under such a scheme (with 0% meaning no modifier and 100% meaning immunity). This is the same system that most games with "elemental resistances" use -- you get 50% fire resistance, you don't get 200% HP vs. fire.
PM
Fleet Admiral
Fleet Admiral
Posts: 2570
Joined: Wed Sep 01, 2010 12:54 am

Re: Regarding resistance displays...
It is fairly straightforward when positive. Not so much when stats read negative, maybe. If it reads -90%, your armor/shield will take ten times the damage, not 90% more damage. I guess I read that wrong. I should read it as 100%-90% hit points so that armor has 10% max hp. That is not very intuitive.
IMO it would be less confusing if resists were displayed as percentile damage reduction.
Those are the values that the modder needs to input into the damageAdj line for each element override. What the modder sees in his code is different than what the item displays.
Download and Play in 1.9 beta 1...
Drake Technologies (Alpha): More hardware for combat in parts 1 and 2!
Star Castle Arcade: Play a classic arcade game adventure, with or without more features (like powerups)!
Playership Drones: Buy or restore exotic ships to command!

Other playable mods from 1.8 and 1.7, waiting to be updated...
Godmode v3 (WIP): Dev/cheat tool compatible with D&O parts 1 or 2.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Another thing to note: That algorithm only covers relative balance based on what armor is supposed to be now. So the absolute strength isn't actually considered. How do people feel about the non-relative strength of armor? Does armor in general need to be moved up or down in strength?
Mischievous local moderator. She/Her pronouns.
PM
Fleet Admiral
Fleet Admiral
Posts: 2570
Joined: Wed Sep 01, 2010 12:54 am

Normal armor seems okay. Heavy, massive armor (10+ tons) seems to have far too few hit points (i.e., not much more hp than normal armor) to ever be worth it. The Behemoth armor may be useful due to reflecting everything, maybe worldship armor for the immunities if I get it early enough (never do), but I always gravitate toward light or medium armor (that weigh no more than blast plate) regardless of ship.
Download and Play in 1.9 beta 1...
Drake Technologies (Alpha): More hardware for combat in parts 1 and 2!
Star Castle Arcade: Play a classic arcade game adventure, with or without more features (like powerups)!
Playership Drones: Buy or restore exotic ships to command!

Other playable mods from 1.8 and 1.7, waiting to be updated...
Godmode v3 (WIP): Dev/cheat tool compatible with D&O parts 1 or 2.
george moromisato
Developer
Developer
Posts: 2997
Joined: Thu Jul 24, 2003 9:53 pm
Contact:

This is a great discussion--thank you! Let me try to summarize some of the key points so far:

1. MASS BALANCE
I'm not sure if there's consensus, but I think the current balance algorithm undercounts mass. The current algorithm gives the following balance values:

Code: Select all

mass	balance
1.5	25
2	15
2.5	7
3	0
3.5	-6
4	-10
4.5	-15
5	-18
5.5	-22
6	-25
6.5	-53
7	-56
8	-60
9	-65
10	-68
12	-75
14	-106
16	-110
18	-115
20	-118
-100 balance means the armor needs twice as many HP as standard to be balanced. Thus the algorithm is saying that 14 ton armor should have twice as many HP as 3 ton armor. Is that reasonable? Or should it be higher?

2. SPECIAL ARMORS: For solar armor and stealth armor, I think we need special code. We talked previously about fixes to solar armor (to offset power use instead of create fuel); and we need to fix stealth in general (e.g., to break target locks, etc.).

3. DAMAGE EFFECTS: The balance calculations for damage effects might not be correct. They're currently:

Blinding-immune: +10
Rad-immune: +25
EMP-immune: +25
Device-disrupt-immune: +25
Shatter-immune: +20
Disintegration-immune: +10

Is rad-immunity too low? How about EMP?

NOTE: I also think we should fix the infinite stacking of the EMP effect, but that's a separate issue.

4. BLAST PLATE, CERALLOY: Someone suggested that perhaps blast plate should be more vulnerable to laser/particle and that ceralloy should be slightly more vulnerable to kinetic/blast. I like the idea of making these armors more divergent. NOTE: Blast plate is comparable to heavy ceralloy (both 6th level). The current algorithm thinks both are equally powerful (overpowered by about 30%).

5. REGEN: The current algorithm undercounts regen and decay. What are the proper values? Does anyone have any suggestions? V10 powered armor regens at 10% the rate of a level 4 shield and consumes 60% of the power (with 4 segments).

6. DAMAGE ADJUSTMENT CURVES: I'm not sure what to do here. I like the curves, but I'm open to changing them. I'll start a different thread on this so we can discuss.
Post Reply