Poll

Which one needs a buff the most?

Autocannon Minipod
0 (0%)
Cloaker Starship
0 (0%)
Counter Dark Matter Turret
1 (0.9%)
Counter Missile Turret
1 (0.9%)
Counterspy
2 (1.8%)
Deflector Drone
1 (0.9%)
Etherjet Tractor
1 (0.9%)
Eyebot
0 (0%)
Hardened Forcefield
1 (0.9%)
Harvester Exo-Shield
19 (17.1%)
Infilitrator
2 (1.8%)
Laser Gatling
1 (0.9%)
Metal/Crystal Harvesters
18 (16.2%)
Metal/Crystal Manufactories (converters)
11 (9.9%)
Mobile Repair Station
12 (10.8%)
Neinzul Enclave Starship
10 (9%)
Raider
0 (0%)
Raptor
0 (0%)
Space Plane
1 (0.9%)
Spider Bot
1 (0.9%)
Spire Armor Rotter
0 (0%)
Spire Gravity Drain
0 (0%)
Spire Gravity Ripper
1 (0.9%)
Tachyon Beam Emitter
3 (2.7%)
Tachyon Microfighter
1 (0.9%)
Teleport Battle Station
3 (2.7%)
Teleport Raider
3 (2.7%)
Warp Jammer Command Station
12 (10.8%)
Zenith-Starship/Spire-Starship
6 (5.4%)

Total Members Voted: 0

Author Topic: Poll: Worst Unit Of The (time interval) Award (IV)  (Read 29178 times)

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #135 on: March 23, 2012, 08:45:05 pm »
Quote
I'm quite sure I've seen a lot more than 700 ships on planets. :)
As you asked in the later post: the cap is per-player.  So the real cap is 1400 or 2000 (if core/homeworld).  And more ships can wander in or otherwise spawn, of course, just no further reinforcements if it's over that.

No, I'm sure I've seen it MUCH higher, in the 3000 ship range.  I'm going to have to pay more attention.  Maybe boot up a 5/5 game and let it spin on a short reinforcement list.  A mere 1400 ships is very low for a standard world to my mind once I've let it get silly for a while.
Does that include threat that drifted in?
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 TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #136 on: March 23, 2012, 08:50:39 pm »
Not a big deal, but is it possible to make the "send what is leftover afterfilling alerted planets" to not be a straight up priority, but rather a weighted probability? (like make homeworld not assured to get overflow reinforcements first, just the most likely to)

Again, not a big deal, as "redirecting reinforcement overflow" doesn't happen enough for me to care very much.

Also, thanks for pointing out the guarding population cap thing as guard posts go down. That nicely handles most of my concerns with the current logic.

Offline Hearteater

  • Core Member
  • *****
  • Posts: 2,334
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #137 on: March 23, 2012, 10:01:00 pm »
I think that would be nothing but a straight reduction in AI difficulty, not to mention needlessly hard on computers.  On an 80 system map, there can easily be 20ish system you will never travel through or get near (after they are scouted) and 25% of all extra reinforcements would end up on those systems, resulting in ships that no effect on the outcome of the game, but still eat computer resources.

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #138 on: March 23, 2012, 10:32:20 pm »
I think that would be nothing but a straight reduction in AI difficulty, not to mention needlessly hard on computers.  On an 80 system map, there can easily be 20ish system you will never travel through or get near (after they are scouted) and 25% of all extra reinforcements would end up on those systems, resulting in ships that no effect on the outcome of the game, but still eat computer resources.

How about something like planets that are on distant parts of the map with nothing interesting on them have a 0% chance of being selected for overflow? Planets that are sort of close to a human planet start getting a bit of chance. Existing priority designations would still dominate the chances by a large margin, but still a small chance that you might see a reinforcement on a planet like 2 or 3 hops away from a player planet sometimes.

But this is starting to get complicated, so maybe it is not worth messing with.


On a side note, if there is supposed to be a cap on the number of reinforcements on a single planet, how is border aggression ever supposed to happen? Barracks and carriers I can see (too many freed ships collecting on one planet), but border aggression seems impossible if the AI is not allowed to spawn defenders above their planetary defenders cap.

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #139 on: March 23, 2012, 11:48:31 pm »
Honestly I don't know if "border aggression" (the specific mechanic, not the general concept) or scrap waves even happen in normal gamestates anymore.  Not a big loss, those are just there as release valves where necessary.  By the way, I don't know if the thresholds which lead to border-aggression have anything to do with the threshods used for "can I reinforce this?"  One thing I hope to check on :)
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 keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #140 on: March 24, 2012, 12:46:45 pm »
Ok, the logging is (hopefully) easier to understand now; this is probably what it's going to be (in terms of logging format, I still need to do some testing to make sure this isn't a massive change in total reinforcement strength, etc) in 5.032, unless there's something else y'all spot.

These logs are from the same save, but the randoms didn't roll all the same way in the gamestate so Craps doesn't have the outnumbered boost, etc.

