View Issue Details

IDProjectCategoryLast Update
0021182AI War 2Gameplay IssueDec 27, 2019 8:38 pm
ReporterRocketAssistedPuffin Assigned ToChris_McElligottPark  
Severityminor 
Status resolvedResolutionfixed 
Product VersionBETA 0.857 The AI Strikes Back... Hard 
Fixed in VersionBETA 1.1 So Much Stuff We Can't Even, But More Is Still Coming 
Summary0021182: AI Budgeting Oddities
DescriptionWas investigating AI budgeting, specifically the Reinforcements part and have been finding weird things.

Firstly, the lines:

    balance_initial_ai_defenses_guardians_per_planet="12"
    balance_initial_ai_defenses_fleet_ship_caps_per_planet="10"
    balance_initial_ai_defenses_turret_caps_per_planet="12"
    balance_initial_ai_defenses_non_turret_defense_caps_per_planet="1"
    balance_initial_ai_defenses_shield_caps_per_planet="1"

Mostly don't do anything. The only one with any effect is Guardians. These seem to appear in the reinforcement code, so there might be overlap between this and the next thing.

Secondly, it almost seems like sometimes the AI never reinforces. It says in logging the budget is being spent, but the only alerted planets are gaining nothing. No new Turrets, no new Strikecraft, etc. And then on the other hand, suddenly planets do seem to be reinforced - with only one type, i.e all Guardians. A planet got up to 30 Guardians then stopped. (It was the only alerted one).

Third, Wormhole Invasion budget appears to be set up to donate to Reinforcements if the AIP requirement is not met, OR they are impossible on that difficulty. I changed it to donate to Wave (so I have a better idea of how much budget there is total), checked the budget of the first wave in a new game, then set the budget allocation for Wormholes to nothing (so it can donate nothing to waves), and tested again. The first wave budget did not change, which suggests the donation does not occur. I imagine I am wrong here and overlooked something.

Fourth, the Warden/Special Forces are set up to donate to the Wave budget if they are maxed out. Since they have so much of the budget allocated to them, they max out quickly, and thus Waves begin to have around 50-60% of the total budget. For the Special Forces Master AI, this means it gets larger Waves than the Tsunami AI, which is the one focused on Waves. Unsure how intended/desired this result is.

Lastly, relating to the Reinforcement, the logging for it in the Options > Debug menu seems to do nothing, so I wasn't able to gather much data.

I'll keep looking at this, see what I can do, but it's very confusing so far.
TagsNo tags attached.

Activities

RocketAssistedPuffin

May 4, 2019 2:34 pm

reporter   ~0051500

Last edited: May 4, 2019 5:15 pm

Found a bit of debugging, where it says which planets it's considering and which it's reinforcing.

The save attached shows a case of one planet seemingly receiving everything - Zevos. It's the only one that appears to have actually gained any new Strikecraft, even if the logging reports the others as being funded for that purpose.

Also noticing things like:

5/4/2019 7:11:06 PM Considering reinforcing Zevos with Strikecraft purchaseCostPresent 0 AICostPurchaseCap 1000
5/4/2019 7:11:06 PM Reinforcing Zevos type Strikecraft budget 352 cap 1000 present strength 0

Even though Zevos definitely has Strikecraft on it. A notable thing is the PurchaseCap seems to be the initial_ai_defense values, * 100. Strikecraft are set to 10 caps worth, so the logging reports the PurchaseCap as being 1000, Turrets are set to 12 caps, so it reports 1200, etc. That appears to mean AI planets can never be reinforced above what they started with, as opposed to Classic where they could gain hundreds of ships. If that is true (outside of the above exception of a planet reporting it has nothing), then the mechanic of AI planets being on alert means very little unless it's been attacked. Same for neutering, since the cap seems to not consider the Guard Post count at all.

We also have this:

5/4/2019 7:11:51 PM Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:51 PM Reinforcing Zevos type NonTurretDefense budget 352 cap 100 present strength 0

Which appears numerous times. It never appears to successfully buy anything with this.

EDIT: It seems left over reinforcement budget is given to the CPA budget, which would mean since planets apparently cannot reinforce above their starting amount, that CPA is almost always being given more income. This would mean that the Turtle AI is also secretly the CPA focused AI?

