AI War 2:The Final Cycle

From Arcen Wiki
Jump to navigation Jump to search

Known Issues

  • Any bugs or requests should go to our mantis bugtracker
    • If you need to submit log files, those can generally be found under your PlayerData folder in the folder your game is installed in. The most relevant one is called ArcenDebugLog.txt. You can send us the whole thing, or just strip out relevant parts.
    • In rare cases, mainly if your entire game crashes (that almost never happens), we will need your unity player log. That gets overwritten the next time you run the game after a crash, unlike the other log. These can be found here:
      • Windows: C:\Users\username\AppData\LocalLow\Arcen Games, LLC\AIWar2\Player.log
      • macOS: ~/Library/Logs/Arcen Games, LLC/AIWar2/Player.log
      • Linux: ~/.config/unity3d/Arcen Games, LLC/AIWar2/Player.log

What Does Multiplayer Beta Mean?

Please see this link for details on multiplayer. This wound up taking up too much space in this document, so all of the multiplayer-relevant bits have been moved to the other page.

What's this phase all about?

We finally got out of the endless beta of The Great Refactor, and DLC1 has been majorly beefed-up and multiplayer is better than ever. That said, multiplayer is still in the very last stages of its own beta.

With this new phase, we have fully shifted back to working on DLC3 (The Neinzul Abyss), which will be the final DLC for the game. The various remaining kickstarter items will also be taken care of, plus some other bits that we just always wanted to add for the game, and after that we'll be moving on to other projects aside from bugfixes and balance tweaks and modder-support throughout 2022.

The target release for DLC3 is in April of 2022, and that is when we'll also have the AI War 2 Complete Edition. After that, it will just be fixing material defects, and supporting modders. We expect it to have a long life if AI War Classic is anything to go by. The game is in a really good state and only getting better, and doing a refactor of this scale near the end of the project development cycle is a sign of our commitment to that longevity. Even if you aren't giving us more money in the future for this title, we want you to be able to enjoy it for years and years.

4.014

(Not Yet Released)

  • Add some defensive code for MP clients
  • Remove some mentions of the sadly-deprecated Vassal code
    • Thanks to Strategic Sage for reporting

4.013 Hotfixes

(Released April 6th, 2022)

  • Fixed an exception on load in the prior build if you had DLC2 but not DLC3 enabled.
    • Thanks to Peter Ebbesen, Ithuriel0, and Smithal for reporting.
  • Fixed an exception that could happen during loading certain quickstarts, or probably other lobby initialization situations as well.
    • Apparently also when generating maps in the lobby for some players!
    • Thanks to rem_tuas and Ithuriel0 for reporting.
  • Fixed a typo in the Architrave Eques description.
    • Thanks to Ithuriel0 for reporting.
  • Fixed an exception that could happen after hitting reset to defaults in the lobby now that it is checking for re-pooled game commands. The game command in question was redundant and served no purpose at this point anyhow, happily.
    • Thanks to Badger for reporting.
  • Adjusted Dire CPAs to no longer be forced on until Logistician mode, rather than being forced on in Expert mode. They are still optional in any lower mode.
    • Thanks to Strategic Sage for suggesting, and for being patient with our second-guessing of him on it.

4.012 The Zeusathon

(Released April 5th, 2022)

  • The Hunter Fleet is capable of getting into a really funky situation where the minimum size for a fireteam to activate was an incredibly large number. I don't know why this happened, but I've put some code in to help it escape, and also left in some active debugging in the hopes that next time someone hits this we'll see what happened.
    • Thanks to Lord Of Nothing for reporting.
  • The remaining Necromancer flagship art from DLC3 is now in place.
  • The remaining DLC2 Dark Zenith placeholder art is now actually cool direct art.
    • Same for the remaining DLC2 scourge units.

DLC2

  • Made the ZA much less likely to sideswipe the player during a civil war
    • Thanks to Lord of Nothing for reporting
  • Fix a bug where the ZA weren't spawning their Golems
  • Add some defensive code to the Border Aggression deepinfo
  • Hoplomachus now cost the AI more, to be in range of Dire Guardians
    • Thanks to Lord Of Nothing to pointing this out!
  • Added a new scaling to the Architrave (applicable to guardian - Golem tier units). Damage peaks at x4.5 and health peaks at x6.5
    • This is a defensive faction so they now have a scaling to reflect this. Before, many of their units were using the guardian scaling, with is basically x10 to damage/health at Mark 7... this was way overkill
  • Added a new scaling to the Dark Zenith (applicable to guardian - Golem tier units). Damage peaks at x6.5 and health peaks at x4.5
    • This is an offensive faction so they now have a scaling to reflect this. Like the ZA, many of their units were using the guardian scaling so this is a nerf overall
  • Jormugandur now regenerates to full health, assuming 1 health remaining, faster, from 30 minutes to 10 minutes
    • This is the supreme DZ unit and needs to reliably be able to retreat and heal up
  • Reduced Bolas (ZA) and Harpoons (DZ) speed from 2,200 to 1,600
    • These should be dodgable by flagships, else these just shut you down to easily

DLC3 Balance

  • Increase interval frequency of Templar Waves and increased their base strength
    • Harder and more frequent Templar waves are also more reliable farming for science/hacking points
  • Templar units now grant much more science and hacking than they were previously
    • Strikecraft units from 2 science to 3 science
    • Guardian units from 6 science to 9 science
    • Encampments/Fortress/Castles from 5 hacking to 7 hacking. Science increased to 500 (for all)
    • Constructor grants 1000 science (from 500) and 25 hacking (from 10)
  • Reduced the number of drones produced by the Neinzul Nest/Cluster (For the Neinzul Enthusiast AI type). Also tripled health
    • This is more for performance reasons than anything else. They just flooded too many units
  • Zenith Architrave Castra now grants science/hacking to necromancer
  • Flagships obtainable from rifts need a min. mark of 2 to transform from 3
    • These are weaker than the Elderling Flagships so this change is to make them more appealing
  • Unyielding Flagship speed increased from 1,000 to 2,200 to match others
  • Rift Flagships now all have their modules. They were missing a tag

Mod Updates

  • AI Shield Generators mod
    • Updated the xml to make Shield Generators unable to be captured. This was always intended to be the case but was missed from the xml for the new version of the mod.
    • Changed the Shield Generator and Core Shield icons to take advantage of the new icons (They are now using Ships3/SomethingTurtleShield).
    • Core Shields are no longer shown on the Galaxy Map. The player already knows where they are and they cannot move, so they were just adding unnecessary clutter. Shield Generators are still shown as normal.

4.011 Multiplayer Stability

(Released April 4th, 2022)

  • Update the City Mechanics journal for the spire to mention some building restrictions
    • Suggested by Peter Ebbesen
  • The DLC3 factions now all have icons in the game lobby
  • Added new force_gravity_well_size_of_planet_to_be_at_least and force_gravity_well_size_of_planet_to_be_at_most features, which allow a unit to force the gravity well to be within a certain size range. If it is shrinking the gravity well, then it scoots all the wormholes and ships inward at the percentage they were from the older larger size.
    • This is now used by the Templar Sovereign to make sure that the planet it is on always is in a certain size range so that its orbitals are neither way out of the grav well, nor way into the grav well in a way that defeats their purpose.
    • Thanks to zeus for sort of requesting.
  • After discussion on mantis, two of the AI types have had their difficulty reclassified. Swarmer has been demoted to Hard (they are on the border between Brutal and Hard), and Spire Hammer has been promoted to Brutal (they again are on that same border).
    • Nothing is changed with these AI types in their actual function or balance, but it was agreed that these labels represent them better.
    • Thanks to Ecthelon, CRCGamer, Lord Of Nothing, and Strategic Sage for the discussion.
  • The mark level of each spire city is now shown, in proper color, at the end of its name now.
    • This makes it way easier for people to find their more important cities, especially if they're coming into an unfamiliar save.