Code: [Select]
3/24/2012 12:39:46 PM (5.031) 6:02:27 ReinforcementCounter reached > 2400 for player 8 (since game was loaded, took 210 checks of (9+rand(2 or 3))
AIProgressionLevelEffective = 178
AITechLevel = 2
numberOfReinforcements = (number of planets not controlled by the AI / 2) = 3
numberOfReinforcements must be at least 1 and at most 15; = 3
since AIDifficulty >= 8, numberOfReinforcements += 1 = 4
AICommandType.SendReinforcements sent to AI thread


3/24/2012 12:39:47 PM (5.031) 6:02:34 ReinforcementCounter reached > 2400 for player 9 (since game was loaded, took 209 checks of (9+rand(2 or 3))
AIProgressionLevelEffective = 178
AITechLevel = 2
numberOfReinforcements = (number of planets not controlled by the AI / 2) = 3
numberOfReinforcements must be at least 1 and at most 15; = 3
since AIDifficulty >= 8, numberOfReinforcements += 1 = 4
AICommandType.SendReinforcements sent to AI thread

Code: [Select]
3/24/2012 12:39:46 PM (5.031) 6:02:26 calling SendReinforcements
PlayerNumber = 8
AIProgressionLevel = 178
AITechLevel = 2
NumberOfReinforcements = 4
Planets in order of planned reinforcement attempt (note: alerted planets will get two lines, and a line with priority >= 2000 will get tried twice) :
43 (Craps) (alerted)  reinforce priority = 0
21 (Blackjack) (alerted)  reinforce priority = 0
17 (Shawshank) (alerted)  reinforce priority = 0
7 (Confederation ) (alerted)  reinforce priority = 0
42 (Twycross) (alerted)  reinforce priority = 0
20 (Roulette) (alerted)  reinforce priority = 0
29 (Riker) (homeworld, +500)  reinforce priority = 500
27 (Earth) (homeworld, +500)  reinforce priority = 500
12 (Three Kings) (core, +300)  reinforce priority = 300
26 (Kirk) (core, +300)  reinforce priority = 300
20 (Roulette) (alerted)  reinforce priority = 0
43 (Craps) (alerted)  reinforce priority = 0
17 (Shawshank) (alerted)  reinforce priority = 0
42 (Twycross) (alerted)  reinforce priority = 0
7 (Confederation ) (alerted)  reinforce priority = 0
21 (Blackjack) (alerted)  reinforce priority = 0
(23 more reinforceable planets that are not alerted and have reinforcement priority = 0

******calling SendReinforcementsToPlanet on planet 43 (Craps), StrengthBudget = 0
Number of this player's units on this planet = 262
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet exceeds reinforcement population cap, cancelling reinforcement attempt

SendReinforcementsToPlanet result: did not happen

******calling SendReinforcementsToPlanet on planet 21 (Blackjack), StrengthBudget = 0
Number of this player's units on this planet = 6
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(8+1)) = 2

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 2
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 20.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 37.49
reinforcementStrength *= (tech level multiplier) = 33.73
reinforcementStrength *= 0.07 = 2.36
reinforcementStrength must be at most 35; = 2.36
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 7.07
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 7.07
numberShips = Floor(reinforcementStrength) = 7
StrengthBudget += 7 = 7
--- AIBuyShipsFromList StrengthBudget = 7
bought 7 SpacePlaneII for 8
total count bought: 7, total strength spent: 8, remaining = -1

***Doing guard-post reinforcement pulses:
reinforcementStrengthPerPulse = AIP/270 = 0.66
reinforcementStrengthPerPulse *= (tech level multiplier) = 0.59
reinforcementStrengthPerPulse must be at least 1 and at most 7; = 1
after AdjustNumberShipsFromAIType, reinforcementStrengthPerPulse = 1
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0
AIBuyShipsFromList StrengthBudget = 0
bought 1 MissileShipII for 2
total count bought: 1, total strength spent: 2, remaining = -2
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -1
AIBuyShipsFromList StrengthBudget = -1
total count bought: 0, total strength spent: 0, remaining = -1
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0
AIBuyShipsFromList StrengthBudget = 0
bought 1 VorticularCutlassII for 1
total count bought: 1, total strength spent: 1, remaining = -1
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0
AIBuyShipsFromList StrengthBudget = 0
bought 1 FighterII for 2
total count bought: 1, total strength spent: 2, remaining = -2
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -1
AIBuyShipsFromList StrengthBudget = -1
total count bought: 0, total strength spent: 0, remaining = -1
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0
AIBuyShipsFromList StrengthBudget = 0
bought 1 BomberII for 2
total count bought: 1, total strength spent: 2, remaining = -2
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -1
AIBuyShipsFromList StrengthBudget = -1
total count bought: 0, total strength spent: 0, remaining = -1
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0
AIBuyShipsFromList StrengthBudget = 0
bought 1 BomberII for 2
total count bought: 1, total strength spent: 2, remaining = -2

***checking for additional (no-strength-cost) guardian spawn
not buying guardian due to planet not owned by this player

SendReinforcementsToPlanet result: happened, remainingReinforcements = 3, StrengthBudget = -2

******calling SendReinforcementsToPlanet on planet 17 (Shawshank), StrengthBudget = -2
Number of this player's units on this planet = 23
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(0+1)) = 10

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 1
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 25.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 42.49
reinforcementStrength *= (tech level multiplier) = 42.49
reinforcementStrength *= 0.07 = 2.97
reinforcementStrength must be at most 35; = 2.97
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 32.63
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 32.63
numberShips = Floor(reinforcementStrength) = 32
StrengthBudget += 32 = 30
--- AIBuyShipsFromList StrengthBudget = 30
bought 15 Bomber for 30
bought 1 SpacePlane for 1.14
total count bought: 16, total strength spent: 31.14, remaining = -1.14

***Doing guard-post reinforcement pulses:
Dood! Neutered! *mutter*

***checking for additional (no-strength-cost) guardian spawn
not buying guardian due to planet not owned by this player

SendReinforcementsToPlanet result: happened, remainingReinforcements = 2, StrengthBudget = -1.14

******calling SendReinforcementsToPlanet on planet 7 (Confederation ), StrengthBudget = -1.14
Number of this player's units on this planet = 13
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(6+1)) = 4

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 2
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 19.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 36.49
reinforcementStrength *= (tech level multiplier) = 32.83
reinforcementStrength *= 0.07 = 2.29
reinforcementStrength must be at most 35; = 2.29
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 11.46
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 11.46
numberShips = Floor(reinforcementStrength) = 11
StrengthBudget += 11 = 9.86
--- AIBuyShipsFromList StrengthBudget = 9.86
bought 2 VorticularCutlassII for 2
bought 4 FighterII for 8
bought 1 SpacePlaneII for 1.14
total count bought: 7, total strength spent: 11.14, remaining = -1.29