I think in the end, if Reconquests and Wormhole Invasions aren't active, meaning they donate to Reinforcements which donates to CPA...that combined with the Warden donating to Waves, almost all of the AI budget can be put into just Wave and CPA.

I wonder if that combined with the changing budget allocation explains why some people report huge waves, while others report the AI is a pushover?

ArcenDebugLog.txt (16,099 bytes)   
5/4/2019 7:06:00 PM	Considering reinforcing Jain with Guardian purchaseCostPresent 0 AICostPurchaseCap 1200
5/4/2019 7:06:00 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 0 AICostPurchaseCap 1000
5/4/2019 7:06:00 PM	Reinforcing Zevos type Strikecraft budget 10 cap 1000 present strength 0
5/4/2019 7:06:00 PM	Considering reinforcing Blei with Guardian purchaseCostPresent 0 AICostPurchaseCap 1200
5/4/2019 7:07:35 PM	Considering reinforcing Jain with Guardian purchaseCostPresent 300 AICostPurchaseCap 1200
5/4/2019 7:07:35 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 0 AICostPurchaseCap 1000
5/4/2019 7:07:35 PM	Reinforcing Zevos type Strikecraft budget 352 cap 1000 present strength 0
5/4/2019 7:07:35 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2260 AICostPurchaseCap 1200
5/4/2019 7:07:35 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:07:35 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:07:50 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 900 AICostPurchaseCap 1000
5/4/2019 7:07:50 PM	Reinforcing Jain type Strikecraft budget 352 cap 1000 present strength 900
5/4/2019 7:07:50 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:07:50 PM	Reinforcing Jain type NonTurretDefense budget 232 cap 100 present strength 0
5/4/2019 7:07:50 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 2560 AICostPurchaseCap 1200
5/4/2019 7:07:50 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:07:50 PM	Reinforcing Zevos type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:07:50 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2260 AICostPurchaseCap 1200
5/4/2019 7:07:50 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:07:50 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:09:23 PM	Considering reinforcing Jain with Turret purchaseCostPresent 1880 AICostPurchaseCap 1200
5/4/2019 7:09:23 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:09:23 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:09:23 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 0 AICostPurchaseCap 1000
5/4/2019 7:09:23 PM	Reinforcing Zevos type Strikecraft budget 352 cap 1000 present strength 0
5/4/2019 7:09:23 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2260 AICostPurchaseCap 1200
5/4/2019 7:09:23 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:09:23 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:09:41 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 900 AICostPurchaseCap 1000
5/4/2019 7:09:41 PM	Reinforcing Jain type Strikecraft budget 352 cap 1000 present strength 900
5/4/2019 7:09:41 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:09:41 PM	Reinforcing Jain type NonTurretDefense budget 232 cap 100 present strength 0
5/4/2019 7:09:41 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 2860 AICostPurchaseCap 1200
5/4/2019 7:09:41 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:09:41 PM	Reinforcing Zevos type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:09:41 PM	Considering reinforcing Blei with Strikecraft purchaseCostPresent 300 AICostPurchaseCap 1000
5/4/2019 7:09:41 PM	Reinforcing Blei type Strikecraft budget 352 cap 1000 present strength 300
5/4/2019 7:10:13 PM	Considering reinforcing Jain with Guardian purchaseCostPresent 900 AICostPurchaseCap 1200
5/4/2019 7:10:13 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 0 AICostPurchaseCap 1000
5/4/2019 7:10:13 PM	Reinforcing Zevos type Strikecraft budget 352 cap 1000 present strength 0
5/4/2019 7:10:13 PM	Considering reinforcing Blei with Guardian purchaseCostPresent 300 AICostPurchaseCap 1200
5/4/2019 7:10:36 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:10:36 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:10:36 PM	Reinforcing Jain type NonTurretDefense budget 351 cap 100 present strength 0
5/4/2019 7:10:36 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 0 AICostPurchaseCap 1000
5/4/2019 7:10:36 PM	Reinforcing Zevos type Strikecraft budget 351 cap 1000 present strength 0
5/4/2019 7:10:36 PM	Considering reinforcing Blei with Strikecraft purchaseCostPresent 900 AICostPurchaseCap 1000
5/4/2019 7:10:36 PM	Reinforcing Blei type Strikecraft budget 351 cap 1000 present strength 900
5/4/2019 7:10:36 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:10:36 PM	Reinforcing Blei type NonTurretDefense budget 231 cap 100 present strength 0
5/4/2019 7:10:51 PM	Considering reinforcing Jain with Turret purchaseCostPresent 2000 AICostPurchaseCap 1200
5/4/2019 7:10:51 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:10:51 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:10:51 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 3480 AICostPurchaseCap 1200
5/4/2019 7:10:51 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:10:51 PM	Reinforcing Zevos type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:10:51 PM	Considering reinforcing Blei with Guardian purchaseCostPresent 900 AICostPurchaseCap 1200
5/4/2019 7:11:06 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:11:06 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:06 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:06 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 0 AICostPurchaseCap 1000
5/4/2019 7:11:06 PM	Reinforcing Zevos type Strikecraft budget 352 cap 1000 present strength 0
5/4/2019 7:11:06 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2640 AICostPurchaseCap 1200
5/4/2019 7:11:06 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:06 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:21 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:11:21 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:21 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:21 PM	Considering reinforcing Zevos with Guardian purchaseCostPresent 0 AICostPurchaseCap 1200
5/4/2019 7:11:21 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2640 AICostPurchaseCap 1200
5/4/2019 7:11:21 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:21 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:36 PM	Considering reinforcing Jain with Turret purchaseCostPresent 2000 AICostPurchaseCap 1200
5/4/2019 7:11:36 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:36 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:36 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 3780 AICostPurchaseCap 1200
5/4/2019 7:11:36 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:36 PM	Reinforcing Zevos type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:36 PM	Considering reinforcing Blei with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:11:36 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:36 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:51 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:11:51 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:51 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:51 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 3780 AICostPurchaseCap 1200
5/4/2019 7:11:51 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:51 PM	Reinforcing Zevos type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:11:51 PM	Considering reinforcing Blei with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:11:51 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:11:51 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:12:07 PM	Considering reinforcing Jain with Turret purchaseCostPresent 2000 AICostPurchaseCap 1200
5/4/2019 7:12:07 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:12:07 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:12:07 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 3780 AICostPurchaseCap 1200
5/4/2019 7:12:07 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:12:07 PM	Reinforcing Zevos type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:12:07 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2640 AICostPurchaseCap 1200
5/4/2019 7:12:07 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:12:07 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:12:22 PM	Considering reinforcing Jain with Guardian purchaseCostPresent 1500 AICostPurchaseCap 1200
5/4/2019 7:12:22 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:12:22 PM	Reinforcing Jain type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:12:22 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 600 AICostPurchaseCap 1000
5/4/2019 7:12:22 PM	Reinforcing Zevos type Strikecraft budget 352 cap 1000 present strength 600
5/4/2019 7:12:22 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2640 AICostPurchaseCap 1200
5/4/2019 7:12:22 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:12:22 PM	Reinforcing Blei type NonTurretDefense budget 352 cap 100 present strength 0
5/4/2019 7:15:09 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:15:09 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:15:09 PM	Reinforcing Jain type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:15:09 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 600 AICostPurchaseCap 1000
5/4/2019 7:15:09 PM	Reinforcing Zevos type Strikecraft budget 355 cap 1000 present strength 600
5/4/2019 7:15:09 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2640 AICostPurchaseCap 1200
5/4/2019 7:15:09 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:15:09 PM	Reinforcing Blei type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:23:18 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:23:18 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:23:18 PM	Reinforcing Jain type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:23:18 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 4400 AICostPurchaseCap 1200
5/4/2019 7:23:18 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:23:18 PM	Reinforcing Zevos type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:23:18 PM	Considering reinforcing Blei with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:23:18 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:23:18 PM	Reinforcing Blei type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:23:33 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:23:33 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:23:33 PM	Reinforcing Jain type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:23:33 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 600 AICostPurchaseCap 1000
5/4/2019 7:23:33 PM	Reinforcing Zevos type Strikecraft budget 355 cap 1000 present strength 600
5/4/2019 7:23:33 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2640 AICostPurchaseCap 1200
5/4/2019 7:23:33 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:23:33 PM	Reinforcing Blei type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:28:00 PM	Considering reinforcing Jain with Turret purchaseCostPresent 2000 AICostPurchaseCap 1200
5/4/2019 7:28:00 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:28:00 PM	Reinforcing Jain type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:28:00 PM	Considering reinforcing Zevos with Turret purchaseCostPresent 4720 AICostPurchaseCap 1200
5/4/2019 7:28:00 PM	Considering reinforcing Zevos with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:28:00 PM	Reinforcing Zevos type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:28:00 PM	Considering reinforcing Blei with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:28:00 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:28:00 PM	Reinforcing Blei type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:28:15 PM	Considering reinforcing Jain with Strikecraft purchaseCostPresent 1500 AICostPurchaseCap 1000
5/4/2019 7:28:15 PM	Considering reinforcing Jain with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:28:15 PM	Reinforcing Jain type NonTurretDefense budget 355 cap 100 present strength 0
5/4/2019 7:28:15 PM	Considering reinforcing Zevos with Strikecraft purchaseCostPresent 600 AICostPurchaseCap 1000
5/4/2019 7:28:15 PM	Reinforcing Zevos type Strikecraft budget 355 cap 1000 present strength 600
5/4/2019 7:28:15 PM	Considering reinforcing Blei with Turret purchaseCostPresent 2640 AICostPurchaseCap 1200
5/4/2019 7:28:15 PM	Considering reinforcing Blei with NonTurretDefense purchaseCostPresent 0 AICostPurchaseCap 100
5/4/2019 7:28:15 PM	Reinforcing Blei type NonTurretDefense budget 355 cap 100 present strength 0
ArcenDebugLog.txt (16,099 bytes)   

