View Issue Details

IDProjectCategoryLast Update
0021378AI War 2[All Projects] Gameplay IssueJul 11, 2019 4:42 pm
Reporterx4000BughunterAssigned Tox4000Bughunter 
Status resolvedResolutionfixed 
Product Version0.874 Basic Fleet Management 
Fixed in Version0.875 Counterattacks You Can Taste 
Summary0021378: Need the ability to see reprisal wave strengths as they build up.
DescriptionAs a little notifier thing up on the top of the screen, so players can disengage when needed. Original discussion on this is here:

But I think we also emailed about this. I can work on this myself at some point soon if you don't have time or interest, but I think this is a pretty high-priority usability thing and something I don't know the innards of, yet.

My response to them in that thread was this:
Some of that may be it being tuned wrong -- Badger has been making tweaks to that prior to and after your comments here. And other bits of that may be that it's building up a huge amount of salvage from repeated attempts to whittle down the AI in a way that basically the reprisal waves are supposed to prevent but may be communicating poorly.

Think of the SuperTerminals, where you can essentially sit there and lower AIP as much as you want while the AI forces get stronger and flood in, but you can see what is happening and stop when you're fearful that you can't handle the result anymore.

The reprisal waves, ultimately, are something I'd like to see evolve that way: as players are building up reprisal wave strength by sending their own units into an endless meat grinder, it should be showing them what the strength of the wave will be that is going to strike back at them soon if they don't finish off that planet.

So then you have a choice: if you're able to finish taking that planet and cancel the reprisal wave that would have been 800 strength or whatever and absolutely game-ending, then great. But that's your gamble and you do it eyes-open.

The more conservative approach, if you feel like your economy isn't going to be up to finishing off the planet right now, is that you see "wow that's at 50 strength already and that's scary, I'd better cool if for now and work on something else." And then the 50-strength reprisal wave washes over you a bit later, and you survive because you disengaged in time, and again that was your own risk assessment that handled it.

Right now reprisal waves are invisible in terms of what their upcoming strength will be based on your losses at a planet, and I'm not sure if fully taking the planet (and thus increasing AIP) actually even cancels the wave or not. I'll have to check with Badger on those things, and he may have some other ideas on where to take this, but personally this is what I'd like to see.

Personally I see the reprisal waves as being the antidote to players just trying to constantly whittle a way-too-strong planet down via endless attrition over time. Essentially the AI notices, and the more you keep doing it, the more the AI goes into completely-murder-you mode. It's possible that if you were whittling away at an AI planet for a good hour of gametime or something that this 400 strength wave was actually appropriate, but what is definitely not appropriate is that you were in no way warned. And it is likely not properly balanced anyway, but we can't really see that until we start getting the little notices of reprisal waves that are building up.
TagsNo tags attached.


related to 0021319 resolvedx4000Bughunter New Hackable AI Ship: Wave Mainframe (Plus Wave Adjustment) 
child of 0021310 assignedx4000Bughunter Fleets Phase 3 - Parent 



Jul 10, 2019 11:37 am

administrator   ~0052149

Credit to Underlordgc and Shoat.


Jul 10, 2019 1:21 pm

manager   ~0052156

I've added a notification when the AI is ready to send a reprisal wave against you.
Note it only shows the reprisal level (1x, 2x, etc), not the strength of the wave.

Since a unit's strength is decoupled from the AI budget there's no straightfoward way to tell you the strength of that wave until the wave is actually generated. I could try to give an approximation,
but that's risky since it's lying to the player and the resulting wave might be quite different.


Jul 10, 2019 1:30 pm

manager   ~0052157

The salvage code looks like this:
When a ship dies in the Scenario code it will update the planet.PlayerSalvage or planet.AISalvage values if appropriate.

Every second the AI says "Is there more salvage for me? If so, move the salvage into the faction external data and reset the "Must be out of combat for X seconds before sending a reprisal wave" counter.

If the AI has some salvage and has been out of combat for X seconds, then we see the collected salvage is over the "Generate reprisal wave" threshold. If so then we send a reprisal wave.


Jul 10, 2019 3:31 pm

administrator   ~0052162

Thanks for this! I sent a longer email about things, but I guess I'll also paste that here since others may want to weigh in:


