Author Topic: Oddly large waves of low-cap ships  (Read 1040 times)

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Oddly large waves of low-cap ships
« on: December 11, 2010, 11:27:01 am »
I've seen a couple different reports over the last few days (one from Spikey about snipers, one from wyvern about sentinel frigates, iirc) of getting waves of types that have low ship-caps but with the same number as contemporary waves of normal ship-cap stuff (like Bombers).  This needs to be fixed ipso pronto :)

Towards that end, it would be very helpful if those of you testing would keep Advanced Logging on and, if you see such an obviously ignoring-ship-cap wave, post your MainThreadWaveComputationLog.txt and AIThreadWaveComputationLog.txt log files from the RuntimeData folder inside the game directory.  Posting them in this thread will suffice :)

Many thanks!
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline wyvern83

  • Sr. Member Mark II
  • ****
  • Posts: 398
Re: Oddly large waves of low-cap ships
« Reply #1 on: December 11, 2010, 11:36:55 am »
Do you mean from one of my saves? (only the fallen spire one is on low, the other is on normal) I haven't posted any reports recently.

I'll keep an eye out for it just the same though. What kind of size difference are we looking for?

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Oddly large waves of low-cap ships
« Reply #2 on: December 11, 2010, 11:41:11 am »
The log files are written separately from the save files (and are only written if Advanced Logging is on), but yes, you were hitting the problem in your games it sounds like (I may be remembering the wrong post, though).

Basically if you get a wave of a low-ship-cap type that has the same ship-count as a normal-ship-cap type, that's something I want to see the logs for.

And in general, if you see a wave that's just bonkers for whatever reason, I do want to know about it :)
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline Spikey00

  • Lord of just 5 Colony Ships
  • Master Member Mark II
  • *****
  • Posts: 1,704
  • And he sayeth to sea worm, thou shalt wriggle
Re: Oddly large waves of low-cap ships
« Reply #3 on: December 11, 2010, 02:23:52 pm »
I'll see if I can log one today--I've mysteriously been unable to find a wave for bombers, and the logs were mixed with a multiplayer game so I cleared it so I could hopefully find one today.  :p
I'd take a sea worm any time over a hundred emotionless spinning carriers.
irc.appliedirc.com / #aiwar
AI War Facebook
AI War Steam Group

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Oddly large waves of low-cap ships
« Reply #4 on: December 11, 2010, 02:29:32 pm »
Thank you :)  And it doesn't have to be bombers for the normal waves, just something that has a normal-ish cap.  It is very helpful to have that a range of different waves to help isolate the fact that it is or is-not factoring in the ship cap.
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline Spikey00

  • Lord of just 5 Colony Ships
  • Master Member Mark II
  • *****
  • Posts: 1,704
  • And he sayeth to sea worm, thou shalt wriggle
Re: Oddly large waves of low-cap ships
« Reply #5 on: December 11, 2010, 03:46:05 pm »
This is all I have for now, and it's a counterwave post.

Quote
12/11/2010 12:19:00 PM (4.049)
-----------------------------------
Starting CreateMixedWaveToPlanet at Game Time: 38:58:55 ; Player.AIType: Vanilla ; Player.AIDifficulty: 7 ; AIProgressionLevel: 1393 ; AITechLevel: 5 ; WaveSize: 2
aiTypeBasedAIPIncrement : 0
workingShips = ( ( AIProgressionLevel * Player.AIDifficulty ) / ( 11 - Player.AIDifficulty ) ) : 2437.75
workingShips *= FInt.FromParts( 0, AILoop.Instance.AIRandom.Next( 800, 1100 ) ) : 2454.41
workingShips = Min(workingShips,Player.AIDifficulty * 10) :2454.41
numberShips = workingShips.IntValue :2454
after AdjustNumberShipsFromAIType call (includes cap modifier), numberShips :1227
numberTech123 = numberShips - numberDefensive - numberExplosive - numberCore :1227

Quote
12/11/2010 12:19:00 PM (4.049)
-----------------------------------
Triggering AIWarpCounterattackGuardPostV; wave size factor: 2; Game Time: 38:58:55

12/11/2010 12:19:13 PM (4.049)
-----------------------------------
Receiving AddInboundWave from AI Thread at Game Time: 38:59:00
WaveSize factor: 2
Raw Units Dictionary Entries:
YounglingTigerIV => 97
SpacePlaneIV => 91
SpireBladeSpawnerIV => 78
RaptorIV => 114
SniperIV => 105
VampireClawIV => 100
CruiserIV => 115
FighterIV => 113
TeleportRaiderIV => 125
SpiderIV => 107
ZenithMirrorIV => 98
BomberIV => 84
BomberStarshipIV => 1

Unfortunately, this is all I had for the log of this wave, unlike the one below. 

