View Issue Details

IDProjectCategoryLast Update
0022676AI War 2Gameplay IssueJun 14, 2022 8:50 pm
ReporterRocketAssistedPuffin Assigned ToNRSirLimbo  
Severitymajor 
Status resolvedResolutionfixed 
Product Version1.308 Mega Performance 
Summary0022676: Major Stacking Issues
DescriptionPrompted by someone mentioning the game became much easier when the stacking limit was lowered as much as possible (so stacks were very high), I started to investigate how the extra damage and shots based on stack count worked exactly so I could try and fix it.

I found that the extra shots are added onto the weapons current salvo. If it would fire 1 shot, it now has 2. If it would fire 10, it now has 11, so on. This has two major problems:

1): It cannot use the extra shots on the same target, i.e the restriction that multi-shot has in requiring a separate target for each one. This means if for instance, you have an Armored Golem or a Spire Frigate, and the AI forces are in numbers high enough to create large stacks, it essentially has a cap on how much damage a stack can do. The extra damage per unit stops at 5 units in a stack. After that, even if it has 1,000 units, it's not gaining anything more in this scenario, as none of those extra shots are usable.

2): Units that have multi-shot salvoes do not gain an extra salvo. Instead, that salvo gains 1 extra shot. This means that, something like a V-Wing, would be gaining 100% of its base damage each time it is granted an extra shot (because it only fires 1 at a time). This is okay. Something like a Pike Corvette would only gain 20% of its base damage however, because it fires 5 at a time normally, and it would go up to 6. This results in stacks of such units being far weaker than others.

I've tested both of these scenarios in the Test Chamber. Can visually see the shots, check the damage dealt, how much the targets lost, and it all seems to match what I've said here.

Additional note 1): The second point has a curious interaction with status effects. If a wave of MLRS Corvettes was sent and it was highly stacked, it would be weaker than if it wasn't. Hitting stacks with something such as Paralysis or Engine Stun causes it to split the stacks. This would mean for such a unit, using Spider Turrets can increase their damage output.

Additional note 2): Units that cause status effects and which have multi-shot are doubly affected by stacking. Status effects currently are not boosted in a stack, and the way the extra shots work mean they also gain less power from them. So in effect, a wave of AI Spiders, stacked, has a small portion of the effect it should.

Additional note 3): Factions are affected too. The Nanocaust Abomination unit has a weapon with 16 shots in a salvo, and is allowed to stack. This would mean when it gains extra shots, its power has increased by only 6.25%.

I think I have everything here correct. If need be I can go and check anything again.
TagsNo tags attached.

Relationships

parent of 0022334 resolvedNRSirLimbo Units with debuffs (such as Engine Stun) are affected a fair bit by being stacked. 

Activities

RocketAssistedPuffin

Jan 20, 2020 6:49 pm

reporter   ~0055681

Image of a stack of Pike Corvettes versus 10 Fusion Bombers. Normally they'd have 5 shots in a salvo. There are enough of them in this stack to gain 1 shot, and now have 6.
PikeSalvo.jpg (69,793 bytes)   
PikeSalvo.jpg (69,793 bytes)   

Chris_McElligottPark

Jan 21, 2020 5:05 pm

administrator   ~0055698

What about the damage buff that comes into play with stacks of units? Doesn't that help offset this quite a bit?

RocketAssistedPuffin

Jan 21, 2020 5:15 pm

reporter   ~0055699

Last edited: Jan 21, 2020 5:16 pm

No. It caps out at only 5 stacks. Anything beyond that adds nothing.

I'd note that I have a save where the player put stacking for the AI to the most intense setting possible. The fight is won fairly easily. If you change it to be the other way (i.e almost no stacking) they lose. The AI has a lot of MLRS and Pike Corvettes, both units affected by these issues.

Chris_McElligottPark

Jan 21, 2020 7:14 pm

administrator   ~0055703

