AI War 2 Standalone installer updated: [Windows, Linux, Mac]
5.571 ⇒ 5.573.
5.573 Hotfix
(Released November 11th, 2023)
•Fix to some index out of range exceptions because of the new release memory function.
•Fix to some asset bundles which were not updated as expected.
5.572 Polish And Reduced Memory Pressure
(Released November 11th, 2023)
•Added in a new ReleaseMemory() call on Dictionary and List, for purposes of removing the internal array on certain collections that otherwise could grow too large on certain objects, most notably ships/squads.
---•This is dangerous to use on any object where it might still be actively iterated by some background threads. So this is happening only on "mid cleanup" when it has been between 40-59 seconds since the now-dead unit was last known to be alive.
------•For example, using this needlessly on deep logic areas of the game for collections that are not going through a time-based pool would likely lead to issues, but intermittent ones.
---•In some respects this is a form of array compaction, but it's just a really aggressive form that throws out the entire array. Again this has to be used with care because it can cause gc pressure, but in the cases where it is used right now, it's small enough that it shouldn't ever be a problem, especially with the incremental gc.
------•For example, however, trying to use this same approach on GameCommands would likely be a disaster in terms of introducing stutter and other issues.
---•Overall, this is a tool that should not be used very much, or used with great care and sparingly. Most collections are set up in a way that they are non-gc'd for a reason, and that reason is primarily thread safety as well as making sure that things are able to be tracked long-term. We were getting memory islands that we could not see, for example.
------•The way that this is being used avoids the issue of memory islands, specifically because there are no possibilities of rings of ultimately-circular references within these internal-arrays that are being released, because everything that has a reference to something approximating the internal array actually has a reference to the outer collection, which remains un-gc'd.
------•So the fact that this now exists doesn't mean it should be frequently used, or used beyond where it is being used. But for where it is being used, it should prevent late-game memory-leak-like behavior, if this was the source of that. Worst case, it will at least make that smoother, and if there was a place that is an actual memory leak separate from this, it will be more apparent.
•Standardized the for-text icons (resources mostly).
---•Previously they had different scales, yoffsets, apparent blurriness, amounts of horizontal blank space in image.
•Error window improvements.
---•The game is paused while it is open.
---•It is now possible to close the error window with escape.
---•Other windows do not handle input while it is open.
•New tooltips are all moved into a 'experimental tooltips > 'formatted' option.
---•this is not ready for use, yet
•Standardized the 'added by/from' mod/dlc text.
---•The abbrev shown after choices in a drop-down now look more appropriately spaced/sized.
•Hovering over faction within the "Add Faction" popup list now show descriptions.
•Added a 'short name' for several lengthy hacking-type names.
•Added a real description tooltip for galaxy setting: AI Behavior > AdvancedDangers > PowerLevelMultiplier (was 'TODO')
•New 'extended' galaxy setting 'AIPMultiplier' which is a percentage value 100-300 in normal games, and 0-300 in sandbox, that scales aip as it is applied.
•Fixes to dying ships re-spawning.
---•See coders section for details.
•"Destroyable Target Density" tooltips reworked.
---•These were previously mentioning being scaled down in MP and are in fact not.
---•Also I made some effort to recommend being very careful with changing any of these, since it greatly affects overall game balance.
•Bindable input action 'reboot aiw2' now first prompts the user to continue or not, and then first returns to the main menu, before rebooting.
•Fix to input action binding conflicts.
---•conflicts are now correctly detected based on current bindings rather than only the defaults.
•New setting "Escape Closes Sidebar".
---•Normally escape opens the paused/escape menu, even if a sidebar is shown, and the sidebar will still be open when leaving the pause/escape menu. But if you like not having the sidebar open, its much easier to close by enabling this setting.
•Some new safety precautions when saving and loading settings, so they are less likely to be lost.
---•Saving now happens to a .tmp file and is only copied over other previous files after that succeeds.
---•Loading now waits until everything has succeeded before assigning to GameSettings.Current
•Fix to Shattered Mirror still having the short-name of Dark Mirror.
•Making sure all battlestations are marked with capturable_can_seed_at_all="false" just to be perfectly clear.
•Removed attributes fleet_design_templates_i_always_grant and fleet_design_logic_i_grant_one_from from battlestations.
---•These were causing them to show in encyclopedia as a fleet with stuff they actually don't come with.
•Fix to ui control sizing for multi-line text, it's also done more efficiently now.
---•Odd amounts of top/bottom/left/right margins should be improved.
•Encyclopedia no longer showing "x1" by everything. If its not an actual capturable/hackable with a line size nothing is shown.
•Protect against divide by zero in DoMultiHittingAoEAttack.
•Making DeployAIReinforcementContents a little safer in response to an exception report.
•Fix to beam rendered with a y-offset.
---•They are now spread out in a horizontal circle, rather than a vertical one.
•Clarified bonus damage tooltip for shield/hull/%/self/target.
---•It was incorrectly flipping target/self in the description of the stat comparison.
•Can now toggle/activate custom systems by clicking the notification.
•Experimental Tooltips
---•Weapon dps range now considers aoe and max targets per salvo.
---•Only showing multi-beam line in full detail, same as multi-shot.
---•Regular beam tooltip greatly simplified (and made accurate).
•Reduced excessively long HRF faction name.
---•"Human Resistance Fighters", may 'ye rest in peace.
---•Long live the "Human Resistance"!
① Mods
⯈ Outguard Party
---•SuperCombatFactory no longer able to be seeded (Thanks for the report @RadiantPhoenix)
⯈ Radiant Maps
● Spiral2:
---•Added a setting to reduce halo linkages
---•Tweaked wibble to be less snarling
---•Improved large cloud generation
---•Added more hairs on the rim
⯈ Radiant Fleets
---•Some of the Arks from this mod should now seed in the galaxy
---•Tweaks to this mod's Arks
⯈ Radiant Colors
---•Two new shades of orange
⯈ Reclaimers/Bonus Assets
---•now has per-platform bundles, fixing errors on linux/mac
---•fixed issue when unstable explosion when one is loaded from a save game
------•it now actually serializes its data
② Coders
•Helper_SendThreatOnRaid now always return its temp lists.
•Fleet.IsLooseFleetForFaction is now properly set false when returned to pool.
•Some validity checking for Fleet.IsLooseFleetForFaction when deserialized.
---•If the fleet type is anything other than NPC/PlayerLoose we clear it to false.
•DumpFleetContentsIntoFactionLoose now does a few new things:
---•If the faction's loose fleet is null, safely log that and destroy the dying fleet instead
---•If the fleet dying thinks it IS the faction's loose fleet, safely log that and destroy the dying fleet instead.
---•The centerpiece entity itself will -never- be respawned into loose fleet.
---•Entities in the fleet that are already dead, do -not- get spawned again, in the loose fleet.
---•Entities moved to the loose fleet now maintain their ship count, if it was a stack.
•If multiple windows are open, the top one now handles input first instead of the bottom.
•Fix to 'object' being detected as an 'INeverGarbageCollected' so you can have it in dictionaries now.
•Override material should now work for copy_from.
•Fixed issue occurring when splitting a stack, if a ship has a chargeamount from a previous life.
•Fix to ArcenDoubleCharacterBuffer to once again be able to skip tostring calls when its contents are the same.
•ArcenCharacterBufferBase can now be backed by either a StringBuilder or a new alternative (ZString) which can do no-allocation formatting of numbers
•entity attribute external_invulnerability_hide_if
---•"None" by default and is always shown in tooltips.
---•If set to "Vulnerable" then will not be shown in tooltip if currently vulnerable.
---•Used this attribute to make human command stations not constantly show as "vulnerable" when not bolstered by a spire buttress.
•New table TextStyles that is for authoring, in xml, a named set of text-tags to be used when displaying text.
---•This will be used for the unreleased experimental 'formatted' tooltips.
•Reduced string garbage for names over wormholes.
•New codehook LoadExternalData: Called at the end of Engine_AIW2.LoadExternalDataLate after all tables have been initialized.
•New codehook ReloadSelectData: Called at the end of Engine_AIW2.ReloadSelectDataFromXml after other tables have been called.
•This allows one to create new ArcenDynamicTable or ArcenAbstractExternalData type in external code and have it initialized and support reloading without core needing to be modified or know of it.