Anyways, it would appear that it does send a "correct" number of snipers, sometimes:

Quote
12/11/2010 12:19:13 PM (4.049)
-----------------------------------
Performing first CheckWave with size factor of 2 on wave at Game Time: 38:59:00

CheckWave: populating count of YounglingTigerIV with base magnitude of 97
numberUnits = kv.Value * this.WaveSize : 194
after applying ShipCapMultiplier if any, numberUnits : 97
after applying CanUseNeinzulRegenerator if any, numberUnits : 194
after applying Mark-based multiplier if any, numberUnits : 116.37
after applying at-least-one rule, numberUnits : 116.37
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 349.11
numberUnitsInt = numberUnits.IntValue : 349

CheckWave: populating count of SpacePlaneIV with base magnitude of 91
numberUnits = kv.Value * this.WaveSize : 182
after applying ShipCapMultiplier if any, numberUnits : 159.25
after applying CanUseNeinzulRegenerator if any, numberUnits : 159.25
after applying Mark-based multiplier if any, numberUnits : 95.53
after applying at-least-one rule, numberUnits : 95.53
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 286.58
numberUnitsInt = numberUnits.IntValue : 286

CheckWave: populating count of SpireBladeSpawnerIV with base magnitude of 78
numberUnits = kv.Value * this.WaveSize : 156
after applying ShipCapMultiplier if any, numberUnits : 7.77
after applying CanUseNeinzulRegenerator if any, numberUnits : 7.77
after applying Mark-based multiplier if any, numberUnits : 4.66
after applying at-least-one rule, numberUnits : 4.66
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 13.98
numberUnitsInt = numberUnits.IntValue : 13

CheckWave: populating count of RaptorIV with base magnitude of 114
numberUnits = kv.Value * this.WaveSize : 228
after applying ShipCapMultiplier if any, numberUnits : 114
after applying CanUseNeinzulRegenerator if any, numberUnits : 114
after applying Mark-based multiplier if any, numberUnits : 68.38
after applying at-least-one rule, numberUnits : 68.38
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 205.15
numberUnitsInt = numberUnits.IntValue : 205

CheckWave: populating count of SniperIV with base magnitude of 105
numberUnits = kv.Value * this.WaveSize : 210
after applying ShipCapMultiplier if any, numberUnits : 20.97
after applying CanUseNeinzulRegenerator if any, numberUnits : 20.97
after applying Mark-based multiplier if any, numberUnits : 12.58
after applying at-least-one rule, numberUnits : 12.58
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 37.74
numberUnitsInt = numberUnits.IntValue : 37

CheckWave: populating count of VampireClawIV with base magnitude of 100
numberUnits = kv.Value * this.WaveSize : 200
after applying ShipCapMultiplier if any, numberUnits : 59.96
after applying CanUseNeinzulRegenerator if any, numberUnits : 59.96
after applying Mark-based multiplier if any, numberUnits : 35.97
after applying at-least-one rule, numberUnits : 35.97
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 107.9
numberUnitsInt = numberUnits.IntValue : 107

CheckWave: populating count of CruiserIV with base magnitude of 115
numberUnits = kv.Value * this.WaveSize : 230
after applying ShipCapMultiplier if any, numberUnits : 115
after applying CanUseNeinzulRegenerator if any, numberUnits : 115
after applying Mark-based multiplier if any, numberUnits : 68.98
after applying at-least-one rule, numberUnits : 68.98
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 206.95
numberUnitsInt = numberUnits.IntValue : 206

CheckWave: populating count of FighterIV with base magnitude of 113
numberUnits = kv.Value * this.WaveSize : 226
after applying ShipCapMultiplier if any, numberUnits : 113
after applying CanUseNeinzulRegenerator if any, numberUnits : 113
after applying Mark-based multiplier if any, numberUnits : 67.78
after applying at-least-one rule, numberUnits : 67.78
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 203.35
numberUnitsInt = numberUnits.IntValue : 203

CheckWave: populating count of TeleportRaiderIV with base magnitude of 125
numberUnits = kv.Value * this.WaveSize : 250
after applying ShipCapMultiplier if any, numberUnits : 312.5
after applying CanUseNeinzulRegenerator if any, numberUnits : 312.5
after applying Mark-based multiplier if any, numberUnits : 187.45
after applying at-least-one rule, numberUnits : 187.45
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 562.36
numberUnitsInt = numberUnits.IntValue : 562

CheckWave: populating count of SpiderIV with base magnitude of 107
numberUnits = kv.Value * this.WaveSize : 214
after applying ShipCapMultiplier if any, numberUnits : 107
after applying CanUseNeinzulRegenerator if any, numberUnits : 107
after applying Mark-based multiplier if any, numberUnits : 64.18
after applying at-least-one rule, numberUnits : 64.18
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 192.55
numberUnitsInt = numberUnits.IntValue : 192