wm46

May 4, 2019 6:16 pm

reporter   ~0051501

The issue doesn't seem to be in strength counting directly, I did some debugging for which units get added where and it seems normal.

A log excerpt (note I accidentally put "Mobile" for immobile ships), "Guard" is the tag that gets added to GuardAIToPurchaseCostPresent:

Unit <AI Command Station> Strength = 521 PurchaseCost = 420
Unit <WarpGate> Strength = 14 PurchaseCost = 200
Unit <Plasma Turret> Strength = 602 PurchaseCost = 1500
   Attacker
   Mobile
   Guard
Unit <Concussion Guard Post> Strength = 1219 PurchaseCost = 400
   Attacker
   Mobile
   Guard
Unit <Vampire Guardian> Strength = 1067 PurchaseCost = 300
   Attacker
   Immobile
   Cloaked
   Guard
Unit <Concussion Guard Post> Strength = 1240 PurchaseCost = 400
   Attacker
   Mobile
   Guard
Unit <Stealth Guardian> Strength = 810 PurchaseCost = 300
   Attacker
   Immobile
   Cloaked
   Guard
Unit <MLRS Guard Post> Strength = 1375 PurchaseCost = 410
   Attacker
   Mobile
   Guard
Unit <MLRS Guard Post> Strength = 1416 PurchaseCost = 410
   Attacker
   Mobile
   Guard