***Doing guard-post reinforcement pulses:
reinforcementStrengthPerPulse = AIP/270 = 0.66
reinforcementStrengthPerPulse *= (tech level multiplier) = 0.59
reinforcementStrengthPerPulse must be at least 1 and at most 7; = 1
after AdjustNumberShipsFromAIType, reinforcementStrengthPerPulse = 1
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -0.29
AIBuyShipsFromList StrengthBudget = -0.29
total count bought: 0, total strength spent: 0, remaining = -0.29
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0.71
AIBuyShipsFromList StrengthBudget = 0.71
bought 1 AIGuardianRaiderII for 21.78
total count bought: 1, total strength spent: 21.78, remaining = -21.06
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -20.06
AIBuyShipsFromList StrengthBudget = -20.06
total count bought: 0, total strength spent: 0, remaining = -20.06
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -19.06
AIBuyShipsFromList StrengthBudget = -19.06
total count bought: 0, total strength spent: 0, remaining = -19.06
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -18.06
AIBuyShipsFromList StrengthBudget = -18.06
total count bought: 0, total strength spent: 0, remaining = -18.06
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -17.06
AIBuyShipsFromList StrengthBudget = -17.06
total count bought: 0, total strength spent: 0, remaining = -17.06

***checking for additional (no-strength-cost) guardian spawn
not buying guardian due to planet not owned by this player

SendReinforcementsToPlanet result: happened, remainingReinforcements = 1, StrengthBudget = -17.06

******calling SendReinforcementsToPlanet on planet 42 (Twycross), StrengthBudget = -17.06
Number of this player's units on this planet = 53
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(0+1)) = 10

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 1
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 24.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 41.49
reinforcementStrength *= (tech level multiplier) = 41.49
reinforcementStrength *= 0.07 = 2.9
reinforcementStrength must be at most 35; = 2.9
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 31.86
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 31.86
numberShips = Floor(reinforcementStrength) = 31
StrengthBudget += 31 = 13.94
--- AIBuyShipsFromList StrengthBudget = 13.94
bought 13 SpacePlane for 14.86
total count bought: 13, total strength spent: 14.86, remaining = -0.92

***Doing guard-post reinforcement pulses:
Dood! Neutered! *mutter*

***checking for additional (no-strength-cost) guardian spawn
not buying guardian due to adjacent to human homeworld

SendReinforcementsToPlanet result: happened, remainingReinforcements = 0, StrengthBudget = -0.92
totals for planet 21 (Blackjack); count: 12, strength: 17
totals for planet 17 (Shawshank); count: 16, strength: 31.14
totals for planet 7 (Confederation ); count: 8, strength: 32.92
totals for planet 42 (Twycross); count: 13, strength: 14.86
totals for  SpacePlaneII; count: 8, strength: 9.14
totals for  MissileShipII; count: 1, strength: 2
totals for  VorticularCutlassII; count: 3, strength: 3
totals for  FighterII; count: 5, strength: 10
totals for  BomberII; count: 2, strength: 4
totals for  Bomber; count: 15, strength: 30
totals for  SpacePlane; count: 14, strength: 16
totals for  AIGuardianRaiderII; count: 1, strength: 21.78
*grand totals; count: 49, strength: 95.92



3/24/2012 12:39:48 PM (5.031) 6:02:33 calling SendReinforcements
PlayerNumber = 9
AIProgressionLevel = 178
AITechLevel = 2
NumberOfReinforcements = 4
Planets in order of planned reinforcement attempt (note: alerted planets will get two lines, and a line with priority >= 2000 will get tried twice) :
42 (Twycross) (alerted)  reinforce priority = 0
43 (Craps) (alerted)  reinforce priority = 0
20 (Roulette) (alerted)  reinforce priority = 0
7 (Confederation ) (alerted)  reinforce priority = 0
17 (Shawshank) (alerted)  reinforce priority = 0
21 (Blackjack) (alerted)  reinforce priority = 0
27 (Earth) (homeworld, +500)  reinforce priority = 500
29 (Riker) (homeworld, +500)  reinforce priority = 500
12 (Three Kings) (core, +300)  reinforce priority = 300
26 (Kirk) (core, +300)  reinforce priority = 300
17 (Shawshank) (alerted)  reinforce priority = 0
43 (Craps) (alerted)  reinforce priority = 0
42 (Twycross) (alerted)  reinforce priority = 0
20 (Roulette) (alerted)  reinforce priority = 0
7 (Confederation ) (alerted)  reinforce priority = 0
21 (Blackjack) (alerted)  reinforce priority = 0
(23 more reinforceable planets that are not alerted and have reinforcement priority = 0

******calling SendReinforcementsToPlanet on planet 42 (Twycross), StrengthBudget = 0
Number of this player's units on this planet = 21
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(0+1)) = 10

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 1
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 27.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 44.49
reinforcementStrength *= (tech level multiplier) = 44.49
reinforcementStrength *= 0.07 = 3.11
reinforcementStrength must be at most 35; = 3.11
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 34.17
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 34.17
numberShips = Floor(reinforcementStrength) = 34
StrengthBudget += 34 = 34
--- AIBuyShipsFromList StrengthBudget = 34
bought 2 Bomber for 4
bought 2 MissileShip for 4
bought 3 MunitionsBooster for 30.04
bought 2 Fighter for 4
bought 1 VorticularCutlass for 1
total count bought: 10, total strength spent: 43.04, remaining = -9.04