CheckWave: populating count of ZenithMirrorIV with base magnitude of 98
numberUnits = kv.Value * this.WaveSize : 196
after applying ShipCapMultiplier if any, numberUnits : 98
after applying CanUseNeinzulRegenerator if any, numberUnits : 98
after applying Mark-based multiplier if any, numberUnits : 58.79
after applying at-least-one rule, numberUnits : 58.79
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 176.36
numberUnitsInt = numberUnits.IntValue : 176

CheckWave: populating count of BomberIV with base magnitude of 84
numberUnits = kv.Value * this.WaveSize : 168
after applying ShipCapMultiplier if any, numberUnits : 84
after applying CanUseNeinzulRegenerator if any, numberUnits : 84
after applying Mark-based multiplier if any, numberUnits : 50.39
after applying at-least-one rule, numberUnits : 50.39
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 151.16
numberUnitsInt = numberUnits.IntValue : 151

CheckWave: populating count of BomberStarshipIV with base magnitude of 1
numberUnits = kv.Value * this.WaveSize : 2
after applying ShipCapMultiplier if any, numberUnits : 2
after applying CanUseNeinzulRegenerator if any, numberUnits : 2
after applying Mark-based multiplier if any, numberUnits : 1.2
after applying at-least-one rule, numberUnits : 1.2
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 3.6
numberUnitsInt = numberUnits.IntValue : 3
it's a starship so only adding one rule : 1 (had you going there, didn't we)

Wave total ships: 2488
TypesForDirectAdd count by type:
YounglingTigerIV => 349
SpacePlaneIV => 286
SpireBladeSpawnerIV => 13
RaptorIV => 205
SniperIV => 37
VampireClawIV => 107
CruiserIV => 3
BomberStarshipIV => 1
TypesForCarrierAdd count by type:
CruiserIV => 203
FighterIV => 203
TeleportRaiderIV => 562
SpiderIV => 192
ZenithMirrorIV => 176
BomberIV => 151

However, I know that these are from counterwaves and may be calculated differently
I'd take a sea worm any time over a hundred emotionless spinning carriers.
irc.appliedirc.com / #aiwar
AI War Facebook
AI War Steam Group

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Oddly large waves of low-cap ships
« Reply #6 on: December 11, 2010, 03:58:37 pm »
That's all one wave; there are 4 steps in the logging:

1st, on the main thread, when it is time to generate a wave (either the normal waves over time, or a counterattack post like this case), it sends a message to the AI thread.  That's the "Triggering AIWarpCounterattackGuardPostV; wave size factor: 2; Game Time: 38:58:55" message in your main-thread log.

2nd, the AI thread received this message, and performs the actual logic to build the "raw" composition of the wave.  This basically just establishes proportions, not final numbers.  That's the message starting with "Starting CreateMixedWaveToPlanet"; the relevant data is sent back to the main thread as an AddInboundWave GameCommand.

3rd, the main thread receives the AddInboundWave, that's the "Receiving AddInboundWave from AI Thread".  Note that final numbers are not computed yet and are not reflected in that message.

4th, when the main thread checks each wave, the first time it does so it actually computes the exact number of each ship type to include in the wave; that's the message starting with "Performing first CheckWave".


Anyway, the summary of your log data is:
1) This is all one wave.
2) The raw size was 1227.
3) By randomized distribution, 105 of that went toward SniperIV.  That does _not_ mean 105 SniperIVs, though :)
4) In CheckWave, the number of SniperIVs was finalized as follows:

CheckWave: populating count of SniperIV with base magnitude of 105
numberUnits = kv.Value * this.WaveSize : 210
after applying ShipCapMultiplier if any, numberUnits : 20.97
after applying CanUseNeinzulRegenerator if any, numberUnits : 20.97
after applying Mark-based multiplier if any, numberUnits : 12.58
after applying at-least-one rule, numberUnits : 12.58
after applying difficulty-based (if >= 8 then 4, if >= 7 then 3, if >= 6 then 2, else 1) multiplier if any, numberUnits : 37.74
numberUnitsInt = numberUnits.IntValue : 37

Note that the raw randomized value for RaptorIV was 114, and its final actual-count value was 205.  Raptors have a normal ship cap, Snipers have a 0.2 ship cap, so 205 : 37 is pretty close :)

And the only big difference between the counterwave and the normal wave in this case is that it forces mixed-wave (like schizo, even if you don't have schizo on) and it uses a base WaveSize of 2 instead of the normal which is usually 1 (which is why 105 turned into 37 sniperIVs instead of about 18 or 19).

Make sense? :)

And thanks very much for doing the logging and posting it, makes it way easier to show what's actually going on (for your benefit and mine).
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!