Bugfixes

  • Fixed an issue with sliders where tooltips could be placed over top of the number to the right of them.
    • Thanks to Glyoxim for reporting.
  • At last, seem to have fixed a general multiplayer error that was initially having clients get "corrupted seeming" game commands, but really was a matter of those having been partly put back in the pool already. Essentially this was a client-only threading issue, and related to how we used a pair of rotating queues.
    • Instead of using a pair of rotating queues, it now uses a single queue, and then a feeder working list, and this dodges the timing issues entirely (and is just as efficient).
    • This particular bug was what was causing the flood of errors on some MP clients some of the time recently (the flood of errors was actually good, because it meant that we were finding out about the issue rather than executing malformed gamecommands).
    • Apparently this could also lead to a rare nullref in single player.
    • Also this could cause one in the lobby reset to defaults, wow.
    • Thanks to ptarth, Cyborg, xaid, Badgerm, Lord of Nothing, and Eluthena for reporting.
  • Fixed an issue where Expatriate tech and similar would not be applied to allied factions until you paused the game.
    • Thanks to Incognito and LordNSR for reporting.
  • Fixed threading errors that could happen in PrepareConflictPlanetMovementLogic.
    • Thanks to gekko for reporting.
  • Fixed what was apparently a super rare exception that could happen inside our forcefield rippler code.
    • Thanks to habakuk for reporting.
  • Fixed a number of places in the code that were calling a non-threadsafe for-ui-only method on fleets, which has been renamed to be even more clear it should never be called except from the UI.
    • Also hardened that code a bit for threading errors just in case.
    • The alternative code, which is what was supposed to be called, now is -- and that's much higher-performance code in general, so makes a few parts of the sim, autobuild, and otherwise all faster.
    • Thanks to habakuk and slake-moth for reporting.
  • Fixed an exception that could happen in PrivateNomadPlanetNotifier.
    • Thanks to Dismiss for reporting.
  • Fixed an error popup that could happen when you exited from the lobby during a mapgen process (either if your timing was just wrong, or you hit the escape key really quickly after loading in).
    • Thanks to Dismiss and Eluthena for reporting.
  • Fixed a bug where icons under planets in the galaxy map were not drawn after reloading a save, or a similar save from the same campaign, more times.
    • Thanks to slake-moth and Daniexpert for reporting and to Daniexpert for the major debugging to find it.
  • Added a new feature where certain NPC ship caps can be told to no longer show visible warnings to players. The cap still serves a purpose, as it causes stacking and condenses units around, etc, but it won't warn the player that something is "wrong."
    • This should be used sparingly, mainly for categories where we really don't consider it wrong at all, but just would like to have a soft cap that causes things to condense as they can.
    • Most notably, this is used for the drones category now.
    • Thanks to Lictuel for the most recent report.* Added a new feature where certain NPC ship caps can be told to no longer show visible warnings to players. The cap still serves a purpose, as it causes stacking and condenses units around, etc, but it won't warn the player that something is "wrong."
    • This should be used sparingly, mainly for categories where we really don't consider it wrong at all, but just would like to have a soft cap that causes things to condense as they can.
    • Most notably, this is used for the drones category now.
    • Thanks to Lictuel, Detlef, and henry700 for the most recent reports.
  • 18 different quickstarts have been updated to have the proper factions that they were supposed to have, after their initial setups had been messed up a bit.
    • Big thanks to gekko for going to all that trouble and also getting those all fixed!
  • We already had a dies_if_parent_dies tag in DLC3, but now we also have dies_if_parent_is_dead_or_remains.
    • This is applied to all of the various necromancer orbs, and if their ancestor has been turned to remains (rather than outright death), then the orbs also still die. Tested and works.
    • Thanks to Daniexpert for the initial report and save, and to zeus for the new feature request.
  • If a player's king is missing, it no longer throws errors when evaluating if journal entries should be logged.
  • Fixed a frankly insane bit of VERY old code (it was mine) that would delete fleets that were missing their centerpieces for whatever reason.
    • This could lead, in some super rare cases, to the centerpiece for an ark empire not being found, and it then just deleting your king unit and all the related units in its fleet.
    • Additionally, fixed a related bug where it home arks were the one kind of centerpiece that could not self-repair when their fleet had lost a reference to them.
    • Thanks to Glyoxim for reporting.
  • The warden is no longer allowed to path through it's Target planet to get to its Lurk planet
    • This was causing the warden to just trickle into a fight where it could be dispatched piecemeal; this was a regression caused by some changes to make the warden have more "friction" wit the player. Ordinarily more friction is fine, but it shouldn't be quite so oblivious
      • Thanks to Dismiss for the bug report
  • Fixed an issue where traditional-style ship cap scaling was being applied against the fallen spire city buildings when it should not have been, thus leading to inflated counts.
    • Thanks to Lord Of Nothing for reporting.
  • No units have displaces_other_ships_giant_tier anymore.
    • This mechanic tends to make ships invulnerable to short-range units, which is really frustrating for pretty much anything. This was an interesting experiment, but didn't pan out.
    • Thanks to Daniexpert and Zer0h1nder for reporting.
  • Exo strikes are no longer ever able to show negative percentages complete.
    • This was happening when they were syncing with CPAs or wormhole invasions, and waiting for something like that.
    • Now when it's going to sync like that, it just waits at 0% charged for a long while, and then starts counting up once the sync is ready.
    • Thanks to GreatYng, Daniexpert, henry700, and samnainocard for reporting.

4.010 Iconucopia

(Released April 3rd, 2022)

Icons

  • All of the remaining icons and overlays for DLC3 have been created and added in.
  • Overlays for all ten arks (from the base game and DLC1) are now in place, making it possible to differentiate them while still keeping their central icon.
    • Thanks to Badger for suggesting.
  • A whopping 357 new icons for modders have been added to Ships3 and Ships4. These all start with Emblem[X] or Something[X].
    • This is more than the total number of icons in the base game and any single DLC, so this is a pretty huge boon for modders going forward.

Balance

  • It was noted in the Discord that while Persuaders are indeed more durable than Parasites their cost per ship hadn't properly been increased in a previous patch that cut the line counts. And they had a text description about being expensive.
    • Persuader metal and energy costs per ship are now set to be four times higher than previous values.

DLC 1

  • Spire Debris from the Spire Infused Empire can no longer be scrapped
    • Thanks to Lord Of Nothing for reporting