***Doing guard-post reinforcement pulses:
Dood! Neutered! *mutter*

***checking for additional (no-strength-cost) guardian spawn
not buying guardian due to planet not owned by this player

SendReinforcementsToPlanet result: happened, remainingReinforcements = 3, StrengthBudget = -9.04

******calling SendReinforcementsToPlanet on planet 43 (Craps), StrengthBudget = -9.04
Number of this player's units on this planet = 460
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet exceeds reinforcement population cap, cancelling reinforcement attempt

SendReinforcementsToPlanet result: did not happen

******calling SendReinforcementsToPlanet on planet 20 (Roulette), StrengthBudget = -9.04
Number of this player's units on this planet = 9
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(0+1)) = 10

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 3
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 26.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 43.49
reinforcementStrength *= (tech level multiplier) = 30.44
reinforcementStrength *= 0.07 = 2.13
reinforcementStrength must be at most 35; = 2.13
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 23.38
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 23.38
numberShips = Floor(reinforcementStrength) = 23
StrengthBudget += 23 = 13.96
--- AIBuyShipsFromList StrengthBudget = 13.96
bought 7 BomberIII for 14
total count bought: 7, total strength spent: 14, remaining = -0.04

***Doing guard-post reinforcement pulses:
Dood! Neutered! *mutter*

***checking for additional (no-strength-cost) guardian spawn
not buying guardian due to planet not owned by this player

SendReinforcementsToPlanet result: happened, remainingReinforcements = 2, StrengthBudget = -0.04

******calling SendReinforcementsToPlanet on planet 7 (Confederation ), StrengthBudget = -0.04
Number of this player's units on this planet = 18
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(6+1)) = 4

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 2
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 22.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 39.49
reinforcementStrength *= (tech level multiplier) = 35.53
reinforcementStrength *= 0.07 = 2.48
reinforcementStrength must be at most 35; = 2.48
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 12.4
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 12.4
numberShips = Floor(reinforcementStrength) = 12
StrengthBudget += 12 = 11.96
--- AIBuyShipsFromList StrengthBudget = 11.96
bought 1 MunitionsBoosterII for 10.01
bought 1 BomberII for 2
total count bought: 2, total strength spent: 12.01, remaining = -0.06

***Doing guard-post reinforcement pulses:
reinforcementStrengthPerPulse = AIP/270 = 0.66
reinforcementStrengthPerPulse *= (tech level multiplier) = 0.59
reinforcementStrengthPerPulse must be at least 1 and at most 7; = 1
after AdjustNumberShipsFromAIType, reinforcementStrengthPerPulse = 1
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0.94
AIBuyShipsFromList StrengthBudget = 0.94
bought 1 MissileShipII for 2
total count bought: 1, total strength spent: 2, remaining = -1.06
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -0.06
AIBuyShipsFromList StrengthBudget = -0.06
total count bought: 0, total strength spent: 0, remaining = -0.06
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = 0.94
AIBuyShipsFromList StrengthBudget = 0.94
bought 1 SpireBladeSpawnerII for 33.57
total count bought: 1, total strength spent: 33.57, remaining = -32.63
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -31.63
AIBuyShipsFromList StrengthBudget = -31.63
total count bought: 0, total strength spent: 0, remaining = -31.63
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -30.63
AIBuyShipsFromList StrengthBudget = -30.63
total count bought: 0, total strength spent: 0, remaining = -30.63
---doing pulse for WormholeCommandPost
StrengthBudget += 1 = -29.63
AIBuyShipsFromList StrengthBudget = -29.63
total count bought: 0, total strength spent: 0, remaining = -29.63

***checking for additional (no-strength-cost) guardian spawn
buying AIGuardianZombieII to guard WormholeCommandPost

SendReinforcementsToPlanet result: happened, remainingReinforcements = 1, StrengthBudget = -29.63

******calling SendReinforcementsToPlanet on planet 17 (Shawshank), StrengthBudget = -29.63
Number of this player's units on this planet = 9
reinforcement population cap = (GuardPostsNonWormhole + CommandStations) * UnitCapScale.AIShipCapPerPost = (1 * 100) (must be at least 200 and at most 700) = 200
Number of this player's units on this planet does not exceed reinforcement population cap, continuing reinforcement attempt
guardPostReinforcementPulses = (AIProgressionLevel / 10) = 17; (must be at least 3 and at most 11) = 11
guardPostReinforcementPulsesShiftedToCentralPulse = guardPostReinforcementPulses - ( GuardPostsAll + CommandStations ) (cannot go below 0) = max(0,11-(0+1)) = 10

