Difference between revisions of "AI War:How The Fallen Spire Campaign Really Works"
Line 26: | Line 26: | ||
Like the first signal, it checks every second for a survey ship on the planet, and counts down, etc. When it hits the seconds-to-survey threshold it: | Like the first signal, it checks every second for a survey ship on the planet, and counts down, etc. When it hits the seconds-to-survey threshold it: | ||
* Advances the story stage. | * Advances the story stage. | ||
− | * Spawns a FallenSpire_FirstShard at a random spot on that planet. | + | * Spawns a FallenSpire_FirstShard at a random spot on that planet, this is completely controlled by the player (i.e. not minor faction in any way). |
* Generates a journal entry (which will auto-pause the game unless DisableDangerousEventAutoPause is checked on the settings window). | * Generates a journal entry (which will auto-pause the game unless DisableDangerousEventAutoPause is checked on the settings window). | ||
Each second, the shard checks to see if it is on a human homeworld, if not, it checks how many seconds it has been alive, minus 2. If that value is a multiple of its chase-spawn-interval (which is 60 for this first shard), it triggers the creation of an Event-attack armada of a specific number of points (2000, for this first shard). | Each second, the shard checks to see if it is on a human homeworld, if not, it checks how many seconds it has been alive, minus 2. If that value is a multiple of its chase-spawn-interval (which is 60 for this first shard), it triggers the creation of an Event-attack armada of a specific number of points (2000, for this first shard). | ||
+ | * Note: the 60 second interval is used for the Normal combat style. On Epic, it uses 120 seconds. On Blitz, it uses 30 seconds. This is to maintain the same number of spawns per stretch of distance covered by the shard. | ||
If it is on a human homeworld, it doesn't check for event attack, but instead advances the story stage and generates a journal entry. The shard's buy menu allows the player to build a subspace receiver on any planet with a human home command station. | If it is on a human homeworld, it doesn't check for event attack, but instead advances the story stage and generates a journal entry. The shard's buy menu allows the player to build a subspace receiver on any planet with a human home command station. |
Revision as of 18:17, 24 November 2010
Contents
How does the Fallen Spire campaign really work?
Ok, fair warning: this article doesn't hold back on the spoilers. If you'd rather discover the details yourself but want some info, check out the basic non-spoiler overview.
Anyway, on to the details, starting from the beginning of a game with the Fallen Spire minor-faction enabled.
The First Local Signal
Within the first few seconds of the game, the special fires-once-per-second logic for the Fallen Spire campaign will transition the story-stage from not-active to the first stage, and will pick a human homeworld (generally, the first homeworld of the first player) on which to spawn a FallenSpire_InitialSurveyMarker (which is an enemy-to-all minor-faction permacloaked object at coordinate 100000,100000), and also generates a journal entry which is in turn displayed in the alert box.
Each game-second, each story-related object gets to check for special logic. In the case of the marker, it checks for the presence of a survey ship. If one is present, it increments its internal build point counter. When that build point counter hits its defined seconds-to-survey value, it:
- Moves the story stage forward.
- Picks a planet to spawn the first remote signal, as follows:
- It then gets a list of all planets without an AI-controlled command station, this is "List 0".
- It then gets a list of all planets adjacent to one of those that's not in List 0, this is "List 1" (and is all AI planets).
- It then gets a list of all planets adjacent to a planet in List 1 that isn't already in lists 0 or 1, this is "List 2".
- And so on, until the last list has no adjacent planets that aren't already in a list.
- For this signal and the next remote signal, it refuses to add a mkIV AI world to any list. For all remote signals except the last, it refuses to add a core AI world or AI homeworld to any list. So you might get something on the other side of a mkIV/etc, but you'll have a path to it that doesn't involve going through that planet.
- It then picks the list corresponding to the desired-depth-within-AI-territory (for this signal, desired depth is 2). If there actually are none it checks the next higher list, repeat. If all the higher lists have zero, it starts at desired-depth minus 1 and checks, going down from there. It will actually use a planet of depth 0 (non-AI territory) if there are literally no AI planets eligible, like when you're bottlenecked by a mkIV world for one of the first two signals.
- Once it has a list, it checks each planet in that list for distance-from-a-human-homeworld, and only considers those with the smallest such distance. So if the list has 4 planets, with distance-to-human-homeworlds of 4, 4, 7, 12, it will always pick one of the "4"s, randomly between them. This also means that if somehow List 0 is chosen above, it will always pick a human homeworld.
- Spawns a FallenSpire_FirstShardSurveyMarker on the target planet.
- Generates a journal entry.
The First Remote Signal
Like the first signal, it checks every second for a survey ship on the planet, and counts down, etc. When it hits the seconds-to-survey threshold it:
- Advances the story stage.
- Spawns a FallenSpire_FirstShard at a random spot on that planet, this is completely controlled by the player (i.e. not minor faction in any way).
- Generates a journal entry (which will auto-pause the game unless DisableDangerousEventAutoPause is checked on the settings window).
Each second, the shard checks to see if it is on a human homeworld, if not, it checks how many seconds it has been alive, minus 2. If that value is a multiple of its chase-spawn-interval (which is 60 for this first shard), it triggers the creation of an Event-attack armada of a specific number of points (2000, for this first shard).
- Note: the 60 second interval is used for the Normal combat style. On Epic, it uses 120 seconds. On Blitz, it uses 30 seconds. This is to maintain the same number of spawns per stretch of distance covered by the shard.
If it is on a human homeworld, it doesn't check for event attack, but instead advances the story stage and generates a journal entry. The shard's buy menu allows the player to build a subspace receiver on any planet with a human home command station.
Event Attacks
First, it takes the raw number of points (again, 2000 for this first one), and multiplies it by a special scaling factor, computed thus:
- If highest AI difficulty is < 7, base value is that difficulty * 0.15.
- If highest AI difficulty is >= 7 and < 9, base value is 1 + (difficulty - 7) * 0.5 (so diff 7 = base value of 1).
- If highest AI difficulty is >= 9, base value is 2 + (difficulty - 9).
- The base value is then multiplied by the number of human homeworlds or the number of human players, whichever is greater.
So if you're playing a one-player game with a single homeworld on difficulty 7, your multiplier is 1 and it just uses the raw 2000 points. If you're playing on difficulty 7.6 with two players each having 2 homeworlds, your multiplier is (1.3 * 4) = 5.2, so this first attack would be 10400 points. Rather more dangerous.
Second, it builds a list of targets to send battlegroups after. For these first couple recovery missions, this is just the object you're trying to recover. For later missions this generally includes each human home command station and Spire settlement (more on that later).
Third, it builds a list of eligible spawning locations, which is basically the nearby warp gates but also other things that act as warp gates (AI Eyes, Special Forces Guard Posts, etc).
Fourth, it builds a list of all ship types it can use based on which expansions are enabled, what bonus ship types it has unlocked, etc. Each eligible ship type has a designated tier and sub-tier that determines its point cost, so a Heavy Drone like a Fighter MkI costs 3 points, a Medium Corvette like a Bomber MkIV costs 24 points, and Light Battleship like a Black Widow Golem costs 4096 points.
- Note: on normal caps, the smaller ships have double cost, on low caps they have quadruple cost.
Fifth, it populates the individual battlegroups within the armada, splitting the points evenly between them. Each battlegroup:
- Sets aside 1/3rd of its budget for a single command ship of the largest affordable tier&sub-tier that has eligible types. Leftover points carry on to:
- Sets aside 1/3rd of its budget for mid-sized escorts (it tries for 3 ships of 1/8th of the escort budget, 4 ships of 1/16th, 6 of 1/32nd, and 12 of 1/64th). Note that escorts don't actually have to be smaller than the command ship, but it is mathematically likely. Leftover points carry on to:
- Sets aside 1/3rd of its budget for pickets, which can only be drones, cutters, or corvettes (the three smallest tiers, basically "fleet ships", though stuff like Zenith Electric Bombers and such are bigger than this). For each of the 9 sub-tiers within the picket range, it cannot pick more than 32 ships (16 on normal caps, 8 on low). Leftover points carry on to:
- While leftover points remain, try to pick more escorts.
- It then actually picks specific ship types within the designated tiers.
Note that you can have the result of the population step written to the "EventAttackCompositionInfoLog.txt" log file in your RuntimeData folder if you've enabled advanced logging on the settings window (advanced tab).
Sixth, it actually deploys (spawns) the battlegroups, each from a randomly selected relatively-nearby spawn point (found in step 3) and headed to one of the targets (found in step 2).
- If a battlegroup is targeting a stationary objective like a human home command station, it uses the "coordination" logic developed for the Hybrids. Specifically, the command ship is the coordinator and the other ships in the battlegroup will stick close to it, and have their speed set to the coordinator's plus 5. Unlike hybrid subfleets, the coordinated ships can be effectively engine-damaged
A brief example may help: say you're playing a single-player, single-homeworld difficuly 8.3 game (multiplier of 1.65) and have just found the first shard. 2 seconds later it will spawn an event-attack with one battlegroup trying to destroy the shard. The budget for that armada (and thus for the single battlegroup) is 2000 * 1.65 = 3300:
- It picks the biggest command ship it can get for 1100 points. The Light Cruiser tier has a per-ship cost of 1024, and the Medium Cruiser is 1536, so it's a Light Cruiser.
- It then looks for the biggest tier of <= 137 points (1100 for escorts, 1/8 of that for the biggest escorts). That works out to a Heavy Frigate (128), so it sets aside points for 3 of those.
- It then looks for a <= 68 tier, which works out to Light Frigate (64), so it sets aside points for 4 of those.
- It then looks for a <= 34 tier, which is a Heavy Corvette (32), so it sets aside points for 6 of those.
- It then looks for a <= 17 tier, which is a Light Corvette (16), so it sets aside points for 12 of those.
- For the pickets, it then sets aside 122 points (1100 / 9) for each of: Heavy Corvette, Medium Corvette, Light Corvette, Heavy Cutter, Medium Cutter, Light Cutter, Heavy Drone, Medium Drone, Light Drone. Note that it can't pick more than 32 of any one of those (on high caps) so it will have leftovers.
- If it has any left over, it runs that value through the escort-picking routine. If it still has some left over, it runs the remaining through the escort routine again, and so on, until it runs out or can't spend any more points that way.
As of this writing the following ships are designated as Light Cruisers: Spire Starship, Bomber Starship MkIII, Siege Starship MkIII, Raid Starship MkIII, Riot Control Starship MkIII. Note that in a future version we might promote the Spire Starship up to Medium Cruiser and fill its spot with the Zenith Starship. It's an ongoing balancing process.
For the escorts, several mkII guardian types qualify as Heavy Frigates, as does the Light Starship. As it happens, there are currently no types designated as Light Frigates, so those points would have been shuffled down to the Corvette tiers.
For the Heavy Corvette picks currently the only types are the MkV Bomber and MkV Space Tank. For Light Corvette there's the MkIV Missile Frigate, the Mk III Bomber, the Mk III Space Tank, and the MkV Bulletproof Fighter. We obviously still have to define tiers for a lot of the bonus ship types, but this gives you the general idea.
The Second Local Signal
Will continue writing this document later...