Unit <Pike Guard Post> Strength = 1386 PurchaseCost = 400
   Attacker
   Mobile
   Guard
Unit <Sabot Guard Post> Strength = 1207 PurchaseCost = 420
   Attacker
   Mobile
   Guard

wm46

May 4, 2019 6:40 pm

reporter   ~0051502

I just realized when looking over my tags and the Reinforce code again:

Issue 1:
Because guard strength is wrapped up in guardposts containing units, and because guardposts are "Immobile" and "Guard", the lines of code...

            switch ( reinforcementType )
            {
               case ReinforcementType.Guardian:
               case ReinforcementType.Strikecraft:
                    return strengthData.GuardAIToPurchaseCostPresent - strengthData.TurretAIToPurchaseCostPresent - strengthData.ForcefieldAIToPurchaseCostPresent;
                case ReinforcementType.Turret:
                    return strengthData.TurretAIToPurchaseCostPresent;
                case ReinforcementType.NonTurretDefense:
                    return strengthData.NonTurretDefenseAIToPurchaseCostPresent;
                //case ReinforcementType.Forcefield:
                // return strengthData.ForcefieldAIToPurchaseCostPresent;
                default:
                    return 0;

… will always return 0 unless there are guardians roaming in the planet. Furthermore, the code does not differentiate between strikecraft or guardian strength when reinforcing, even though in the code they have two different caps. I guess that guarantees that there will always be 2 strength_caps of guardians (assuming the code works properly), but it feels weird for them to not be counted separately.

Issue 2:
Guardposts (and units inside them) count towards "Immobile", so guard posts and strikecraft in them are regarded as turrets. You can see this in your reinforcement logging with planet Zevos. Zevos is the only planet with 20+ units inside the guardposts, the other two have less than 10, and yet in reinforcement logging it shows Zevos turret budget being used.

wm46

May 4, 2019 7:22 pm

reporter   ~0051503

A separate issue from the ones I found before:

In DefensePlacer_Default at line 31, it seems there was an attempt to add guardians as reinforceable points. It doesn't seem to function at all. Guardians are never added to the list of reinforceable points, and if they were it'd also be weird if they get reinforced with turrets -> floating turrets in planets.

RocketAssistedPuffin

May 4, 2019 7:41 pm

reporter   ~0051504

Humm.

The log excerpt seems to be including the units inside the Posts as part of the Posts costs - they all cost 200, but evidently aren't showing up as that. It also includes their Strength - I'm sure AI Command Stations are not really Strength 521, given they have a 0.1x multiplier on that, no weaponry and low health.

This all may explain why the initial_ai_defenses works for Guardians (which are not put inside Posts), but not for Strikecraft (which are). Doesn't answer the Turrets though.

...Now that I think about it, Strikecraft and Turrets both rely on Guard Posts for their spawning, while Guardians do not.

That new issue seems to be from PrePivot? Back then, Guardians were the reinforce points, and Posts didn't exist (hence why they have no models).

BadgerBadger

May 4, 2019 8:02 pm

manager   ~0051505

It is completely unsurprising to me there are a lot of weirdnesses in this code. I might have some time to look into it tomorrow, unless other people figure it all out first.

wm46

May 4, 2019 8:05 pm

reporter   ~0051506

I submitted a fix for the strength counting issue, so now strikecraft inside the guard posts don't count as turret strength too. I'll leave the decision for how to handle reinforcement scaling to you.

wm46

May 4, 2019 8:08 pm

reporter   ~0051507

This should mean that turrets will be properly reinforced too, as before strikecraft were taking up their spot, essentially.

RocketAssistedPuffin

May 4, 2019 8:44 pm

reporter   ~0051508

I would kind of like it if the cap could be based on the reinforceable points remaining, So neutering a planet has more effect.

It'd probably have to be fairly...big as well. Right now it only seems like a planet can have about 50 Strikecraft before hitting the cap? Which is really low. Maybe about 5000 income cost per point? Means each Point goes up to 250 normal Strikecraft (i.e Pike Corvettes which cost 20) each , which is apparently what Classic used. So a planet with 3 Posts and a Station has a cap of 20,000 cost, or about 1,000 Strikecraft. We already get waves several times that fairly often apparently.

Guardians, Turrets and Non Turret Defenses I'm not sure on. I think Guardians would be a bit like Strikecraft (but not as much), and Turrets/Non Turret Defenses would probably stay capped at their initial seed. Strikecraft and Guardians are more fun and interesting to have more of, since they can come after you, go as threat, etc, while Turrets are just a grind.

It's up to you guys though on that, since I doubt I can fix any of it.

wm46

May 5, 2019 12:03 am

reporter   ~0051509

It's easy enough to add into GetGuardingUnitAICostPurchaseCap in AI.cs, but I don't know about balancing things. If you add this bit of code in at 2799, you can make each guardpost/command center add a whole extra cap ontop of the initial seeding for turrets and strikecraft:

            int numGuardPosts = planet.GetNumberIn(EntityRollupType.ReinforcementLocations, null, false, false);

            switch (reinforcementType)
            {
                case ReinforcementType.Turret:
                case ReinforcementType.Strikecraft:
                    result *= (FInt)numGuardPosts;
                    break;
                default:
                    break;
            }

That might be a bit too steep though, a planet with 7 guardposts can have an extra 8000 (unadjusted) strength of just turrets with that change. I guess other formulas could be used, like result *= guardposts * 0.5, or something more complex like result *= 1 + ( ( guardposts - 1 ) * 0.5 ) to ensure that the cap is exactly 1 cap with just a command center.

This still wouldn't scale with AIP except for the bonus the AI gets every tech up though, and the budget increase it gets with AIP (though that only replaces things faster).

wm46

May 5, 2019 2:35 pm

reporter   ~0051510

I implemented the last equation put down with a slight change - result *= 1 + ( ( guardposts - 1 ) * 0.25 ). Even an extra 25% per guardpost might be a bit much, and also maybe the minimum of 1 should be something like 0.5, but we shall see.

wm46

May 5, 2019 2:43 pm

reporter   ~0051511

Fixed another bug where ships inside non-military reinforcement points (aka AI Command Center) were not being counted towards guard strength for reinforcement.

RocketAssistedPuffin

May 5, 2019 2:56 pm

reporter   ~0051512

See how it is in practice. It seems easy enough for me to change.

Admittedly you'd probably have to wait by a planet for a long time for it to fill up anyway.

Chris_McElligottPark

Dec 27, 2019 8:38 pm

administrator   ~0055198

At last! ;)