I think that's definitely a step in the right direction, but I'm kind of thinking that maybe the reprisal wave mechanics need a rework in general. As in, maybe they should be based on a single planet, and build up over time there, in the form of actual ships being added to the proto-wave, so we know the strength for sure. And if the planet is lost by the AI or whatever else happens then we destroy the wave. And the budget isn't global, therefore.

A global reprisal wave budget is something that means that if you lose a lot of ships in general you're going to be getting hit, doesn't it? So if I make a concerted effort against a big scary AI planet, and I beat them to a pulp but have to refleet twice as I do so, then I'm going to get penalized the same as if I just kind of tossed those same ships against the planet and got my butt handed to me and gave up.

I also feel like it shouldn't be a "when the wave is ready" thing, but rather as I'm fighting and losing ships it passes some threshhold of "okay, a reprisal wave is now being built up and you can see the strength of it rising, and it's being delayed by your continued attack and can be canceled by you killing the AI command station plus all the guard posts, but if you don't manage that during a concerted effort where you have at least X strength on that AI planet, then you're going to get hit by this wave you see building." And X is something that rises over time as the reprisal wave gets bigger.

I realize now that I'm essentially talking about an entirely new reprisal wave mechanic, which is a lot more involved than you probably want to tackle, and a lot more involved than I had been thinking it would be. I don't mind implementing it, but I'd be grateful for your feedback/thoughts on the ideas if you don't mind. I had forgotten a few things about how reprisal waves work, and so I'd been thinking that they were kind of working like this already in some ways, based on your descriptions of intent with how they work and how they'd counter the player.

I need to make some changes to how regular waves get spawned anyway in the near future because of the stuff to make the waves more monochrome and those other bits puffin was so excited about here:

So probably I should just tackle both of those at the same time, I guess. But again, feedback is super welcome, including "I don't think that's a good idea at all for XYZ reasons," or whatever I may have overlooked.


Jul 10, 2019 4:23 pm

reporter   ~0052165

The advantage of a global reprisal budget compared to a per planet budget is that it discourages losing ships on multiple fronts at once, which seems like a reasonable way to keep the player in check: even if you have the economy to support constant refleeting during many simultaneous attacks, the threat of reprisal would keep you from winning via sheer force of attrition and you'd have to focus your forces somewhat to avoid it.
A possible solution to distinguish between fleet wipes and normal losses would be for the reprisal budget to be slowly drained as time goes on (or perhaps spent with low efficiency) : that way, only large ship losses over a short time get the AI's attention, and that fits with the idea of the AI having bigger problems to care about.


Jul 10, 2019 4:28 pm

administrator   ~0052167

I think we're trying to solve two different problems with one kind of wave, at the moment. What you're talking about has value, but frankly I'm a big fan of the player fighting on multiple fronts in general.

I think that perhaps we need two types of reprisal wave, with slightly different mechanics and definitely different strengths and triggers.

Right now the reprisal waves are basically inevitable if you just play the game normally, and I'm not a fan of there being time-based cooldowns on the AI being pissed off at you because that encourages waiting. I'd rather it be things that you do to cancel the wave or lower its strength.

My model for the per-planet ones has that built in, but the global waves... I dunno, maybe those get reduced by datacenters or something like that. That way there's this new incentive to hang onto data centers and not immediately pop them for AIP reduction? Or something like that. I think we have some interesting potential options there.


Jul 11, 2019 4:42 pm

administrator   ~0052192

Okay, here's what I'm doing:

* The general concept of salvage has been removed.
** For AIs, we're introducing a new style of counterattacks instead of reprisal waves.
** For players, we've already got plenty of ways for them to gather metal, and salvage was quite confusing as well as just cluttering the ui.
** In some ways for players, the EXP stuff takes the mental place of salvage while being different from just generating metal, anyway.