***Doing central reinforcement pulse (this will go to the command station if there is one, and pick another spot if not)
AITechLevel = at least planet's AIOriginalTechLevel = 1
aiTypeBasedAIPIncrement : 0
reinforcementStrength = 1.5 * AIDiff * handicapMultiplier = 14.4
reinforcementStrength += 4 + random(0,AIDifficulty) = 23.4
reinforcementStrength += ((AIP/10) * (AIDiff/10)) = 40.49
reinforcementStrength *= (tech level multiplier) = 40.49
reinforcementStrength *= 0.07 = 2.83
reinforcementStrength must be at most 35; = 2.83
reinforcementStrength *= (1 + guardPostReinforcementPulsesShiftedToCentralPulse) = 31.1
Inside AdjustNumberShipsFromAIType, multiplier: 1
after AdjustNumberShipsFromAIType call, reinforcementStrength = 31.1
numberShips = Floor(reinforcementStrength) = 31
StrengthBudget += 31 = 1.37
--- AIBuyShipsFromList StrengthBudget = 1.37
bought 1 VorticularCutlass for 1
bought 1 Bomber for 2
total count bought: 2, total strength spent: 3, remaining = -1.63

***Doing guard-post reinforcement pulses:
Dood! Neutered! *mutter*

***checking for additional (no-strength-cost) guardian spawn
not buying guardian due to adjacent to human homeworld

SendReinforcementsToPlanet result: happened, remainingReinforcements = 0, StrengthBudget = -1.63
totals for planet 42 (Twycross); count: 10, strength: 43.04
totals for planet 20 (Roulette); count: 7, strength: 14
totals for planet 7 (Confederation ); count: 4, strength: 47.59
totals for planet 17 (Shawshank); count: 2, strength: 3
totals for  Bomber; count: 3, strength: 6
totals for  MissileShip; count: 2, strength: 4
totals for  MunitionsBooster; count: 3, strength: 30.04
totals for  Fighter; count: 2, strength: 4
totals for  VorticularCutlass; count: 2, strength: 2
totals for  BomberIII; count: 7, strength: 14
totals for  MunitionsBoosterII; count: 1, strength: 10.01
totals for  BomberII; count: 1, strength: 2
totals for  MissileShipII; count: 1, strength: 2
totals for  SpireBladeSpawnerII; count: 1, strength: 33.57
*grand totals; count: 23, strength: 107.63
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 keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #141 on: March 24, 2012, 01:57:06 pm »
A few observations/notes:

1) If you have forces on a planet that heavily outnumber it (in this case, it means having more than 1.5x the firepower of the AI and AI-ally stuff on the planet), that gives it +2000 priority.  Which makes it sort before any planet without that condition, because it must necessarily be on alert the highest priority a planet can have aside from that is 1500 (an AI homeworld with a nontrivial but non-outnumbering human attack force on it), and makes the AI spend two reinforcements on it (if it has enough left at that point in the list).

- Importantly, this seems to indicate a strong incentive to neuter a planet such that it has zero (or nearly zero) AI firepower on it, then station a sufficient garrison in range of the command station to alert the planet, satisfy the >1.5x "outnumbered" condition (very easy since it has at or near zero), and to destroy a quad-reinforcement quickly without losses (or with enough repair/rebuild capacity such that the losses are recovered). 

-- Except for times that you're outnumbering some other planet (during an intentional attack, probably) That will "soak" 2 reinforcements from each SendReinforcements call (so 4 across both AI players) because it will be an alerted planet and have 2000 priority due to being outnumbered, and the reinforcements will be automatically swept away by your garrison. 

-- Of course, garrison forces detract from your total mobile and/or defensive forces, so it's still a tradeoff, but I suspect it's a good tradeoff.  Note that if this really is as effective as I suspect, some changes will be likely to make it less obviously-optimal (either some kind of probabilistic use of priority like TechSY730 suggested, or simply a "hey, the humans are soaking us here" check).


2) Alerted planets are in the "list" twice: once in reinforcement-priority-order with other alerted planets, and once in reinforcement-priority-order with all reinforceable planets. 

- So an "outnumbered planet" will actually get 2 reinforcements during the "just the alerted planets" part of the list, and if the AI has enough reinforcements to get all the way through the alerted planets it will hit the second entry for the outnumbered planet, and can reinforce it twice more.  If this condition holds true for both AI players' SendReinforcement calls, that planet could potentially get 8 reinforcements in a very short period of time (out of a grand total of 30-34 maximum possible if there are 30 non-AI planets in the game).

- This isn't particularly exploitable, but I figured it would be good to be clear on just how much can get thrown at a planet you're actively attacking, particularly if the other alerted planets are not-reinforceable due to hitting their population cap and/or there are enough non-AI planets in the game that it can get all the way through the alerted list.

-- In other words: making sure there enough not-at-population-cap alerted planets during a serious attack will help keep your target planet down to 4 reinforcements per cycle (cycle = both AI players calling SendReinforcements) instead of 8.