* The five "balance_initial_ai_defenses" xml entries in our central constants have been completely removed, and equivalents are now on the actual AI types instead.
** This lets us completely balance the AI defenses around AI types if we ever want to tune that.
** These are also per-reinforcement-point now, rather than per-planet, and they are also directly in AI cost units rather than "caps" which have to be converted to those units by a mysterious multiplier.

* The entire way that we calculate what the defensive budget cap at a planet is has been rewritten from scratch. It was giving absurdly high numbers previously, such as 443 strength for the AI home planet's cap at the START of a game. That was just way too much for the start to be sitting at, cap-wise.
** Now things are balanced completely around the number of reinforcement points, like the original game was, so if you go in and neuter a planet it will absolutely cripple their ability to reinforce. More power to you, the player! Yay!
** The overall caps are also far lower than they ever were in the past, this is worth stressing before you read the next two bits.
** But there remains a very tiny (laughably small, really) percentage bonus that the AI gets as the AIP rises. Eh.
** There's also a NEW fairly small percentage bonus based on time spent in the campaign. The way it works out is a 48% increase in budget after TEN HOURS of playing at difficulty TEN. After 10 hours at difficulty 7, it's a much more modest 12% increase. This gives you some time pressure, but it's really nothing major and is still less than the AI could theoretically start out with prior to now. And with your new ability to absolutely cripple the AI by neutering guard posts at no AIP cost... we may need to make some of these multipliers higher, who knows. But probably now, we mainly have other plans.