* The Scrapper Combat Factory has been renamed to just being another Combat Factory, since it no longer gathers salvage (given that's not a thing anymore).

* The prior style of Reprisal Waves has also been completely removed.
** A new Counterattacks mechanic is instead added, and doesn't use the wave framework -- it works pretty differently in general.
** AIs still gain "counterattack budget" in the same way that salvage was previously gained. However, there are some new multipliers that give more or less of this based on the AI difficulty level.
** As the AIs on a planet destroy player ships, it now turns those into counterattack forces that it will actually send against you.
** Each AI difficulty has a minimum strength amount that is required for them to build up before they even start showing the counterattack stuff.
** There is also a minimum AIP that you have to hit before the counterattacks start becoming a thing, too.

* Individual planets now store specific AI ship groups for the waves that will come out of them, same as the planet factions do for reinforcements and whatnot.
** This isn't actually applied to waves yet, but it is applied to counterattacks and make them thematically sensible things that you can deal with rather than just a mishmash of everything.

* The new counterattack mechanic works a lot like the old reprisals one, but it is per-planet rather than global for an AI, among some other differences.
** Basically as you lose ships against a planet, it will build up an increasingly-strong force that it will want to send against you in a counterattack. If it doesn't reach the minimum threshold of scariness for the difficulty of that AI, then it won't even tell you about it.
** If it reaches the minimum threshold for scariness, and it outnumbers you at least 5:1 with what it would send versus what you have on that planet, then it will start a 2 minute countdown and then do a marauder-style spawn on that planet off to the side somewhere and start wrecking you badly.
** Note that the cost for the ships that the AI has to spend is independent of the mark level of the planet, so the strength will rise much faster if you attack a planet that is far outclassing yourself. If you attack a mark 4 planet in the very early game and don't quickly destroy the command station and guard posts, you could be seeing a game-ending counterattack.
*** Then again, now that you can see the strength of the counterattack rising as you fight, and see that it's stalled out by your presence early on in, this gives you a chance to disengage and fight off the counterattack versus just being absolutely swarmed with a reprisal wave that is game-endingly strong like used to happen. It still can happen, but now it's your fault rather than something out of the blue. ;)
** The cool thing is that if you can kill the command station and all the guard posts while the counterattack is either stalled or hasn't reached zero on the countdown timer, then the counterattack completely evaporates forever and the AI just loses those theoretical ships it would have had. So you have a brief and interesting window of opportunity.
** Most of this stuff is explained in the in-game tooltips for the warning on a counterattack that is forming.
** This is very different from reprisal waves in its role in the game until now; the old reprisal waves were inevitable and AI-empire-wide, and we may do something along those lines again in the future in a revised way. But the new counterattacks are more local and are a... basically a new risk or disincentive to attack targets you're not strong enough to take, at least when it comes to trying to wear them down via attrition. You can still do it, absolutely, but you just need to go for the throat a bit faster.
** And finally, bear in mind that this is brand new and may not be balanced ideally yet. It may need to be toned down in some fashion, or made more dangerous in certain circumstances, but in the limited testing we've done thus far it does make sense what it has generated.

* There is a new counts_as_part_of_player_strength_at_planet_for_counterattack_blocking that determines if factions are able to contribute to how much strength the player supposedly has at a given planet for purposes of blocking the AI.
** Basically this lets the human resistance fighters, and also enemy-to-ai zombified ships, and also mercenaries, help block counterattack waves.

* Added a new "Write Counterattack Info In Planet Tooltips" option in the debug section of the settings menu.
** This gives you info on what is going on behind the scenes with the counterattack calculations, which is useful for debugging purposes especially in these early days when we're balancing things with this new feature.

Issue History

Date Modified Username Field Change
Jul 10, 2019 11:36 am x4000Bughunter New Issue
Jul 10, 2019 11:36 am x4000Bughunter Status new => assigned
Jul 10, 2019 11:36 am x4000Bughunter Assigned To => BadgerBadger
Jul 10, 2019 11:37 am x4000Bughunter Note Added: 0052149
Jul 10, 2019 11:37 am x4000Bughunter Relationship added child of 0021310
Jul 10, 2019 1:21 pm BadgerBadger Note Added: 0052156
Jul 10, 2019 1:30 pm BadgerBadger Note Added: 0052157
Jul 10, 2019 3:31 pm x4000Bughunter Note Added: 0052162
Jul 10, 2019 3:32 pm x4000Bughunter Relationship added related to 0021319
Jul 10, 2019 4:23 pm AnnoyingOrange Note Added: 0052165
Jul 10, 2019 4:28 pm x4000Bughunter Note Added: 0052167
Jul 11, 2019 9:56 am x4000Bughunter Assigned To BadgerBadger => x4000Bughunter
Jul 11, 2019 4:42 pm x4000Bughunter Status assigned => resolved
Jul 11, 2019 4:42 pm x4000Bughunter Resolution open => fixed
Jul 11, 2019 4:42 pm x4000Bughunter Fixed in Version => 0.875 Counterattacks You Can Taste
Jul 11, 2019 4:42 pm x4000Bughunter Note Added: 0052192