3) An outnumbered homeworld will always sort first in both groups since it will have a priority of 2500, and a coreworld will always sort first in both groups if there is no outnumbered homeworld (or other outnumbered coreworld) since it will have a priority of 2300.  Even these won't be in danger of an 8-reinforcement cycle, however, unless there aren't enough reinforceable alerted planets to go around.
« Last Edit: March 24, 2012, 01:59:59 pm by keith.lamothe »
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 keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #142 on: March 24, 2012, 03:45:41 pm »
Ok, just finished with the reinforcement logging and fixes, and after getting that in the SVN I went back to the 5.031 code and just added the summary part of the logging to that and ran the same save for a bit to get some samples just to make sure I wasn't changing the order of magnitude of stuff (except for the can-get-way-more-low-cap-stuff-than-I-should thing).  For the curious:

Before (5.031 as released) :
Code: [Select]
totals for planet 7 (Confederation ); count: 11, strength: 37.06
totals for planet 17 (Shawshank); count: 11, strength: 20.29
totals for planet 20 (Roulette); count: 11, strength: 19.29
totals for ZenithPolarizerII; count: 4, strength: 8
totals for VorticularCutlassII; count: 3, strength: 3
totals for SpacePlaneII; count: 4, strength: 4.57
totals for MissileShipII; count: 5, strength: 10
totals for FighterII; count: 3, strength: 6
totals for AIGuardianGravityII; count: 1, strength: 21.78
totals for BomberII; count: 2, strength: 4
totals for ZenithPolarizerIII; count: 2, strength: 4
totals for Cruiser; count: 3, strength: 6
totals for BomberIII; count: 2, strength: 4
totals for SpacePlaneIII; count: 2, strength: 2.29
totals for FighterIII; count: 1, strength: 2
totals for VorticularCutlassIII; count: 1, strength: 1
*grand totals; count: 33, strength: 76.63

totals for planet 7 (Confederation ); count: 11, strength: 79.51
totals for planet 21 (Blackjack); count: 11, strength: 83.15
totals for planet 17 (Shawshank); count: 11, strength: 84.63
totals for BomberII; count: 9, strength: 18
totals for MunitionsBoosterII; count: 5, strength: 50.07
totals for SpireBladeSpawnerII; count: 4, strength: 134.29
totals for FighterII; count: 6, strength: 12
totals for SpacePlaneII; count: 1, strength: 1.14
totals for VorticularCutlassII; count: 4, strength: 4
totals for AIGuardianGravityII; count: 1, strength: 21.78
totals for MissileShipII; count: 3, strength: 6
*grand totals; count: 33, strength: 247.29

After (what's already done for 5.032) :
Code: [Select]
totals for planet 21 (Blackjack); count: 12, strength: 17
totals for planet 17 (Shawshank); count: 16, strength: 31.14
totals for planet 7 (Confederation ); count: 8, strength: 32.92
totals for planet 42 (Twycross); count: 13, strength: 14.86
totals for  SpacePlaneII; count: 8, strength: 9.14
totals for  MissileShipII; count: 1, strength: 2
totals for  VorticularCutlassII; count: 3, strength: 3
totals for  FighterII; count: 5, strength: 10
totals for  BomberII; count: 2, strength: 4
totals for  Bomber; count: 15, strength: 30
totals for  SpacePlane; count: 14, strength: 16
totals for  AIGuardianRaiderII; count: 1, strength: 21.78
*grand totals; count: 49, strength: 95.92

totals for planet 42 (Twycross); count: 10, strength: 43.04
totals for planet 20 (Roulette); count: 7, strength: 14
totals for planet 7 (Confederation ); count: 4, strength: 47.59
totals for planet 17 (Shawshank); count: 2, strength: 3
totals for  Bomber; count: 3, strength: 6
totals for  MissileShip; count: 2, strength: 4
totals for  MunitionsBooster; count: 3, strength: 30.04
totals for  Fighter; count: 2, strength: 4
totals for  VorticularCutlass; count: 2, strength: 2
totals for  BomberIII; count: 7, strength: 14
totals for  MunitionsBoosterII; count: 1, strength: 10.01
totals for  BomberII; count: 1, strength: 2
totals for  MissileShipII; count: 1, strength: 2
totals for  SpireBladeSpawnerII; count: 1, strength: 33.57
*grand totals; count: 23, strength: 107.63

Those are each one reinforcement cycle (the first chunk in each block is the first AI player, the second is the second AI player), and different samples vary significantly on the grand-total-strength in 5.031 (the first player tends to get between 50 and 95 strength, the second player tends to get between 100 and 400 due to the blade spawners) but not nearly as much in what's in for 5.032.

The 5.031 numbers for the second AI player are misleading because it doesn't actually get all those blade spawners in most cases: they just get ignored by the main thread for violating the per-guarded-thing-cap (iirc, at least I hope so, goodness).
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 rchaneberg

  • Newbie Mark III
  • *
  • Posts: 35
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #143 on: March 24, 2012, 04:06:15 pm »
3) An outnumbered homeworld will always sort first in both groups since it will have a priority of 2500, and a coreworld will always sort first in both groups if there is no outnumbered homeworld (or other outnumbered coreworld) since it will have a priority of 2300.  Even these won't be in danger of an 8-reinforcement cycle, however, unless there aren't enough reinforceable alerted planets to go around.
I've been trying to follow the discussion, but it's a little over my head without spending more time on it, but what would happen in an edge case like taking 118 planets in a 120 planet snake map. I always start at one end, and it seems like the homeworlds are always at the other end and halfway between my homeworld and the other AI home, so the plan is to take everything up to the first homeworld, leaving the homeworld itself neutral, and then to continue on only stopping when I reach the coreworld bordering the last AI homeworld. Would the 2 AI planets remaining gain all of the reinforcements even over the 8 per cycle, or is that a hard cap?