Issue History

Date Modified Username Field Change
May 4, 2019 1:55 pm RocketAssistedPuffin New Issue
May 4, 2019 2:34 pm RocketAssistedPuffin File Added: ArcenDebugLog.txt
May 4, 2019 2:34 pm RocketAssistedPuffin File Added: ReinforcementOddities.save
May 4, 2019 2:34 pm RocketAssistedPuffin Note Added: 0051500
May 4, 2019 5:13 pm RocketAssistedPuffin Note Edited: 0051500
May 4, 2019 5:15 pm RocketAssistedPuffin Note Edited: 0051500
May 4, 2019 6:16 pm wm46 Note Added: 0051501
May 4, 2019 6:40 pm wm46 Note Added: 0051502
May 4, 2019 7:22 pm wm46 Note Added: 0051503
May 4, 2019 7:41 pm RocketAssistedPuffin Note Added: 0051504
May 4, 2019 8:02 pm BadgerBadger Note Added: 0051505
May 4, 2019 8:05 pm wm46 Note Added: 0051506
May 4, 2019 8:08 pm wm46 Note Added: 0051507
May 4, 2019 8:44 pm RocketAssistedPuffin Note Added: 0051508
May 5, 2019 12:03 am wm46 Note Added: 0051509
May 5, 2019 2:35 pm wm46 Note Added: 0051510
May 5, 2019 2:43 pm wm46 Note Added: 0051511
May 5, 2019 2:56 pm RocketAssistedPuffin Note Added: 0051512
Dec 27, 2019 8:38 pm Chris_McElligottPark Assigned To => Chris_McElligottPark
Dec 27, 2019 8:38 pm Chris_McElligottPark Status new => resolved
Dec 27, 2019 8:38 pm Chris_McElligottPark Resolution open => fixed
Dec 27, 2019 8:38 pm Chris_McElligottPark Fixed in Version => BETA 1.1 So Much Stuff We Can't Even, But More Is Still Coming
Dec 27, 2019 8:38 pm Chris_McElligottPark Note Added: 0055198