Would a simple solution simply to let it do more than 5x damage? That would have the effect of stacks vaporizing large ships, though. But we can't really add a lot of extra shots or salvos without major performance degradation of just the sort we're trying to avoid.

RocketAssistedPuffin

Jan 21, 2020 7:37 pm

reporter   ~0055705

Last edited: Jan 21, 2020 7:39 pm

It'd help a bit I would think, to a point. I imagine there'd be cases of a lot of overkill, since the player doesn't stack as much.

Then I'd worry if we kept the extra shots in, but had the damage go up to...even 30x, maximum, then we'd get odd cases like a stack of 50 MLRS Corvettes doing 30x damage of 1, then gaining those extra shots, which even with the problem noted...might swing it the other way.

An extreme example, however.

Not sure how to handle it safely with no oddities. Currently if AI stacks were...9 units for instance, then it has the 5x damage, but no extra shot so it's nerfed compared to having a single unit in each stack.

Maybe just have the damage go up far more, but...maybe a cap on how large a stack can get? Say the extreme case above of 50? I dunno, you know far more about this than I do.

Though not having extra shots would then...make debuffer units worse again.

Dunno, maybe we could just do what happened in 4.0 of Classic and go farther on the whole "centerpiece" thing, and hopefully have less swarms of units in the first place? I'm looking at this sort of thing currently but maybe it can go...more.

Vortex

Jan 22, 2020 4:13 am

reporter   ~0055708

Wouldn't it be easier if you just do something like:
DamagePerShot = BaseDamagePerShot * StackCount * BaseNoOfShots / AdjustedShotsFired

If you then have:
BaseDamagePerShot: 50
BaseNoOfShots: 5
You then calculate AdjustedShotsFired to maybe BaseNoOfShots + (int)(BaseNoOfShots/10) (ie add one shot per 10 ships)

If StackCount is 5 you get DamagePerShot = 50 * 5 * 5 / 5 = 250
If StackCount would be 25 you get DamagePerShot = 50 * 25 * 5 / 7 = 893 (instead of 1250 but with (potentially) 2 extra shots)

At least then the math is correct and the stacks have the damage output you would expect.
You can then tweak when each ship gets an extra shot so debuffers could get extra shots at a faster rate.

tom.prince

Jun 14, 2022 8:50 pm

developer   ~0066993

I think this has been resolved by NRSirLimbo's shot compression work.

Issue History

Date Modified Username Field Change
Jan 20, 2020 6:47 pm RocketAssistedPuffin New Issue
Jan 20, 2020 6:49 pm RocketAssistedPuffin File Added: PikeSalvo.jpg
Jan 20, 2020 6:49 pm RocketAssistedPuffin Note Added: 0055681
Jan 20, 2020 6:59 pm RocketAssistedPuffin Relationship added parent of 0022334
Jan 21, 2020 2:37 pm BadgerBadger Assigned To => Chris_McElligottPark
Jan 21, 2020 2:37 pm BadgerBadger Status new => assigned
Jan 21, 2020 5:05 pm Chris_McElligottPark Note Added: 0055698
Jan 21, 2020 5:15 pm RocketAssistedPuffin Note Added: 0055699
Jan 21, 2020 5:16 pm RocketAssistedPuffin Note Edited: 0055699
Jan 21, 2020 7:14 pm Chris_McElligottPark Note Added: 0055703
Jan 21, 2020 7:37 pm RocketAssistedPuffin Note Added: 0055705
Jan 21, 2020 7:39 pm RocketAssistedPuffin Note Edited: 0055705
Jan 22, 2020 4:13 am Vortex Note Added: 0055708
Jun 14, 2022 8:50 pm tom.prince Assigned To Chris_McElligottPark => NRSirLimbo
Jun 14, 2022 8:50 pm tom.prince Status assigned => resolved
Jun 14, 2022 8:50 pm tom.prince Resolution open => fixed
Jun 14, 2022 8:50 pm tom.prince Note Added: 0066993