Offline Cyborg

  • Master Member Mark III
  • *****
  • Posts: 1,957
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #144 on: March 24, 2012, 04:14:30 pm »
  • how long is the reinforcement cycle?
  • This looks like a perfect opportunity to capture a center node on a x map and start farming with reclamation units.
Kahuna strategy guide:
http://www.arcengames.com/forums/index.php/topic,13369.0.html

Suggestions, bugs? Don't be lazy, give back:
http://www.arcengames.com/mantisbt/

Planetcracker. Believe it.

The stigma of hunger. http://wayw.re/Vi12BK

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #145 on: March 24, 2012, 04:25:57 pm »
what would happen in an edge case like taking 118 planets in a 120 planet snake map.
...
Would the 2 AI planets remaining gain all of the reinforcements even over the 8 per cycle, or is that a hard cap?
If it actually gets through every single reinforceable planet, there is a third loop over all AI planets that are not reinforceable (meaning it will actually break the "cannot reinforce without a local reinforcement gate" rule, but this is only if every single other planet in the game is either not reinforceable or has already been checked twice).  In this case there are no such, so it would just lose those reinforcement calls, and each homeworld would get 8 per cycle.  Given the 2000+ AIP you presumably have at that point, that's going to be fairly intense :)

  • how long is the reinforcement cycle?
It depends on difficulty: every second, each AI player adds their AIDifficulty (rounded down to an integer) and either 2 or 3 (randomly picks between those) to its ReinforcementCounter.  After that, if that player's counter is > 2400 then it triggers a reinforcement for that player.

So generally speaking on diff 7 that's an average of 9.5 added to the counter every second, giving a bit over 252 seconds.
And on diff 9 that's an average of 11.5/sec, giving a bit over 208 seconds.

The smallness of the random part means that two same-diff AI players will remain pretty close to each other in their reinforcement interval, but different-difficulty AI players will likely be quite far apart (and simply different).  So in the sense of a "cycle" meaning both players doing a reinforcement, there's no specific interval of that.

In the main-thread reinforcement log, you can get some of this info in the lines that look like:
3/24/2012 12:39:46 PM (5.031) 6:02:27   ReinforcementCounter reached > 2400 for player 8 (since game was loaded, took 210 checks of (9+rand(2 or 3))

Though if it's the first reinforcement since game-load the "# of checks" (which is number of game seconds, really, though I didn't realize it at the time) will probably be off.

Quote
  • This looks like a perfect opportunity to capture a center node on a x map and start farming with reclamation units.
That would probably be fairly effective, yes :)
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 rchaneberg

  • Newbie Mark III
  • *
  • Posts: 35
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #146 on: March 24, 2012, 04:42:32 pm »
what would happen in an edge case like taking 118 planets in a 120 planet snake map.
...
Would the 2 AI planets remaining gain all of the reinforcements even over the 8 per cycle, or is that a hard cap?
If it actually gets through every single reinforceable planet, there is a third loop over all AI planets that are not reinforceable (meaning it will actually break the "cannot reinforce without a local reinforcement gate" rule, but this is only if every single other planet in the game is either not reinforceable or has already been checked twice).  In this case there are no such, so it would just lose those reinforcement calls, and each homeworld would get 8 per cycle.  Given the 2000+ AIP you presumably have at that point, that's going to be fairly intense :)

That's great news, I was worried that the AI would get 59 reinforcements per AI and that it would just dump all that on the 2 worlds. That would be a little more than merely the usual level of intensity [/understatement]

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #147 on: March 24, 2012, 05:04:46 pm »
Just plugged the difficulties into the reinforcement strength formulas, and the conclusion that "if I nerf/neuter a planet at 110+ AIP, the reinforcement strength goes up, not down" is certainly true, even on Diff 1.  On Diff 1 at 110 AIP reducing a planet from 10 guard posts (including wormhole posts) to 0 guard posts increases total reinforcement strength by 20%.  On Diff 7 the increase is 237%.  On Diff 9.6 (which this save was) it is 304%

For the curious, here are the numbers if AIP is 110:

DifficultyAverage Reinforcement IntervalReinforcements Per HourCentral Pulse Strength Step1Central Pulse Strength Step2Central Pulse Strength Step3Central Pulse Strength Step4Guard Post Pulse Strength Step1Max Strength Per HourMin Strength Per HourPercent Increase From Neutering
1685.75.251.567.10.4970.4128.724.020%
2533.36.753810.20.7140.4153.032.364%
3436.48.254.51013.30.9310.4184.541.3105%
4369.29.7561216.41.1480.41123.150.9142%
5320.011.257.51419.51.3650.41168.961.2176%
6282.412.7591622.61.5820.41221.972.1208%
7252.614.2510.51825.71.7990.41282.083.7237%
7.3252.614.2510.9518.626.631.86410.41292.284.6245%
7.6252.614.2511.419.227.561.92920.41302.485.5253%
8228.615.75122028.82.0160.41349.395.9264%
8.3228.615.7512.4520.629.732.08110.41360.696.9272%
8.6228.615.7512.921.230.662.14620.41371.898.0280%
9208.717.2513.52231.92.2330.41423.7108.8289%
9.3208.717.2513.9522.632.832.29810.41436.1109.9297%
9.6208.717.2514.423.233.762.36320.41448.4111.0304%
9.8208.717.2514.723.634.382.40660.41456.7111.8308%
10192.018.751524352.450.41505.3122.3313%

