AI War 2:Post Completion
Contents
Reporting Bugs
- 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
- Have a multiplayer error? Be sure to check here first
- Feel free to join discussions on discord!
What Happens Now That The Game Is "Done?"
The last of the AI War 2 DLCs is now out, the Complete Edition is out, and you can read a retrospective of the entire project if you would like to.
At this point, we have primarily moved on to other projects aside from bugfixes and balance tweaks and modder-support throughout 2022. That said, expect patches to arrive weekly or so at least, and in the short period after DLC3 releases it will be even more frequent.
We expect AI War 2 to have a long life if AI War Classic is anything to go by. The game is in a really good state, and we want you to be able to enjoy it for years and years.
5.006
(Not Yet Released)
- AI's response to Migrant Fleets have been heavily reduced
- Maximum power level reduced by 50%
- Power from migrant waves reduced by 80%
- Power from clanlings reduced by 80%
- Thanks to Strategic Sage for noticing the AI was being a big bully
- Small adjustment to the non-scaling speed bonus granted by economic command stations.
- Allied ships move speed bonus 2x -> 1.5x
- Fixed a three-pronged bug in the central strength calculation code where the planetary attack damage multiplier of the centerpiece was added up to the strength rating multiplier for DPS:
- This was wrong because if anything this should have been a multiplication, not addition.
- Additionally this was double-dipping because since the unification of the damage calculation code the relevant multipliers are all added up centrally already - though technically since there are no entities to which this would apply it flew under the radar.
- This bug only showed after some changes to planetary damage amplification made the default value FInt.One instead of FInt.Zero (before > FInt.Zero was required for this bug to appear, so now it did all the time).
- End effect: Due to this trifecta of bugs all fleets with living centerpieces had the DPS of their members valued at 50% more for strength rating, leading to wrong values all over the place.
- While at it fixed as few other (harmless due to not having a trifecta such as this) places where the comparison to ignore was > FInt.Zero instead of != Fint.One. This should slightly improve performance.
- This fixes the issue where fleet strength numbers were incorrect, discovered when Neinzul Clusters with all of their drones loaded had a higher strength displayed for their fleet compared to the strength loaded. It turns out the latter was correct.
- This means that most combat-related player units as well as drones all over will appear to be be ~15-20% weaker. Note that no actual combat-related values have been changed. The previously displayed strength numbers were incorrect!
- Thanks to Ithuriel for reporting an incorrect Neinzul Hive drone fleet strength, leading down to this rabbit hole!
- The experimental entity tooltip now also displays the maximum unit count possible in this fleet (most relevant for player and drone fleets).
- All the values (current/max strength/units) are now calculated in UI-only methods which are more expensive, but hopefully 100% accurate.
- Fix a divide by zero race condition
- Thanks to Dismiss for reporting
- Prevent a race condition where sometimes player-owned units would just explode for no reason
- This at the very least caused frustrations to people in the Tutorial. I suspect it was happening with disconcerting regularity in other games, but have no evidence
- Thanks to a number of people on Steam for reporting
- Fix a bug with the achievement Think The AI Won't Notice? where it was firing incorrectly
- Thanks to a number of people on mantis for reporting
- Add support for a new form of Achievement, currently only used for Think The AI Won't Notice
- This will allow you to say "Has the player gotten a ship with a specific tag to a given mark level", and is used for things like "Think The AI Won't Notice" for "any spire city at mark 7"
- To use this, you need the following: condition_type UpgradeFleetLineToMark, condition_string_mode = "Tag", condition_string_mode="Tag you want to trigger on (theoretically supports multiple tags, but untested, so please verify) and condition_magnitude="Mark level you are looking for"
5.005 Threat Properly Threatens
(Released April 26th, 2022)
- Temporarily, in tutorials the game logs any ship deaths silently to the log, with full stack traces (this is ArcenDebugLog.txt in the PlayerData folder). There is some super funky bug with ships dying for no apparent reason for some players in the tutorials, but we can't duplicate this internally at all, so this should give us the debugging info we need for that.
- Thanks to Croaker, gwelty, Tabellen Peter, and others for reporting.
- For the experimental, default-off tooltip: Fleet strength numbers now indicate not only the maximum strength of the fleet, but also the current strength and maximum amount of ships.
- This is to pin down a bug in the code which overestimates Neinzul Wild Hive drone fleet strength by potentially 2 magnitudes.
- Thanks to NR SirLimbo for adding.
- Highlight both source and destination of womrhole invation on notification hover.
- Thanks to tom.prince for implementing.
- Wormhole invasion improvements:
- Fix the check for targeting hostile planets. Previously, it would happily target planets that were not hostile to the AI launching it, which would often be the other AI, leading to a wormhole invasion between two random AI planets. Now it checks that the target is hostile to the launching AI, and an ally of the player.
- Ignore planets with a negative invasion score, since GetInvasionScoreForPlanet returns a such a value if the score is otherwise zero.
- Add a check to prevent two wormhole invasions happening in opposite directions. This occured to be accidentally while testing with the cheat, without the first fix. It led to two wormhole between planets.
- Thanks to tom.prince for implementing.
- The necromancer sidekick lobby text now explains precisely how it differs from the necromancer empire
- Thanks to Badger for adding.
- Change the pathfinding code to return the list of next planets to go to, excluding the origin.
- The most common caller of the pathfinding code is for creating a `SetWormholePath`, which should not include the current planet. It happens the initial order generated will be ignored, as it is invalid, most of the time. However, if you have a stationary Necromancer flagship on a planet adjacent to where a unit is summoned by necromancy with orders to an adjacent palnet, the orders will be copied to the new unit, resulting in it pathing back to the flagship before joining a fight.
- The pathfinding code is also used for determining if a path is safe for some unit to travel. Generally, the unit is already on the origin planet, so it doesn't have a choice to go there or not, so it should be skipped for this kind of check as well.
- This also adjust the few places that expected the origin to be included, and removes a duplicate copy of `Fireteam.GetDangerOfPath` that differed only in handling of the origin planet.
- Thanks to tom.prince for implementing.
- You can now tweak fireteam settings on a per-faction basis for 'how often does this fireteam choose its Best target'. This is not recommended, and is added (I think) for CF support)
- Thanks to Badger for implementing.
Balance
- Increased delay before the DLC3 AI Eyes can transform.
- Every time an AI Eye activates or inactivates, it clears the attack orders of all ships attacking it. This is inherent to the transformation logic and not in scope to be changed. The original Eyes stayed active for 60s once triggered, so this wasn't very noticeable, but the new Eyes had much shorter cooldowns to make them more responsive. However, this made them very annoying to kill once they triggered, as they would constantly transform, causing everything attacking them to go after something else.
- Most of the new Eyes must now be in the inactive state for 10s and in their active state for 30s before they can transform.
- The Dire Guardian Eye must be inactive for 30s and active for 7s before transforming; it'll always spawn at least one Dire Guardian when triggered, but if that's enough for it to deactivate, you've got 30 seconds before it spawns another.
- Thanks to Dismiss for the report and to Tadrinth for fixing.
- A few nerfs to the Corrosive Guardian
- This is purely a bandaid until zeus can take a look
Bugfixes
- Fixed a bug with Risk Analyzer's on death AIP change
- Thanks to rem_tuas for the report
- Fix to the Strength Counting code again. The fix before to make Guards not count as threat, made it so only the AI Sentinels faction would. Hunter (and things like CPA faction ships) would get ignored by the top bar and galaxy filter. It now checks if the units faction is of FactionType.AI (as it did before), AND checks if the units faction is allied to the AI by default. If both are false, it's not an AI unit!
- Thanks to Puffin for fixing!
- Improve the debug output of `EntityOrderCollection`.
- Thanks to tom.prince for implementing.
- Fix some errors in CPA tracing.
- Thanks to tom.prince for implementing.
- Further limitations to Custodian subfaction spawning to prevent teams from joining games they shouldn't be in.
- Thanks to StarKelp for implementing.
- Fixed a couple of MP-client-side errors that were possible in UpdateAllSortedStuffIfNeed, and also instrumented it so that it will not lead to error cascades, as well as so that if it has another error, we'll know exactly where that is.
- Thanks to ParadoxSong for reporting.
- Put in a probable fix for rare fireteam history deserialization that could happen in MP on clients. In the event that it still happens, it now gives a better error at least.
- Turns out that this could also lead to error cascades in some cases.
- Thanks to ParadoxSong and Alex M for reporting.
- Fixed some client-side-only exceptions that could happen when hacking elderlings in multiplayer.
- Thanks to ParadoxSong and firespier for reporting.
- Fixed a harmless error (that should not have been there) when asteroid mining powerplants were captured for the first time sometimes on MP clients.
- Thanks to ParadoxSong for reporting.
- Fix a few more achievement-related bugs
- Thanks to Ecthelon for reporting
- Fixed an exception that could happen when belatedly creating a faction during an MP game (such as from hacking a beacon). This needs more testing to be sure that I got all of it, but I fixed the part I was seeing. This then led to an error cascade.
- Thanks to Haeris for reporting.
- Fixed an issue with unloading transported ships that could cause an exception if the original savegame accidentally had two copies of that ship due to the timing of when the save was made.
- Thanks to Ushgarak for reporting.
- Audio messages for the necromancer being low on metal will no longer happen (the necromancer does not use metal that way).
- Thanks to ptarth for reporting.
- Add some defensive code to the AI Reserves
- Thanks to Binary Blitz for reporting
- Fixed an exception where if the local player account on the host was in a bit of a strange state, it could lead to error cascades.
- Thanks to kendric for reporting.
- Fix some duplicate text in the necromancer battle notifier about resources earned.
- Thanks to ptarth for reporting
- Fixed some exceptions that could happen in the ships sidebar when you were deselecting fleets.
- Thanks to Andrew Savinykh for reporting.
- Add some defensive code to The Templar's CalculateSpeed function
- Thanks to ptarth for reporting
- Fixed a couple of exceptions that could happen when closing modal popups via hotkey.
- Thanks to Andrew Savinykh for reporting.
- Fixed a memory not cleaned up warning with "Hacking_SelfUnitWithSubSelection_Base-GetMinAndMaxCostToHackForSidebar-eligibleTargets"
- Thanks to Malformata for reporting.
- Fixed an exception in "RecalculateBalanceStats debugStage 9800"
- Thanks to Breach for reporting.
- Fix a problem with exo notifiers when the exo is syncing with a CPA; it could show as 0%
- Thanks to Nick for reportin
- Fix a typo in a ward weapon text
- Thanks to lampshade for the bug report
- Fixed a "Hacking_TransformNecromancerFlagship-GetCanBeHacked-workingBlueprints" error.
- Thanks to Lord Of Nothing for reporting.
5.004 Misc Polish
(Released April 24th, 2022)
- Fixed scourge spawning from beacons.
- Thanks to Ragnaidin for the report.
- Fixed duplicate text in the Build Rows for the entity tooltip.
- The "Cannot be supercharged" info in tooltips now no longer tries to appear in the Ship Class row but instead is part of the normal tooltip similar to the zombification immunity "Cannot be captured by other factions".
- This fixes a format-unfriendly visually noisy "Cannot be supercharged" attaching itself to the wrong row in the tooltip of probably all flagships and centerpieces.
- Fixed a variable typo regarding resources rewards given on death.
- Improve the sapper economic logic to let it make better decisions as to what sort of crystal to flower
- Add some more defensive code to wormhole borerers to try to prevent them from connecting already-connected planets
- Necropolis buildings are now properly destroyed when the necropolis moves
- Thanks to strategic sage for reporting
- Let the templar track how many ships a wave leader has rallied. Untested, and only for debugging purposes, in case we need it for templar wave balance
- Add some defensive code to the templar hacking reaction
- Thanks to MadTwit for the bug report
- Fix a bug where the new "beat the game with scourge enabled" achievements weren't triggering
- Thanks to Ecthelon for reporting
- Elderlings should no longer be able to trigger raid engines
- Thanks to ptarth for reporting
- Fix a miscommunication in tutorial 4
- Thanks to LaGrange for reporting
5.003 Revenant Efficacy
(Released April 23rd, 2022)
- Elderlings/Templar that die from Corrosive damage now grant resources to the necromancer
- Thanks to a number of people for reporting, in particular Gzar for uploading a save
- Fix a typo in the templar haking response
- Thanks to AxiomExotic and Ushgarak for reporting
- Fixed some nullref exceptions that could happen in UnrolledDoFor_CheckForHostiles in the tachyon, gravity, and tractor beam background threads if the sync on an MP client was messed up in a certain way.
- Unfortunately, the original error that led to this state is lost because the error cascade went on long enough that the error log looped and thus did not include the inciting error. But this particular trio of error cascades will no longer happen.
- About error cascades: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#A_Giant_Rash_Of_Inexplicable_Problems_Happened_.28Error_Cascade.29
- Thanks to Haeris for reporting.
- Added a new "Debug Zoom If Above" mouse setting specifically to help one specific user figure out what is happening with their mouse. It will be interesting to see if it yields anything more broadly applicable as well.
- Thanks to Tankor Smash for his patience since... um... 2019 apparently. This is one of our older bug reports.
- Finish adding C# support for the fallen spire module journal entries
- Thanks to vinco for suggesting these, and contributing the text
- The "Save Preset" function in the debug menu now actually works! Previously it was using an old format for quickstarts, because I forgot that it was even a thing.
- I added the makequickstart gamecommand, which works great. Now the save preset function does as well. The command is able to save to whatever quickstart folder you want, but doesn't save a tooltip file. The debug menu only saves to the Community quickstart folder, but DOES save a quickstart file.
- Thanks to Dragoris for reporting the difference in filesizes, which was critical to noticing this. The format changed for quickstarts right before the great refactor (specifically so that they could survive into the new save format).
- The "Neinzul Galaxy" quickstart by Dragoris now shows up in the Community quickstarts section if you have DLC3 installed.
- Thanks to Dragoris for creating it!
- Correction! The third quickstart in the Necromancer section for DLC3 was the one by Dragoris, and that has now been corrected to the new format that won't error on load.
- Thanks to Dragoris, Smidlee, and ptarth for reporting.
- FiresThroughEnemyShields now pierces bubble forcefields as the tooltip suggests it should
- Thanks to Darkshade for reporting.
- If the escape menu is open, the game will no longer respond to mouse inputs for the camera view. This is already the case if the game doesn't have focus, but this should help if you haven't yet unfocused the game because of multiple monitors.
- Thanks to MaxAstro for requesting.
- Major necropolises now actually respect their galaxy cap
- Thanks to Exlium for reporting
- Fixed an issue where fireteams that had a long time to process something (more than 10 seconds) would claim they were leaking memory. They now allow for 120 seconds of time to elapse for making this declaration.
- Thanks to Zer0h1nder for reporting.
- Fixed the description of the "Battlestations receive turrets from hacks for all" setting, which erroneously stated that it defaults to off (it defaults to on), and in general it had its logic stated backwards.
- Thanks to Ushgarak for reporting.
- Fixed a typo in the Samurai frigate's description.
- Thanks to Ithuriel0 for reporting.
- Removed an old drone-correctness check that was being triggered on some NPC drone usage cases.
- Thanks to Dismiss for reporting.
- The text at the top right of the screen that shows the build cost no longer displays metal costs for the necromancer
- Thanks to LilLillyFox for reporting
- If the game is in the process of shutting down, there's a certain class of errors that could happen that were spurious but pretty rare that no longer can happen.
- Thanks to Badger for reporting.
- Corrosion damage now explicitly blocks repairing. In compensation, make corrosion tick down a little bit faster at the end
- Thanks to vinco for reporting
- Instrumented the SpawnTeliumIfAble function so that if there is an error in there it will give us more precise locations for what is wrong, and it also won't shut down the entire macrophage faction anymore.
- Thanks to JDingDong8 for reporting.
- Pathfinders now wait 300 seconds before declaring themselves as memory leaks, rather than merely 30 seconds. When things are really busy, they can legitimately need to be in use by a background thread for more than 30 seconds.
- Thanks to Zer0h1nder for the report.
- Updated the kickstarter backer credits to include one missing backer (from backerkit, a later addition).
5.002 Venators Optional
(Released April 23rd, 2022)
- Orbital mines for captured outposts were dying to remains that the Necromancer could not interact with and thus making captured orbital outposts with minefields effectively null and void since they could not replace expired minefields with dead ones clogging the slots. While this will definitely help newer games already impacted games may simply be out of luck.
- The attribute never_leaves_remains="true" has been set for the various types of orbital minefields. Replacements are put in play by the host outpost.
- Received report that AI Spire Rail Destroyer were massively larger than their common cousins visually. Went ahead and made their regular AI Spire Destroyer companions a little larger visually while making the AI Rail Destroyers smaller but still larger slightly visually.
- AI Spire Destroyer visual scaling 1 -> 1.5
- AI Spire Rail Destroyer visual scaling 3 -> 2.0
- It is still useful to the player to be able to distinguish which ones are infinite range at a glance in a mixed group.
- Venators are now enabled/disabled in the game lobby. They default to 'off' for HA, but are forced on for Challenger+
- Thanks to Ecthelon for the request, and Chris for deciding what to do about said request
- The 'Unspent Modules' notification will now cycle between unspent entities, if you don't spend all of your points on the first
Tooltip work
- The current amount of Weapon Points is now displayed in the buff row.
- Thanks to Puffin for creating the mechanic and zeusalmighty for requesting.
- The FixedResourceTextStats class is now renamed FixedTextFormatingStats (as it supports more than just resources), has been moved to the AIW2 Core project and given the ability to support Geo icons.
- Began an overhaul of the entire entity type tooltip to fit more icons instead of text, and in uniform show either icons or text and not a mix of the two. For now this is inactive code, existing next to the original tooltip code. In the future there will be a setting to use the experimental tooltip code instead of the current one. Thus all of the below has no effect on the game just yet:
- Removed the old Start[Something] or Add[Something] extension methods for ArcenCharacterBufferBase. Now they are either named Start[Something], End[Something] and Wrap[Something] to clarify.
- Additionally there now is support for generic resources to automatically find the correct FixedResourceTextStats object to work with, support for the PlayerTypeData resources and a way to end with the resource name.
- The tooltip for planetary energy and metal boosting after X seconds now has an unified code path, and will combine the numbers for energy and metal if they are both the same, and both are either enabled or disabled.
- The tooltip code for Factory assisting, factory boosting, claiming, rebuilding and repairing has been rewritten in large parts. Individual repair speeds for hull, shield and engine can now actually be displayed. The assist range will only be displayed once, sine all except internal factories (which measures range in hops) use the same range.
- Unified the code paths for the lower part of the orbiting tooltips, ships orbiting the gravity well will now show the current distance.
- Unified and completely rewrote the code for planetary attack and speed amplifiers and inhibitors.
- The "CEASEFIRE" and "CEASEFIRE BLOCKER" parts are now in color so they stand out more.
- Unified the code paths for harmonic damage increases.
- Units with a hacking response multiplier that is >1 (= units that worsen the AI response to hacks) will now display it as a "HACKING MALUS" instead of always "BONUS".
- This section also no longer refers only to hacking the AI, as other factions may also have responses.
- On minimum tooltips the hull, shield and speed values now display the percentual values (for hull and shield the percent of the maximum, for speed the percent of the base value)
- On medium tooltips the hull, shield and speed values now display the same information as full tooltips do, but with icons instead of text.
- Thanks to General Frost for requesting.
- Removed the old Start[Something] or Add[Something] extension methods for ArcenCharacterBufferBase. Now they are either named Start[Something], End[Something] and Wrap[Something] to clarify.
- Add some improved debugging code for entity tooltips
- Reported by Daniexpert
Bugfixes
- Removed the seeding of Elderlings' beacon when a Necromancer Empire or Sidekick is present in game.
- Thanks to LilLillyFox for the report!
- Fix a bug where the Move Necropolis hack was causing errors in longer-running games
- Thanks to Strategic Sage for reporting
- Put in several message response buffers to prevent timing issues on multiplayer clients that were responding to several things at one time.
- Thanks to AxiomExotic and FwiffoForce for the report.
- Fix to a multiplayer error in the ultra frequent sync that could happen if a client was told about about a planet it did not yet have info for.
- Thanks to AxiomExotic and FwiffoForce for the report.
5.001 First Post-Completion Tweaks
(Released April 22nd, 2022)
- Update the tooltip for the bubble forcefield module to clarify the behaviour
- Thanks to Strategic Sage for reporting
- Fix a bug where the Spire Infused Empire was not generating its periodic exos, and the 'exo on spire city build' was trivially small. This will make the Spire Infused Empire much more interesting
- Thanks to Trantor63 on discord for the initial report, and Lord of Nothing for providing a save game to examine
- Fix a bug where the necromancer would basically get no resources if played on Challenger or above.
- While the necromancer is not really intended to be played except for in HA mode, there's no reason to break it at higher levels
- Thanks to Gzar for reporting
- Swapping a necropolis that has an amplifier now causes the amplifier to change which necropolis owns it. Previously the amplifier would just vanish, which was not great
- Thanks to Doc_Den for reporting
- Clarify distribution nodes for necromancer
- Thanks to ptarth for suggesting
- Elderling hacks no longer make you select a particular hacker (since it doesn't matter which hacker is used)
- Thanks to ptarth for suggesting
- The necromancer text popup at the beginning of the game now explicitly warns players who are above HA that they may have unexpected issues.
- Also clarify the Necromancer description to explicitly disclaim necromancer support
- We had a couple people playing on Challenger today and finding bugs (Gzar and ussdefiant in particular), so I want to make it clearer that Challenger+ is not really supported
- Small correction of oversight in albedo for a strikecraft within DLC 3 with cloaking.
- Stealth Bombard albedo 0.4 -> 0.7
- Fixed a grammar error in "The Migrants: The Arrival" Journal.