DLC 3

  • Added a new starter fleet -- the "Warded Fleet"
    • Features the Repulsor ward, along with the Samurai Frigate, Corrosive Frigate, and Mosquito Corvette
  • Galactic Control Ships (Triggered by Showdown Device) now emulate Classic by ravaging planets on death
    • diff 1-4 no ravage
    • diff 5-6 ravage planet
    • diff 7-10 ravage planet and adjacet planets
  • Necromancer Flagships now have Modules! Up to 9 options:
    • Enhanced Hull: 2 points -- 50% more hull
    • Enhanced Shields: 2 points -- 50% more shields
    • Forcefield: 4 points -- Gains bubbleshield
    • Tractor Beams: 2 points -- Gains Tractors, increasing with Mark
    • Gravitic Core: 4 Points -- Gains large radius gravity effect, slowing units by 30%
    • Decloaking: 1 point -- Gains Decloaker
    • Cloaking: 4 points -- Gains Cloaking
    • Anti-Shield Plasma Bolt: 3 points -- Gains weapons the excels at killing bubbleshields
    • Fusion Bomb: 3 points -- Gains anti-massive weapon that bypasses shields
  • Necromancer Necropolis/Phylactery now have modules! (Known bug with the module button not appearing)
    • Enhanced Hull: 2 points -- 50% more hull
    • Enhanced Shields: 2 points -- 50% more shields
    • Forcefield: 4 points -- Gains bubbleshield
    • Gravitic Core: 4 Points -- Gains large radius gravity effect, slowing units by 30%
    • Rail Cannon: 1 point -- Sniper weapon with increase salvos per mark
    • Repulsor Rocket: 1 point -- Knockback rockets that do bonus damage to ships immune to knockback.
    • Summon: Caged Skeletons (Drone Gun): 3 points
    • Summon: Mummy Minions (Drone Gun): 5 points
    • Summon: Bone Dragon (Drone Gun): 7 points
      • Necropolis/Phylactery Modules that summon stuff now have a min. mark to function
  • Increased the essence cost of upgrading Necromancer units
    • This is mostly targeted at Mark 4+. In the late game, there's a lot more Essence to harvest
  • Removed AIP penalty from the Neinzul Nest and Neinzul Cluster
    • Player ships will automatically attack these so this needs to be removed
      • Necropolis/Phylactery base stats reduced to compensate for modules
  • Increased the bodyguard count of skeletons and wights
  • Increased the cap size for rift hacks (e.g., increase Fleet X's max cap of ravenous wights from 4 to 12)
  • If the Necromancer is not present for a unit kill that would grant resources to the necromancer, if the kill was done by a non-Necromancer human the necromancer gets 30% of the resources they would have gotten; If the kill was done by an NPC ally, the necroancer gets 75% resources (in either case you get any Upgrades you would, like from a transformed elderling).
    • Thanks to Dragoris for reporting
  • Tidy some Sappers code a bit; fix a typo when calculating beachhead structure limits. Add some debugging code for showdown seeding
    • Big thanks to Puffin for the observation!
  • Encampments and Fastnesses now need to go up to mark 7 before they change form
    • Thanks to zeus for noticing
  • The necromancer's 'transform flagship' hack now has better UI
  • Fix a bug where we were could transform the wrong necromancer flagship
    • Thanks to Keith C. for reporting
  • Necropolises/Phylacteries now have a 'Spend Modules' button in the fleet menu
    • Thanks to Zeus for reporting

Bugfixes

  • Removed an old text reference to reduced damage for units firing from under forcefields from the Siphoner Frigate. As it inherits properties from the base Forcefield Frigate this hasn't been true for a long time.
  • Fix a bug where the Border Aggression budget was never being reset to 0 after launching an attack; the budget was purely cumulative over time. This would lead to really huge border aggression assaults in long games.
    • Thanks to Velius for reporting.
  • Add some debugging code to help diagnose a rare exception in the Build menu.
    • Thanks to habakkuk for reporting.
  • Improve the description for the Orchid Ark.
    • Thanks to Glyoxim for reporting.
  • The game no longer plays "forces in combat" voice lines when the game is paused.
    • Thanks to Ithuriel0 for reporting.
  • Fix a typo in the "Using Nukes/EMP is considered cheating" descriptions.
    • Thanks to cml for reporting.
  • The tooltip for hacks on planets controlled by hostile minor factions now correctly reflects the fact that it is considered a "hostile planet".
    • Thanks to motai for reporting.
  • Add some defensive code to ClearPlanetLooseStuffAndSpecialEffects().
    • Thanks to slake-moth for reporting.
  • Add some debugging code to DoOnDestructionLogic for MP client problems.
    • Thanks to Alivaril for reporting.
  • Add an Advanced setting to the Autosave category to create a 'campaign start' save. The goal is to make it easier to make quickstarts.
    • Thanks to trabbo for suggesting.
  • Fix some typos on ethereal cruiser description and some unit hovertexts.
    • Thanks to Zer0h1nder for reporting.
  • Padded a potential out-of-range exception in the autobuilding code.
    • Thanks to habakuk for reporting.
  • While testing, found and fixed a bug where autobuilding counts from a previous entity type could transfer over to the current setting (i.e. if the player only has 5 tritium sniper turrets, but 10 spider turrets, then the code would built only 5 of each and live the remaining 5 spider turrets unbuilt).
  • Entities with weapons will now reload even while in hold-fire mode. This ensures that their weapons are fully ready when they are allowed to attack again.
    • From a conversation with Ithuriel and Dismiss on Discord.
  • Add a 'wait for stragglers' variant that works on all planets, not just friendly planets.
    • Thanks to ToastTheSniper for reporting.
  • Fixed a small XML typo that caused the CivilAuthorityRepaymentMultiplier to default to 1x when the campaign was set to Expert+.
    • Thanks to Peter Ebbesen for reporting.
  • Fixed an error with xml inheritance that could happen with certain kinds of ship setups.
  • Fixed a typo with Civilian Authorities Total Metal counts that made those appear 10x greater than what they actually were.
    • Thanks to Lord Of Nothing for reporting.
  • Savegames should again load properly.
    • Thanks to Lord of Nothing for the report, and CRCGamer for the fix.

Mod Returns: Core Shield Generators, by cml

  • Updated AI Shield Generators mod.
    • The new version of the mod functions differently to the old version. Rather than adding a faction for each Shield Generator network, each AI faction has options which allow for up to three networks to be created.

4.009 Architrave Taming

(Released March 31st, 2022)

  • The ZA can only build defensive structures once every 10 seconds
    • Thanks to Dismiss for suggesting
  • Description updates to the Ultimate Fortress (and Towers), and more recognizable overlay. Now shows up on the galaxy map

DLC3

  • Fix a typo on the necromancer resources journal
    • Thanks to vinco for reporting
  • Fix a bug where you could do necropolis movement hacks even w/o enough essence
    • Thanks to zeus for reporting
  • Templar scaling reduced so they peak less than default scaling
    • Templar eventually (in the late game) are pretty much sending only mark 7 units so these are tuned down so a late game necromancer fleet will compete
  • Reduced the orbital speed of the Treacherous Totem's orbs, so enemies don't chase them endlessly
  • Adjustments to Templar hacking/science bounty
  • Adjustments to AI structures hacking bounty
    • Generally, nasty picks give more than they were before so they are more impactful
  • Tweaks to Wave Leaders stats to compensate for the new scaling
  • New (temporary?) icon for the sovereign. Looks pretty cool but possibly used elsewhere (Shipgroups4/SomethingNeinzul3)
  • Added another 48sih pieces of art, which pretty much completes the non-icon portions of the DLC3 art.
    • We are still using some duplicate graphics for some of the necromancer flagship variants, but everything else is done!

Balance

  • Corrected a number of issues with AI Spire ship assets. This is part of DLC1 that gets used by some AI types in DLC2. Most notably Spire Hammer and Jabberwock.
    • Practically every AI version still referenced the original ship instead of the non-modular xBase versions put in place when modules were deployed to player versions of the ships.
    • Several missing beam weapon color attributes were found and corrected. Previously slid under the radar because they were inheriting from the player versions.
    • AI Spire Dreadnought now correctly just has a couple big bad coilbeams that only fire once per cycle instead of one of them being a Rube Goldberg monstrosity firing twenty coilbeams once a second.
  • Fixed an issue with the AI Ultimate Fortress spawning one of its sub-units every three seconds instead of once every thirty minutes.
  • Upped the seed weight of the Black Widow golem. It was originally massively reduced since it always had a chance of showing up in early officer spawns. But with those spawns being locked behind lower difficulty AIs having it about seven times rarer than a Regenerator golem was uncalled for.

Mod Updates

  • Update for More System Defenders:
    • Most of the added guardian units had their AI purchase prices revised upwards.
    • AI Artillery Destroyer has had its hull health raised to be four times higher than previous.
    • AI Artillery Destroyer also has had its main gun base damage cut by about 20%
      • The fact a blob of them at mark 7 had an alpha damage of one million versus ships of frigate size or larger per ship the AI sent out was leading to some interesting "vanishing" of entire Spire fleets. The AI purchase price being raised as well should lead to these taking a little longer to kill individually but coming in numbers only about 2/3 as much as previously.

4.008 Exogalactic Wayfinding

(Released March 25th, 2022)

DLC3

  • Vengeful Wight copies (the bodyguard and the revived) now use the vengeful wight base unit instead of the spectral wight
  • Defensive Necropolis no longer buffs damage
    • These will get modules instead
  • Templar Seneschal single target paralysis now hits mass less than 7tx instead of 8tx
    • These were just too obnoxious when paralyzing your flagships and bone dragons.
  • Fix a bug with the tooltip for some Maddened Elderlings
    • Thanks to zeus for reporting
  • Added a "corrosive finale" to the Corrosive Guardian/Guardpost. When these units die, they do one last AOE blast centered on itself to spray corrosive damage. Adjusted these both to specialize against low armor units
  • Added orbital versions of the Corrosive Guardpost
  • Plagueswarm Elderling/Flagship (and their children) now do corrosive damage (DOT)
  • Remade the Chain Lightning Frigate into the Corrosive Frigate
    • Needed to have this new weapon mechanic show up for normal human games and this splash frigate was the logical choice
  • Increased hacking bounty from Templar Structures
    • Noticed my hacking points were actually overly limited! No more drowning in hacking points, so increased the value of these
  • Templar Sovereign now takes 45 minutes to build a Runed castles (instead of 2 seconds)
    • Forgot to change this back after testing this mechanic
  • Increased the Skeleton/Wight/Mummy amplifier to have a bonus chance to create another one to 35/25/15 (from 10/10/10)
    • These amplifiers were just not that enticing at a mere 10%
  • Bone Dragons C.Lightning now hits all mobile ships instead of only strikecraft and frigates
  • Weak Skeletons harmonic max damage cap reduced by half
  • Another huge batch of DLC3 art is now completed and integrated. In all it's about 70 pieces.
    • All of the remaining Templar units are in place (except the hospitaller, which is temporarily using another ship's graphics).
    • All of the venator untis are in.
    • The migrant wormhole.
    • Showdown device.
    • All of the brutal guardians and their related devices, etc.
    • All of the destroyers.
    • All of the new strikecraft and frigates.
    • All of the new AI nasty picks.
    • In general there are still 107 items to do, 59 of which are for DLC3. So this was a solid 40% or so of the remaining work for all this! (These numbers don't quite match yesterday because some things got added).

Bugfixes

  • Fixed a bug where Exogalactic War Units would wind up getting diverted to the wrong targets
    • Thanks to a number of people for reporting, most recently Lord Of Nothing
  • Hunter Fleet ships are less likely to attack ZA Core Territory unless they have specific orders to do so
  • Adjust some zenith miner tooltips
    • Thanks to henry700 for reporting
  • Remove a few mentions of the now-deprecated Lone Wolf concept
    • Thanks to habakuk for reporting
  • Remove a restriction that prevented the player from moving a miner probe onto a player-owned planet. This allows players to shoot themselves in the foot (or grief eachother during MP)
    • Thanks to Zer0h1nder for reporting
  • Fixed a bug where a wave would spawn on its home world instead of the expected planet.
    • This could happen only in games with 2 or more AIs. In more detail, when a wave from one AI was planned to spawn on another AI's planet, it would fail a check to find such planet and therefore default to spawning on its home world.
    • Thanks to Velius for the report and the saves.

4.007 Balance And Tuning

(Released March 24th, 2022)

  • Added a new LogChanges bool to our List<> class, with a related string ListNameForLogChanges field.
    • This can be set to true on a given list in the codebase, and then it will spit out any and all changes that happen to it, with full stack traces, so you can figure out why your list is changing and from where it is being changed.
    • This is very heavy, so should probably only be used on a list or two at a time, and of course only in code during a debug mode.
  • Lots of DLC3 art has been completed! 57 pieces in all.
    • This completes all of the "wards," and almost the remainder of the necromancer units (there are still a few flagships left for them).
    • There are still 162 pieces for me left to do, 47 of which are are for DLC2, and then 183 remaining icons for DLC3. So this was a solid chunk, but there's more to come very soon. It's getting time to make a trailer and screenshots, etc. And release is only a month or so off now!

Balance

  • Way back in 3.776 Raiders were supposedly updated to 20 engine power to make them black hole immune. Well turns out they as a group were still sitting at 18 gX. Instead the lowly Stingray which isn't even a Raid type unit got the buff.
    • Raiders and variants actually buffed to 20 gX engine power.
    • Stingray and variants restored to 14 gX engine power where you can actually CC them.
  • Due to newer player confusion with descriptive text the Shieldwall Battlestation mark scaling damage resistance has been revoked. Instead it has been given a custom stat scaling entry and has its shields eventually hit 6x base XML value at mark seven. Effective health is essentially unchanged.
    • Shieldwall mark 7 max shield health: 5m -> 7.5m
    • Damage resistance: 10-34% -> 0%
  • Previous lone wolf officers not having a weapon timer on loaded ships now corrected. Lone Spire Frigates and a few golems now properly enforce six second weapon safeties.
  • Ultimate Fortress update
    • Fixed a broken tag with the Ultimate Fortress so it can now properly spawn the Sabot Tower variant
    • Reduced the orbital speed of the Towers so players can actually focus fire Towers down one at a time
  • (DLC2) Swapped targeting logic for player version of Raijin Golem Chain Lightning weapon from only targeting strike and frigates to only targeting mobile units. Guardians are now on the menu.

DLC 1

  • Changed behaviour when hacking for Spire Debris. Now when hacking a debris, its countdown will be paused for the duration of the hack and will resume if the hack gets cancelled.
    • Thanks to Ecthelon for the report.

DLC 3: Necromancer

  • Adjusted the ship caps of the Necromancer's defensive structures so there's no more scenarios of having a larger cap of a defense structure compared to the available hexes
    • Cap sizes of defensive structures have been adjusted accordingly, but not uniformly.
  • Necromancer's Lightning Tower now does paralysis. 1 sec per mark (max 7 sec) to ships with mass <= 2tx. They also start with a cap of 5 to make use of their harmonic bonus sooner.
    • Also increased range by about 20%
  • Minor buff to the Necromancer Shipyard. This now has a flat cap on 1 per necropolis
    • Getting more of these is a trap, so this cap is now 1. But it's still a good value on planets where you need to reinforce your fleets
  • Fixed a copy/paste issue where certain Elderlings (the Envious and Blasphemous) were transforming into the wrong sacrificial form, preventing players from getting the unique flagship transformation
    • Thanks to Daniexpert for the save
  • Skeleton Lord home nerfs:
    • has lower chance of creating a lord. From 5% to 2% (per home).
      • Unlike other skeleton homes, you get 3 of these per rift (but need a mark3 necropolis/phylactery to build). You could end up getting far more lords if you specialize, to the point this was too strong
    • Reduced the bodyguard cap from 3 to 2
    • No longer gives a small chance of creating a free skeleton--this is the feature of the amplifiers and is too opaque when added here
  • Increased the cost of Essence to upgrade flagships and Necropolis
    • There is much more essence now with the Elderling change, so this was needed
  • Dramatic increase to science upgrades for all necromancer techs
    • There's just too much science in Necromancer games. Tech should be interesting decisions, not just "get everything"
  • The Templar now spawn their Sovereign
  • Fix a reference to the now deprecated skeleton detonator
  • I've added a new field for the XML templar difficulty HackingPointsSpentPerBonusWaveLeaderFromHack
    • This defaults to 100, and allows the strength of hacking responses to be tuned via XML.
    • Wave Leaders from a hack response are determined by AIP and hacking points spent
  • Only low tier wave leaders can spawn from an Encampment
  • Only low/mid tier wave leaders can spawn from a Fastness
  • The number of templar wave leaders from a hacking response is now more tunable (the hacking points spent component can be tuned via XML).
  • Add scaffolding for spawning different units from a hacking response, though this is waiting for zeus to do a bit of XML
  • When a templar unit is spawned, it uses the following additional rules when choosing its mark level
    • MinUnitMarkLevelLowTier = 1; //encampments
    • MaxUnitMarkLevelLowTier = 3;
    • MinUnitMarkLevelMidTier = 3; //fastnesses
    • MaxUnitMarkLevelMidTier = 5;
    • MinUnitMarkLevelHighTier = 3; //castles
    • MaxUnitMarkLevelHighTier = 7;
      • These are the default values, but they can be tuned in the TemplarDifficulty XML (so MaxUnitMarkLevelHighTier could be 5 on low difficulties)
  • Showdown Devices now play nicely with the Necromancer
  • The Wave Leaders from a hacking response wave are now the new variants from zeus

DLC 3: Elderling

  • Decadent Elderling/Flagship now hit 10 units with Devour, up from 1
  • Lowered number of Elderlings needed to trigger madness across intensities.
    • Still experimenting around, but these changes should definitely make madness happen regularly
  • Essence granted from Elderlings has a reworked scaling so that the value no longer goes down after an evolution. The next tier of Elderlings will now continue where the previous (mark 7) Elderling left off
    • Low Tier: 3 / +2
    • Mid Tier: 15 / +2
    • High Tier: 27 / +2
    • Will watch to see how much Essence player now has access to. Will likely need to balance this by increasing costs associated with Essence
  • Adjustments to Elderling intensity settings, including reduction of time low tier Elderlings need to level up

DLC 3: Templar

  • Adjustments to the Templar intensity settings
  • Templars now have their own mark scaling.
  • Templar Wave Leaders had stats reworked so they can scale with mark level
  • Made the evolution of Templar structures more straightforward. Encampment->Fastness->Castle (This is the same). With each evolution, the structure gets an additional weapon. So the Castle has all the weapons of the Fastness/Encampment along with a new weapon
  • Templar Herald adjustments reduced science/hacking bounty by half
  • Templar Prophet reduced science/hacking bounty by half
  • Templar Harbinger adjustments Reduced science/hacking bounty by half
  • Templar castles now take longer to upgrade across all intensities

Bugfixes

  • Reduced Dyson Sphere's selection circle size to improve user experience.
    • Thanks to Eluthena for the suggestion.
  • Fixed a race condition in Splintering Spire that could cause all dismantling timers to reset when loading a save
    • For future notes for both myself and modders, Stage 2 logic is not guaranteed to wait until all deserialization is completed before running
      • Thanks to Lord Of Nothing for the report
  • Fixed a bug that didn't allow the player to change music from the debug menu.
    • Thanks to Democracy for the report.
  • Fixed a bug that allowed players to discover centerpieces hidden in unexplored planets.
    • Thanks to Eluthena for reporting.
  • Disabled navigation to unexplored planets via wormholes when the "Hide Unexplored Planets" setting is enabled.
    • Thanks to Eluthena and Sounds for the report.
  • Fixed the tracing and memory leak with the ArcenCharacterBuffers in AIRelentlessAndBorderAggressionFactionDeepInfoRoot that caused an error spam when using RelentlessWave tracing.
  • Fix some bugs with the intel menu showing incorrect data for the superterminal, and too many MDC objectives
    • Thanks to Lord Of Nothing for reporting
  • Minor tweaks to Wait For Stragglers mode; it no should no longer wait for Drones or the like
    • Thanks to Jason Nelson for reporting

4.006 Careful Of That Federation!

(Released March 16th, 2022)

  • If a scourge nemesis finds itself in a Defensive Fireteam, the fireteam will now disband so the nemesis can be used on offense.
  • The Gyrn, Voidhome Ark Empire version of that ark now generates 750k energy rather than the usual 350k that other arks do. This is part of its identity as an ark.
    • Thanks to Zer0h1nder for suggesting.
  • Remove the 3 AIP penalty for losing fuel stations
    • At Sage's request
  • The Placement Condition framework has been overhauled to be more condensed and moder, and the Multiple-Point variant is pooled to counter memory leaks.
  • Added in a new utility function to Factions, GetIsFriendlyToAnyPlayerFaction, which does what it says on the tin.
    • GetIsHostileToAnyPlayerFaction and GetIsNeutralToAnyPlayerFaction are also implemented, but are not actively used yet. Modder fodder.
    • GetIsFriendlyToAnyPlayerFaction is now used to determine what factions should be considered for the Friendly to Players extragalactic budget, where previously it was based purely on Allegiance.
      • This should help resolve some issues players have had with Extragalactic units sitting around instead of hunting down the player. This will not retroactively fix any 'broken' Extragalactic ships, so you still have the joy of dealing with them.
        • Thanks to Lord Of Nothing, and henry700 for the latest report and saves used to test this
  • Updated the recommended settings for fuel tips section with Strategic Sage's latest.
    • Thanks to Strategic Sage for writing and adding.
  • Added some clarification notes to the Dyson Sphere hacking file
    • Thanks to Puffin for noticing now unclear it was

DLC1

  • Ark Empires now get to pick what planet they get for free at game start, instead of simply having the planet they spawn on have no AIP cost
    • To further give value to this, they gain two scouting pulses at game start, allowing them to see further before picking
      • Thanks to Zer0h1nder for the notice that this should be more fleshed out
  • Modified the Dark Spire's response to being dismantled by the Splintering Spire
    • Interval response (every 30 seconds) reduced to 10% of prior value, Final response (when VG is destroyed) increased to 200% of prior value
      • Thanks to Lord Of Nothing for reporting how overwhelming their response could get

DLC2

  • Architrave now now allowed to expand onto planets near mobile kings, IF its their only option. They will still steer clear of any stationary kings
    • Thanks to Zer0h1nder for the report

Bugfixes

  • Fixed a bug where the Splintering Spire had tracing enabled at all times
    • Thanks to Zer0h1nder for the report
  • Fixed a bug where Dark Spire weren't regenerating their conquest targets list, leading to them putting Loci onto the same planets
    • Will not retroactively remove any, but they will no longer build more than 1 per planet
      • Thanks to a number of people for helping to narrow this down
  • Fixed a bug where seconds_to_fully_regenerate_hull was not correctly functioning
    • Thanks to Velius and Exlium for reporting that the Retribution Golem was broken, which lead to the overall discovery
  • Fixed a bug where units targeting Dyson/Spire Spheres wouldn't actually try to attack
    • Thanks to Lord Of Nothing, and henry700 for the latest report and saves used to test this
  • Fixed an issue where Splintering Spire Fireteams would forget what they were doing when loading a save
    • Thanks to Lord Of Nothing for the report
  • The grace period for not incurring a brownout with negative energy no longer counts upward while the game is paused. It wasn't a bug per se that it did before, but it was sure confusing and probably not ideal.
    • Thanks to samnainocard for reporting.
  • At the end of the game, the fleet of yours that is commended is whatever is the strongest one.
  • Fixed an issue where in Challenger mode you would be given a random second battlestation, rather than being able to choose your own.
    • Thanks to Jason Nelson for reporting.
  • The messages about experimental ship stats when right-clicking metal in the resource bar have been removed. That was a feature for a while, but was removed during the refactor and is not planned to return.
  • SafeTryRemoveAt and SafeTryGet and SafeTrySet have been added to our custom version of the List<> class.
  • Added our own copy of the Interlocked class, which ultimately just wrappers the other one because of extern methods that we couldn't bring in in the way I originally wanted.
  • Added SafeTryAdd to our List implementation, which in turn uses a bit of extra CPU to try to avoid issues when several threads are messing with it at once.
    • This is a less-efficient method, and should only be used in a few rare cases where we know we are going to have high contention, but we can't use a producer/consumer pattern for some reason (probably performance).
  • Adjusted the Add method on our List implementation so that it won't have array out of bounds errors if multiple threads are mangling a list together. It will just have a bit mangled data.
  • Completely reworked how the targeting lists for ships are tracked from a technical standpoint, using the new features now built into lists.
    • This is a lot more similar to how we handled this prior to the last few weeks, and it is lockless and thus free of any risk of deadlocks. We have been having some sim deadlocks (rare, but still a thing), and the new locks that were here seemed to be the culprit.
    • Thanks to Pyrrhus, trabbo, and others for reporting.
  • An even more recent change involving locks for the "incoming shots" calculations is now using the new list features to safely avoid locks and thus gain a bit of performance and again prevent deadlocks from happening.
  • I was unable to duplicate things being unsuitably unrandom (the outguard were always different for me no matter how many I generated in a row), but I've now put in place a default state for our random (MersenneTwister) so that if it is in the default state (indcated by -17), it will pull a random seed from the central RNG before generating values.
    • This should stop any form of stale generation that happens for whatever reason, even though it wasn't something I could personally duplicate.
    • Thanks to Tim_Fragmagnet for reporting, and StarKelp for verifying that it also didn't work for him.
  • In order for most anything to happen in the game, a "game command" has to be dispatched from a player or an AI or NPC, and then it gets scheduled and executed. We've been lately seeing a very strange issue on multiplayer clients, usually only after a very long period of the game being played (half an hour or several hours) where these suddenly start being mangled on the client but not the host.
    • This is something that has required a code review, and I just don't see anything wrong with any of the code, and the touch points are (on purpose) very narrow, so this really should not be possible. With that in mind, obviously it IS happening, so the next step is to figure out a way to either stop it (despite not being able to understand it) or trap it (to thus understand and then fix it).
    • Previously I've attempted to fix this by making sure that the methods that send gamecommands across the network can't get double-run, and that seems to have yielded no improvement (they were likely already protected enough from that).
    • Previously I also changed the nature of the pools for gamecommands (to be official pools instead of my first proto-pool for this style of data in this game), which led to more efficiency, but it's not clear if there was actually a direct improvement. I suspect that the old style was able to have rare problems, but it should have been affecting solo play as well, and either way didn't solve our core problem here.
    • This new build now changes the type of pool from being a ConcurrentPool<> to being a TimeBasedPool<>, so that if there are latent calls to a gamecommand, there's an 11-20 second period during which that game command won't be reissued as a new command from the pool. This should stop the direct issue if it's a matter of a gamecommand being handled in two places.
    • This new build also puts in some gates for when gamecommands are being serialized and deserialized, and if it tries to do certain other actions (like put them in the pool) when they are in the midst of that, it will show an error message with a stack trace.
    • And finally, this new build also puts wrappers around all of the contents of the gamecommands, so that if you call to those contents it checks to see if it is in the pool, or in the process of serializing or deserializing when data is unexpectedly altered, and if so it will throw an error message with a stack trace.
      • The current suspicion is that some sort of code somewhere is hanging onto a game command for too long, and making some sort of inappropriate changes to it, or that a game command that is meant to be sent to the client is instead put back into the pool too early. If one of those is true, then these warning messages will catch it.

Mod Updates

  • Updated Frigates Focus mod. Now also usable in Expert mode since the overrides now account for the alternate version of the ARS seeded in Expert.
  • Modders can now put the 'UniqueCommandStationCaps' tag on Command Stations, to have them show any galaxy caps they have, like how Spire Cities work in Spire Infused
    • Put in for Classic Fusion, could be useful in general for limiting, but powerful, station variations

New Hydral Federation mod by StarKelp!

  • Added in the Hydral Federation mod (requires The Spire Rises)
    • All of the races, fresh from the best ending from The Last Federation, have come to this galaxy. Lead by the Hydral, they have seen the endless war propagated by yourselves and the AI and have deemed you both a lost cause. They will slowly take over the galaxy, locking down planets, and PERMANENTLY removing them from the game.
      • The Hydral cannot be stopped, only temporarily halted. They have no desire for diplomacy with either you or the AI, both of you being even worse than even the Thoraxians or Burlust in their eyes. Having the Hydral Federation in your game is inflicting a very powerful third party that, unlike the AI, will rapidly expand. Rivaled only by the Dark Alliance in power, it is a race against time to see who achieves their victory first.

4.004 Easy There, Hack Response

(Released March 10th, 2022)

  • Remove an unneeded game lobby setting from the Spire Infused Empire.
  • Adjusted the expert, logistician, and challenger tooltips to reflect the fact that reduced resources (for hacking) starts out on challenger mode, and corrected things to note that beacons are only unavailable starting on logistician mode.
    • Additionally, the lobby tooltip for Expert no longer mentions having many fronts you must defend, but logistician now does.
    • Thanks to Strategic Sage for requesting.
  • Added a new setting to the game section of personal settings: No Ironman
    • If a campaign would normally be ironman, this will force it to NOT be ironman. Great for testing, but does make any save that would normally be ironman flag itself as being in cheat mode (so no achievements, etc). In multiplayer, this only matters on the host.
  • When modules on a ship line are changed around, all the ships in that line are paralyzed for 10 seconds.
    • Thematically, this is them doing their retrofitting. Functionally, this hopefully removes any incentive to drive yourself crazy microing the modules on and off during battle.
    • Thanks to motai for suggesting.
  • The cheat code "I don't even see the code" can now be entered without the apostrophe, and optionally without the second parameter (it then just gives you 400 HaP). You can also use the command "hacking" for short.
  • The game now supports reading in custom fields as "true" or "false" and converting those into bool values as you would expect, versus before it freaked out in an inscrutable way if you didn't remember to say "0" or "1". Now if it freaks out, it also gives you clarity on why.
  • Add a corrosive guard post to DLC3

Hacking Response Tweaks

  • Hacking responses were incorrectly including a Fallen Spire component even when they should not. This was leading to drastically inflated hacking responses
  • Hacking estimates for hacks with a strong post-completion response could be undercounted if completing the hack would bump you up one response tier (ie from 'Very Easy' to 'Easy')
  • The hacking estimate should now include the Exo response strength (where appropriate)
  • With the Hacking Debug setting enabled, the hack tooltip will tell you a bunch of information about how the estimate ie generated. This is for debugging/development use only
  • Thanks to Strategic Sage for a bug report

Dire CPAs

  • Dire CPAs are now in the base game. It's a galaxy setting one enables in the galaxy lobby.
    • When enabled, every so often CPA Bunkers will be spawned on the map. When a CPA is launched the CPA bunkers will release extra ships to make CPAs even scarier.
    • This just makes the game more challenging, and is on by default for some of modes harder than HA.
  • The CPA announcement now includes the strength of the Dire CPA component (if any)
    • Thanks to Strategic Sage for suggesting this

Return Of Faction Beacons (The First Two, Anyway)

  • Beacon hacking returns! At the moment, it's just for the nanocaust, but that's simply because that's all the xml I have set up thus far.
    • This can be set up, using only xml, to work with any faction or combination of multiple factions, and you can give any number of options for hacking them. With the nanocaust, I have 18 different options set, with intensities 5-10 of hostile to all, hostile to player, and friendly to player as options. When it's friendly to player, it also has them spawn near to you. Each hacking option is a fixed set of faction options, but so it's not truly freeform, but it does not have to be decided in the lobby, which is really nice.
    • There's a ton more power here than in the old beacon system, but one of the biggest improvements is to performance. In the past, this was having to include the entire faction, but just turn it off, when it was present. This was a huge performance drain, and also when many beacon factions are eventually added as options, particularly in mods, it would literally not fit in savegames. The new approach adds no factions until you choose to hack to meet them, and thereby lets you control the amount of insanity that is involved.
    • I will be making some more changes tomorrow, and adding in more beacons and beacon factions, but this is an excellent starting spot.
  • The game now supports having beacon factions that are different mixes on different options in the beacon hacks. Because why not.
  • All of the old unused beacon faction code and xml is now fully removed, since it is no longer needed at all even for reference.
  • The Fallen Spire beacon has been added back into the game, but it only seeds if you don't already have fallen spire or a spire-infused player present. Also, just like the regular fallen spire, it requires a metal-using player to be present in order to seed (so solo necromancer empire can't pair up with it).
  • For beacon factions, added a new blocked_from_seeding_unless_all_of_these_factions_are_included, which allows you to specify a required list of factions that must be present in order for it to seed.
    • Thanks to StarKelp for requesting.

Bugfixes

  • The tooltips for ships now show a lot more details for any auto-targeting targets they have for each of their systems.
    • Additionally, it now shows which auto-targeting group they are a part of.
    • Thanks to Tim_Fragmagnet for a report that inspired us to have more information visible here.
  • The way that auto-targeting groups are calculated is now done centrally, and it's no longer possible for units to potentially get lost in the shuffle and not get auto-targeting orders.
    • Thanks to Tim_Fragmagnet for a report where this was probably what was happening.
  • The way that "incoming shots" are tracked on ships, which is used in overkill detection, has been improved a lot.
    • First of all, it's more efficient now, and tracked internally only, and has more granular cross-threading protection rather than allowing for a cross-threading error to interrupt the entire process.
    • Secondly, any incoming shot now times out after 10 game seconds, so nothing can get stuck in a "it's going to die because of incoming damage" state where enemy units won't fire on it. Not sure if this was happening, but it's possible, and now it should not be.
    • The "Show incoming-shot debug data in unit tooltips" debug setting has been removed, as the individual shots are no longer interesting to see in the same way.
    • The tooltips now show how much damage the ship is expected to take from incoming shots, or if there are incoming shots but no damage, then it also shows that.
    • It is likely this will fix some bugs, or it's possible it might just make things more clear if a bug in this area resurfaces.
    • Thanks to Tim_Fragmagnet for the related report.
  • Adjusted targeting logic so that if a unit is not fully claimed, but belongs to a player, it is now valid to be shot. Previously, some metal harvesters that were half-alive were not being shot further, which looked like a bug. Now they get pasted instantly.
    • Thanks to Tim_Fragmagnet for reporting.
  • Fixed three more sets of tooltip errors that could happen right when units were dying.
    • Thanks to Lord Of Nothing for reporting.
  • The "bonus for sitting on a planet for a while" tooltip text was cut off and had some other oddities.
    • When this is a ship owned by nobody, it now just tells you about it in the abstract, as if you were not looking at a specific ship (so, if you capture this, here's how it would work).
    • When it's a ship owned by an NPC, it doesn't show this at all.
    • If this is not showing the first half of the sentence, it makes sure not to write the last half of the sentence (such as with cloaked flagships).
    • Thanks to Zer0h1nder and Strategic Sage for reporting.
  • In the event that a wave timer would be negative or zero (aka, it thinks the wave should already have landed, but it has not yet), it now says "SOON" on the notification, and "any second now... but the exact timing may be a surprise" in the tooltip for it.
    • Usually waves will launch on time, but there are cases where the game is running the AI threads more slowly because of load, or the "only run every X seconds" logic is there anyway, and so the exact timing is just not actually exact in all cases.
    • It doesn't really make any sense to try to make the timing more exact, since this flexibility is one of the things that helps performance, and not knowing down to the second when a wave is going to arrive is mildly interesting anyhow. So now it's simply handled in a way that makes it not look like a bug.
    • Thanks to Daniexpert and NRSirLimbo for reporting.
  • The description of Showdown Devices now more correctly matches their behaviour
  • Put in error handling for CalculateMatchesOnBackgroundThread, since I ran into an exception on that background thread in the internal version for some reason.
  • Fixed an exception that could happen when getting the faction's internal display name after a fairly specific set of operations involving adding a faction and then going back to the menu and back into the game. Likely it was also triggerable by other circumstances, but it's hard to be sure.
  • Fixed a long-standing bug in the display of multipliers regarding Attack Bonus of type 'multiple_of' in R-view.
    • Big thanks to Daniexpert for this fix, and figuring out how to fix it!

Mod Updates

  • Update to More System Defenders. Now allows players to choose a version of the Stormfront Ark to lead their Ark Empire within that game mode.

4.003 A Bit Too Chromatic Horrifying

(Released March 9th, 2022)

  • CPA Bunkers now try not to spawn on planets with a CPA bunker already. Remove the AIP cost for killing them
    • Suggested by Strategic Sage
  • The starting data structures and the first test xml has been set up for the return of beacon factions. It's not wired up to do anything yet, but the data is pretty much fully described for the nanocaust as a first test case, so this should then open up the rest of things for getting things to be beacon-ready.
    • The new data format is pretty cool, as it can set any custom fields as part of the beacon options, and it can also include multiple factions from a single beacon if we want to. The main purpose of that is really for multi-faction factions (there are a number of those), but it could in theory also be used for something like a beacon that calls in two warring factions that explicitly hate one another, or whatever else.
    • Unlike the prior beacons, this is something that is really mod-friendly, or it will be once the feature is completed, so that's also pretty exciting.

DLC1

  • The fallen spire and the spire infused empire should now use shared logic for determining whether to have the dark spire enter conquest mode
    • Strategic Sage indicated there was a problem
  • Add a new Galaxy Setting to allow players to prevent the Chromatic Horror from moving player structures around.
    • This is untested
    • Requested by Crawlers

DLC3

  • The Necromancer rifts journal clarifies that rifts will continue to spawn over time
  • Rift hacks can now grant 30 essence instead of 15, since people considered 15 to be too low
    • From a balance discussion on discord
  • Rift hacks to increase bodyguard caps now give double the number of bodyguards
    • From a bug report by pmm5000_1
  • Rework how Templar mark levels are chosen. Each wave leader picks a random mark level based on the AIP/Templar difficulty (at the moment, >= 180 AIP means every wave leader will be between 5 and 7; so you might get 1 mark 5, 1 mark 6 and 2 mark 7s.
  • All Templar ships that spawn from a structure (either as part of a regular wave, hacking response wave or to defend their territory, will take the mark level of the structure they spawn from. So a mark 5 castle will spawn mark 5 ships
  • Add the concept of 'Corrosion Damage'. Corrosion damage sticks on the enemy ship, and applies over time.
    • Every second the target has some of its remaining, unapplied Corrosion Damage happens to the unit; something like 8% (minumum 8 damage). This damage goes directly to the target's hull.
    • An entity-system can have an an additional flat amount of corrosion damage with the XML tags corrosion_damage=X and corrosion_damage_added_per_mark=Y
    • An entity-system can all say all_damage_is_corrosive="true", in which case it will all be corrosive.
      • Add a Corrosive Guardian to DLC3 as an example for using this new mechanic.
      • Corrosion damage example. I have 50 corrosion damage on me. Next second I take 8 damage, and there's 42 damage left. Someone hits me for 100 additional corrosion damage. I now have 142 corrosion damage and take 15 next second; there's 127 corrosion damage left on me

Bugfixes

  • Add some debugging code to GetWaveComposition
    • From a bug report by henry700
  • Added a new ThrowawayDrawBagCanMemLeak data type, and this internally uses our existing ThrowawayListCanMemLeak type (which is mostly used in mapgen until now).
    • These are used for very short periods of time, and are meant to be thrown to the garbage collector. I had wanted to avoid this sort of thing, but we've been having persistent intermittent issues with cross-threading issues on certain worker methods (like for wave spawn), and the RapidAntiLeakPoolable approach that I had developed is just not robust enough. I also worry about that contention on that leading to slowdown in larger games.
    • I am going to build out some more of these kinds of throwaway collections and probably will phase out a lot of the RapidAntiLeakPoolable thing since it seems to only be causing problems.
    • There is also a new interface called IDrawBag<T>, which can be used to manipulate either kind of draw bag without knowing or caring which kind it is.
      • I actually am not yet using that on any methods, because on the methods where it would be relevant, I actually want to signal that only a throwaway draw bag should be used, because the sorts of manipulations that are being done in those methods are not for permanent data.
    • As an aside, this should not be taken as a signal by modders/developers to just use the throwaway collections willy-nilly. There are many better code patterns, such as not using a collection at all and instead using an iterator/dofor, which have the benefit of both performance and better memory usage, while still having the same amount of readability.
      • This is essentially something that should be used in place of places where we were using RapidAntiLeakPoolable stuff before, because that had its own performance implications and occasional cross-threading issues. If you can refactor slightly to avoid the need for any of this, and just use an iterator, then so much the better.
    • Thanks to henry700 for the most recent report of an exception in ChooseWaveTarget.
  • A new version of StringBuilder has been added into Arcen.Universal, which is slightly more efficient than the one that microsoft provides, while providing the same functionality (the subset we use, anyhow).
    • Referencing System.Text is now something that will cause ambiguous references between our version and theirs, so just removing that reference will solve the issue for any mods that are affected.
  • Fixed exceptions that could happen in the quick start screen if your local player profile happened to be null at the current time.
    • Thanks to Dismiss for reporting.
  • Fixed an issue where the game was limiting you to only one Battlestation on Challenger+, when it should have been on Expert.
    • Thanks to Strategic Sage for reporting.
  • Fixed an exception that could happen in tooltip generation if the ship you were hovering over died at just the wrong moment.
    • Thanks to Relay Bot for reporting.
  • For purposes of movement and panning, the camera now clamps its maximum "frame delta time" to be the equivalent of 20fps, or a twentieth of a second. If there is a very large single frame (garbage collector, waiting on disk, whatever), it will thus no longer cause your zoom to shoot all the way in because of getting a very large d/t for a frame where you were rolling the mouse wheel.
    • The one potential downside of this is that if someone legitimately has ongoing performance that is worse than 20fps, their mouse inputs will be slowed to whatever the ratio is to 20fps. So for example if someone had ongoing 15 fps, their mouse inputs would be sluggish at 75% of the normal speed. At 10fps, it would be sluggish at 50% of normal responsiveness.
      • Since I'm not aware of anyone routinely running that low (and anything at 20fps or higher will perform with normal responsiveness), this seems like a safe thing to do.
      • I could have clamped this at 10fps, but part of the thing is that some mice have quite a sensitive wheel that can be rolled or spun very far in a short amount of time, and a tenth of a second will probably still allow for more zoom-in at once than is desirable. That's one of the main reasons I haven't done anything about this issue despite it being around since 2017.
    • Thanks to Mac for the most recent reminder on this.
  • In the event that a unit was supposed to repair another unit, but that other unit already has been healed full by whatever means, it now just silently skips that versus... throwing an error, which was an odd choice.
    • Thanks to Daniexpert for reporting.
  • Added more code to make absolutely sure that DoOnAnyDeathLogic_HostOnly_AfterFullDeathOrPartOfStackDeath is not ever run on MP clients.
    • Thanks to Badger for reporting.
  • Since gamecommands are coming through as scrambled to clients in multiplayer some of the time, but the canary code after them is not being hit, it is very likely that they are being sent in an improper fashion by the host. The host is executing them perfectly, so it must be something that is changing during the actual send, it seems like. With that in mind, I've put extra gating on the host (and on the client just to be extra careful) to make sure that they never overrun themselves in the same method there, since that seems to be the most likely source of this sort of error. If this doesn't work on its own, I can put in some more detailed logging, but after yet another code review, this seems to be the most likely culprit.
    • Thanks to Badger for the most recent report.
  • When a planet is taken over by a new AI (from reconquest seeding via an Usurper), it's possible that a new AI is moving in compared to the AI that originally owned the planet. Either way, it now shuffles around the types of units to spawn there based on the AI taking over, so that the planet will have a fresh set of units that it prefers to seed there.
    • When it comes to the same AI taking over, this is not really a big deal, but makes for some minor variety. When it's a different AI taking over, this is actually a really big deal, because the new AI type might not be intended to use the same ship types as the first AI type.
    • Thanks to GreatYng for this report, with investigations on their part going back several years actually.
  • In multi-AI games, it's possible for AIs to launch waves or border aggression from planets that belong to other AIs. Normally border aggression or wave contents is determined by the AI groups chosen at that planet, but when it's from a different AI, it may not be intended to share that AI group. In those cases, it now finds a different random AI group that it is supposed to have to use to populate the wave or the border aggression.
    • In multi-AI games, this should keep AIs with unique ship types from sharing those with their partner (or enemy) AIs that coexist with them.
    • This, like the other adjustment to AIs after reconquest seeding, is untested but should work.
    • Big thanks to GreatYng, again, for chasing this down over about a three year period.

4.002 Macrophage Live!

(Released March 8th, 2022)

  • The encyclopedia now honors the "pause when opening escape menu" options that are in settings.
    • Additionally, when you are in-game and looking at it, the header of it now says "game still running" in cyan, or "game is paused" in the same orange that the resource bar uses.
    • Thanks to trabbo for suggesting.
  • When you have a necromancer in the game, some types of AI defensive structures can be used to produce near-infinite Skeletons, Wights or Mummies. The game now swaps these structures for AI Fortresses, which should still make the planet a challenge
    • To apply this to new structures, add a tag "SwapOutForNecromancer" to those AI Defenses. With this tag the game will replace those structures with AI Fortresses when there is a Necromancer.
  • Rejigger the Necromancer starting ships to not include variants. I was worried it would encourage players to spec science into things they don't have access to, and potentially overwhelm a novice. Instead you get a lot of Base skeletons and wights.
    • This is intended to be power neutral for the player.

Bugfixes

  • Fixed an issue where two legacy xml files were removed (rather than just blanked out) as part of the 4.0 upgrade, and so installing into the existing folder the game was already in would lead to errors. These files have now returned, but are empty, and thus overwrite the old files, allowing people to install things over-top of their existing installation.
    • Also, this winds up then not relying on Steam or GOG Galaxy to properly delete the missing files, because they don't always do that. Once a file exists in the wild, we try never to remove it, only to deprecate it.
    • Thanks to trabbo for reporting.
  • Some errors were happening related to drones moving between different fleets of the AI, which I think is something that happens when you kill the drone producer. This error no longer happens, and it no longer considers that and a few other cases an error at all.
    • If the error does come up now, it also give a bit more information than before.
    • Also if this error does come up now, it properly sets things up to not endlessly spam errors about any single unit.
    • Thanks to [LA] Talderius for reporting.
  • More firmly fix a problem where Necropolises were rebuilding on planets with AI Reconquest Command Stations
    • Thanks to daniexpert for reporting
  • Add some additional randomness to the Grid map type's random connections
    • Reported by Tim_Fragmagnet on discord
  • Add some defensive code to brownout notifiers
  • Fix a typo in the fuel description
    • Reported by Tim_Fragmagnet on discord
  • Fix a flicker in the hacking difficulty estimate colour
    • Thanks to Zer0h1nder for reporting
  • Player-allied ZA Castras can no longer be hacked
    • Thanks to Zer0h1nder for reporting
  • Fixed an issue where GameCommands were using a custom ConcurrentQueue solution instead of an actual proper pool, and that was probably leading to some game commands getting added in twice (there was no protection against that, unlike in the proper pooling solutions), and thus this is likely the culprit for some of the deserialization issues that we were seeing on MP clients. It's probable that this was also causing other issues.
    • As part of this, I consolidated things to one pool rather than one pool per game command type (this was something that was required based on the nature of the pool initializer methods). A side effect of this is lower memory usage from commands in general, and fewer of them in existence during the game. Originally I had split it because I was worried about contention between multiple threads, but we're really an order of magnitude away from having to worry about that, which is good. A lot of those original design choices were because I made the changes here very early on into the refactor before I had truly tested out every aspect of performance and behavior that came over the 8 months after that. And then I just never noticed that this was a bit off.
    • Thanks to Badger, ptarth, and likely others for reporting.
  • Fixed a bug that effectively made the Macrophage never try to build Telia
    • Thanks to Relay Bot for the report
  • Fixed a bug where Macrophage wouldn't return metal to their Telia if they were being challenged to fisticuffs by a tanky hostile ship
    • Thanks to Relay Bot and Zer0h1nder for the report

Mod Updates

  • An XML property tag was renamed in the base game. This in turn broke some station keeping entities within More System Defenders (MSD) as the name of the property being set was no longer the same. This is now fixed to again call the right property.
    • Essentially the tag in question is for keeping certain station-keepers off of battlestation and citadel grants from the ODSS. Same logic is used in DLC2 for the various drone hangars.

4.001 Autobuild Automation

(Released March 7th, 2022)

  • Moved the unit encyclopedia link to the far right of the top bar.
    • Thanks to Zer0h1nder and Strategic Sage for suggesting.
  • In the event that there are too many drones created by an NPC faction, it will start deleting the excess of drones now. Additionally, it will not produce drones or release them if it would put them over cap.
    • Drone guns, on the other hand, will still fire in these cases; most likely the outcome will be older drones dying off inexplicably rapidly when that happens.
    • Thanks to Mysais for reporting.
  • A new "Raid" category has been added for planet importance options.
    • Thanks to Bummeri for suggesting.

Marauders

  • Due to report from voidlily on the Discord about Marauders exceeding drone caps some changes have been made.
    • Marauder V-Wing and Bomber drones now have 4x costs, health, and damage compared to normal.
    • Marauder drones now attrition by 15% per second when the host is lost instead of 1%.
    • Marauder Outposts now only have 5 each of both types of drones instead of 20 each.
    • Marauder Drone Frigates now only have 2 each of both drones instead of 5 each.
  • Also went ahead and adjusted Marauder Constants and Marauder Outposts.
    • Marauder Outposts now have some of their turret ring weapons baked into the outpost.
      • These would be equivalent to 5x Concussion Turrets, and 4x Fusion Turrets.
      • The Fusion Turret equivalent has a minimum mark level of two to function. Which is when outposts normally gain turrets of this type.
    • Marauder Constants now only have new outposts spawn in with 5 Concussion Turrets instead of 10. And on first mark up they only gain an additional 4 turrets protecting them instead of 8.
      • This is an average savings of 18 less turrets spawned on ally controlled worlds and 36 less turrets per world the marauders have primary ownership of.
  • For existing games this will slightly be imbalanced towards Marauders unless their now excess counts of planetary turrets get cleaned out. New games will get the full benefit of having less entities in play.

Auto-Building

  • More autobuilding changes and improvements:
    • Ships can individually override the values used for auto-spawn with XML entries:
    • autoplacement_use_custom_parameters (bool, default is false) determines whether any of the below actually matters, or if the game should attempt to place this unit by whatever thing it seems to be.
    • autoplacement_anchor (values: CenterEntity, CenterOfPlanet, GravityWell, default is CenterEntity) determines where something should be placed. For automated building the CenterEntity is the command station.
    • autoplacement_distances_adapt_with_gravwell_size (values: Static, ReduceIfBelow, IncreaseIfAbove, AlwaysAdapt, default: Static) determines whether or not the next few distances (min/max/absolute max) scale with the default gravity well size of 52k, to be held proportional to the planet size.
    • autoplacement_min_distance (int, >=0, default 0), autoplacement_max_distance (int, >autoplacement_min_distance, default 1000), autoplacement_absolute_max_distance (int, >autoplacement_max_distance default 99999999), this determines how far from the anchor something is attempted or allowed to be placed.
    • autoplacement_variance_add (FInt, >=1, default 1.01), autoplacement_variance_sub (FInt, <=1 & >=0, default 0.99), this determines how much the min/max distance requirements are relaxed each (failed) attempt.
      • So autoplacement_variance_sub="0.99" would mean that the autoplacement_min_distance would decrease by 1% each attempt. The more this value differs from FInt.One the quicker placement locations will be found, at the cost of usually being further outside of the initial anchor min/max distances.
    • autoplacement_max_tries (int, >0, default 100) is how many attempts are made in general. The more, the longer the code may run but the more chances this has to find a location at all.
      • Finding the perfect values for this is difficult, but unless there is a very specific placement needed or the space near anchor is already littered with things the code should never have to run for too long. And even if, this is all on a background thread.
    • Autobuilding is now on its own background host-only thread, so it will not block sim threads or some special global player logic (which is where it was before). Even if placing a turret takes ages the game will continue.
    • Implemented Sniper Turret Ring building. For now this is experimental (and marked as such), but in tests it works very well.
  • Building forcefields, engineers and factories no longer counts as building (weaponized) defenses, thus the helper journal for enabling these functions should now appear again if needed.

DLC3

  • Overshot how metal intensive Sapper strikecraft should be. Pulling metal costs back down a bit so they replenish faster but aren't as fast at building as they were before the buffs.
  • Fix a bug with the necropolis-swap hack
    • Thanks to Daniexpert for reporting
  • Skeleton homes now grant more bodyguards; +2 bodyguards (archer/warrior/rogue), +1 bodyguard (mage/lord)
  • For Necropolises, there was a hole where the AI might build a reconquest command station on a planet with a crippled necropolis, then the player could rebuild the necropolis, so you could have a functioning Necropolis and an AI Command station on a planet at the same time.
    • Untested, for feedback. Thanks to Daniexpert for reporting
  • Necropolis modules now do necromantic damage
    • Thanks to Pmm5000 for reminding me of this
  • Feeble Elderlings grant a bit more Essence.
  • The Necromancer can now use the Sabotage hack, just like the human empire
  • If you don't have Igors already unlocked, Igors will be available in the second rift
  • If you don't have Banshees already unlocked, Banshees will be available in the second rift
  • The first rift will also offer you a skeleton type or a wight type you don't have yet
  • Fix a bug where Elderlings were not laying eggs
    • Thanks to Sage for reporting
  • The 'move necropolis' hack no longer lists the necropolis you want to move as an option.
    • Thanks to Daniexpert for reporting
  • Decrease the skeleton lord's bonus damage
    • From Daniexpert's feedback
  • Templar Constructors are now much slower and more powerful. In addition they grant a good amount of Science and Hacking.
    • The goal is to strongly reward good strategy (killing these constructors will really limit the Templar's expansion), buffing the player strategically and with resources.
  • There have been a number of buffs to the Necromancer in the last couple patches, due to feedback that the Necromancer was a little more challenging than we wanted. I've tried playing with a number of balance-dials in part to try to figure out how much impact each one has. If it turns out that (say) additional bodyguards is a really big buff, that's good to know.
    • I also went (perhaps) a bit overboard with the buffs, but I'd like to know that player feedback as a much stronger necromancer makes the game more fun. Right now the game is harder than HA according to testers, so I'd like to see what people think about the game being a bit easier than HA; if it's just way more fun to feel Powerful as the necromancer then we can lean into it to find the sweet spot.
    • If it turns out that these buffs are not enough to make the game feel easier I'll make more changes, because I really would like to know how a Buffed Necromancer feels
  • Added seeding of Necromancer Utility building at the start of the game.

Bugfixes

  • Fixed a very confusing issue where if your fleet was in hold fire mode and you tried to build a command station, it would just silently fail.
    • Now hold fire mode does not block construction at all.
    • Additionally, if you don't have any builders present (or all of them are crippled or otherwise disabled), a message pops into the chat area that states that.
    • Thanks to Dismiss for reporting.
  • Fixed the tooltip on the "starting metal" option in the lobby to include the text: Default is 2.5 million (that is also the maximum, because adding more would not fit in the storage capacity of your starting command station).
    • Thanks to Incognito and Strategic Sage for reporting.
  • Fixed a couple of places in the per-second sim repair where in super duper large games it could wind up assigning the wrong unit to the central registry, as that unit died in the middle of being checked on that thread.
    • Thanks to Mysais for the save that demonstrates this.
  • Fixed an issue with the display in the escape menu claiming there were a much larger active number of shots than there really were. What it was counting was actually the number of shots that were ever registered in the current session, and that list can indeed get to be hundreds of thousands or millions of entries long, without it being a performance concern. The number of shots actually flying in the air right now is a much larger concern.
    • Thanks to SirLimbo for reporting.
  • Fixed a handful of typos.
    • Thanks to Strategic Sage for reporting, and Dvd as well.
  • Potentially fixed an issue at SetParentEntity in entity systems.
    • Thanks to Alivaril for reporting.
  • Previously, if you hacked a Zenith Miner to turn a planet nomadic, and you did not have any other nomadic planet,s it would just throw an error instead.
    • The game now has a game command for belatedly adding factions to the game (this will be the exact thing required for beacon factions to return, actually!), and it uses this to add in the nomadic planet faction, thus letting the hack work properly.
    • Confirmed that the nomadic planets work properly after addition, as part of this. This was also impacting the nomadic galaxy option.
    • Thanks to The Beast of Bognor and Incognito for reporting.
  • Fixed a bug where tachyon planning could still have a cross-threading exception.
    • Thanks to Zer0h1nder for reporting.
  • The game is now much better about enforcing two AIs when your campaign type requires it (Expert and upward).
    • If you are starting a quickstart in Expert+, it now copies the first AI if there is only one, and uses those settings for the second AI.
    • Also fixed a bug where it was not even setting the quick start to the desired value when you started a quickstart (it was always whatever was baked into the quickstart).
    • Thanks to Strategic Sage for reporting.
  • Updated A Twisted Enemy from DLC1 to be a newer copy of the quickstart that is not on the honeycomb map.
    • Thanks to Strategic Sage for reporting.

Prior Release Notes

AI War 2: The Great Refactor