For reference, the central pulse calculation (assuming no handicap) :
Step 1: reinforcementStrength = 1.5 * AIDiff
Step 2: reinforcementStrength += 4 + random(0,AIDifficulty)
Step 3: reinforcementStrength += ((AIP/10) * (AIDiff/10))
Step 4: reinforcementStrength *= 0.07
(ignoring tech multiplier and ai-type multiplier since they are applied in both cases)

And the guard post pulse calculation:  AIP/270
(interestingly, AIDiff is not directly present, but it still influences reinforcement frequency)

The max strength column is (central_pulse_strength*11) and the min strength column is (central_pulse_strength)+(guardPost_pulse_strength(10)) , if a planet actually has more than 10 posts (including wormhole posts) the min will be higher but the max will not be, so killing those "excess" posts would appear to always be a good idea.

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 TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #148 on: March 24, 2012, 06:06:08 pm »
The thing about reinforcement strength going up as guard posts go down seems odd, but thanks to the reinforcement cap going down as guard posts go down, that seems to even it out.
So basically, as guard posts go down (below some count of posts depending on various factors), the reinforcements may start getting populated more quickly, but since the cap went down, they'll just hit the cap even faster.
Also funny that although wormhole guard posts do not influence reinforcement cap, they can influence reinforcement size, so it is probably better to leave them alive when neutering a planet unless the wormholes they are next to are in the path you need to take.

Very funny that if even after going through all alerted world with reinforcement warp gates and all planets overall with reinforcement warp gates, but it still has reinforcement "bursts" to spend, it will actually reinforce planets with "reinforcible points" that do not have any sort of warp gate. So it is possible for a guard post to get a reinforcement even if there is no warp gate around, but only under very, very rare circumstances where the player has been taking planets like a madman.
Still seems sort of cheap and "cheating" though, seems that instead it should be able to send 4 or so of the remaining reinforcement bursts to homeworlds or coreworlds (which may trigger some border aggression or a scrap wave or something), and just lose everything else (as the player has pretty much shut the AI's options down, which is the only time this can happen, this seems fair). But as it almost never happens, I guess I don't care all that much.

Also, I can think of one class of situations border aggression can trigger.
As an extreme example, let's say a planet, after the game does the math, currently has a reinforcement cap of 500. It currently has 499 guarding ships (from one player). Since 499 < 500 cap, that planet is eligible for reinforcements. So, if it chose that planet to reinforce, lets say it got 20 ships out of it. So now it has 519 guarding ships. Uh oh! That's over the cap. So to get it to conform to the cap, border aggression kicks in, and frees enough ships to get it whiten the cap (19 in this case).
Of course, now that planet has 500 defenders, so it can no longer receive reinforcements unless there are extenuating circumstances, border aggression will probably never trigger again for that player on that planet unless some guarding ships die somehow.
« Last Edit: March 24, 2012, 06:31:43 pm by techsy730 »

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Poll: Worst Unit Of The (time interval) Award (IV)
« Reply #149 on: March 24, 2012, 06:39:05 pm »
The thing about reinforcement strength going up as guard posts go down seems odd, but thanks to the reinforcement cap going down as guard posts go down, that seems to even it out.
Yea, it is odd, but I think it's probably a good thing in the end: the player doesn't always have a really strong motive to go nerfing planets just for the sake of it, but there are times when it is a good thing to do.

Quote
Also funny that although wormhole guard posts do not influence reinforcement cap, they can influence reinforcement size, so it is probably better to leave them alive when neutering a planet unless the wormholes they are next to are in the path you need to take.
Yea, this is even better than the previous point: there's almost no reason to kill wormhole guard posts unless there are more than 10 on a planet.  Killing normal guard posts is not necessarily all that tedious since it's not a very long process (unless ffs and forts are involved) and it's generally in the middle of a planet fight.  Killing wormhole guard posts without a really powerful fleet can be the essence of tedium ;)  And I don't figure folks will mind not having much reason to kill them.

Quote
Very funny that if even after going through all alerted world with reinforcement warp gates and all planets overall with reinforcement warp gates, but it still has reinforcement "bursts" to spend, it will actually reinforce planets with "reinforcible points" that do not have any sort of warp gate.
Actually, when I said all non-reinforceable AI planets I meant those controlled by the AI, which means they have a reinforcement gate (i.e. command station)... but I just realized: that means they're not non-reinforcible, so I don't think that third stage actually does anything :)

Quote
Also, I can think class of situations border aggression can trigger.
As an extreme example, let's say a planet, after the game does the math, currently has a reinforcement cap of 500. It currently has 499 guarding ships (from one player). Since 499 < 500 cap, that planet is eligible for reinforcements. So, if it chose that planet to reinforce, lets say it got 20 ships out of it. So now it has 519 guarding ships. Uh oh! That's over the cap. So to get it to conform to the cap, border aggression kicks in, and frees enough ships to get it whiten the cap (19 in this case).
Just checked, and the "every guard-post/command-station allows 100 ships" logic is only ever used for determining whether a reinforcement is allowed, not for border aggression or any other thing.  Border aggression uses a different, AIP-based threshold.
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!